3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

怎样写一个解释器——王垠

發布時間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎样写一个解释器——王垠 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

怎樣寫一個解釋器——王垠

2018年02月24日 11:36:02 田樹東 閱讀數:931

怎樣寫一個解釋器

寫一個解釋器,通常是設計和實現程序語言的第一步。解釋器是簡單卻又深奧的東西,以至于好多人都不會寫,所以我決定寫一篇這方面的入門讀物。

雖然我試圖從最基本的原理講起,盡量不依賴于其它知識,但這并不是一本編程入門教材。我假設你已經理解 Scheme 語言,以及基本的編程技巧(比如遞歸)。如果你完全不了解這些,那我建議你讀一下?SICP?的第一,二章,或者?HtDP?的前幾章,習題可以不做。注意不要讀太多書,否則你就回不來了 ;-) 當然你也可以直接讀這篇文章,有不懂的地方再去查資料。

實現語言容易犯的一個錯誤,就是一開頭就試圖去實現很復雜的語言(比如 JavaScript 或者 Python)。這樣你很快就會因為這些語言的復雜性,以及各種歷史遺留的設計問題而受到挫折,最后不了了之。學習實現語言,最好是從最簡單,最干凈的語言開始,迅速寫出一個可用的解釋器。之后再逐步往里面添加特性,同時保持正確。這樣你才能有條不紊地構造出復雜的解釋器。

因為這個原因,這篇文章只針對一個很簡單的語言,名叫“R2”。它可以作為一個簡單的計算器用,還具有變量定義,函數定義和調用等功能。

我們的工具:Racket

本文的解釋器是用 Scheme 語言實現的。Scheme 有很多的“實現”,這里我用的實現叫做 Racket,它可以在這里免費下載。為了讓程序簡潔,我用了一點點 Racket 的模式匹配(pattern matching)功能。我對 Scheme 的實現沒有特別的偏好,但 Racket 方便易用,適合教學。如果你用其它的 Scheme 實現,可能得自己做一些調整。

Racket 具有宏(macro),所以它其實可以變成很多種語言。如果你之前用過 DrRacket,那它的“語言設置”可能被你改成了 R5RS 之類的。所以如果下面的程序不能運行,你可能需要檢查一下 DrRacket 的“語言設置”,把 Language 設置成 “Racket”。

Racket 允許使用方括號而不只是圓括號,所以你可以寫這樣的代碼:

  • (let ([x 1]
  • [y 2])
  • (+ x y))
  • 方括號跟圓括號可以互換,唯一的要求是方括號必須和方括號匹配。通常我喜歡用方括號來表示“無動作”的數據(比如上面的?[x 1],?[y 2]),這樣可以跟函數調用和其它具有“動作”的代碼,產生“視覺差”。這對于代碼的可讀性是一個改善,因為到處都是圓括號的話,確實有點太單調。

    另外,Racket 程序的最上面都需要加上像?#lang?racket?這樣的語言選擇標記,這樣 Racket 才可以知道你想用哪個語言變種。

    解釋器是什么

    準備工作就到這里。現在我來談一下,解釋器到底是什么。說白了,解釋器跟計算器差不多。解釋器是一個函數,你輸入一個“表達式”,它就輸出一個 “值”,像這樣:

    比如,你輸入表達式?'(+ 1 2)?,它就輸出值,整數3。表達式是一種“表象”或者“符號”,而值卻更加接近“本質”或者“意義”。解釋器從符號出發,得到它的意義,這也許就是它為什么叫做“解釋器”。

    需要注意的是,表達式是一個數據結構,而不是一個字符串。我們用一種叫“S表達式”(S-expression)的結構來存儲表達式。比如表達式?'(+ 1 2)?其實是一個鏈表(list),它里面的內容是三個符號(symbol):+,?1?和?2,而不是字符串"(+ 1 2)"。

    從S表達式這樣的“結構化數據”里提取信息,方便又可靠,而從字符串里提取信息,麻煩而且容易出錯。Scheme(Lisp)語言里面大量使用結構化數據,少用字符串,這就是 Lisp 系統比 Unix 系統先進的地方之一。

    從計算理論的角度講,每個程序都是一臺機器的“描述”,而解釋器就是在“模擬”這臺機器的運轉,也就是在進行“計算”。所以從某種意義上講,解釋器就是計算的本質。當然,不同的解釋器就會帶來不同的計算。你可能沒有想到,CPU 也是一個解釋器,它專門解釋執行機器語言。

    抽象語法樹(Abstract Syntax Tree)

    我們用S表達式所表示的代碼,本質上是一種叫做“樹”(tree)的數據結構。更具體一點,這叫做“抽象語法樹”(Abstract Syntax Tree,簡稱 AST)。下文為了簡潔,我們省略掉“抽象”兩個字,就叫它“語法樹”。

    跟普通的樹結構一樣,語法樹里的節點,要么是一個“葉節點”,要么是一顆“子樹”。葉節點是不能再細分的“原子”,比如數字,字符串,操作符,變量名。而子樹是可以再細分的“結構”,比如算術表達式,函數定義,函數調用,等等。

    舉個簡單的例子,表達式?'(* (+ 1 2) (+ 3 4)),就對應如下的語法樹結構:

    其中,*,兩個+,1,2,3,4?都是葉節點,而那三個紅色節點,都表示子樹結構:'(+ 1 2),'(+ 3 4),'(* (+ 1 2) (+ 3 4))。

    樹遍歷算法

    在基礎的數據結構課程里,我們都學過二叉樹的遍歷操作,也就是所謂先序遍歷,中序遍歷和后序遍歷。語法樹跟二叉樹,其實沒有很大區別,所以你也可以在它上面進行遍歷。解釋器的算法,就是在語法樹上的一種遍歷操作。由于這個淵源關系,我們先來做一個遍歷二叉樹的練習。做好了之后,我們就可以把這段代碼擴展成一個解釋器。

    這個練習是這樣:寫出一個函數,名叫tree-sum,它對二叉樹進行“求和”,把所有節點里的數加在一起,返回它們的和。舉個例子,(tree-sum '((1 2) (3 4))),執行后應該返回?10。注意:這是一顆二叉樹,所以不會含有長度超過2的子樹,你不需要考慮像?((1 2) (3 4 5))?這類情況。需要考慮的例子是像這樣:(1 2),(1 (2 3)),?((1 2) 3)?((1 2) (3 4)),……

    (為了達到最好的學習效果,你最好試一下寫出這個函數再繼續往下看。)

    好了,希望你得到了跟我差不多的結果。我的代碼是這個樣子:

  • #lang racket
  • (define tree-sum
  • (lambda (exp)
  • (match exp ; 對輸入exp進行模式匹配
  • [(? number? x) x] ; exp是一個數x嗎?如果是,那么返回這個數x
  • [`(,e1 ,e2) ; exp是一個含有兩棵子樹的中間節點嗎?
  • (let ([v1 (tree-sum e1)] ; 遞歸調用tree-sum自己,對左子樹e1求值
  • [v2 (tree-sum e2)]) ; 遞歸調用tree-sum自己,對右子樹e2求值
  • (+ v1 v2))]))) ; 返回左右子樹結果v1和v2的和
  • 你可以通過以下的例子來測試它的正確性:

  • (tree-sum '(1 2))
  • ;; => 3
  • (tree-sum '(1 (2 3)))
  • ;; => 6
  • (tree-sum '((1 2) 3))
  • ;; => 6
  • (tree-sum '((1 2) (3 4)))
  • ;; => 10
  • (完整的代碼和示例,可以在這里下載。)

    這個算法很簡單,我們可以把它用文字描述如下:

  • 如果輸入?exp?是一個數,那就返回這個數。
  • 否則如果?exp?是像?(,e1 ,e2)?這樣的子樹,那么分別對?e1?和?e2?遞歸調用?tree-sum,進行求和,得到?v1?和?v2,然后返回?v1 + v2?的和。
  • 你自己寫出來的代碼,也許用了 if 或者 cond 語句來進行分支,而我的代碼里面使用的是 Racket 的模式匹配(match)。這個例子用 if 或者 cond 其實也可以,但我之后要把這代碼擴展成一個解釋器,所以提前使用了 match。這樣跟后面的代碼對比的時候,就更容易看出規律來。接下來,我就簡單講一下這個 match 表達式的工作原理。

    模式匹配

    現在不得不插入一點 Racket 的技術細節,如果你已經學會使用 Racket 的模式匹配,可以跳過這一節。你也可以通過閱讀 Racket 模式匹配的文檔來代替這一節。但我建議你不要讀太多文檔,因為我接下去只用到很少的模式匹配功能,我把它們都解釋如下。

    模式匹配的形式一般是這樣:

  • (match x
  • [模式 結果]
  • [模式 結果]
  • ... ...
  • )
  • 它先對?x?求值,然后根據值的結構來進行分支。每個分支由兩部分組成,左邊是一個模式,右邊是一個結果。整個 match 語句的語義是這樣:從上到下依次考慮,找到第一個可以匹配?x?的值的模式,返回它右邊的結果。左邊的模式在匹配之后,可能會綁定一些變量,這些變量可以在右邊的表達式里使用。

    模式匹配是一種分支語句,它在邏輯上就是 Scheme(Lisp) 的?cond?表達式,或者 Java 的嵌套條件語句?if ... else if ... else ...。然而跟條件語句里的“條件”不同,每條 match 語句左邊的模式,可以準確而形象地描述數據結構的形狀,而且可以在匹配的同時,對結構里的成員進行“綁定”。這樣我們可以在右邊方便的訪問結構成員,而不需要使用訪問函數(accessor)或者?foo.x?這樣的屬性語法(attribute)。而且模式可以有嵌套的子結構,所以它能夠一次性的表示復雜的數據結構。

    舉個實在點的例子。我的代碼里用了這樣一個 match 表達式:

  • (match exp
  • [(? number? x) x]
  • [`(,e1 ,e2)
  • (let ([v1 (tree-sum e1)]
  • [v2 (tree-sum e2)])
  • (+ v1 v2))])
  • 第二行里面的?'(,e1 ,e2)?是一個模式(pattern),它被用來匹配?exp?的值。如果?exp?是?'(1 2),那么它與'(,e1 ,e2)匹配的時候,就會把?e1?綁定到?'1,把?e2?綁定到?'2。這是因為它們結構相同:

  • `(,e1 ,e2)
  • '( 1 2)
  • 說白了,模式就是一個可以含有“名字”(像?e1?和?e2)的結構,像?'(,e1 ,e2)。我們拿這個帶有名字的結構,去匹配實際數據,像?'(1 2)。當它們一一對應之后,這些名字就被綁定到數據里對應位置的值。

    第一行的“模式”比較特殊,(? number? x)?表示的,其實是一個普通的條件判斷,相當于?(number? exp),如果這個條件成立,那么它把?exp?的值綁定到?x,這樣右邊就可以用?x?來指代?exp。對于無法細分的結構(比如數字,布爾值),你只能用這種方式來“匹配”。看起來有點奇怪,不過習慣了就好了。

    模式匹配對解釋器和編譯器的書寫相當有用,因為程序的語法樹往往具有嵌套的結構。不用模式匹配的話,往往要寫冗長,復雜,不直觀的代碼,才能描述出期望的結構。而且由于結構的嵌套比較深,很容易漏掉邊界情況,造成錯誤。模式匹配可以直觀的描述期望的結構,避免漏掉邊界情況,而且可以方便的訪問結構成員。

    由于這個原因,很多源于 ML 的語言(比如 OCaml,Haskell)都有模式匹配的功能。因為 ML(Meta-Language)原來設計的用途,就是用來實現程序語言的。Racket 的模式匹配也是部分受了 ML 的啟發,實際上它們的原理是一模一樣的。

    好了,樹遍歷的練習就做到這里。然而這跟解釋器有什么關系呢?下面我們只把它改一下,就可以得到一個簡單的解釋器。

    一個計算器

    計算器也是一種解釋器,只不過它只能處理算術表達式。我們的下一個目標,就是寫出一個計算器。如果你給它?'(* (+ 1 2) (+ 3 4)),它就輸出?21。可不要小看這個計算器,稍后我們把它稍加改造,就可以得到一個更多功能的解釋器。

    上面的代碼里,我們利用遞歸遍歷,對樹里的數字求和。那段代碼里,其實已經隱藏了一個解釋器的框架。你觀察一下,一個算術表達式?'(* (+ 1 2) (+ 3 4)),跟二叉樹?'((1 2) (3 4))?有什么不同?發現沒有,這個算術表達式比起二叉樹,只不過在每個子樹結構里多出了一個操作符:一個?*?和兩個?+?。它不再是一棵二叉樹,而是一種更通用的樹結構。

    這點區別,也就帶來了二叉樹求和與解釋器算法的區別。對二叉樹進行求和的時候,在每個子樹節點,我們都做加法。而對表達式進行解釋的時候,在每一個子樹節點,我們不一定進行加法。根據子樹的“操作符”不同,我們可能會選擇加,減,乘,除四種操作。

    好了,下面就是這個計算器的代碼。它接受一個表達式,輸出一個數字作為結果。

  • #lang racket ; 聲明用 Racket 語言
  • (define calc
  • (lambda (exp)
  • (match exp ; 分支匹配:表達式的兩種情況
  • [(? number? x) x] ; 是數字,直接返回
  • [`(,op ,e1 ,e2) ; 匹配提取操作符op和兩個操作數e1,e2
  • (let ([v1 (calc e1)] ; 遞歸調用 calc 自己,得到 e1 的值
  • [v2 (calc e2)]) ; 遞歸調用 calc 自己,得到 e2 的值
  • (match op ; 分支匹配:操作符 op 的 4 種情況
  • ['+ (+ v1 v2)] ; 如果是加號,輸出結果為 (+ v1 v2)
  • ['- (- v1 v2)] ; 如果是減號,乘號,除號,相似的處理
  • ['* (* v1 v2)]
  • ['/ (/ v1 v2)]))])))
  • 你可以得到如下的結果:

  • (calc '(+ 1 2))
  • ;; => 3
  • (calc '(* 2 3))
  • ;; => 6
  • (calc '(* (+ 1 2) (+ 3 4)))
  • ;; => 21
  • (完整的代碼和示例,可以在這里下載。)

    跟之前的二叉樹求和代碼比較一下,你會發現它們驚人的相似,因為解釋器本來就是一個樹遍歷算法。不過你發現它們有什么不同嗎?它們的不同點在于:

  • 算術表達式的模式里面,多出了一個“操作符”(op)葉節點:(,op ,e1 ,e2)

  • 對子樹 e1 和 e2 分別求值之后,我們不是返回?(+ v1 v2),而是根據?op?的不同,返回不同的結果:

  • (match op
  • ['+ (+ v1 v2)]
  • ['- (- v1 v2)]
  • ['* (* v1 v2)]
  • ['/ (/ v1 v2)])
  • 最后你發現,一個算術表達式的解釋器,不過是一個稍加擴展的樹遍歷算法。

    R2:一個很小的程序語言

    實現了一個計算器,現在讓我們過渡到一種更強大的語言。為了方便稱呼,我給它起了一個萌萌噠名字,叫 R2。R2 比起之前的計算器,只多出四個元素,它們分別是:變量,函數,綁定,調用。再加上之前介紹的算術操作,我們就得到一個很簡單的程序語言,它只有5種不同的構造。用 Scheme 的語法,這5種構造看起來就像這樣:

    • 變量:x
    • 函數:(lambda (x) e)
    • 綁定:(let ([x e1]) e2)
    • 調用:(e1 e2)
    • 算術:(? e2 e2)

    (其中,? 是一個算術操作符,可以選擇?+,?-,?*,?/?其中之一)

    一般程序語言還有很多其它構造,可是一開頭就試圖去實現所有那些,只會讓人糊涂。最好是把這少數幾個東西搞清楚,確保它們正確之后,才慢慢加入其它元素。

    這些構造的語義,跟 Scheme 里面的同名構造幾乎一模一樣。如果你不清楚什么是”綁定“,那你可以把它看成是普通語言里的”變量聲明“。

    需要注意的是,跟一般語言不同,我們的函數只接受一個參數。這不是一個嚴重的限制,因為在我們的語言里,函數可以被作為值傳遞,也就是所謂“first-class function”。所以你可以用嵌套的函數定義來表示有兩個以上參數的函數。

    舉個例子,?(lambda (x) (lambda (y) (+ x y)))?是個嵌套的函數定義,它也可以被看成是有兩個參數(x?和?y)的函數,這個函數返回?x?和?y?的和。當這樣的函數被調用的時候,需要兩層調用,就像這樣:

  • (((lambda (x) (lambda (y) (+ x y))) 1) 2)
  • ;; => 3
  • 這種做法在PL術語里面,叫做咖喱(currying)。看起來啰嗦,但這樣我們的解釋器可以很簡單。等我們理解了基本的解釋器,再實現真正的多參數函數也不遲。

    另外,我們的綁定語法?(let ([x e1]) e2),比起 Scheme 的綁定也有一些局限。我們的 let 只能綁定一個變量,而 Scheme 可以綁定多個,像這樣?(let ([x 1] [y 2]) (+ x y))。這也不是一個嚴重的限制,因為我們可以啰嗦一點,用嵌套的 let 綁定:

  • (let ([x 1])
  • (let ([y 2])
  • (+ x y)))
  • R2 的解釋器

    下面是我們今天要完成的解釋器,它可以運行一個 R2 程序。你可以先留意一下各部分的注釋。

  • #lang racket
  • ;;; 以下三個定義 env0, ext-env, lookup 是對環境(environment)的基本操作:
  • ;; 空環境
  • (define env0 '())
  • ;; 擴展。對環境 env 進行擴展,把 x 映射到 v,得到一個新的環境
  • (define ext-env
  • (lambda (x v env)
  • (cons `(,x . ,v) env)))
  • ;; 查找。在環境中 env 中查找 x 的值。如果沒找到就返回 #f
  • (define lookup
  • (lambda (x env)
  • (let ([p (assq x env)])
  • (cond
  • [(not p) #f]
  • [else (cdr p)]))))
  • ;; 閉包的數據結構定義,包含一個函數定義 f 和它定義時所在的環境
  • (struct Closure (f env))
  • ;; 解釋器的遞歸定義(接受兩個參數,表達式 exp 和環境 env)
  • ;; 共 5 種情況(變量,函數,綁定,調用,數字,算術表達式)
  • (define interp
  • (lambda (exp env)
  • (match exp ; 對exp進行模式匹配
  • [(? symbol? x) ; 變量
  • (let ([v (lookup x env)])
  • (cond
  • [(not v)
  • (error "undefined variable" x)]
  • [else v]))]
  • [(? number? x) x] ; 數字
  • [`(lambda (,x) ,e) ; 函數
  • (Closure exp env)]
  • [`(let ([,x ,e1]) ,e2) ; 綁定
  • (let ([v1 (interp e1 env)])
  • (interp e2 (ext-env x v1 env)))]
  • [`(,e1 ,e2) ; 調用
  • (let ([v1 (interp e1 env)]
  • [v2 (interp e2 env)])
  • (match v1
  • [(Closure `(lambda (,x) ,e) env-save)
  • (interp e (ext-env x v2 env-save))]))]
  • [`(,op ,e1 ,e2) ; 算術表達式
  • (let ([v1 (interp e1 env)]
  • [v2 (interp e2 env)])
  • (match op
  • ['+ (+ v1 v2)]
  • ['- (- v1 v2)]
  • ['* (* v1 v2)]
  • ['/ (/ v1 v2)]))])))
  • ;; 解釋器的“用戶界面”函數。它把 interp 包裝起來,掩蓋第二個參數,初始值為 env0
  • (define r2
  • (lambda (exp)
  • (interp exp env0)))
  • 這里有一些測試例子:

  • (r2 '(+ 1 2))
  • ;; => 3
  • (r2 '(* 2 3))
  • ;; => 6
  • (r2 '(* 2 (+ 3 4)))
  • ;; => 14
  • (r2 '(* (+ 1 2) (+ 3 4)))
  • ;; => 21
  • (r2 '((lambda (x) (* 2 x)) 3))
  • ;; => 6
  • (r2
  • '(let ([x 2])
  • (let ([f (lambda (y) (* x y))])
  • (f 3))))
  • ;; => 6
  • (r2
  • '(let ([x 2])
  • (let ([f (lambda (y) (* x y))])
  • (let ([x 4])
  • (f 3)))))
  • ;; => 6
  • (完整的代碼和示例,可以在這里下載。)

    在接下來的幾節,我們來仔細看看這個解釋器的各個部分。

    對基本算術操作的解釋

    算術操作一般都是程序里最基本的構造,它們不能再被細分為多個步驟,所以我們先來看看對算術操作的處理。以下就是 R2 解釋器處理算術的部分,它是?interp?的最后一個分支。

  • (match exp
  • ... ...
  • [`(,op ,e1 ,e2)
  • (let ([v1 (interp e1 env)] ; 遞歸調用 interp 自己,得到 e1 的值
  • [v2 (interp e2 env)]) ; 遞歸調用 interp 自己,得到 e2 的值
  • (match op ; 分支:處理操作符 op 的 4 種情況
  • ['+ (+ v1 v2)] ; 如果是加號,輸出結果為 (+ v1 v2)
  • ['- (- v1 v2)] ; 如果是減號,乘號,除號,相似的處理
  • ['* (* v1 v2)]
  • ['/ (/ v1 v2)]))])
  • 你可以看到它幾乎跟剛才寫的計算器一模一樣,不過現在?interp?的調用多了一個參數?env?而已。這個?env?是所謂“環境”,我們下面很快就講。

    對數字的解釋

    對數字的解釋很簡單,把它們原封不動返回就可以了。

    [(? number? x) x]

    變量和函數

    變量和函數是解釋器里最麻煩的部分,所以我們來仔細看看。

    變量(variable)的產生,是數學史上的最大突破之一。因為變量可以被綁定到不同的值,從而使函數的實現成為可能。比如數學函數?f(x) = x * 2,其中?x?是一個變量,它把輸入的值傳遞到函數體?x * 2?里面。如果沒有變量,函數就不可能實現。

    對變量最基本的操作,是對它的“綁定”(binding)和“取值”(evaluate)。什么是綁定呢?拿上面的函數?f(x)?作為例子。當我們調用?f(1)?時,函數體里面的?x?等于 1,所以?x * 2?的值是 2,而當我們調用?f(2)?時,函數體里面的?x?等于 2,所以?x * 2?的值是 4。這里,兩次對?f?的調用,分別對?x?進行了兩次綁定。第一次?x?被綁定到了 1,第二次被綁定到了 2。

    你可以把“綁定”理解成這樣一個動作,就像當你把插頭插進電源插座的那一瞬間。插頭的插腳就是?f(x)?里面的那個?x,而?x * 2?里面的?x,則是電線的另外一端。所以當你把插頭插進插座,電流就通過這根電線到達另外一端。如果電線導電性能良好,兩頭的電壓應該相等。

    環境

    我們的解釋器只能一步一步的做事情。比如,當它需要求?f(1)?的值的時候,它分成兩步操作:

  • 把?x?綁定到 1,這樣函數體內才能看見這個綁定。
  • 進入?f?的函數體,對?x * 2?進行求值。
  • 這就像一個人做出這兩個動作:

  • 把插頭插進插座 。
  • 到電線的另外一頭,測量它的電壓,并且把結果乘以 2。
  • 在第一步和第二步之間,我們如何記住?x?的值呢?通過所謂“環境”!我們用環境記錄變量的值,并且把它們傳遞到變量的“可見區域”。變量的可見區域,用術語說叫做“作用域”(scope)。

    在我們的解釋器里,用于處理環境的代碼如下:

  • ;; 空環境
  • (define env0 '())
  • ;; 對環境 env 進行擴展,把 x 映射到 v
  • (define ext-env
  • (lambda (x v env)
  • (cons `(,x . ,v) env)))
  • ;; 取值。在環境中 env 中查找 x 的值
  • (define lookup
  • (lambda (x env)
  • (let ([p (assq x env)])
  • (cond
  • [(not p) #f]
  • [else (cdr p)]))))
  • 這里我們用一種最簡單的數據結構,Scheme 的 association list,來表示環境。Association list 看起來像這個樣子:((x . 1) (y . 2) (z . 5))。它是一個兩元組(pair)的鏈表,左邊的元素是 key,右邊的元素是 value。寫得直觀一點就是:

  • ((x . 1)
  • (y . 2)
  • (z . 5))
  • 查表操作就是從頭到尾搜索,如果左邊的 key 是要找的變量,就返回整個 pair。簡單吧?效率很低,但是足夠完成我們現在的任務。

    ext-env?函數擴展一個環境。比如,如果原來的環境?env1?是?((y . 2) (x . 1))?那么?(ext-env x 3 env1),就會返回?((x . 3) (y . 2) (x . 1))。也就是把?(x . 3)?加到?env1?的最前面去。

    那我們什么時候需要擴展環境呢?當我們進行綁定的時候。綁定可能出現在函數調用時,也可能出現在 let 綁定時。我們選擇的數據結構,使得環境自然而然的具有了作用域(scope)的特性。

    環境其實是一個堆棧(stack)。內層的綁定,會出現在環境的最上面,這就是在“壓棧”。這樣我們查找變量的時候,會優先找到最內層定義的變量。

    舉個例子:

  • (let ([x 1]) ; env='()。綁定x到1。
  • (let ([y 2]) ; env='((x . 1))。綁定y到2。
  • (let ([x 3]) ; env='((y . 2) (x . 1))。綁定x到3。
  • (+ x y)))) ; env='((x . 3) (y . 2) (x . 1))。查找x,得到3;查找y,得到2。
  • ;; => 5
  • 這段代碼會返回5。這是因為最內層的綁定,把?(x . 3)?放到了環境的最前面,這樣查找?x?的時候,我們首先看到?(x . 3),然后就返回值3。之前放進去的?(x . 1)?仍然存在,但是我們先看到了最上面的那個(x . 3),所以它被忽略了。

    這并不等于說?(x . 1)?就可以被改寫或者丟棄,因為它仍然是有用的。你只需要看一個稍微不同的例子,就知道這是怎么回事:

  • (let ([x 1]) ; env='()。綁定x到1。
  • (+ (let ([x 2]) ; env='((x . 1))。綁定x到2。
  • x) ; env='((x . 2) (x . 1))。查找x,得到2。
  • x)) ; env='((x . 1))。查找x,得到1。
  • ;; => 3 ; 兩個不同的x的和,1+2等于3
  • 這個例子會返回3。它是第3行和第4行里面兩個?x?的和。由于第3行的?x?處于內層 let 里面,那里的環境是?((x . 2) (x . 1)),所以查找?x?的值得到2。第4行的?x?在內層 let 外面,但是在外層 let 里面,那里的環境是?((x . 1)),所以查找?x?的值得到1。這很符合直覺,因為?x?總是找到最內層的定義。

    值得注意的是,環境被擴展以后,形成了一個新的環境,而原來的環境并沒有被改變。比如,上面的?((y . 2) (x . 1))并沒有刪除或者修改,只不過是被“引用”到一個更大的列表里去了。

    這樣不對已有數據進行修改(mutation)的數據結構,叫做“函數式數據結構”。函數式數據結構只生成新的數據,而不改變或者刪除老的。它可能引用老的結構,然而卻不改變老的結構。這種“不修改”(immutable)的性質,在我們的解釋器里是很重要的,因為當我們擴展一個環境,進入遞歸,返回之后,外層的代碼必須仍然可以訪問原來外層的環境。

    當然,我們也可以用另外的,更高效的數據結構(比如平衡樹,串接起來的哈希表)來表示環境。如果你學究一點,甚至可以用函數來表示環境。這里為了代碼簡單,我們選擇了最笨,然而正確,容易理解的數據結構。

    對變量的解釋

    了解了變量,函數和環境,我們來看看解釋器對變量的“取值”操作,也就是?match?的第一種情況。

    [(? symbol? x) (lookup x env)]

    這就是在環境中,沿著從內向外的“作用域順序”,查找變量的值。

    這里的?(? symbol? x)?是一種特殊的模式,它使用 Scheme 函數?symbol??來判斷輸入是否是一個符號,如果是,就把它綁定到?x,然后你就可以在右邊用?x?來指稱這個輸入。

    對綁定的解釋

    現在我們來看看對 let 綁定的解釋:

  • [`(let ([,x ,e1]) ,e2)
  • (let ([v1 (interp e1 env)]) ; 解釋右邊表達式e1,得到值v1
  • (interp e2 (ext-env x v1 env)))] ; 把(x . v1)擴充到環境頂部,對e2求值
  • 通過代碼里的注釋,你也許已經可以理解它在做什么。我們先對表達式?e1?求值,得到?v1。然后我們把?(x . v1)?擴充到環境里,這樣?(let ([x e1]) ...)?內部都可以看到?x?的值。然后我們使用這個擴充后的環境,遞歸調用解釋器本身,對 let 的主體?e2?求值。它的返回值就是這個 let 綁定的值。

    Lexical Scoping 和 Dynamic Scoping

    下面我們準備談談函數定義和調用。對函數的解釋是一個微妙的問題,很容易弄錯,這是由于函數體內也許會含有外層的變量,叫做“自由變量”。所以在分析函數的代碼之前,我們來了解一下不同的“作用域”(scoping)規則。

    我們舉個例子來解釋這個問題。下面這段代碼,它的值應該是多少呢?

  • (let ([x 2])
  • (let ([f (lambda (y) (* x y))])
  • (let ([x 4])
  • (f 3))))
  • 在這里,f?函數體?(lambda (y) (* x y))?里的那個?x,就是一個“自由變量”。x?并不是這個函數的參數,也不是在這個函數里面定義的,所以我們必須到函數外面去找?x?的值。

    我們的代碼里面,有兩個地方對?x?進行了綁定,一個等于2,一個等于4,那么?x?到底應該是指向哪一個綁定呢?這似乎無關痛癢,然而當我們調用?(f 3)?的時候,嚴重的問題來了。f?的函數體是?(* x y),我們知道?y?的值來自參數 3,可是?x?的值是多少呢?它應該是2,還是4呢?

    在歷史上,這段代碼可能有兩種不同的結果,這種區別一直延續到今天。如果你在 Scheme (Racket)里面寫以上的代碼,它的結果是6。

  • ;; Scheme
  • (let ([x 2])
  • (let ([f (lambda (y) (* x y))])
  • (let ([x 4])
  • (f 3))))
  • ;; => 6
  • 現在我們來看看,在 Emacs Lisp 里面輸入等價的代碼,得到什么結果。如果你不熟悉 Emacs Lisp 的用法,那你可以跟我做:把代碼輸入 Emacs 的那個叫?*scratch*?的 buffer。把光標放在代碼最后,然后按 C-x C-e,這樣 Emacs 會執行這段代碼,然后在 minibuffer 里顯示結果:

    結果是12!如果你把代碼最內層的?x?綁定修成其它的值,輸出會隨之改變。

    奇怪吧?Scheme 和 Emacs Lisp,到底有什么不一樣呢?實際上,這兩種看似差不多的 “Lisp 方言”,采用了兩種完全不同的作用域方式。Scheme 的方式叫做 lexical scoping (或者 static scoping),而 Emacs 的方式叫做 dynamic scoping。

    那么哪一種方式更好呢?或者用哪一種都無所謂?答案是,dynamic scoping 是非常錯誤的做法。歷史的教訓告訴我們,它會帶來許許多多莫名其妙的 bug,導致 dynamic scoping 的語言幾乎完全沒法用。這是為什么呢?

    原因在于,像?(let ((x 4)) …)?這樣的變量綁定,只應該影響它內部“看得見”的?x?的值。當我們看見?(let ((x 4)) (f 3))?的時候,并沒有在 let 的內部看見任何叫“x” 的變量,所以我們“直覺”的認為,(let ((x 4)) …)?對?x?的綁定,不應該引起?(f 3)?的結果變化。

    然而對于 dynamic scoping,我們的直覺卻是錯誤的。因為?f?的函數體里面有一個?x,雖然我們沒有在?(f 3)?這個調用里面看見它,然而它卻存在于?f?定義的地方。要知道,f?定義的地方也許隔著幾百行代碼,甚至在另外一個文件里面。而且調用函數的人憑什么應該知道,?f?的定義里面有一個自由變量,它的名字叫做?x?所以 dynamic scoping 在設計學的角度來看,是一個反人類的設計 :)

    相反,lexical scoping 卻是符合人們直覺的。雖然在?(let ((x 4)) (f 3))?里面,我們把?x?綁定到了 4,然而?f?的函數體并不是在那里定義的,我們也沒在那里看見任何?x,所以?f?的函數體里面的?x,仍然指向我們定義它的時候看得見的那個?x,也就是最上面的那個?(let ([x 2]) ...),它的值是 2。所以?(f 3)?的值應該等于 6,而不是12。

    對函數的解釋

    為了實現 lexical scoping,我們必須把函數做成“閉包”(closure)。閉包是一種特殊的數據結構,它由兩個元素組成:函數的定義和當前的環境。我們把閉包定義為一個 Racket 的 struct 結構:

    (struct Closure (f env))

    有了這個數據結構,我們對?(lambda (x) e)?的解釋就可以寫成這樣:

  • [`(lambda (,x) ,e)
  • (Closure exp env)]
  • 注意這里的?exp?就是 ``(lambda (,x) ,e)` 自己。

    有意思的是,我們的解釋器遇到?(lambda (x) e),幾乎沒有做任何計算。它只是把這個函數包裝了一下,把它與當前的環境一起,打包放到一個數據結構(Closure)里面。這個閉包結構,記錄了我們在函數定義的位置“看得見”的那個環境。稍候在調用的時候,我們就能從這個閉包的環境里面,得到函數體內的自由變量的值。

    對調用的解釋

    好了,我們終于到了最后的關頭,函數調用。為了直觀,我們把函數調用的代碼拷貝如下:

  • [`(,e1 ,e2)
  • (let ([v1 (interp e1 env)] ; 計算函數 e1 的值
  • [v2 (interp e2 env)]) ; 計算參數 e2 的值
  • (match v1
  • [(Closure `(lambda (,x) ,e) env-save) ; 用模式匹配的方式取出閉包里的各個子結構
  • (interp e (ext-env x v2 env-save))]))] ; 在閉包的環境env-save中把x綁定到v2,解釋函數體
  • 函數調用都是?(e1 e2)?這樣的形式,e1?表示函數,e2?是它的參數。我們需要先分別求出函數?e1?和參數?e2?的值。

    函數調用就像把一個電器的插頭插進插座,使它開始運轉。比如,當?(lambda (x) (* x 2))?被作用于 1 時,我們把?x綁定到 1,然后解釋它的函數體?(* x 2)。但是這里有一個問題,函數體內的自由變量應該取什么值呢?從上面閉包的討論,你已經知道了,自由變量的值,應該從閉包的環境查詢。

    操作數?e1?的值?v1?是一個閉包,它里面包含一個函數定義時保存的環境?env-save。我們把這個環境?env-save?取出來,那我們就可以查詢它,得到函數體內自由變量的值。然而函數體內不僅有自由變量,還有對函數參數的使用,所以我們必須擴展這個?env-save?環境,把參數的值加進去。這就是為什么我們使用?(ext-env x v2 env-save),而不只是?env-save。

    你可能會奇怪,那么解釋器的環境?env?難道這里就不用了嗎?是的。我們通過?env?來計算?e1?和?e2?的值,是因為?e1?和?e2?里面的變量,在“當前環境”(env)里面看得見。可是函數體的定義,在當前環境下是看不見的。它的代碼在別的地方,而那個地方看得見的環境,被我們存在閉包里了,它就是?env-save。所以我們把?v1?里面的閉包環境?env-save?取出來,用于計算函數體的值。

    有意思的是,如果我們用?env,而不是env-save?來解釋函數體,那我們的語言就變成了 dynamic scoping。現在來實驗一下:你可以把?(interp e (ext-env x v2 env-save))?里面的?env-save?改成?env,再試試我們之前討論過的代碼,它的輸出就會變成 12。那就是我們之前講過的,dynamic scoping 的結果。

  • (r2
  • '(let ([x 2])
  • (let ([f (lambda (y) (* x y))])
  • (let ([x 4])
  • (f 3)))))
  • ;; => 12
  • 你也許發現了,如果我們的語言是 dynamic scoping,那就沒必要使用閉包了,因為我們根本不需要閉包里面保存的環境。這樣一來,dynamic scoping 的解釋器就可以寫成這樣:

  • (define interp
  • (lambda (exp env)
  • (match exp
  • ... ...
  • [`(lambda (,x) ,e) ; 函數:直接返回自己的表達式
  • exp]
  • ... ...
  • [`(,e1 ,e2)
  • (let ([v1 (interp e1 env)]
  • [v2 (interp e2 env)])
  • (match v1
  • [`(lambda (,x) ,e) ; 調用:直接使用函數的表達式本身
  • (interp e (ext-env x v2 env))]))]
  • ... ...
  • )))
  • 注意到這個解釋器的函數有多容易實現嗎?它就是這個函數的表達式自己,原封不動。用函數的表達式本身來表示它的值,是很直接很簡單的做法,也是大部分人一開頭就會想到的。然而這樣實現出來的語言,就不知不覺地采用了 dynamic scoping。

    這就是為什么很多早期的 Lisp 語言,比如 Emacs Lisp,都使用 dynamic scoping。這并不是因為它們的設計者在 dynamic scoping 和 lexical scoping 兩者之中做出了選擇,而是因為使用函數的表達式本身來作為它的值,是最直接,一般人都會首先想到的做法。

    另外,在這里我們也看到環境用“函數式數據結構”表示的好處。閉包被調用時它的環境被擴展,但是這并不會影響原來的那個環境,我們得到的是一個新的環境。所以當函數調用返回之后,函數的參數綁定就自動“注銷”了。

    如果你用一個非函數式的數據結構,在綁定參數時不生成新的環境,而是對已有環境進行賦值,那么這個賦值操作就會永久性的改變原來環境的內容。所以你在函數返回之后必須刪除參數的綁定。這樣不但麻煩,而且在復雜的情況下很容易出錯。

    思考題:可能有些人看過 lambda calculus,這些人可能知道?(let ([x e1]) e2)?其實等價于一個函數調用:((lambda (x) e2) e1)。現在問題來了,我們在討論函數和調用的時候,很深入的討論了關于 lexical scoping 和 dynamic scoping 的差別。既然 let 綁定等價于一個函數定義和調用,為什么之前我們討論對綁定的時候,沒有討論過 lexical scoping 和 dynamic scoping 的問題,也沒有制造過閉包呢?

    不足之處

    現在你已經學會了如何寫出一個簡單的解釋器,它可以處理一個相當強的,具有“first-class 函數”的語言。出于教學的考慮,這個解釋器并沒有考慮實用的需求,所以它并不能作為“工業應用”。在這里,我指出它的一些不足之處。

  • 缺少必要的語言構造。我們的語言里缺少好些實用語言必須的構造:遞歸,數組,賦值操作,字符串,自定義數據結構,…… 作為一篇基礎性的讀物,我不能把這些都加進來。如果你對這些有興趣,可以看看其它書籍,或者等待我的后續作品。

  • 不合法代碼的檢測和報告。你也許發現了,這個解釋器的 match 表達式,全都假定了輸入都是合法的程序,它并沒有檢查不合法的情況。如果你給它一個不合法的程序,它的行為會變得詭異。一個實用的解釋器,必須加入對代碼格式進行全面檢測,報告不合法的代碼結構。

  • 低效率的數據結構。在 association list 里面查找變量,是線性的復雜度。當程序有很多變量的時候就有性能問題。一個實用的解釋器,需要更高效的數據結構。這種數據結構不一定非得是函數式的。你也可以用非函數式的數據結構(比如哈希表),經過一定的改造,達到同樣的性質,卻具有更高的效率。 ? 另外,你還可以把環境轉化成一個數組。給環境里的每個變量分配一個下標(index),在這個數組里就可以找到它的值。如果你用數組表示環境,那么這個解釋器就向編譯器邁進了一步。

  • S表達式的歧義問題。為了教學需要,我們的解釋器直接使用S表達式來表達語法樹,用模式匹配來進行分支遍歷。在實際的語言里,這種方式會帶來比較大的問題。因為S表達式是一種通用的數據結構,用它表示的東西,看起來都差不多的樣子。一旦程序的語法構造多起來,直接對S表達式進行模式匹配,會造成歧義。 ?

    比如?(,op ,e1 ,e2)?,你以為它只匹配二元算術操作,比如?(+ 1 2)。但它其實也可以匹配一個 let 綁定:?(let ([x 1]) (* x 2))。這是因為它們頂層元素的數目是一樣的。為了消除歧義,你得小心的安排模式的順序,比如你必須把?(let ([,x ,e1]) ,e2)?的模式放在?(,op ,e1, e2)?前面。所以最好的辦法,是不要直接在S表達式上寫解釋器,而是先寫一個“parser”,這個parser把S表達式轉換成 Racket 的 struct 結構。然后解釋器再在 struct 上面進行分支匹配。這樣解釋器不用擔心歧義問題,而且會帶來效率的提升。



  • 總結

    以上是生活随笔為你收集整理的怎样写一个解释器——王垠的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    激情内射亚州一区二区三区爱妻 | aⅴ在线视频男人的天堂 | 玩弄人妻少妇500系列视频 | 国产欧美熟妇另类久久久 | 亚洲国产精品久久人人爱 | 国产精品鲁鲁鲁 | 日日噜噜噜噜夜夜爽亚洲精品 | 丰满少妇人妻久久久久久 | 国产一区二区三区影院 | 国产精品香蕉在线观看 | 亚洲国产精品一区二区第一页 | 国产精品成人av在线观看 | 2020久久超碰国产精品最新 | 东京热男人av天堂 | 国产成人精品一区二区在线小狼 | 人妻aⅴ无码一区二区三区 | 伊人久久大香线蕉av一区二区 | 啦啦啦www在线观看免费视频 | 国产精品第一区揄拍无码 | 久青草影院在线观看国产 | 久久国产精品精品国产色婷婷 | 午夜精品久久久久久久久 | 日本精品人妻无码免费大全 | 色欲久久久天天天综合网精品 | 日韩精品无码一区二区中文字幕 | 一本色道久久综合亚洲精品不卡 | 亚欧洲精品在线视频免费观看 | 国内少妇偷人精品视频 | 精品偷自拍另类在线观看 | 黄网在线观看免费网站 | 国产欧美熟妇另类久久久 | 中文字幕亚洲情99在线 | 国产av一区二区精品久久凹凸 | 国产一区二区三区影院 | 欧美 日韩 人妻 高清 中文 | 日韩成人一区二区三区在线观看 | 18精品久久久无码午夜福利 | 少妇被黑人到高潮喷出白浆 | 亚洲精品无码人妻无码 | 成人无码影片精品久久久 | 又粗又大又硬又长又爽 | 精品国产一区二区三区四区在线看 | 色老头在线一区二区三区 | 欧美丰满熟妇xxxx性ppx人交 | 国产欧美亚洲精品a | 国产精品内射视频免费 | 久久亚洲国产成人精品性色 | 理论片87福利理论电影 | 久久综合网欧美色妞网 | 国产极品美女高潮无套在线观看 | 亚洲日韩av一区二区三区四区 | 国产免费久久精品国产传媒 | 国产av一区二区精品久久凹凸 | 中文字幕亚洲情99在线 | 香蕉久久久久久av成人 | 成人无码精品一区二区三区 | 一本大道伊人av久久综合 | 中文无码成人免费视频在线观看 | 搡女人真爽免费视频大全 | √8天堂资源地址中文在线 | 欧美兽交xxxx×视频 | 成人片黄网站色大片免费观看 | 国产香蕉97碰碰久久人人 | 亚洲小说春色综合另类 | 日韩在线不卡免费视频一区 | 日本www一道久久久免费榴莲 | 秋霞成人午夜鲁丝一区二区三区 | 国产亚洲日韩欧美另类第八页 | 77777熟女视频在线观看 а天堂中文在线官网 | 中文字幕av伊人av无码av | 国产激情无码一区二区app | 熟女俱乐部五十路六十路av | 99久久久无码国产精品免费 | 国产亚av手机在线观看 | 自拍偷自拍亚洲精品10p | 无码中文字幕色专区 | 日韩亚洲欧美精品综合 | 日本va欧美va欧美va精品 | 300部国产真实乱 | 国产成人一区二区三区在线观看 | 欧美丰满熟妇xxxx | 亚洲国产成人a精品不卡在线 | 熟女少妇人妻中文字幕 | 精品国精品国产自在久国产87 | 一本久道久久综合狠狠爱 | 亚洲精品一区三区三区在线观看 | 无码av免费一区二区三区试看 | 亚洲国产精品无码久久久久高潮 | 377p欧洲日本亚洲大胆 | 六十路熟妇乱子伦 | 欧美兽交xxxx×视频 | 亚洲s码欧洲m码国产av | 国产精品无码mv在线观看 | 成人无码精品一区二区三区 | 国产乱人偷精品人妻a片 | 免费观看又污又黄的网站 | 国产午夜福利亚洲第一 | 国产精品亚洲专区无码不卡 | 欧美 丝袜 自拍 制服 另类 | 成人无码精品一区二区三区 | 国产精品国产自线拍免费软件 | 99精品无人区乱码1区2区3区 | 中文精品无码中文字幕无码专区 | 四虎国产精品免费久久 | 国产黄在线观看免费观看不卡 | 日本一本二本三区免费 | 噜噜噜亚洲色成人网站 | 欧美亚洲国产一区二区三区 | 草草网站影院白丝内射 | 牲欲强的熟妇农村老妇女视频 | 国产成人午夜福利在线播放 | 亚洲中文字幕在线无码一区二区 | 午夜理论片yy44880影院 | 日产精品99久久久久久 | 欧美亚洲日韩国产人成在线播放 | 2019nv天堂香蕉在线观看 | 在线成人www免费观看视频 | 在线天堂新版最新版在线8 | 福利一区二区三区视频在线观看 | 色情久久久av熟女人妻网站 | 偷窥日本少妇撒尿chinese | 国产两女互慰高潮视频在线观看 | 欧美日韩一区二区综合 | 天堂一区人妻无码 | 久久综合久久自在自线精品自 | 国产福利视频一区二区 | 国产无套粉嫩白浆在线 | 给我免费的视频在线观看 | 狠狠cao日日穞夜夜穞av | 国产精品久久久一区二区三区 | 精品 日韩 国产 欧美 视频 | 强开小婷嫩苞又嫩又紧视频 | 久久精品中文字幕大胸 | 三级4级全黄60分钟 | 狠狠躁日日躁夜夜躁2020 | 亚洲中文字幕成人无码 | 人妻少妇被猛烈进入中文字幕 | 午夜精品久久久久久久 | 日本熟妇浓毛 | 久久午夜无码鲁丝片 | 久久精品国产99久久6动漫 | 国产av剧情md精品麻豆 | 2019nv天堂香蕉在线观看 | 精品人妻人人做人人爽 | 初尝人妻少妇中文字幕 | 精品午夜福利在线观看 | 乱人伦中文视频在线观看 | 色欲久久久天天天综合网精品 | 久久久精品人妻久久影视 | 日日干夜夜干 | 午夜免费福利小电影 | 亚洲自偷精品视频自拍 | 国产欧美亚洲精品a | 日本精品少妇一区二区三区 | 精品偷自拍另类在线观看 | 无码一区二区三区在线观看 | 国产成人久久精品流白浆 | 人妻天天爽夜夜爽一区二区 | 欧美日韩视频无码一区二区三 | 夜精品a片一区二区三区无码白浆 | 精品国精品国产自在久国产87 | 1000部啪啪未满十八勿入下载 | 欧美阿v高清资源不卡在线播放 | 亚洲熟妇色xxxxx欧美老妇 | 99久久99久久免费精品蜜桃 | 九九在线中文字幕无码 | 亚洲一区二区三区含羞草 | 亚洲精品国偷拍自产在线麻豆 | 亚洲成a人片在线观看日本 | 丝袜足控一区二区三区 | 真人与拘做受免费视频一 | 成人免费视频视频在线观看 免费 | 黑人巨大精品欧美黑寡妇 | 精品少妇爆乳无码av无码专区 | 亚洲欧洲无卡二区视頻 | 97人妻精品一区二区三区 | 亚洲国产欧美日韩精品一区二区三区 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 日韩欧美中文字幕公布 | 亚洲精品无码人妻无码 | 漂亮人妻洗澡被公强 日日躁 | 久久久久免费精品国产 | 人人澡人摸人人添 | 99久久久无码国产aaa精品 | 中文字幕av日韩精品一区二区 | 久久精品国产一区二区三区肥胖 | 亚洲国产一区二区三区在线观看 | 国产欧美精品一区二区三区 | 国产av一区二区三区最新精品 | 国内综合精品午夜久久资源 | 精品人人妻人人澡人人爽人人 | 欧美性猛交内射兽交老熟妇 | 麻豆国产丝袜白领秘书在线观看 | 四虎4hu永久免费 | av无码不卡在线观看免费 | 欧美真人作爱免费视频 | 国产又爽又黄又刺激的视频 | 精品无人区无码乱码毛片国产 | 亚洲无人区一区二区三区 | 亚洲色欲色欲天天天www | 一区二区传媒有限公司 | 国产成人无码av片在线观看不卡 | 无码毛片视频一区二区本码 | 国内精品人妻无码久久久影院蜜桃 | 98国产精品综合一区二区三区 | 国产69精品久久久久app下载 | 色诱久久久久综合网ywww | 天天拍夜夜添久久精品大 | 国产福利视频一区二区 | 天天摸天天碰天天添 | 熟女体下毛毛黑森林 | 日日摸日日碰夜夜爽av | 三上悠亚人妻中文字幕在线 | 99久久精品午夜一区二区 | 97精品国产97久久久久久免费 | 成年美女黄网站色大免费视频 | 伊人久久大香线焦av综合影院 | 狠狠色丁香久久婷婷综合五月 | 欧美阿v高清资源不卡在线播放 | 国产亚洲日韩欧美另类第八页 | 免费无码午夜福利片69 | 亚洲中文字幕无码一久久区 | 久久久亚洲欧洲日产国码αv | 一本久久伊人热热精品中文字幕 | 亚洲一区二区三区在线观看网站 | www一区二区www免费 | 国产香蕉尹人综合在线观看 | 婷婷五月综合缴情在线视频 | 中文字幕精品av一区二区五区 | 国产精品无码一区二区三区不卡 | 免费视频欧美无人区码 | 少妇邻居内射在线 | 青青青手机频在线观看 | 国产精品对白交换视频 | 国产午夜无码视频在线观看 | 无码人中文字幕 | 国産精品久久久久久久 | 欧美自拍另类欧美综合图片区 | 撕开奶罩揉吮奶头视频 | 强伦人妻一区二区三区视频18 | 在线视频网站www色 | 久久久婷婷五月亚洲97号色 | 麻豆av传媒蜜桃天美传媒 | 黑人大群体交免费视频 | 欧美激情内射喷水高潮 | 精品偷自拍另类在线观看 | 樱花草在线播放免费中文 | 人人妻人人澡人人爽欧美精品 | 少妇邻居内射在线 | 亚洲高清偷拍一区二区三区 | 天天综合网天天综合色 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 免费国产黄网站在线观看 | 精品成人av一区二区三区 | 亚洲综合精品香蕉久久网 | 亚洲一区av无码专区在线观看 | 成人片黄网站色大片免费观看 | 老熟妇仑乱视频一区二区 | 97无码免费人妻超级碰碰夜夜 | 中文毛片无遮挡高清免费 | 亚洲a无码综合a国产av中文 | 激情爆乳一区二区三区 | 女人被男人爽到呻吟的视频 | 天天躁日日躁狠狠躁免费麻豆 | 漂亮人妻洗澡被公强 日日躁 | 国产免费久久精品国产传媒 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲精品国偷拍自产在线麻豆 | 国产av无码专区亚洲awww | 少妇性荡欲午夜性开放视频剧场 | 免费视频欧美无人区码 | 波多野结衣av在线观看 | 久久国语露脸国产精品电影 | 2020最新国产自产精品 | 国内少妇偷人精品视频 | 日本大乳高潮视频在线观看 | 久久亚洲日韩精品一区二区三区 | 永久免费观看美女裸体的网站 | 蜜臀av在线播放 久久综合激激的五月天 | 亚洲の无码国产の无码影院 | 亚洲七七久久桃花影院 | 丰满岳乱妇在线观看中字无码 | 成人免费视频视频在线观看 免费 | 亚洲熟女一区二区三区 | 国产精品亚洲一区二区三区喷水 | 国产猛烈高潮尖叫视频免费 | 激情亚洲一区国产精品 | 红桃av一区二区三区在线无码av | 亚洲成在人网站无码天堂 | 欧洲美熟女乱又伦 | 欧美熟妇另类久久久久久多毛 | 老子影院午夜伦不卡 | 午夜性刺激在线视频免费 | 亚洲aⅴ无码成人网站国产app | 亚洲国产综合无码一区 | 国产sm调教视频在线观看 | 成在人线av无码免观看麻豆 | 秋霞成人午夜鲁丝一区二区三区 | 国产一区二区三区日韩精品 | 欧洲熟妇色 欧美 | 好爽又高潮了毛片免费下载 | 日日干夜夜干 | 伊人久久大香线蕉av一区二区 | 午夜丰满少妇性开放视频 | 又湿又紧又大又爽a视频国产 | 日本精品久久久久中文字幕 | 久久精品国产精品国产精品污 | 成人无码精品1区2区3区免费看 | 日本免费一区二区三区最新 | 美女扒开屁股让男人桶 | 午夜丰满少妇性开放视频 | 国产真实伦对白全集 | 欧美激情一区二区三区成人 | 欧美日韩一区二区免费视频 | 欧美午夜特黄aaaaaa片 | 精品无码成人片一区二区98 | 人妻少妇精品久久 | 国产精品鲁鲁鲁 | 色狠狠av一区二区三区 | 风流少妇按摩来高潮 | 国产精品欧美成人 | 图片区 小说区 区 亚洲五月 | 精品人妻中文字幕有码在线 | 精品一区二区三区无码免费视频 | 亚洲欧美日韩国产精品一区二区 | 国产精品人人妻人人爽 | 午夜丰满少妇性开放视频 | 熟女少妇人妻中文字幕 | 动漫av网站免费观看 | 强奷人妻日本中文字幕 | 小sao货水好多真紧h无码视频 | 性欧美videos高清精品 | 久久五月精品中文字幕 | 精品无码国产自产拍在线观看蜜 | 樱花草在线社区www | 67194成是人免费无码 | 色婷婷久久一区二区三区麻豆 | 精品一区二区三区无码免费视频 | 日韩无码专区 | 国产性生大片免费观看性 | 又色又爽又黄的美女裸体网站 | 国产精品美女久久久久av爽李琼 | 内射巨臀欧美在线视频 | 亚洲精品综合一区二区三区在线 | 国产精品美女久久久网av | 影音先锋中文字幕无码 | 高清无码午夜福利视频 | 一本一道久久综合久久 | 国产三级精品三级男人的天堂 | 狠狠躁日日躁夜夜躁2020 | 国产精品永久免费视频 | 牲欲强的熟妇农村老妇女 | 日日橹狠狠爱欧美视频 | 丰满少妇女裸体bbw | 东京热一精品无码av | 欧美黑人巨大xxxxx | 在线观看免费人成视频 | 日韩亚洲欧美中文高清在线 | 97久久精品无码一区二区 | 国产亲子乱弄免费视频 | 精品国产福利一区二区 | 欧美激情综合亚洲一二区 | 国产精品无码成人午夜电影 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 亚洲精品国产精品乱码不卡 | 国产在线aaa片一区二区99 | 亚拍精品一区二区三区探花 | 成人无码视频在线观看网站 | 18精品久久久无码午夜福利 | 亚洲 另类 在线 欧美 制服 | 伊人久久大香线蕉av一区二区 | 精品无码国产自产拍在线观看蜜 | 黑人巨大精品欧美黑寡妇 | 青青久在线视频免费观看 | 日本欧美一区二区三区乱码 | 欧美大屁股xxxxhd黑色 | 亚洲精品一区二区三区大桥未久 | 天天摸天天碰天天添 | 国产精品办公室沙发 | 1000部夫妻午夜免费 | 亚洲乱码国产乱码精品精 | 国产激情无码一区二区 | 2020久久超碰国产精品最新 | 未满小14洗澡无码视频网站 | 又大又硬又黄的免费视频 | 麻豆蜜桃av蜜臀av色欲av | 欧美日韩亚洲国产精品 | 久久久av男人的天堂 | 午夜福利电影 | 亚洲中文字幕成人无码 | 妺妺窝人体色www在线小说 | 蜜桃av抽搐高潮一区二区 | 亚洲成在人网站无码天堂 | 久久久久99精品成人片 | 大乳丰满人妻中文字幕日本 | 久久aⅴ免费观看 | 狂野欧美性猛交免费视频 | 亚洲精品综合五月久久小说 | 精品国偷自产在线 | 欧美黑人巨大xxxxx | 欧美日韩一区二区三区自拍 | 人人妻人人藻人人爽欧美一区 | 青青青手机频在线观看 | 精品国产一区二区三区四区 | 国产av人人夜夜澡人人爽麻豆 | 亚洲精品一区二区三区大桥未久 | 成人一在线视频日韩国产 | 18黄暴禁片在线观看 | 亚洲成av人综合在线观看 | 国产亚洲精品久久久久久 | 日本高清一区免费中文视频 | 欧洲vodafone精品性 | 99久久亚洲精品无码毛片 | 国产无遮挡又黄又爽又色 | 人人妻人人澡人人爽欧美一区 | 无码成人精品区在线观看 | 日日天日日夜日日摸 | 色婷婷综合中文久久一本 | 亚洲 高清 成人 动漫 | 亚洲午夜福利在线观看 | 日本爽爽爽爽爽爽在线观看免 | 一二三四社区在线中文视频 | 天天做天天爱天天爽综合网 | 午夜时刻免费入口 | 无码国模国产在线观看 | 中文无码精品a∨在线观看不卡 | 国产成人综合美国十次 | 人人妻人人澡人人爽欧美一区 | 无码人妻黑人中文字幕 | 欧美 日韩 人妻 高清 中文 | 午夜肉伦伦影院 | 国产免费无码一区二区视频 | 久久成人a毛片免费观看网站 | 久久午夜无码鲁丝片午夜精品 | 免费网站看v片在线18禁无码 | 麻豆国产丝袜白领秘书在线观看 | 中文亚洲成a人片在线观看 | 伊在人天堂亚洲香蕉精品区 | 亚洲一区av无码专区在线观看 | 国产成人无码a区在线观看视频app | 99久久精品日本一区二区免费 | 欧美老妇交乱视频在线观看 | 中文无码精品a∨在线观看不卡 | 久久人妻内射无码一区三区 | 国产无套粉嫩白浆在线 | 日本一本二本三区免费 | 久久久中文字幕日本无吗 | 欧美人与动性行为视频 | 亚洲成色www久久网站 | 久久熟妇人妻午夜寂寞影院 | 999久久久国产精品消防器材 | 乱码av麻豆丝袜熟女系列 | 亚洲中文字幕无码中文字在线 | 曰韩无码二三区中文字幕 | 大色综合色综合网站 | 亚洲成av人片天堂网无码】 | 狂野欧美性猛xxxx乱大交 | 国产精品第一区揄拍无码 | 美女张开腿让人桶 | 55夜色66夜色国产精品视频 | 欧美性猛交xxxx富婆 | 国产乱人无码伦av在线a | 亚洲中文字幕在线观看 | 最新版天堂资源中文官网 | 久久人人97超碰a片精品 | 亚洲人亚洲人成电影网站色 | 国内精品人妻无码久久久影院 | 国产精品久久久午夜夜伦鲁鲁 | 色偷偷人人澡人人爽人人模 | 极品嫩模高潮叫床 | 亚洲中文字幕乱码av波多ji | 亚洲一区二区三区无码久久 | 日欧一片内射va在线影院 | 少妇无码一区二区二三区 | aⅴ在线视频男人的天堂 | 1000部夫妻午夜免费 | 午夜嘿嘿嘿影院 | 樱花草在线社区www | 18禁止看的免费污网站 | 亚洲成av人片天堂网无码】 | 一个人看的www免费视频在线观看 | 亚洲一区二区三区国产精华液 | 国产片av国语在线观看 | 无码国产色欲xxxxx视频 | 成人性做爰aaa片免费看 | 国产亚洲精品久久久久久 | 亚洲色欲色欲天天天www | 香港三级日本三级妇三级 | 国产女主播喷水视频在线观看 | 久久精品人人做人人综合试看 | 成熟妇人a片免费看网站 | 国产尤物精品视频 | 亚洲欧美日韩成人高清在线一区 | 高清国产亚洲精品自在久久 | 2020久久超碰国产精品最新 | 妺妺窝人体色www婷婷 | 四虎国产精品一区二区 | 麻豆人妻少妇精品无码专区 | 亚洲精品午夜国产va久久成人 | 欧美freesex黑人又粗又大 | 国产精品爱久久久久久久 | 99久久婷婷国产综合精品青草免费 | 国产特级毛片aaaaaaa高清 | 国产精品久久久久9999小说 | 国产9 9在线 | 中文 | 最新国产乱人伦偷精品免费网站 | 伊人久久大香线焦av综合影院 | 国色天香社区在线视频 | 国产一区二区三区日韩精品 | 国产舌乚八伦偷品w中 | 免费中文字幕日韩欧美 | 玩弄少妇高潮ⅹxxxyw | 无遮无挡爽爽免费视频 | 7777奇米四色成人眼影 | 国产熟妇高潮叫床视频播放 | 成人无码视频在线观看网站 | 狠狠色噜噜狠狠狠7777奇米 | 久热国产vs视频在线观看 | 人妻无码αv中文字幕久久琪琪布 | 亚洲成av人片天堂网无码】 | 欧洲极品少妇 | 美女张开腿让人桶 | 国产麻豆精品一区二区三区v视界 | 又大又紧又粉嫩18p少妇 | 欧美丰满熟妇xxxx性ppx人交 | 欧美精品一区二区精品久久 | 国产精品无码久久av | 领导边摸边吃奶边做爽在线观看 | 精品国产一区二区三区四区在线看 | 乱人伦中文视频在线观看 | 少妇被黑人到高潮喷出白浆 | 日本护士xxxxhd少妇 | 国产网红无码精品视频 | 永久免费观看美女裸体的网站 | 偷窥村妇洗澡毛毛多 | 亚洲国产精品久久久久久 | 亚洲自偷精品视频自拍 | 少妇无套内谢久久久久 | 玩弄人妻少妇500系列视频 | 亚洲自偷自偷在线制服 | 国产在线aaa片一区二区99 | 国产无套粉嫩白浆在线 | 久久国产精品萌白酱免费 | 久久国产精品精品国产色婷婷 | 亚洲码国产精品高潮在线 | 精品国产一区二区三区四区在线看 | 国产人妖乱国产精品人妖 | 成人三级无码视频在线观看 | 亚洲色大成网站www国产 | 国产美女精品一区二区三区 | 狠狠色噜噜狠狠狠狠7777米奇 | 欧美黑人性暴力猛交喷水 | 久久久久成人片免费观看蜜芽 | 国产成人亚洲综合无码 | 精品亚洲成av人在线观看 | 国产成人午夜福利在线播放 | 99国产欧美久久久精品 | 久久五月精品中文字幕 | 少妇太爽了在线观看 | 国产深夜福利视频在线 | 噜噜噜亚洲色成人网站 | 日韩精品久久久肉伦网站 | 欧美色就是色 | 色婷婷欧美在线播放内射 | 国产在线一区二区三区四区五区 | 欧美亚洲日韩国产人成在线播放 | 亚洲精品国产品国语在线观看 | 又湿又紧又大又爽a视频国产 | 无码国产乱人伦偷精品视频 | 国内精品人妻无码久久久影院 | 中文字幕精品av一区二区五区 | 午夜时刻免费入口 | 国产精品鲁鲁鲁 | 国产农村乱对白刺激视频 | 国产激情无码一区二区 | 亚洲春色在线视频 | 国产卡一卡二卡三 | 亚洲精品国产第一综合99久久 | 日本大乳高潮视频在线观看 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产成人综合在线女婷五月99播放 | 国产人妻人伦精品1国产丝袜 | 日本一区二区三区免费播放 | 国产成人综合色在线观看网站 | 午夜福利一区二区三区在线观看 | 亚洲狠狠婷婷综合久久 | 国产人妻久久精品二区三区老狼 | 亚洲一区二区三区 | 国产综合久久久久鬼色 | 国产精品怡红院永久免费 | 欧美freesex黑人又粗又大 | 又黄又爽又色的视频 | 精品国产一区二区三区四区 | 高潮毛片无遮挡高清免费视频 | 国产精品高潮呻吟av久久4虎 | 国产精品久久久久影院嫩草 | 国产精品久久久久影院嫩草 | 亚洲精品一区二区三区四区五区 | 男人扒开女人内裤强吻桶进去 | 巨爆乳无码视频在线观看 | 国产精品人人爽人人做我的可爱 | 精品无码成人片一区二区98 | 偷窥村妇洗澡毛毛多 | 暴力强奷在线播放无码 | 黑森林福利视频导航 | 国产精品久久久一区二区三区 | 一本色道婷婷久久欧美 | 国产艳妇av在线观看果冻传媒 | 国产精品高潮呻吟av久久4虎 | 无码人妻丰满熟妇区毛片18 | 国产成人综合色在线观看网站 | 草草网站影院白丝内射 | 玩弄人妻少妇500系列视频 | 久热国产vs视频在线观看 | 中文无码精品a∨在线观看不卡 | 免费播放一区二区三区 | 欧美熟妇另类久久久久久不卡 | 18精品久久久无码午夜福利 | 精品一区二区三区波多野结衣 | 六月丁香婷婷色狠狠久久 | 欧美一区二区三区视频在线观看 | 丰满人妻精品国产99aⅴ | 1000部啪啪未满十八勿入下载 | 欧美自拍另类欧美综合图片区 | 国产激情一区二区三区 | 欧美精品一区二区精品久久 | 强伦人妻一区二区三区视频18 | 久久精品女人天堂av免费观看 | 野狼第一精品社区 | 在线欧美精品一区二区三区 | 国色天香社区在线视频 | 日本护士毛茸茸高潮 | 麻豆蜜桃av蜜臀av色欲av | 2020久久超碰国产精品最新 | 久久精品国产日本波多野结衣 | 67194成是人免费无码 | 高清不卡一区二区三区 | 国产av一区二区精品久久凹凸 | 国产人成高清在线视频99最全资源 | 久久综合给合久久狠狠狠97色 | 久久成人a毛片免费观看网站 | 国产97色在线 | 免 | 国产情侣作爱视频免费观看 | 国产超级va在线观看视频 | 国产疯狂伦交大片 | 一本一道久久综合久久 | 久久精品一区二区三区四区 | 国产香蕉尹人视频在线 | 久久这里只有精品视频9 | 水蜜桃色314在线观看 | 国产精品va在线播放 | 中文无码成人免费视频在线观看 | 国产乱码精品一品二品 | 亚洲人交乣女bbw | 成人aaa片一区国产精品 | 久久亚洲国产成人精品性色 | 黑人巨大精品欧美一区二区 | 国产手机在线αⅴ片无码观看 | 欧美日韩视频无码一区二区三 | 欧美 日韩 亚洲 在线 | 奇米影视7777久久精品 | 无码人妻出轨黑人中文字幕 | 最新国产麻豆aⅴ精品无码 | 亚洲日本一区二区三区在线 | 中文字幕无码热在线视频 | 欧美大屁股xxxxhd黑色 | 国产精品igao视频网 | 亚洲人成影院在线观看 | 欧美人与善在线com | 88国产精品欧美一区二区三区 | 国产精品18久久久久久麻辣 | 久久久久久久女国产乱让韩 | 狂野欧美激情性xxxx | 日韩 欧美 动漫 国产 制服 | 无码中文字幕色专区 | 国产一区二区三区四区五区加勒比 | 日产精品高潮呻吟av久久 | аⅴ资源天堂资源库在线 | 国产精品美女久久久 | 亚洲欧美日韩综合久久久 | 国产又粗又硬又大爽黄老大爷视 | 国产精品久久国产精品99 | 国产农村妇女高潮大叫 | 久久精品人妻少妇一区二区三区 | 欧美日韩在线亚洲综合国产人 | 波多野结衣aⅴ在线 | 成人免费视频一区二区 | 久久久久国色av免费观看性色 | 九九在线中文字幕无码 | 人人妻人人澡人人爽精品欧美 | 曰本女人与公拘交酡免费视频 | 国产精品va在线播放 | 综合激情五月综合激情五月激情1 | 欧美黑人性暴力猛交喷水 | 永久免费精品精品永久-夜色 | 97se亚洲精品一区 | 熟妇女人妻丰满少妇中文字幕 | 真人与拘做受免费视频 | 国产在线无码精品电影网 | 99久久99久久免费精品蜜桃 | 国产午夜亚洲精品不卡 | 曰韩无码二三区中文字幕 | 亚洲日本一区二区三区在线 | 天堂久久天堂av色综合 | 岛国片人妻三上悠亚 | 免费人成在线观看网站 | 中文毛片无遮挡高清免费 | 天下第一社区视频www日本 | 又粗又大又硬又长又爽 | 国产小呦泬泬99精品 | 波多野结衣av在线观看 | 女人和拘做爰正片视频 | 国产明星裸体无码xxxx视频 | 亚洲成av人片在线观看无码不卡 | 蜜桃臀无码内射一区二区三区 | 亚洲国产av美女网站 | 国产精品理论片在线观看 | 理论片87福利理论电影 | 好男人www社区 | 欧美日本精品一区二区三区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 1000部啪啪未满十八勿入下载 | 亚洲国产精品美女久久久久 | 中文字幕乱码亚洲无线三区 | 中文精品久久久久人妻不卡 | 日韩 欧美 动漫 国产 制服 | 亚洲综合另类小说色区 | 亚洲精品国产第一综合99久久 | 色婷婷欧美在线播放内射 | 亚洲成a人片在线观看日本 | 日韩在线不卡免费视频一区 | 中文字幕无码日韩专区 | 狠狠色色综合网站 | 亚洲男女内射在线播放 | 久久久久人妻一区精品色欧美 | 欧美一区二区三区视频在线观看 | 久久亚洲精品中文字幕无男同 | 国色天香社区在线视频 | 无码播放一区二区三区 | 人妻少妇精品无码专区动漫 | 国产免费久久久久久无码 | 帮老师解开蕾丝奶罩吸乳网站 | 狠狠色色综合网站 | 国产无遮挡又黄又爽免费视频 | 免费人成在线观看网站 | 国产熟女一区二区三区四区五区 | 精品一区二区不卡无码av | 国产成人精品无码播放 | 性色欲网站人妻丰满中文久久不卡 | 黄网在线观看免费网站 | 国产成人无码av片在线观看不卡 | 国产精品99久久精品爆乳 | 国产综合色产在线精品 | 久久久久久久女国产乱让韩 | 国产成人精品无码播放 | 成人无码视频在线观看网站 | 奇米影视7777久久精品人人爽 | 国产亚av手机在线观看 | 国产成人无码av片在线观看不卡 | 国产亚洲精品久久久久久国模美 | 天天躁日日躁狠狠躁免费麻豆 | 日日摸夜夜摸狠狠摸婷婷 | 国产精品怡红院永久免费 | 国产成人无码av一区二区 | 色婷婷欧美在线播放内射 | 老司机亚洲精品影院 | 国产凸凹视频一区二区 | 日本成熟视频免费视频 | 亚洲人成影院在线无码按摩店 | 无码中文字幕色专区 | 乌克兰少妇xxxx做受 | 麻豆国产97在线 | 欧洲 | 精品无人国产偷自产在线 | 国产国语老龄妇女a片 | 国产一区二区不卡老阿姨 | 亚洲 欧美 激情 小说 另类 | 欧美亚洲国产一区二区三区 | 精品国产麻豆免费人成网站 | 国产精品无套呻吟在线 | 亚洲 高清 成人 动漫 | 亚洲色欲久久久综合网东京热 | 日韩精品一区二区av在线 | 图片区 小说区 区 亚洲五月 | 成人一区二区免费视频 | 日韩欧美中文字幕公布 | 亲嘴扒胸摸屁股激烈网站 | 国产精品毛多多水多 | 高潮毛片无遮挡高清免费 | 四十如虎的丰满熟妇啪啪 | 欧美国产日韩亚洲中文 | 免费无码一区二区三区蜜桃大 | 国产成人无码区免费内射一片色欲 | 四十如虎的丰满熟妇啪啪 | 亚洲精品一区国产 | 色爱情人网站 | 久精品国产欧美亚洲色aⅴ大片 | 四虎4hu永久免费 | 久久亚洲中文字幕精品一区 | 一本大道久久东京热无码av | 国产乱人伦av在线无码 | 国内揄拍国内精品少妇国语 | 国产精品毛多多水多 | 久久精品人妻少妇一区二区三区 | 亚洲の无码国产の无码步美 | 国内丰满熟女出轨videos | 国产亚洲精品久久久久久国模美 | 性欧美疯狂xxxxbbbb | 熟妇人妻中文av无码 | 亚洲日本va午夜在线电影 | 成人欧美一区二区三区黑人 | 无遮挡国产高潮视频免费观看 | 性欧美videos高清精品 | 国产精品手机免费 | 欧美丰满熟妇xxxx | 国产精品亚洲а∨无码播放麻豆 | 久久亚洲国产成人精品性色 | 成人欧美一区二区三区黑人 | 少妇邻居内射在线 | 亚洲国产精品久久久久久 | 日韩精品成人一区二区三区 | 东京一本一道一二三区 | 亚洲成a人片在线观看无码 | 亚洲自偷精品视频自拍 | 精品偷自拍另类在线观看 | 国产精品久久久久久亚洲影视内衣 | 99久久精品午夜一区二区 | 荡女精品导航 | 国产99久久精品一区二区 | 成 人影片 免费观看 | 草草网站影院白丝内射 | 国产免费久久精品国产传媒 | 欧美日本免费一区二区三区 | 国产乱子伦视频在线播放 | 国产香蕉尹人视频在线 | 丰满少妇弄高潮了www | 老太婆性杂交欧美肥老太 | 人妻aⅴ无码一区二区三区 | 99久久精品国产一区二区蜜芽 | 国产成人无码一二三区视频 | 国语精品一区二区三区 | 久久精品国产大片免费观看 | 九九在线中文字幕无码 | 欧美人与动性行为视频 | 国产精品18久久久久久麻辣 | 激情人妻另类人妻伦 | 蜜桃av抽搐高潮一区二区 | 亚洲精品一区二区三区婷婷月 | 婷婷综合久久中文字幕蜜桃三电影 | 天天摸天天透天天添 | 娇妻被黑人粗大高潮白浆 | 午夜精品一区二区三区的区别 | 无遮挡啪啪摇乳动态图 | 久久精品99久久香蕉国产色戒 | 日本熟妇人妻xxxxx人hd | 一本色道久久综合狠狠躁 | 性色av无码免费一区二区三区 | 欧美 日韩 人妻 高清 中文 | 亚洲精品综合一区二区三区在线 | av无码久久久久不卡免费网站 | 亚洲色欲色欲欲www在线 | 精品一区二区不卡无码av | 无码国内精品人妻少妇 | 性做久久久久久久久 | 天堂а√在线中文在线 | 国模大胆一区二区三区 | 永久免费观看国产裸体美女 | 亚洲国产精品一区二区美利坚 | av小次郎收藏 | 亚洲伊人久久精品影院 | 日韩人妻无码一区二区三区久久99 | 女人色极品影院 | 亚洲精品中文字幕久久久久 | 六十路熟妇乱子伦 | 亚洲国精产品一二二线 | 国产极品美女高潮无套在线观看 | 婷婷六月久久综合丁香 | 欧美怡红院免费全部视频 | 水蜜桃色314在线观看 | 真人与拘做受免费视频一 | 久久99精品国产.久久久久 | 国产在线精品一区二区高清不卡 | 欧美精品免费观看二区 | 无码人妻出轨黑人中文字幕 | 欧美精品免费观看二区 | 国产精华av午夜在线观看 | 国产熟女一区二区三区四区五区 | 亚洲中文字幕av在天堂 | 中文字幕无码热在线视频 | 黑人粗大猛烈进出高潮视频 | 国产精品va在线播放 | 日本精品高清一区二区 | 99久久人妻精品免费一区 | 色一情一乱一伦一区二区三欧美 | 色诱久久久久综合网ywww | 又色又爽又黄的美女裸体网站 | 日韩 欧美 动漫 国产 制服 | 在线观看免费人成视频 | 夜夜高潮次次欢爽av女 | 久久国产精品偷任你爽任你 | 国产亚洲精品久久久久久久久动漫 | 国产在线无码精品电影网 | 日韩视频 中文字幕 视频一区 | 亚洲爆乳精品无码一区二区三区 | 精品国偷自产在线视频 | 久久国语露脸国产精品电影 | 欧美变态另类xxxx | 99精品无人区乱码1区2区3区 | 激情内射日本一区二区三区 | 久久亚洲中文字幕无码 | 久久国产自偷自偷免费一区调 | 日本大乳高潮视频在线观看 | 97久久精品无码一区二区 | 在线观看免费人成视频 | 无码精品国产va在线观看dvd | 亚洲成色在线综合网站 | 性做久久久久久久久 | 亚洲乱码日产精品bd | 99久久婷婷国产综合精品青草免费 | 国产超碰人人爽人人做人人添 | 免费国产黄网站在线观看 | 国产精品香蕉在线观看 | 四虎国产精品一区二区 | 国产精品亚洲а∨无码播放麻豆 | 18无码粉嫩小泬无套在线观看 | 老子影院午夜伦不卡 | 亚洲熟妇色xxxxx欧美老妇 | 无码一区二区三区在线 | 亚洲熟女一区二区三区 | 一本久道高清无码视频 | 亚洲国产综合无码一区 | 兔费看少妇性l交大片免费 | 99在线 | 亚洲 | 成人试看120秒体验区 | 免费人成网站视频在线观看 | 国产人妻精品一区二区三区不卡 | 欧美熟妇另类久久久久久多毛 | 久久亚洲精品成人无码 | 亚洲 a v无 码免 费 成 人 a v | 国产欧美熟妇另类久久久 | 国产成人无码a区在线观看视频app | 亚洲日韩av一区二区三区四区 | 久久综合九色综合97网 | 一二三四社区在线中文视频 | 亚洲熟女一区二区三区 | 风流少妇按摩来高潮 | aa片在线观看视频在线播放 | 午夜福利试看120秒体验区 | 国产情侣作爱视频免费观看 | 国产精品嫩草久久久久 | 好男人www社区 | a国产一区二区免费入口 | 一本久久伊人热热精品中文字幕 | 丰满人妻被黑人猛烈进入 | 99久久久国产精品无码免费 | 中文字幕乱码人妻二区三区 | 久久精品一区二区三区四区 | 亚洲va中文字幕无码久久不卡 | 中文字幕无码热在线视频 | 日本精品人妻无码免费大全 | √天堂资源地址中文在线 | 日韩av激情在线观看 | 欧美熟妇另类久久久久久不卡 | 欧美xxxx黑人又粗又长 | 白嫩日本少妇做爰 | 久精品国产欧美亚洲色aⅴ大片 | 玩弄中年熟妇正在播放 | 美女毛片一区二区三区四区 | yw尤物av无码国产在线观看 | 亚洲毛片av日韩av无码 | 日韩欧美中文字幕在线三区 | 麻豆md0077饥渴少妇 | 亚洲区小说区激情区图片区 | 东京热无码av男人的天堂 | 亚洲自偷自偷在线制服 | 欧美 日韩 亚洲 在线 | 色婷婷综合中文久久一本 | 青草青草久热国产精品 | 天干天干啦夜天干天2017 | 亚洲色欲色欲天天天www | 亚洲色成人中文字幕网站 | 久久国产36精品色熟妇 | 日韩少妇白浆无码系列 | 麻豆人妻少妇精品无码专区 | 日本熟妇人妻xxxxx人hd | 午夜精品久久久久久久 | 久久精品无码一区二区三区 | 中国女人内谢69xxxx | 国产精品久久久一区二区三区 | 中文精品无码中文字幕无码专区 | 欧美 日韩 人妻 高清 中文 | 国产亚洲精品精品国产亚洲综合 | 久久国内精品自在自线 | 99久久99久久免费精品蜜桃 | 又大又紧又粉嫩18p少妇 | 色综合久久网 | 成人毛片一区二区 | 97精品人妻一区二区三区香蕉 | 久久久精品人妻久久影视 | 日本精品久久久久中文字幕 | 色婷婷综合中文久久一本 | 欧美 丝袜 自拍 制服 另类 | 国产精品二区一区二区aⅴ污介绍 | 激情综合激情五月俺也去 | 波多野结衣aⅴ在线 | 玩弄少妇高潮ⅹxxxyw | av无码不卡在线观看免费 | 精品无码一区二区三区爱欲 | 最新国产乱人伦偷精品免费网站 | 色综合久久久无码中文字幕 | 一本加勒比波多野结衣 | 丁香花在线影院观看在线播放 | 色欲av亚洲一区无码少妇 | 人人妻人人澡人人爽欧美一区 | 久久国产精品精品国产色婷婷 | 奇米影视7777久久精品 | 久久久久av无码免费网 | 一本大道久久东京热无码av | 狠狠躁日日躁夜夜躁2020 | 蜜桃无码一区二区三区 | 女人被爽到呻吟gif动态图视看 | 亚洲精品一区二区三区大桥未久 | 内射巨臀欧美在线视频 | a国产一区二区免费入口 | 国产内射老熟女aaaa | 国产精品久久久久久亚洲影视内衣 | 夜先锋av资源网站 | 久久久久成人精品免费播放动漫 | 久久熟妇人妻午夜寂寞影院 | 激情人妻另类人妻伦 | 中国大陆精品视频xxxx | 欧美 亚洲 国产 另类 | 麻豆国产人妻欲求不满谁演的 | 免费无码一区二区三区蜜桃大 | 日本熟妇人妻xxxxx人hd | av在线亚洲欧洲日产一区二区 | 亚洲精品久久久久中文第一幕 | 免费乱码人妻系列无码专区 | 久久综合久久自在自线精品自 | 久久综合九色综合97网 | 日韩精品无码免费一区二区三区 | 欧美日韩一区二区免费视频 | 波多野结衣av一区二区全免费观看 | 中文字幕乱码亚洲无线三区 | 免费观看的无遮挡av | 天天躁日日躁狠狠躁免费麻豆 | 久久久精品国产sm最大网站 | 人妻尝试又大又粗久久 | 国内精品久久毛片一区二区 | 人人妻人人澡人人爽欧美精品 | 日日碰狠狠躁久久躁蜜桃 | 少妇的肉体aa片免费 | 国产午夜无码精品免费看 | 欧美日韩精品 | 免费网站看v片在线18禁无码 | 中国大陆精品视频xxxx | 久久综合给久久狠狠97色 | 5858s亚洲色大成网站www | 欧美野外疯狂做受xxxx高潮 | 亚洲一区二区三区在线观看网站 | 亚洲人成网站免费播放 | 国产精品a成v人在线播放 | 亚洲理论电影在线观看 | 天天摸天天透天天添 | 国产成人综合美国十次 | 免费视频欧美无人区码 | 欧美日韩色另类综合 | 少妇太爽了在线观看 | 老子影院午夜伦不卡 | 午夜精品久久久内射近拍高清 | 日韩精品无码一区二区中文字幕 | 日本护士xxxxhd少妇 | 18无码粉嫩小泬无套在线观看 | 国产成人人人97超碰超爽8 | 欧美乱妇无乱码大黄a片 | 久久99热只有频精品8 | 亚洲色无码一区二区三区 | 帮老师解开蕾丝奶罩吸乳网站 | 国产亚洲人成在线播放 | 亚洲s色大片在线观看 | 99久久精品日本一区二区免费 | 波多野结衣 黑人 | 曰本女人与公拘交酡免费视频 | 在线 国产 欧美 亚洲 天堂 | 亚洲男女内射在线播放 | 国语自产偷拍精品视频偷 | 国产偷国产偷精品高清尤物 | 久久精品中文闷骚内射 | 奇米影视888欧美在线观看 | 亚洲人亚洲人成电影网站色 | 18黄暴禁片在线观看 | 性欧美videos高清精品 | 岛国片人妻三上悠亚 | 国产乡下妇女做爰 | 狠狠cao日日穞夜夜穞av | 亚洲中文字幕无码一久久区 | 色欲av亚洲一区无码少妇 | 少妇无码吹潮 | 亚洲娇小与黑人巨大交 | 精品熟女少妇av免费观看 | 黑人玩弄人妻中文在线 | 国产香蕉尹人综合在线观看 | 国产精品久久久久影院嫩草 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲精品成a人在线观看 | 少妇性俱乐部纵欲狂欢电影 | 精品国产麻豆免费人成网站 | 亚洲日本va中文字幕 | 亚洲精品一区二区三区在线 | 18无码粉嫩小泬无套在线观看 | 国产特级毛片aaaaaa高潮流水 | 正在播放东北夫妻内射 | 日本高清一区免费中文视频 | 成在人线av无码免观看麻豆 | 国产精品美女久久久久av爽李琼 | 久激情内射婷内射蜜桃人妖 | 超碰97人人射妻 | 在线观看欧美一区二区三区 | 午夜无码人妻av大片色欲 | 精品久久久无码中文字幕 | 免费无码午夜福利片69 | 成人无码精品1区2区3区免费看 | 国产女主播喷水视频在线观看 | 人妻天天爽夜夜爽一区二区 | 无码精品国产va在线观看dvd | 中文字幕乱妇无码av在线 | 日韩精品无码免费一区二区三区 | 国精产品一品二品国精品69xx | 精品久久久久久亚洲精品 | 欧美激情一区二区三区成人 | 国内精品久久久久久中文字幕 | 亚洲 另类 在线 欧美 制服 | 欧美freesex黑人又粗又大 | 人妻插b视频一区二区三区 | 国产麻豆精品精东影业av网站 | 国产农村妇女高潮大叫 | 成人欧美一区二区三区 | 性欧美疯狂xxxxbbbb | 人妻有码中文字幕在线 | 亚洲综合另类小说色区 | 欧美丰满熟妇xxxx | 无码免费一区二区三区 | 啦啦啦www在线观看免费视频 | 久久天天躁狠狠躁夜夜免费观看 | 99国产欧美久久久精品 | 狠狠色色综合网站 | 国产内射老熟女aaaa | 中文字幕乱妇无码av在线 | 东京无码熟妇人妻av在线网址 | 正在播放老肥熟妇露脸 | 蜜桃av抽搐高潮一区二区 | 欧美精品国产综合久久 | 丰满肥臀大屁股熟妇激情视频 | 大胆欧美熟妇xx | 精品久久久久香蕉网 | a在线亚洲男人的天堂 | 国产欧美精品一区二区三区 | 色综合视频一区二区三区 | 三上悠亚人妻中文字幕在线 | 精品久久久久久亚洲精品 | 国产莉萝无码av在线播放 | 纯爱无遮挡h肉动漫在线播放 | 成熟妇人a片免费看网站 | 久久精品人妻少妇一区二区三区 | 日本高清一区免费中文视频 | 男人的天堂av网站 | 中文无码精品a∨在线观看不卡 | 在线a亚洲视频播放在线观看 | 亚洲春色在线视频 | 亚洲欧美日韩成人高清在线一区 | 高潮毛片无遮挡高清免费 | 久久久av男人的天堂 | 暴力强奷在线播放无码 | 国产69精品久久久久app下载 | 99久久人妻精品免费一区 | 亚洲第一网站男人都懂 | 无码帝国www无码专区色综合 | 久久精品女人的天堂av | 日本精品少妇一区二区三区 | 国精产品一区二区三区 | 午夜不卡av免费 一本久久a久久精品vr综合 | 中文字幕乱码人妻无码久久 | 女人被男人爽到呻吟的视频 | 久久精品一区二区三区四区 | 国产麻豆精品一区二区三区v视界 | 日韩精品成人一区二区三区 | 成人欧美一区二区三区 | 久久精品女人天堂av免费观看 | 无码成人精品区在线观看 | 中文字幕中文有码在线 | 精品一区二区不卡无码av | 国内精品人妻无码久久久影院蜜桃 | 性啪啪chinese东北女人 | 精品一区二区三区波多野结衣 | 亚洲精品久久久久中文第一幕 | 欧美人与善在线com | 红桃av一区二区三区在线无码av | 亚洲精品鲁一鲁一区二区三区 | 熟妇女人妻丰满少妇中文字幕 | 欧美日韩人成综合在线播放 | 麻豆精品国产精华精华液好用吗 | 日本高清一区免费中文视频 | 少妇高潮喷潮久久久影院 | 亚洲 a v无 码免 费 成 人 a v | 亚洲午夜福利在线观看 | 人妻体内射精一区二区三四 | 狠狠色丁香久久婷婷综合五月 | 亚洲中文字幕久久无码 | 久久99久久99精品中文字幕 | 亚洲一区二区三区在线观看网站 | 全球成人中文在线 | 国内精品久久毛片一区二区 | 国产亚洲精品久久久ai换 | 强奷人妻日本中文字幕 | 国精品人妻无码一区二区三区蜜柚 | 亚洲人成网站免费播放 | 欧美变态另类xxxx | 精品无码国产一区二区三区av | 免费看男女做好爽好硬视频 | 久久亚洲日韩精品一区二区三区 | 精品成人av一区二区三区 | 国产熟女一区二区三区四区五区 | 中文字幕人成乱码熟女app | 久久精品国产一区二区三区肥胖 | 97夜夜澡人人爽人人喊中国片 | 激情国产av做激情国产爱 | 丰满肥臀大屁股熟妇激情视频 | 无码精品人妻一区二区三区av | 日韩精品久久久肉伦网站 | 亚洲日韩一区二区 | 日本熟妇大屁股人妻 | 日本熟妇乱子伦xxxx | 麻豆蜜桃av蜜臀av色欲av | 日日碰狠狠躁久久躁蜜桃 | 免费无码午夜福利片69 | 在线观看免费人成视频 | 日日夜夜撸啊撸 | 国产成人无码一二三区视频 | av香港经典三级级 在线 | 网友自拍区视频精品 | 国产成人无码a区在线观看视频app | 丁香花在线影院观看在线播放 | www一区二区www免费 | 无码人妻精品一区二区三区不卡 | 老熟妇仑乱视频一区二区 | 99在线 | 亚洲 | 特黄特色大片免费播放器图片 | 蜜桃视频插满18在线观看 | 久久久久亚洲精品男人的天堂 | 国产精品亚洲五月天高清 | 久久午夜无码鲁丝片午夜精品 | 色综合天天综合狠狠爱 | 国产av一区二区精品久久凹凸 | 色情久久久av熟女人妻网站 | 国产免费久久精品国产传媒 | 免费网站看v片在线18禁无码 | 国产后入清纯学生妹 | а天堂中文在线官网 | 久久99精品国产麻豆蜜芽 | 精品欧洲av无码一区二区三区 | 丰满人妻翻云覆雨呻吟视频 | 午夜福利一区二区三区在线观看 | 99国产欧美久久久精品 | 日本护士毛茸茸高潮 | 中文字幕av无码一区二区三区电影 | 亚洲 日韩 欧美 成人 在线观看 | av人摸人人人澡人人超碰下载 | 亚洲人成人无码网www国产 | 日本护士xxxxhd少妇 | 久久天天躁夜夜躁狠狠 | 99精品久久毛片a片 | 久久亚洲精品成人无码 | 狠狠色丁香久久婷婷综合五月 | 99久久精品国产一区二区蜜芽 | 国产精品.xx视频.xxtv | 黑人巨大精品欧美一区二区 | 精品国产精品久久一区免费式 | 丰满岳乱妇在线观看中字无码 | 午夜无码人妻av大片色欲 | 少妇性俱乐部纵欲狂欢电影 | 亚洲精品一区二区三区婷婷月 | 国内综合精品午夜久久资源 | 亚洲午夜无码久久 | 最新国产乱人伦偷精品免费网站 | 1000部啪啪未满十八勿入下载 | 亚洲日韩一区二区 | 久久久久久a亚洲欧洲av冫 | 久久精品中文字幕大胸 | 女人色极品影院 | 高中生自慰www网站 | 欧美精品在线观看 | 国产三级久久久精品麻豆三级 | 欧美 日韩 亚洲 在线 | 中文字幕人成乱码熟女app | 永久免费观看国产裸体美女 | 无套内谢老熟女 | 久久久久久亚洲精品a片成人 | 熟女少妇人妻中文字幕 | 欧美 日韩 人妻 高清 中文 | 国产精品欧美成人 | 亚洲第一无码av无码专区 | 国产精品成人av在线观看 | 自拍偷自拍亚洲精品10p | 欧美老妇交乱视频在线观看 | 国产在线精品一区二区三区直播 | 国产香蕉尹人综合在线观看 | 亚洲熟悉妇女xxx妇女av | 最新国产麻豆aⅴ精品无码 | 大地资源中文第3页 | 无码人妻出轨黑人中文字幕 | 亚洲精品一区二区三区四区五区 | 精品人妻人人做人人爽夜夜爽 | 国产欧美熟妇另类久久久 | 精品水蜜桃久久久久久久 | 久久无码人妻影院 | 成人av无码一区二区三区 | a在线观看免费网站大全 | 国产色在线 | 国产 | 超碰97人人做人人爱少妇 | 1000部夫妻午夜免费 | 精品国产国产综合精品 | 成人片黄网站色大片免费观看 | 少妇人妻偷人精品无码视频 | 欧美日韩人成综合在线播放 | 日韩人妻系列无码专区 | 牲欲强的熟妇农村老妇女 | 国产精品手机免费 | 中文字幕人妻丝袜二区 | 久久久久久国产精品无码下载 | 漂亮人妻洗澡被公强 日日躁 | 亚洲国产午夜精品理论片 | 国产性生交xxxxx无码 | 婷婷丁香六月激情综合啪 | 波多野结衣av一区二区全免费观看 | 久久久久成人精品免费播放动漫 | 久久亚洲中文字幕无码 | 影音先锋中文字幕无码 | 精品国精品国产自在久国产87 | 成人无码精品一区二区三区 | 成人亚洲精品久久久久软件 | 岛国片人妻三上悠亚 | 性色av无码免费一区二区三区 | 少妇邻居内射在线 | 国内精品人妻无码久久久影院蜜桃 | 鲁大师影院在线观看 | 久久久久久久久888 | 国产亚洲日韩欧美另类第八页 | 亚洲一区二区三区含羞草 | 老太婆性杂交欧美肥老太 | 欧美丰满熟妇xxxx性ppx人交 | 日韩无套无码精品 | 风流少妇按摩来高潮 | 色综合视频一区二区三区 | 亚洲男人av天堂午夜在 | 亚洲热妇无码av在线播放 | 久久国内精品自在自线 | 天天爽夜夜爽夜夜爽 | aⅴ亚洲 日韩 色 图网站 播放 | 鲁大师影院在线观看 | 又大又硬又爽免费视频 | 18禁黄网站男男禁片免费观看 | 国产无套内射久久久国产 | 黑人巨大精品欧美一区二区 | 国产suv精品一区二区五 | 亚洲天堂2017无码 | 少妇高潮一区二区三区99 | 欧美午夜特黄aaaaaa片 | 欧美日韩一区二区免费视频 | 国产精品.xx视频.xxtv | 日韩精品无码一区二区中文字幕 | 精品人妻中文字幕有码在线 | 国产又爽又黄又刺激的视频 | 又大又黄又粗又爽的免费视频 | 国产深夜福利视频在线 | 色综合久久久无码网中文 | a在线亚洲男人的天堂 | 久久人人爽人人爽人人片av高清 | 成人无码精品1区2区3区免费看 | 性欧美牲交xxxxx视频 | 国产一区二区三区四区五区加勒比 | 亚洲精品中文字幕久久久久 | 狠狠综合久久久久综合网 | 亚洲国产午夜精品理论片 | 久久久精品人妻久久影视 | 影音先锋中文字幕无码 | 亚洲午夜福利在线观看 | 人妻夜夜爽天天爽三区 | 大乳丰满人妻中文字幕日本 | 免费无码av一区二区 | 国产精品久久国产三级国 | 成人三级无码视频在线观看 | 国精产品一区二区三区 | 国产精品-区区久久久狼 | 99久久精品午夜一区二区 | 亚洲熟妇色xxxxx欧美老妇 | 国产一区二区三区日韩精品 | 久久久久久九九精品久 | 久久99精品久久久久久动态图 | a在线亚洲男人的天堂 | 国产午夜亚洲精品不卡 | 强辱丰满人妻hd中文字幕 | 在线精品国产一区二区三区 | 久久精品国产精品国产精品污 | 又大又黄又粗又爽的免费视频 | 亚洲无人区午夜福利码高清完整版 | 久久天天躁夜夜躁狠狠 | 性欧美熟妇videofreesex | 无码乱肉视频免费大全合集 | 动漫av一区二区在线观看 | 2019午夜福利不卡片在线 | 国产亚av手机在线观看 | 300部国产真实乱 | 日韩人妻无码一区二区三区久久99 | 久久人人爽人人爽人人片av高清 | 婷婷五月综合激情中文字幕 | 久久国产精品_国产精品 | 久久成人a毛片免费观看网站 | 又粗又大又硬又长又爽 | 一二三四在线观看免费视频 | 日产国产精品亚洲系列 | 在线观看欧美一区二区三区 | 日韩精品成人一区二区三区 | 丰满人妻一区二区三区免费视频 | 欧美阿v高清资源不卡在线播放 | 夜精品a片一区二区三区无码白浆 | 久久久久成人精品免费播放动漫 | 久久国产36精品色熟妇 | 激情内射亚州一区二区三区爱妻 | 自拍偷自拍亚洲精品被多人伦好爽 | 久久久久亚洲精品男人的天堂 | 18无码粉嫩小泬无套在线观看 | 美女毛片一区二区三区四区 | 欧美性生交活xxxxxdddd | 国产精品99久久精品爆乳 | 无码毛片视频一区二区本码 | 中国大陆精品视频xxxx | 久久亚洲中文字幕无码 | 成年女人永久免费看片 | 国产av剧情md精品麻豆 | 精品 日韩 国产 欧美 视频 | 亚洲精品无码人妻无码 | 97久久精品无码一区二区 | 国产精品办公室沙发 | 在线播放免费人成毛片乱码 | 欧美成人高清在线播放 | 欧美日韩人成综合在线播放 | 国产特级毛片aaaaaaa高清 | 日日摸夜夜摸狠狠摸婷婷 | 色老头在线一区二区三区 | 国产在线精品一区二区三区直播 | 老子影院午夜伦不卡 | 日韩精品乱码av一区二区 | 亚洲日韩一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 欧美日韩亚洲国产精品 | 国产精品亚洲专区无码不卡 | 中文精品无码中文字幕无码专区 | 人妻少妇被猛烈进入中文字幕 | 无码人中文字幕 | 在线 国产 欧美 亚洲 天堂 | 色婷婷久久一区二区三区麻豆 | 樱花草在线播放免费中文 | 亚洲精品久久久久中文第一幕 | 人妻与老人中文字幕 | 色诱久久久久综合网ywww | 色综合久久88色综合天天 | 国产偷自视频区视频 | 黑人巨大精品欧美黑寡妇 | 精品无人国产偷自产在线 | 国产成人人人97超碰超爽8 | 特黄特色大片免费播放器图片 | 亚洲国产午夜精品理论片 | 日本高清一区免费中文视频 | 成人无码精品一区二区三区 | 真人与拘做受免费视频一 | 无码乱肉视频免费大全合集 | 88国产精品欧美一区二区三区 | 无遮挡啪啪摇乳动态图 | 国内精品九九久久久精品 | 日本一卡2卡3卡四卡精品网站 | 99久久精品日本一区二区免费 | 老熟妇乱子伦牲交视频 | 久久久国产精品无码免费专区 | 亚洲 另类 在线 欧美 制服 | 国产亚洲欧美日韩亚洲中文色 | 久久久久久九九精品久 | 精品人人妻人人澡人人爽人人 | 四虎永久在线精品免费网址 | 欧美野外疯狂做受xxxx高潮 | 免费无码午夜福利片69 | 亚洲国产av美女网站 | 国产欧美精品一区二区三区 | 国产 精品 自在自线 | 国产精品丝袜黑色高跟鞋 | 国产成人精品久久亚洲高清不卡 | 欧美阿v高清资源不卡在线播放 | 无遮挡啪啪摇乳动态图 | 免费观看又污又黄的网站 | 亚洲欧美精品aaaaaa片 | 国产超级va在线观看视频 | 成人亚洲精品久久久久软件 | 色老头在线一区二区三区 | 亚洲精品成a人在线观看 | 亚洲娇小与黑人巨大交 | 少妇人妻偷人精品无码视频 | 欧美肥老太牲交大战 | 又粗又大又硬又长又爽 | 国产亚洲精品久久久久久久久动漫 | 动漫av一区二区在线观看 | 国产 浪潮av性色四虎 | 国産精品久久久久久久 | 日日碰狠狠躁久久躁蜜桃 | 国产精品国产自线拍免费软件 | 男女作爱免费网站 | 99视频精品全部免费免费观看 | 亚洲日韩精品欧美一区二区 | 亚洲gv猛男gv无码男同 | 久久99久久99精品中文字幕 | 国产艳妇av在线观看果冻传媒 | 亚洲а∨天堂久久精品2021 | 久久99精品国产麻豆蜜芽 | а√天堂www在线天堂小说 | 久久久久成人片免费观看蜜芽 | 天天做天天爱天天爽综合网 | 精品无码一区二区三区爱欲 | 国产 浪潮av性色四虎 | 亚洲国产午夜精品理论片 | 欧美真人作爱免费视频 | 色综合久久久无码网中文 | 又色又爽又黄的美女裸体网站 | 婷婷丁香五月天综合东京热 | 我要看www免费看插插视频 | 夜夜躁日日躁狠狠久久av | 国产片av国语在线观看 | 中国女人内谢69xxxxxa片 | 亚洲精品国产精品乱码不卡 | 欧美喷潮久久久xxxxx | 久久精品国产99精品亚洲 | 99久久久国产精品无码免费 | 大色综合色综合网站 | 精品少妇爆乳无码av无码专区 | 亚洲国产欧美日韩精品一区二区三区 | 国产免费观看黄av片 | 99riav国产精品视频 | 无码人妻出轨黑人中文字幕 | 国产精品欧美成人 | 在线观看国产一区二区三区 | 国产精品99久久精品爆乳 | 99er热精品视频 | 丰腴饱满的极品熟妇 | 久久国产精品偷任你爽任你 | 久久久久99精品成人片 | 一本色道久久综合狠狠躁 | 国产精品资源一区二区 | 亚洲va欧美va天堂v国产综合 | 亚洲一区二区三区在线观看网站 | 蜜臀av在线播放 久久综合激激的五月天 | 天天做天天爱天天爽综合网 | 中文无码成人免费视频在线观看 | 无码国产激情在线观看 | 学生妹亚洲一区二区 | 无码人妻出轨黑人中文字幕 | 女高中生第一次破苞av | 人人妻人人藻人人爽欧美一区 | 无码纯肉视频在线观看 | 永久免费观看国产裸体美女 | 日本饥渴人妻欲求不满 | 久久www免费人成人片 | 国产肉丝袜在线观看 | 白嫩日本少妇做爰 | 熟女少妇人妻中文字幕 | 麻豆成人精品国产免费 | 无码人妻出轨黑人中文字幕 | 亚洲综合精品香蕉久久网 | 国产精品99久久精品爆乳 | 亚洲爆乳精品无码一区二区三区 | 色综合久久88色综合天天 | 亚洲成av人片在线观看无码不卡 | 欧美喷潮久久久xxxxx | 水蜜桃av无码 | 在线观看国产午夜福利片 | 亚洲 a v无 码免 费 成 人 a v | 无套内谢的新婚少妇国语播放 | 99久久无码一区人妻 | 亚洲成a人片在线观看无码 | 四虎永久在线精品免费网址 | 日日摸夜夜摸狠狠摸婷婷 | 无套内谢老熟女 | 成熟人妻av无码专区 | 国产精品99久久精品爆乳 | 国产内射爽爽大片视频社区在线 | 老子影院午夜精品无码 | 亚洲天堂2017无码 | 国产精品福利视频导航 | 少妇高潮一区二区三区99 | 国产99久久精品一区二区 | 国产精品亚洲lv粉色 | 少妇愉情理伦片bd | 人妻aⅴ无码一区二区三区 | 人妻无码αv中文字幕久久琪琪布 | 性欧美疯狂xxxxbbbb | 久久久精品456亚洲影院 | 久久99精品久久久久婷婷 | 日日摸日日碰夜夜爽av | 国产精品久久久久久亚洲影视内衣 | 成人性做爰aaa片免费看不忠 | 1000部啪啪未满十八勿入下载 | 亚洲日韩av一区二区三区中文 | 老司机亚洲精品影院 | 国产亚洲人成在线播放 | 波多野结衣av一区二区全免费观看 | 最近免费中文字幕中文高清百度 | 欧美 日韩 人妻 高清 中文 | 国产另类ts人妖一区二区 | 精品国产青草久久久久福利 | 一本色道久久综合亚洲精品不卡 | 亚洲精品综合一区二区三区在线 | 噜噜噜亚洲色成人网站 | 国产亚洲精品久久久久久国模美 | 老太婆性杂交欧美肥老太 | 久久成人a毛片免费观看网站 | 一本久久a久久精品vr综合 | 精品一区二区不卡无码av | 99国产精品白浆在线观看免费 | 日本乱偷人妻中文字幕 | 亚洲国产av美女网站 | 婷婷色婷婷开心五月四房播播 | 中文无码成人免费视频在线观看 | 日本丰满熟妇videos | 成人女人看片免费视频放人 | 久久婷婷五月综合色国产香蕉 | 欧美丰满熟妇xxxx性ppx人交 | 粗大的内捧猛烈进出视频 | 国产激情综合五月久久 | 给我免费的视频在线观看 | 欧洲熟妇色 欧美 | 国产成人精品无码播放 | 波多野结衣高清一区二区三区 | 亚洲精品午夜国产va久久成人 | 国产特级毛片aaaaaaa高清 | 图片小说视频一区二区 | 老太婆性杂交欧美肥老太 | 99精品久久毛片a片 | 国产亚洲欧美在线专区 | 98国产精品综合一区二区三区 | 欧美性生交活xxxxxdddd | 亚洲日本一区二区三区在线 | 国产午夜亚洲精品不卡下载 | 玩弄中年熟妇正在播放 | 久久综合久久自在自线精品自 | 亚洲а∨天堂久久精品2021 | 久久人人爽人人爽人人片av高清 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲伊人久久精品影院 | 国产精品怡红院永久免费 | 欧美人与动性行为视频 | 一区二区三区乱码在线 | 欧洲 | 国产在线一区二区三区四区五区 | 久久国产精品二国产精品 | 人人爽人人澡人人高潮 | 2019nv天堂香蕉在线观看 | 精品亚洲成av人在线观看 | 精品国产精品久久一区免费式 | 欧美喷潮久久久xxxxx | 亚洲中文字幕在线无码一区二区 | 亚洲日韩av片在线观看 | √8天堂资源地址中文在线 | 久久人人爽人人人人片 | 国内精品一区二区三区不卡 | 中文无码成人免费视频在线观看 | 人妻有码中文字幕在线 | 日本大香伊一区二区三区 | 国产精品成人av在线观看 | 狠狠色噜噜狠狠狠狠7777米奇 | 欧美黑人乱大交 | 国产在线aaa片一区二区99 | 一个人看的www免费视频在线观看 |