久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

發布時間: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人片在线观看日本 | 日韩视频 中文字幕 视频一区 | 亚洲成a人片在线观看无码 | 亚洲综合精品香蕉久久网 | 99国产欧美久久久精品 | 欧美兽交xxxx×视频 | 无码一区二区三区在线 | 精品久久久中文字幕人妻 | 动漫av一区二区在线观看 | 国产午夜福利亚洲第一 | 清纯唯美经典一区二区 | 国产熟女一区二区三区四区五区 | 久久久久久久人妻无码中文字幕爆 | 亚洲自偷精品视频自拍 | 欧美色就是色 | 久久久精品人妻久久影视 | 日韩无码专区 | 成人精品视频一区二区三区尤物 | 亚洲国产精品久久久天堂 | 国产精品久久国产精品99 | 久久 国产 尿 小便 嘘嘘 | 中文精品久久久久人妻不卡 | 久久国产精品二国产精品 | 欧美性生交xxxxx久久久 | 亚洲第一无码av无码专区 | 国产成人无码a区在线观看视频app | 极品嫩模高潮叫床 | 欧美兽交xxxx×视频 | 久久无码人妻影院 | 日韩av无码一区二区三区 | 亚洲中文字幕在线无码一区二区 | 亚洲小说春色综合另类 | 中文字幕无码免费久久99 | 欧美亚洲国产一区二区三区 | 国产两女互慰高潮视频在线观看 | 综合人妻久久一区二区精品 | 无码纯肉视频在线观看 | 亚洲日本va午夜在线电影 | 亚洲精品久久久久久久久久久 | 久久五月精品中文字幕 | 成人影院yy111111在线观看 | 久久精品无码一区二区三区 | 欧美人与禽猛交狂配 | 欧美猛少妇色xxxxx | 亚洲经典千人经典日产 | 亚洲成a人片在线观看日本 | 亚洲伊人久久精品影院 | 无码纯肉视频在线观看 | 亚洲天堂2017无码 | 国产香蕉尹人视频在线 | 国产精品高潮呻吟av久久4虎 | 无人区乱码一区二区三区 | 51国偷自产一区二区三区 | 牲欲强的熟妇农村老妇女 | 成在人线av无码免费 | 18禁黄网站男男禁片免费观看 | 精品久久久久久人妻无码中文字幕 | 欧美亚洲日韩国产人成在线播放 | 人人澡人摸人人添 | 国产午夜亚洲精品不卡下载 | 免费观看激色视频网站 | 少妇无码一区二区二三区 | 久久aⅴ免费观看 | 乱码av麻豆丝袜熟女系列 | 国产一区二区三区四区五区加勒比 | 久久久精品国产sm最大网站 | 亚洲一区二区三区含羞草 | 欧美人与动性行为视频 | 中文字幕人成乱码熟女app | 中文字幕 人妻熟女 | 久9re热视频这里只有精品 | 美女毛片一区二区三区四区 | 丰满少妇人妻久久久久久 | 国产做国产爱免费视频 | 熟妇人妻无乱码中文字幕 | 国产成人无码区免费内射一片色欲 | 久久午夜无码鲁丝片秋霞 | 亚洲色成人中文字幕网站 | 性做久久久久久久久 | 超碰97人人做人人爱少妇 | 久久这里只有精品视频9 | 永久免费观看国产裸体美女 | 国产成人无码区免费内射一片色欲 | 国产美女极度色诱视频www | 55夜色66夜色国产精品视频 | 日韩精品久久久肉伦网站 | 久久久成人毛片无码 | 日本大香伊一区二区三区 | 日韩精品久久久肉伦网站 | 国产肉丝袜在线观看 | 乌克兰少妇xxxx做受 | 成人免费视频视频在线观看 免费 | 精品国产青草久久久久福利 | 人妻熟女一区 | 亚洲欧美综合区丁香五月小说 | 久久国产精品精品国产色婷婷 | 国产高清av在线播放 | 亚洲精品www久久久 | 精品少妇爆乳无码av无码专区 | 精品午夜福利在线观看 | 在线看片无码永久免费视频 | 国产精品久久久久无码av色戒 | 一本大道久久东京热无码av | 亚洲国产av精品一区二区蜜芽 | 人妻少妇被猛烈进入中文字幕 | 狠狠色噜噜狠狠狠7777奇米 | 曰韩无码二三区中文字幕 | 亚洲中文字幕av在天堂 | 久久久久久av无码免费看大片 | 77777熟女视频在线观看 а天堂中文在线官网 | 99久久无码一区人妻 | 野外少妇愉情中文字幕 | 欧美三级不卡在线观看 | 国产三级精品三级男人的天堂 | 国产精品久久精品三级 | 国精产品一区二区三区 | 亚洲熟妇色xxxxx欧美老妇 | 欧美兽交xxxx×视频 | 激情爆乳一区二区三区 | 麻豆国产人妻欲求不满谁演的 | 亚洲人成影院在线观看 | 红桃av一区二区三区在线无码av | 亚洲第一无码av无码专区 | 无遮挡啪啪摇乳动态图 | 国产精品理论片在线观看 | 亚洲日韩av一区二区三区中文 | 亚洲精品久久久久avwww潮水 | 精品国产国产综合精品 | 色综合久久中文娱乐网 | av人摸人人人澡人人超碰下载 | 欧美丰满熟妇xxxx | 成人影院yy111111在线观看 | 日本一区二区三区免费播放 | 少妇久久久久久人妻无码 | 欧美 日韩 人妻 高清 中文 | 特级做a爰片毛片免费69 | √8天堂资源地址中文在线 | 性欧美疯狂xxxxbbbb | 亚洲一区av无码专区在线观看 | 青青青爽视频在线观看 | 国产特级毛片aaaaaa高潮流水 | 丰满岳乱妇在线观看中字无码 | 亚洲精品久久久久久一区二区 | 色老头在线一区二区三区 | 欧美成人家庭影院 | 亚洲乱码国产乱码精品精 | 久久人人97超碰a片精品 | 免费看男女做好爽好硬视频 | 西西人体www44rt大胆高清 | 黑人粗大猛烈进出高潮视频 | 一本久道久久综合狠狠爱 | 亚洲区小说区激情区图片区 | 亚洲国产高清在线观看视频 | 精品国产麻豆免费人成网站 | 欧洲精品码一区二区三区免费看 | 人妻互换免费中文字幕 | 久久国语露脸国产精品电影 | 成人三级无码视频在线观看 | 暴力强奷在线播放无码 | 欧美野外疯狂做受xxxx高潮 | 国产精品久久久久久无码 | 国产精品怡红院永久免费 | 久久99精品国产.久久久久 | 久精品国产欧美亚洲色aⅴ大片 | 无码吃奶揉捏奶头高潮视频 | 99久久人妻精品免费二区 | 国产舌乚八伦偷品w中 | 亚洲色偷偷男人的天堂 | 在线看片无码永久免费视频 | 男女性色大片免费网站 | 免费观看又污又黄的网站 | 久久久中文字幕日本无吗 | 久久精品人人做人人综合试看 | 人人妻人人澡人人爽精品欧美 | 国产明星裸体无码xxxx视频 | 中文字幕av日韩精品一区二区 | 粗大的内捧猛烈进出视频 | 88国产精品欧美一区二区三区 | 亚洲中文字幕av在天堂 | 亚洲阿v天堂在线 | 日韩亚洲欧美中文高清在线 | 久久亚洲精品中文字幕无男同 | 国产精品内射视频免费 | 亚洲小说春色综合另类 | 99久久婷婷国产综合精品青草免费 | 国产亚洲欧美在线专区 | 欧美野外疯狂做受xxxx高潮 | 婷婷五月综合激情中文字幕 | 久久久久亚洲精品男人的天堂 | 欧美成人高清在线播放 | 国产人妻人伦精品 | 精品日本一区二区三区在线观看 | 扒开双腿疯狂进出爽爽爽视频 | 久久天天躁狠狠躁夜夜免费观看 | 天海翼激烈高潮到腰振不止 | 国产av一区二区三区最新精品 | 欧美喷潮久久久xxxxx | 色婷婷综合中文久久一本 | 亚洲国产一区二区三区在线观看 | 噜噜噜亚洲色成人网站 | 婷婷六月久久综合丁香 | 福利一区二区三区视频在线观看 | 激情爆乳一区二区三区 | 无码人妻av免费一区二区三区 | 国产人妻大战黑人第1集 | 女人被爽到呻吟gif动态图视看 | 亚洲一区二区三区无码久久 | 岛国片人妻三上悠亚 | 国产精品久久国产三级国 | 伊人久久大香线焦av综合影院 | 一本久久a久久精品vr综合 | 综合网日日天干夜夜久久 | 国产成人一区二区三区在线观看 | 熟女少妇在线视频播放 | 2019nv天堂香蕉在线观看 | 成人免费视频视频在线观看 免费 | 天下第一社区视频www日本 | 欧美性生交xxxxx久久久 | 在线看片无码永久免费视频 | 成人精品天堂一区二区三区 | 国产欧美精品一区二区三区 | 国产成人精品一区二区在线小狼 | 无码中文字幕色专区 | 欧美亚洲日韩国产人成在线播放 | 7777奇米四色成人眼影 | 久久久久免费看成人影片 | 久久成人a毛片免费观看网站 | 大屁股大乳丰满人妻 | 午夜精品久久久内射近拍高清 | 国精品人妻无码一区二区三区蜜柚 | 一本加勒比波多野结衣 | 色婷婷综合激情综在线播放 | 好屌草这里只有精品 | 色综合久久久久综合一本到桃花网 | 精品无码成人片一区二区98 | 99精品国产综合久久久久五月天 | 偷窥日本少妇撒尿chinese | 国产精品免费大片 | 亚洲第一无码av无码专区 | 国产在线精品一区二区三区直播 | 亚洲第一网站男人都懂 | 内射爽无广熟女亚洲 | 呦交小u女精品视频 | 亚洲s色大片在线观看 | 熟妇人妻中文av无码 | 欧美日本免费一区二区三区 | 性欧美熟妇videofreesex | 女人和拘做爰正片视频 | 大胆欧美熟妇xx | 成年女人永久免费看片 | 成人三级无码视频在线观看 | 国产色视频一区二区三区 | 国产高潮视频在线观看 | 国产精品无码一区二区三区不卡 | 伦伦影院午夜理论片 | 国产真实夫妇视频 | 美女毛片一区二区三区四区 | 国产精品久久久久影院嫩草 | 国产亚av手机在线观看 | 日产精品高潮呻吟av久久 | 欧洲欧美人成视频在线 | 装睡被陌生人摸出水好爽 | 两性色午夜免费视频 | 国产精品成人av在线观看 | 欧美日韩在线亚洲综合国产人 | 熟妇人妻无乱码中文字幕 | 久久久久久av无码免费看大片 | 婷婷丁香五月天综合东京热 | 日欧一片内射va在线影院 | 国产精品久免费的黄网站 | 人妻与老人中文字幕 | 久久aⅴ免费观看 | 初尝人妻少妇中文字幕 | 九九久久精品国产免费看小说 | 国内精品人妻无码久久久影院 | 国产后入清纯学生妹 | 精品久久综合1区2区3区激情 | 久久无码人妻影院 | 久久人人爽人人爽人人片av高清 | 国产艳妇av在线观看果冻传媒 | 欧美成人午夜精品久久久 | 激情国产av做激情国产爱 | 亚洲中文字幕无码中字 | 成熟女人特级毛片www免费 | 中文字幕无码日韩专区 | 亚洲综合在线一区二区三区 | 日韩视频 中文字幕 视频一区 | 少妇高潮一区二区三区99 | 少妇一晚三次一区二区三区 | 无码午夜成人1000部免费视频 | 人妻无码久久精品人妻 | 青草青草久热国产精品 | 日韩人妻无码中文字幕视频 | 中文字幕无码日韩专区 | 女人被男人爽到呻吟的视频 | 国产激情一区二区三区 | 久久精品视频在线看15 | 国产深夜福利视频在线 | 性欧美大战久久久久久久 | 欧美熟妇另类久久久久久多毛 | www国产亚洲精品久久久日本 | 亚洲一区二区三区香蕉 | 亚洲小说图区综合在线 | 久久精品人妻少妇一区二区三区 | 国产suv精品一区二区五 | 精品久久综合1区2区3区激情 | 国产精品美女久久久久av爽李琼 | 少妇久久久久久人妻无码 | 国产精品二区一区二区aⅴ污介绍 | 波多野结衣av在线观看 | 亚洲国产精品无码久久久久高潮 | 精品久久久久香蕉网 | 丰满少妇高潮惨叫视频 | 在线播放亚洲第一字幕 | 青青久在线视频免费观看 | 久久国内精品自在自线 | 精品无码一区二区三区的天堂 | 国产亚洲精品精品国产亚洲综合 | 中文精品无码中文字幕无码专区 | 亚洲成av人影院在线观看 | 无码成人精品区在线观看 | 女人被男人爽到呻吟的视频 | 日韩av激情在线观看 | 亚洲区小说区激情区图片区 | 国产成人无码午夜视频在线观看 | 性开放的女人aaa片 | 国产一区二区三区日韩精品 | 国产精品久久久久久无码 | 波多野结衣av一区二区全免费观看 | 中文字幕av无码一区二区三区电影 | 麻豆成人精品国产免费 | 免费看少妇作爱视频 | 人妻尝试又大又粗久久 | 天堂а√在线中文在线 | 青草青草久热国产精品 | 日韩欧美中文字幕在线三区 | 成人免费视频视频在线观看 免费 | 欧美怡红院免费全部视频 | 亚洲理论电影在线观看 | 日本va欧美va欧美va精品 | 国产精品国产三级国产专播 | 免费网站看v片在线18禁无码 | 亚洲精品美女久久久久久久 | 成人欧美一区二区三区 | 国产成人综合美国十次 | 国内精品九九久久久精品 | 国产后入清纯学生妹 | 麻豆精品国产精华精华液好用吗 | 亚洲一区二区三区香蕉 | www国产亚洲精品久久久日本 | 在线播放亚洲第一字幕 | 97无码免费人妻超级碰碰夜夜 | 一本久道久久综合婷婷五月 | 欧美丰满熟妇xxxx | 中文字幕人妻无码一夲道 | 人妻有码中文字幕在线 | 黑人玩弄人妻中文在线 | 日本熟妇人妻xxxxx人hd | 精品aⅴ一区二区三区 | 99久久精品国产一区二区蜜芽 | 学生妹亚洲一区二区 | 欧美黑人性暴力猛交喷水 | 无码精品国产va在线观看dvd | 欧美国产亚洲日韩在线二区 | 久久综合香蕉国产蜜臀av | 久久国产自偷自偷免费一区调 | 久久午夜无码鲁丝片秋霞 | 99精品国产综合久久久久五月天 | 国精品人妻无码一区二区三区蜜柚 | 精品国产一区av天美传媒 | 牛和人交xxxx欧美 | 欧美35页视频在线观看 | 国产又爽又猛又粗的视频a片 | 一本久道高清无码视频 | 1000部啪啪未满十八勿入下载 | 亚洲国产av精品一区二区蜜芽 | 国产精品久久久av久久久 | 国产在线aaa片一区二区99 | 国产乱人伦av在线无码 | 国产人妻精品一区二区三区不卡 | 国产精品国产自线拍免费软件 | 在线看片无码永久免费视频 | 香蕉久久久久久av成人 | 老子影院午夜伦不卡 | 狂野欧美性猛交免费视频 | 国产suv精品一区二区五 | 欧美日韩一区二区免费视频 | 呦交小u女精品视频 | 国产亚洲tv在线观看 | 欧美怡红院免费全部视频 | 午夜精品一区二区三区在线观看 | 无码国产色欲xxxxx视频 | 亚洲精品一区二区三区四区五区 | 国产精品国产自线拍免费软件 | 国内精品人妻无码久久久影院蜜桃 | 丰满人妻被黑人猛烈进入 | 国产精品久久精品三级 | 亚洲国产午夜精品理论片 | 色综合久久88色综合天天 | 色综合久久久无码中文字幕 | 成人精品视频一区二区三区尤物 | 亚洲欧美色中文字幕在线 | 亚洲人成网站色7799 | 亚洲中文无码av永久不收费 | 天堂久久天堂av色综合 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲国产综合无码一区 | 水蜜桃色314在线观看 | 国产尤物精品视频 | 性欧美熟妇videofreesex | 人妻有码中文字幕在线 | 久久亚洲精品成人无码 | 欧美 日韩 人妻 高清 中文 | 日本丰满熟妇videos | 一本色道久久综合亚洲精品不卡 | 精品水蜜桃久久久久久久 | аⅴ资源天堂资源库在线 | 一区二区三区乱码在线 | 欧洲 | 久久久久人妻一区精品色欧美 | 国产做国产爱免费视频 | 无人区乱码一区二区三区 | 国产乱人偷精品人妻a片 | 亚洲人成网站免费播放 | 天下第一社区视频www日本 | 内射老妇bbwx0c0ck | 超碰97人人射妻 | 国产成人精品一区二区在线小狼 | 国产凸凹视频一区二区 | 精品国产精品久久一区免费式 | 久久久久久久人妻无码中文字幕爆 | 国产成人无码专区 | 2020久久香蕉国产线看观看 | 欧美成人高清在线播放 | 水蜜桃av无码 | 日本丰满熟妇videos | 青青久在线视频免费观看 | 青草视频在线播放 | 免费乱码人妻系列无码专区 | 日本爽爽爽爽爽爽在线观看免 | 老太婆性杂交欧美肥老太 | 亲嘴扒胸摸屁股激烈网站 | 亚洲啪av永久无码精品放毛片 | 四虎影视成人永久免费观看视频 | 无码av免费一区二区三区试看 | 中文字幕av伊人av无码av | 亚洲高清偷拍一区二区三区 | 女人高潮内射99精品 | 国产真实伦对白全集 | 亚洲欧美日韩国产精品一区二区 | 2019nv天堂香蕉在线观看 | 亚洲日韩av一区二区三区四区 | 国产精品怡红院永久免费 | 性欧美疯狂xxxxbbbb | 国产精品久久久一区二区三区 | 国产精品久久精品三级 | 青青久在线视频免费观看 | 大屁股大乳丰满人妻 | 亚洲国产欧美日韩精品一区二区三区 | 99riav国产精品视频 | 久久久久久久女国产乱让韩 | 亚洲色www成人永久网址 | 激情国产av做激情国产爱 | 久久99热只有频精品8 | 日本成熟视频免费视频 | 国产精品久久久久久亚洲影视内衣 | 色爱情人网站 | 动漫av网站免费观看 | 欧美 丝袜 自拍 制服 另类 | 国产片av国语在线观看 | 狠狠亚洲超碰狼人久久 | 欧美性生交xxxxx久久久 | 人妻天天爽夜夜爽一区二区 | 色婷婷久久一区二区三区麻豆 | 亚洲精品一区二区三区在线观看 | 国产农村乱对白刺激视频 | 欧美兽交xxxx×视频 | 色老头在线一区二区三区 | 色婷婷香蕉在线一区二区 | 大屁股大乳丰满人妻 | 亚洲第一网站男人都懂 | 欧洲欧美人成视频在线 | 国产精品无套呻吟在线 | 无码人妻久久一区二区三区不卡 | 午夜无码人妻av大片色欲 | 国产午夜福利亚洲第一 | 欧美性生交xxxxx久久久 | 强开小婷嫩苞又嫩又紧视频 | 99久久精品日本一区二区免费 | 内射后入在线观看一区 | 动漫av网站免费观看 | 清纯唯美经典一区二区 | 99久久精品无码一区二区毛片 | 天堂亚洲2017在线观看 | 丰满岳乱妇在线观看中字无码 | 亚洲国产欧美在线成人 | 久久综合香蕉国产蜜臀av | 人妻少妇精品久久 | 99久久无码一区人妻 | 中文字幕精品av一区二区五区 | 久久综合网欧美色妞网 | 亚洲中文字幕乱码av波多ji | 一个人免费观看的www视频 | 亚洲国产av精品一区二区蜜芽 | 午夜福利不卡在线视频 | 丰满诱人的人妻3 | 国产无遮挡吃胸膜奶免费看 | 欧美第一黄网免费网站 | 久久成人a毛片免费观看网站 | 波多野结衣av一区二区全免费观看 | 丰满人妻被黑人猛烈进入 | 97人妻精品一区二区三区 | 国产欧美亚洲精品a | 午夜精品一区二区三区的区别 | 欧美人与动性行为视频 | 欧美日本精品一区二区三区 | 日韩精品无码免费一区二区三区 | 无码帝国www无码专区色综合 | 5858s亚洲色大成网站www | 日韩精品a片一区二区三区妖精 | 亚洲 激情 小说 另类 欧美 | 成人免费视频视频在线观看 免费 | 国产极品美女高潮无套在线观看 | 99麻豆久久久国产精品免费 | 久在线观看福利视频 | 欧美性猛交内射兽交老熟妇 | 中文字幕精品av一区二区五区 | 精品一区二区三区无码免费视频 | 国产午夜无码精品免费看 | 国产亚洲精品久久久闺蜜 | 午夜嘿嘿嘿影院 | 无码一区二区三区在线 | 97精品国产97久久久久久免费 | 久久久av男人的天堂 | 亚洲人成无码网www | 77777熟女视频在线观看 а天堂中文在线官网 | 国产高清av在线播放 | 久久无码人妻影院 | av在线亚洲欧洲日产一区二区 | 波多野结衣乳巨码无在线观看 | 国产在线精品一区二区三区直播 | 女高中生第一次破苞av | 日本一卡二卡不卡视频查询 | 久久视频在线观看精品 | 成人亚洲精品久久久久软件 | 免费国产成人高清在线观看网站 | 成熟女人特级毛片www免费 | 久久综合香蕉国产蜜臀av | 国产麻豆精品精东影业av网站 | 曰韩无码二三区中文字幕 | 亚洲色成人中文字幕网站 | 大肉大捧一进一出视频出来呀 | 国产精品人人妻人人爽 | 亚洲gv猛男gv无码男同 | 国产猛烈高潮尖叫视频免费 | 亚洲日韩乱码中文无码蜜桃臀网站 | 无码国内精品人妻少妇 | 丁香花在线影院观看在线播放 | 丰满少妇女裸体bbw | 精品久久久久香蕉网 | 综合网日日天干夜夜久久 | 国产真实夫妇视频 | 亚洲欧美日韩综合久久久 | 蜜桃臀无码内射一区二区三区 | 激情内射日本一区二区三区 | 色爱情人网站 | 一本大道伊人av久久综合 | 久久久久久a亚洲欧洲av冫 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 精品无码av一区二区三区 | 欧美人与牲动交xxxx | 2020久久香蕉国产线看观看 | av小次郎收藏 | 玩弄人妻少妇500系列视频 | 男女爱爱好爽视频免费看 | 成人影院yy111111在线观看 | 久精品国产欧美亚洲色aⅴ大片 | 蜜桃视频插满18在线观看 | 久久aⅴ免费观看 | 思思久久99热只有频精品66 | 亚洲精品一区二区三区在线 | 人人澡人人妻人人爽人人蜜桃 | 99久久久无码国产aaa精品 | 日韩无码专区 | 一本大道久久东京热无码av | 乱码午夜-极国产极内射 | 四虎4hu永久免费 | 国产成人精品视频ⅴa片软件竹菊 | 18黄暴禁片在线观看 | 东京无码熟妇人妻av在线网址 | 日本护士xxxxhd少妇 | 狠狠cao日日穞夜夜穞av | 捆绑白丝粉色jk震动捧喷白浆 | 国产特级毛片aaaaaa高潮流水 | 狠狠色丁香久久婷婷综合五月 | 国产热a欧美热a在线视频 | 精品亚洲成av人在线观看 | 亚洲 激情 小说 另类 欧美 | 久久久亚洲欧洲日产国码αv | 国产免费久久久久久无码 | 天干天干啦夜天干天2017 | 久9re热视频这里只有精品 | 国产精品美女久久久 | 亚洲经典千人经典日产 | 国产av剧情md精品麻豆 | 精品人妻人人做人人爽 | 中文字幕av无码一区二区三区电影 | 麻豆国产人妻欲求不满谁演的 | 大肉大捧一进一出视频出来呀 | 国产亚洲精品久久久久久 | 一二三四社区在线中文视频 | 久久国产精品_国产精品 | 久久精品99久久香蕉国产色戒 | 国内精品人妻无码久久久影院蜜桃 | 国产精品理论片在线观看 | 爱做久久久久久 | 装睡被陌生人摸出水好爽 | 免费中文字幕日韩欧美 | 国内少妇偷人精品视频 | 熟妇人妻无码xxx视频 | 丰满人妻被黑人猛烈进入 | 粉嫩少妇内射浓精videos | 欧美成人午夜精品久久久 | 四十如虎的丰满熟妇啪啪 | 99er热精品视频 | 熟妇人妻无码xxx视频 | 亚洲精品国产第一综合99久久 | 国产精品毛片一区二区 | 久久亚洲精品中文字幕无男同 | 97久久国产亚洲精品超碰热 | 成人试看120秒体验区 | 久久成人a毛片免费观看网站 | 国产黄在线观看免费观看不卡 | 又色又爽又黄的美女裸体网站 | 日日碰狠狠丁香久燥 | 精品成在人线av无码免费看 | 国产亚洲精品久久久久久国模美 | 国产成人无码a区在线观看视频app | 一区二区三区高清视频一 | 久久综合网欧美色妞网 | 亚洲精品鲁一鲁一区二区三区 | 色妞www精品免费视频 | 波多野42部无码喷潮在线 | 天干天干啦夜天干天2017 | 久青草影院在线观看国产 | 人人爽人人澡人人人妻 | 中文字幕乱码人妻二区三区 | 免费人成网站视频在线观看 | 亚洲精品中文字幕乱码 | 人妻与老人中文字幕 | 国产午夜福利100集发布 | 久久久无码中文字幕久... | 精品久久久中文字幕人妻 | 欧美三级a做爰在线观看 | 草草网站影院白丝内射 | 中文字幕精品av一区二区五区 | 国产精品视频免费播放 | 色一情一乱一伦一区二区三欧美 | 在线 国产 欧美 亚洲 天堂 | 日日天日日夜日日摸 | 亚洲伊人久久精品影院 | 国产亚洲精品久久久久久大师 | 一个人看的www免费视频在线观看 | √8天堂资源地址中文在线 | 国产乡下妇女做爰 | 国产在线无码精品电影网 | 日本丰满护士爆乳xxxx | 久久久久久九九精品久 | 国产精品-区区久久久狼 | 天天躁日日躁狠狠躁免费麻豆 | 欧美成人高清在线播放 | 中文久久乱码一区二区 | 久久亚洲a片com人成 | 欧美日韩在线亚洲综合国产人 | 少女韩国电视剧在线观看完整 | 国内揄拍国内精品少妇国语 | 国产黑色丝袜在线播放 | 色噜噜亚洲男人的天堂 | 国精产品一品二品国精品69xx | 色欲综合久久中文字幕网 | 国产精品亚洲а∨无码播放麻豆 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产绳艺sm调教室论坛 | 秋霞特色aa大片 | 国产亚洲欧美日韩亚洲中文色 | ass日本丰满熟妇pics | 亚洲自偷精品视频自拍 | 国产成人精品优优av | 久久天天躁狠狠躁夜夜免费观看 | 国产高潮视频在线观看 | 中国女人内谢69xxxx | 国产 精品 自在自线 | 久久午夜夜伦鲁鲁片无码免费 | 大地资源中文第3页 | 成年美女黄网站色大免费视频 | 国产成人精品视频ⅴa片软件竹菊 | 极品尤物被啪到呻吟喷水 | 久久久久se色偷偷亚洲精品av | 国产精品久久久一区二区三区 | 高清不卡一区二区三区 | 一个人看的视频www在线 | 日日天日日夜日日摸 | 成人无码精品1区2区3区免费看 | 日韩av激情在线观看 | 日本熟妇乱子伦xxxx | 麻豆成人精品国产免费 | 国产黄在线观看免费观看不卡 | 永久免费精品精品永久-夜色 | 天天燥日日燥 | 成人精品天堂一区二区三区 | 亚洲男人av香蕉爽爽爽爽 | 98国产精品综合一区二区三区 | 老子影院午夜伦不卡 | 午夜精品久久久内射近拍高清 | 成年美女黄网站色大免费全看 | 精品国产成人一区二区三区 | 丰满少妇女裸体bbw | 麻豆精品国产精华精华液好用吗 | 国产绳艺sm调教室论坛 | 国产精品久久久午夜夜伦鲁鲁 | 亚洲va中文字幕无码久久不卡 | 日本熟妇人妻xxxxx人hd | 亚洲男人av香蕉爽爽爽爽 | 精品少妇爆乳无码av无码专区 | 国产手机在线αⅴ片无码观看 | 老太婆性杂交欧美肥老太 | 日韩精品无码一本二本三本色 | 美女毛片一区二区三区四区 | 日本一区二区三区免费高清 | 国产性生交xxxxx无码 | 亚洲区欧美区综合区自拍区 | 又大又硬又爽免费视频 | 国产又爽又猛又粗的视频a片 | 97精品国产97久久久久久免费 | 最近免费中文字幕中文高清百度 | 欧美亚洲国产一区二区三区 | 国产成人久久精品流白浆 | 国内少妇偷人精品视频 | 激情五月综合色婷婷一区二区 | 午夜无码区在线观看 | 男人扒开女人内裤强吻桶进去 | 亚洲中文字幕久久无码 | 性欧美熟妇videofreesex | 免费中文字幕日韩欧美 | 国产偷自视频区视频 | 亚洲爆乳无码专区 | 国产午夜无码精品免费看 | 亚洲精品无码人妻无码 | 亚洲a无码综合a国产av中文 | 久久久久se色偷偷亚洲精品av | 欧美成人家庭影院 | 荫蒂添的好舒服视频囗交 | 内射巨臀欧美在线视频 | 午夜福利电影 | 成人片黄网站色大片免费观看 | 欧美自拍另类欧美综合图片区 | 国产97在线 | 亚洲 | 麻豆人妻少妇精品无码专区 | 国产午夜福利亚洲第一 | 免费乱码人妻系列无码专区 | 一本色道久久综合狠狠躁 | 熟女少妇在线视频播放 | 亚洲精品中文字幕久久久久 | 亚洲国产av精品一区二区蜜芽 | 老熟女重囗味hdxx69 | 成人无码精品1区2区3区免费看 | 精品国偷自产在线 | 日本又色又爽又黄的a片18禁 | 天堂在线观看www | 成熟妇人a片免费看网站 | 国产精品自产拍在线观看 | 亚洲一区二区三区在线观看网站 | av无码电影一区二区三区 | 一个人看的www免费视频在线观看 | 国产成人精品久久亚洲高清不卡 | 丰满人妻精品国产99aⅴ | 免费男性肉肉影院 | а天堂中文在线官网 | 久久亚洲精品成人无码 | 国産精品久久久久久久 | 国产熟女一区二区三区四区五区 | 国产精品久久久久7777 | 亚洲无人区午夜福利码高清完整版 | 国产精品久久久久久亚洲影视内衣 | 国产精品久久久久久亚洲毛片 | 狂野欧美性猛xxxx乱大交 | 少妇无码av无码专区在线观看 | 国产精品无码一区二区桃花视频 | 成年女人永久免费看片 | v一区无码内射国产 | 国精产品一品二品国精品69xx | 久久久久久久久888 | 丝袜美腿亚洲一区二区 | 人妻与老人中文字幕 | 精品欧美一区二区三区久久久 | 久久精品国产一区二区三区肥胖 | 3d动漫精品啪啪一区二区中 | 日本一本二本三区免费 | 国产成人一区二区三区别 | 国产在线精品一区二区三区直播 | 国产成人综合在线女婷五月99播放 | 人人澡人人妻人人爽人人蜜桃 | 亚洲狠狠婷婷综合久久 | 亚洲の无码国产の无码影院 | 国产精品自产拍在线观看 | 噜噜噜亚洲色成人网站 | 亚洲色偷偷男人的天堂 | www国产亚洲精品久久久日本 | 天堂一区人妻无码 | 亚洲午夜无码久久 | 少妇一晚三次一区二区三区 | 亚洲精品一区国产 | 免费视频欧美无人区码 | 狠狠躁日日躁夜夜躁2020 | 自拍偷自拍亚洲精品10p | 永久免费观看美女裸体的网站 | 免费国产成人高清在线观看网站 | 亚洲中文字幕久久无码 | 中文字幕无码免费久久9一区9 | 一本大道伊人av久久综合 | 久激情内射婷内射蜜桃人妖 | 久久综合网欧美色妞网 | 亚洲一区二区三区国产精华液 | 久久精品人妻少妇一区二区三区 | 成人av无码一区二区三区 | 亚洲人成网站在线播放942 | 色一情一乱一伦一视频免费看 | 正在播放老肥熟妇露脸 | 白嫩日本少妇做爰 | 精品一二三区久久aaa片 | 国产精品第一区揄拍无码 | 人人妻人人澡人人爽精品欧美 | 狂野欧美激情性xxxx | 色婷婷综合激情综在线播放 | 日韩av无码一区二区三区不卡 | 久久无码中文字幕免费影院蜜桃 | 中文字幕乱码人妻二区三区 | 中文字幕无码日韩专区 | 国产人妻精品一区二区三区 | 国产激情艳情在线看视频 | 天下第一社区视频www日本 | 国产精品美女久久久网av | 清纯唯美经典一区二区 | 天堂无码人妻精品一区二区三区 | 亚洲区小说区激情区图片区 | 少女韩国电视剧在线观看完整 | 天天拍夜夜添久久精品 | 精品偷拍一区二区三区在线看 | 久久久中文久久久无码 | 国产亚洲日韩欧美另类第八页 | 亚洲综合无码久久精品综合 | 国产女主播喷水视频在线观看 | 2020久久香蕉国产线看观看 | 国产九九九九九九九a片 | 人妻尝试又大又粗久久 | 小泽玛莉亚一区二区视频在线 | 亚洲一区av无码专区在线观看 | 精品国产aⅴ无码一区二区 | 99久久99久久免费精品蜜桃 | 国产色精品久久人妻 | 国产精品美女久久久网av | 欧美老熟妇乱xxxxx | 一本色道婷婷久久欧美 | 亚洲日韩中文字幕在线播放 | 99久久人妻精品免费一区 | 中文字幕av无码一区二区三区电影 | 久久国产自偷自偷免费一区调 | 一本无码人妻在中文字幕免费 | 欧美黑人性暴力猛交喷水 | 99久久亚洲精品无码毛片 | 国产成人人人97超碰超爽8 | 成在人线av无码免费 | 亚洲自偷自偷在线制服 | 1000部啪啪未满十八勿入下载 | 色噜噜亚洲男人的天堂 | 国产性生交xxxxx无码 | 午夜理论片yy44880影院 | 无套内射视频囯产 | 乱人伦人妻中文字幕无码久久网 | 国产香蕉尹人综合在线观看 | 亚洲精品久久久久久一区二区 | 久久久久免费精品国产 | 国产午夜亚洲精品不卡下载 | 亚洲综合精品香蕉久久网 | 亚洲国产欧美日韩精品一区二区三区 | 无码一区二区三区在线 | 秋霞成人午夜鲁丝一区二区三区 | 无码国产激情在线观看 | 国产午夜视频在线观看 | 亚洲欧美日韩综合久久久 | 亚洲国产欧美国产综合一区 | 亚洲国产成人av在线观看 | 亚洲国产欧美在线成人 | 欧美三级a做爰在线观看 | 国产综合色产在线精品 | 亚洲国产av美女网站 | 少妇性l交大片 | 国产黑色丝袜在线播放 | 欧美阿v高清资源不卡在线播放 | 国产手机在线αⅴ片无码观看 | 国产精品a成v人在线播放 | 麻豆国产97在线 | 欧洲 | 国产精品久久久一区二区三区 | 色综合久久网 | aⅴ亚洲 日韩 色 图网站 播放 | 亚洲国产精品一区二区第一页 | 97无码免费人妻超级碰碰夜夜 | 国产口爆吞精在线视频 | 无码国内精品人妻少妇 | 97精品人妻一区二区三区香蕉 | 天天拍夜夜添久久精品大 | 亚洲自偷自偷在线制服 | 亚洲精品一区国产 | 成 人 免费观看网站 | 青青久在线视频免费观看 | 亚洲精品午夜国产va久久成人 | 无码人妻精品一区二区三区下载 | 天堂亚洲2017在线观看 | 亚洲成av人片天堂网无码】 | 人人妻人人澡人人爽人人精品 | 亚洲自偷自拍另类第1页 | 夜夜夜高潮夜夜爽夜夜爰爰 | 丰腴饱满的极品熟妇 | 亚欧洲精品在线视频免费观看 | 给我免费的视频在线观看 | 色一情一乱一伦一区二区三欧美 | 日本大香伊一区二区三区 | 日韩无码专区 | 日本一区二区三区免费播放 | 亚洲经典千人经典日产 | 久久国产劲爆∧v内射 | 5858s亚洲色大成网站www | 一本精品99久久精品77 | 麻豆国产97在线 | 欧洲 | 亚洲色欲色欲天天天www | 久久精品国产99精品亚洲 | 久久zyz资源站无码中文动漫 | 强辱丰满人妻hd中文字幕 | 久久亚洲a片com人成 | 一区二区传媒有限公司 | 人人妻人人澡人人爽欧美精品 | 国产精品多人p群无码 | 乌克兰少妇xxxx做受 | 中文字幕av日韩精品一区二区 | 水蜜桃亚洲一二三四在线 | 欧美亚洲日韩国产人成在线播放 | 日韩精品无码免费一区二区三区 | 巨爆乳无码视频在线观看 | 国内丰满熟女出轨videos | 成人性做爰aaa片免费看 | 久久99精品久久久久婷婷 | 午夜成人1000部免费视频 | 亚洲小说春色综合另类 | 色综合久久中文娱乐网 | 无码人妻av免费一区二区三区 | 精品乱码久久久久久久 | 扒开双腿吃奶呻吟做受视频 | 精品人妻人人做人人爽夜夜爽 | 国产综合色产在线精品 | 久久久www成人免费毛片 | 亚洲欧美精品aaaaaa片 | 秋霞成人午夜鲁丝一区二区三区 | 精品久久久久久亚洲精品 | 亚洲精品中文字幕 | 久久99精品久久久久久动态图 | 亚洲国产高清在线观看视频 | yw尤物av无码国产在线观看 | 精品一区二区不卡无码av | 日日摸夜夜摸狠狠摸婷婷 | 欧美三级a做爰在线观看 | 国产精品无码久久av | 国产精品鲁鲁鲁 | 人人爽人人澡人人人妻 | 日本高清一区免费中文视频 | 亚洲色大成网站www国产 | 成人试看120秒体验区 | 精品久久久无码人妻字幂 | 亚洲性无码av中文字幕 | 大屁股大乳丰满人妻 | 秋霞成人午夜鲁丝一区二区三区 | 水蜜桃亚洲一二三四在线 | 亚洲精品一区二区三区婷婷月 | 最新国产乱人伦偷精品免费网站 | 久在线观看福利视频 | 国产av无码专区亚洲a∨毛片 | 精品国产一区二区三区四区在线看 | 日本精品高清一区二区 | 97久久精品无码一区二区 | 亚洲人成人无码网www国产 | 亚洲一区二区三区无码久久 | 中文字幕 亚洲精品 第1页 | v一区无码内射国产 | 午夜男女很黄的视频 | 一二三四社区在线中文视频 | 欧美成人午夜精品久久久 | 成人片黄网站色大片免费观看 | 97久久精品无码一区二区 | 97人妻精品一区二区三区 | 丝袜美腿亚洲一区二区 | 久久精品国产精品国产精品污 | 欧美日韩在线亚洲综合国产人 | 成人免费无码大片a毛片 | 国产精品高潮呻吟av久久4虎 | 亚洲va中文字幕无码久久不卡 | 日本va欧美va欧美va精品 | 久久精品中文闷骚内射 | 无码国产色欲xxxxx视频 | 成熟妇人a片免费看网站 | 伊人久久大香线蕉av一区二区 | 亚洲自偷自偷在线制服 | 久久精品中文字幕一区 | 天堂无码人妻精品一区二区三区 | 2019nv天堂香蕉在线观看 | 久9re热视频这里只有精品 | 国产精品内射视频免费 | 国产午夜精品一区二区三区嫩草 | 在线精品亚洲一区二区 | 国产亚洲精品久久久久久久 | 色五月五月丁香亚洲综合网 | 亚洲色欲色欲欲www在线 | 国产成人久久精品流白浆 | 国产精品人人爽人人做我的可爱 | 荡女精品导航 | 国产69精品久久久久app下载 | 欧美三级a做爰在线观看 | 日本又色又爽又黄的a片18禁 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产精品高潮呻吟av久久4虎 | 亚洲欧美日韩国产精品一区二区 | 粗大的内捧猛烈进出视频 | 国产疯狂伦交大片 | 国产成人精品优优av | 亚洲人亚洲人成电影网站色 | 粗大的内捧猛烈进出视频 | 精品国偷自产在线视频 | 欧美黑人巨大xxxxx | 日日橹狠狠爱欧美视频 | 伊人久久婷婷五月综合97色 | 国产亚洲精品久久久闺蜜 | 日欧一片内射va在线影院 | 中文字幕人成乱码熟女app | 成人免费视频在线观看 | 久久精品人妻少妇一区二区三区 | 免费无码的av片在线观看 | 蜜桃av抽搐高潮一区二区 | 国产电影无码午夜在线播放 | 日本又色又爽又黄的a片18禁 | 亚洲精品一区二区三区婷婷月 | 亲嘴扒胸摸屁股激烈网站 | 亚洲国产日韩a在线播放 | 色综合视频一区二区三区 | 久久精品人人做人人综合 | 丰满岳乱妇在线观看中字无码 | 国产97人人超碰caoprom | 无码毛片视频一区二区本码 | 精品国精品国产自在久国产87 | 精品国产一区av天美传媒 | 成熟女人特级毛片www免费 | 午夜熟女插插xx免费视频 | 亚洲日韩av一区二区三区中文 | 午夜性刺激在线视频免费 | 国产亚洲人成a在线v网站 | 欧美成人家庭影院 | 东京热无码av男人的天堂 | 亚洲七七久久桃花影院 | 日本大乳高潮视频在线观看 | 色一情一乱一伦一区二区三欧美 | 久久五月精品中文字幕 | 欧美自拍另类欧美综合图片区 | 色综合视频一区二区三区 | 国产激情精品一区二区三区 | 亚洲色欲久久久综合网东京热 | 欧美日韩综合一区二区三区 | 久久久久亚洲精品中文字幕 | 精品夜夜澡人妻无码av蜜桃 | 亚洲熟妇色xxxxx亚洲 | 丰满人妻一区二区三区免费视频 | 无码人妻少妇伦在线电影 | 欧美激情综合亚洲一二区 | 国内精品久久毛片一区二区 | 亚洲精品久久久久久久久久久 | 99在线 | 亚洲 | 少妇久久久久久人妻无码 | 中文字幕亚洲情99在线 | 高清不卡一区二区三区 | 午夜时刻免费入口 | 亚洲中文字幕av在天堂 | 日日摸日日碰夜夜爽av | 日韩精品无码免费一区二区三区 | 亚洲欧洲中文日韩av乱码 | 欧美放荡的少妇 | 国内精品人妻无码久久久影院蜜桃 | 亚洲成av人片在线观看无码不卡 | 黑人玩弄人妻中文在线 | 在线精品国产一区二区三区 | 中文精品久久久久人妻不卡 | 色综合久久久无码中文字幕 | 国内综合精品午夜久久资源 | 又粗又大又硬又长又爽 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 亚洲中文字幕乱码av波多ji | 日本一区二区更新不卡 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 欧美freesex黑人又粗又大 | 亚洲精品鲁一鲁一区二区三区 | 爽爽影院免费观看 | 国产色视频一区二区三区 | 国产超级va在线观看视频 | 久久99精品国产麻豆蜜芽 | 3d动漫精品啪啪一区二区中 | 人妻少妇精品视频专区 | 午夜精品久久久久久久久 | 精品人妻人人做人人爽 | 久久久久亚洲精品男人的天堂 | 国产舌乚八伦偷品w中 | 麻豆成人精品国产免费 | 国产明星裸体无码xxxx视频 | 在线精品亚洲一区二区 | 无码国产乱人伦偷精品视频 | 国产sm调教视频在线观看 | 久久精品视频在线看15 | 国产成人无码专区 | 欧美熟妇另类久久久久久不卡 | 欧美激情一区二区三区成人 | 日韩av激情在线观看 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 国产口爆吞精在线视频 | 人妻少妇精品久久 | 久久无码中文字幕免费影院蜜桃 | 精品久久久无码人妻字幂 | 最新国产麻豆aⅴ精品无码 | 在线精品国产一区二区三区 | 久久婷婷五月综合色国产香蕉 | 亚洲 激情 小说 另类 欧美 | v一区无码内射国产 | 国色天香社区在线视频 | 特黄特色大片免费播放器图片 | 人妻有码中文字幕在线 | 18禁黄网站男男禁片免费观看 | 亚洲中文字幕无码中字 | 奇米影视7777久久精品 | 国产色xx群视频射精 | 日日碰狠狠丁香久燥 | 人妻插b视频一区二区三区 | 大肉大捧一进一出视频出来呀 | 久久精品国产亚洲精品 | 四虎4hu永久免费 | 成人免费视频一区二区 | 欧美国产日产一区二区 | 中文字幕日韩精品一区二区三区 | 亚洲 激情 小说 另类 欧美 | 无码午夜成人1000部免费视频 | 日本护士毛茸茸高潮 | 成人精品视频一区二区 | 成人性做爰aaa片免费看不忠 | 人人妻人人澡人人爽人人精品 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产热a欧美热a在线视频 | 免费观看激色视频网站 | 成人无码视频免费播放 | 97se亚洲精品一区 | 性欧美牲交在线视频 | 成人欧美一区二区三区黑人免费 | 亚洲理论电影在线观看 | 最新国产麻豆aⅴ精品无码 | 日日鲁鲁鲁夜夜爽爽狠狠 | 少妇一晚三次一区二区三区 | 亚洲大尺度无码无码专区 | 88国产精品欧美一区二区三区 | 日日夜夜撸啊撸 | 自拍偷自拍亚洲精品被多人伦好爽 | 西西人体www44rt大胆高清 | 国内精品一区二区三区不卡 | 久久熟妇人妻午夜寂寞影院 | 国产无遮挡又黄又爽免费视频 | 欧美阿v高清资源不卡在线播放 | 性做久久久久久久久 | 无码乱肉视频免费大全合集 | 无遮无挡爽爽免费视频 | 在线观看国产午夜福利片 | 国产午夜无码视频在线观看 | 亚欧洲精品在线视频免费观看 | 日韩精品成人一区二区三区 | 国产又爽又黄又刺激的视频 | 亚洲国产精品毛片av不卡在线 | 亚洲乱码国产乱码精品精 | 国产亚洲精品久久久久久国模美 | 人妻少妇精品久久 | 人人妻人人澡人人爽人人精品 | 爽爽影院免费观看 | 性生交片免费无码看人 | 国产亚洲欧美日韩亚洲中文色 | 国产成人午夜福利在线播放 | 精品久久久无码中文字幕 | 日本乱偷人妻中文字幕 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产网红无码精品视频 | 欧美日韩在线亚洲综合国产人 | 麻豆成人精品国产免费 | 国产精品视频免费播放 | 久9re热视频这里只有精品 | 领导边摸边吃奶边做爽在线观看 | 国产香蕉尹人综合在线观看 | 国内揄拍国内精品少妇国语 | 香蕉久久久久久av成人 | 全黄性性激高免费视频 | 国产成人精品视频ⅴa片软件竹菊 | 18黄暴禁片在线观看 | 日本一区二区更新不卡 | 波多野结衣一区二区三区av免费 | 日本高清一区免费中文视频 | 西西人体www44rt大胆高清 | 中文字幕无码热在线视频 | 欧美性猛交内射兽交老熟妇 | 久久人人爽人人爽人人片av高清 | 久久久久99精品国产片 | 无码人妻精品一区二区三区不卡 | 国产片av国语在线观看 | www国产亚洲精品久久网站 | 国产美女极度色诱视频www | 中文字幕乱妇无码av在线 | 未满成年国产在线观看 | 国产成人精品无码播放 | 女人被男人爽到呻吟的视频 | 午夜丰满少妇性开放视频 | 黑森林福利视频导航 | 精品一区二区不卡无码av | 精品国产一区二区三区四区在线看 | 色婷婷久久一区二区三区麻豆 | 国产网红无码精品视频 | 久久精品女人的天堂av | 久精品国产欧美亚洲色aⅴ大片 | 天天躁夜夜躁狠狠是什么心态 | 欧美日韩精品 | 国产熟妇高潮叫床视频播放 | 无码免费一区二区三区 | 自拍偷自拍亚洲精品10p | 无码午夜成人1000部免费视频 | 人人超人人超碰超国产 | 国产一区二区三区精品视频 | 人人妻人人澡人人爽欧美精品 | 成人欧美一区二区三区黑人免费 | 亚洲日韩一区二区 | 人人妻人人澡人人爽欧美一区九九 | 国产麻豆精品精东影业av网站 | av小次郎收藏 | 色噜噜亚洲男人的天堂 | 最新国产麻豆aⅴ精品无码 | 成人免费无码大片a毛片 | 亚洲а∨天堂久久精品2021 | 人人澡人摸人人添 | 久久99精品久久久久久 | 国产女主播喷水视频在线观看 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 伊人久久大香线蕉亚洲 | 久久国产自偷自偷免费一区调 | 波多野结衣乳巨码无在线观看 | 久久久久亚洲精品男人的天堂 | 久久久久久久人妻无码中文字幕爆 | 国产精品久久久久久无码 | 精品国产青草久久久久福利 | 国产精品鲁鲁鲁 | 亚洲区欧美区综合区自拍区 | 免费人成网站视频在线观看 | 国产精品人妻一区二区三区四 | 国产网红无码精品视频 | 亚洲欧洲日本无在线码 | 亚洲经典千人经典日产 | 午夜性刺激在线视频免费 | 巨爆乳无码视频在线观看 | 成人精品天堂一区二区三区 | 成人精品视频一区二区 | 狂野欧美性猛交免费视频 | 高清国产亚洲精品自在久久 | 野狼第一精品社区 | 色欲av亚洲一区无码少妇 | 少妇性荡欲午夜性开放视频剧场 | 国产综合久久久久鬼色 | 高潮毛片无遮挡高清免费视频 | 国产熟妇高潮叫床视频播放 | 色综合久久网 | 伊人久久大香线焦av综合影院 | 丰满人妻精品国产99aⅴ | 欧美丰满老熟妇xxxxx性 | 中国大陆精品视频xxxx | 日本一卡二卡不卡视频查询 | 国产成人精品一区二区在线小狼 | 人妻互换免费中文字幕 | 一本久久伊人热热精品中文字幕 | 国产精品爱久久久久久久 | 久久久av男人的天堂 | www国产亚洲精品久久久日本 | 亚洲色偷偷男人的天堂 | 欧美日韩一区二区免费视频 | 99久久人妻精品免费二区 | 伊人久久大香线焦av综合影院 | 99久久久国产精品无码免费 | 黄网在线观看免费网站 | 精品国产av色一区二区深夜久久 | 美女黄网站人色视频免费国产 | 成人毛片一区二区 | 欧美亚洲日韩国产人成在线播放 | 国内精品久久毛片一区二区 | 国产明星裸体无码xxxx视频 | 亚洲成a人片在线观看无码 | 无码播放一区二区三区 | 无码人妻出轨黑人中文字幕 | 精品久久久无码中文字幕 | 国产成人精品优优av | 久久久国产一区二区三区 | 性欧美牲交在线视频 | 狠狠综合久久久久综合网 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲欧洲日本综合aⅴ在线 | 日本va欧美va欧美va精品 | 久久无码专区国产精品s | 欧美日韩久久久精品a片 | 日韩亚洲欧美精品综合 | 丰满肥臀大屁股熟妇激情视频 | 亚洲理论电影在线观看 | 少妇性l交大片欧洲热妇乱xxx | 国产成人精品无码播放 | 美女黄网站人色视频免费国产 | 狠狠色色综合网站 | 国产人妻人伦精品1国产丝袜 | 欧美性生交活xxxxxdddd | 久久zyz资源站无码中文动漫 | 国产免费观看黄av片 | 女人被男人爽到呻吟的视频 | 久久精品无码一区二区三区 | 国产熟女一区二区三区四区五区 | 久久精品成人欧美大片 | 少妇人妻偷人精品无码视频 | 99er热精品视频 | 国产激情无码一区二区app | 无码吃奶揉捏奶头高潮视频 | 久久精品中文字幕大胸 | 亚洲色偷偷男人的天堂 | 中文字幕人成乱码熟女app | 国产精品怡红院永久免费 | 亚洲国产精品成人久久蜜臀 | 日韩精品无码一区二区中文字幕 | 国产成人久久精品流白浆 | 大屁股大乳丰满人妻 | 人妻少妇被猛烈进入中文字幕 | 无遮挡国产高潮视频免费观看 | 久久精品国产99精品亚洲 | 最新国产麻豆aⅴ精品无码 | 欧美精品免费观看二区 | 无码精品人妻一区二区三区av | 国产精品爱久久久久久久 | 色欲综合久久中文字幕网 | 国产精品爱久久久久久久 | 国产9 9在线 | 中文 | 亚洲欧美中文字幕5发布 | 日韩少妇白浆无码系列 | 亚洲呦女专区 | 久久久成人毛片无码 | 国产在线一区二区三区四区五区 | 国产成人精品视频ⅴa片软件竹菊 | 日本精品少妇一区二区三区 | 永久免费观看国产裸体美女 | 免费无码午夜福利片69 | 欧美丰满老熟妇xxxxx性 | 久久久www成人免费毛片 | 国产在线无码精品电影网 | 人妻少妇被猛烈进入中文字幕 | 国产一区二区三区精品视频 | 无码人妻精品一区二区三区下载 | 精品国产麻豆免费人成网站 | 亚洲国产精品无码久久久久高潮 | 在线观看欧美一区二区三区 | 野狼第一精品社区 | 精品一区二区不卡无码av | 亚洲国产精品一区二区美利坚 | 国产精品久久久久9999小说 | 免费看男女做好爽好硬视频 | 亚洲爆乳无码专区 | 国产成人精品必看 | 亚洲色大成网站www国产 | 成人一区二区免费视频 | 国产色xx群视频射精 | 免费无码一区二区三区蜜桃大 | 国产精品二区一区二区aⅴ污介绍 | 伊人色综合久久天天小片 | 一本色道久久综合狠狠躁 | 国产综合在线观看 | 成人亚洲精品久久久久 | 成人片黄网站色大片免费观看 | 国产精品永久免费视频 | 7777奇米四色成人眼影 | 国产热a欧美热a在线视频 | 中文字幕无线码 | 国产国语老龄妇女a片 | 精品国产一区二区三区四区在线看 | 久久综合激激的五月天 | 色一情一乱一伦一区二区三欧美 | 波多野结衣 黑人 | 九九在线中文字幕无码 | 亚洲小说图区综合在线 | 欧美乱妇无乱码大黄a片 | 亚洲中文无码av永久不收费 | 久久成人a毛片免费观看网站 | 天天av天天av天天透 | 无码国产乱人伦偷精品视频 | 亚欧洲精品在线视频免费观看 | 国产无套粉嫩白浆在线 | 日本精品高清一区二区 | 西西人体www44rt大胆高清 | 国产美女极度色诱视频www | 成 人影片 免费观看 | 色一情一乱一伦 | 国产精品无码永久免费888 | 国产乱人无码伦av在线a | 高清不卡一区二区三区 | 国产真人无遮挡作爱免费视频 | 美女张开腿让人桶 | 欧美激情内射喷水高潮 | 亚洲熟妇色xxxxx欧美老妇 | 激情综合激情五月俺也去 | 亚洲色欲久久久综合网东京热 | 欧美 日韩 亚洲 在线 | 欧美人与禽zoz0性伦交 | 国产精品多人p群无码 | 免费无码午夜福利片69 | 精品一区二区不卡无码av | 亚洲 高清 成人 动漫 | 久久99精品国产麻豆蜜芽 | 国产综合久久久久鬼色 | 18无码粉嫩小泬无套在线观看 | 精品国产一区二区三区四区在线看 | 99久久人妻精品免费二区 | 精品久久8x国产免费观看 | 欧美性猛交xxxx富婆 | 无码av免费一区二区三区试看 | 国产精品久久久av久久久 | 麻豆国产丝袜白领秘书在线观看 | 久久久久久久女国产乱让韩 | 久久精品中文闷骚内射 | 中文字幕无线码 | 色综合天天综合狠狠爱 | 国语自产偷拍精品视频偷 | 亚洲日韩中文字幕在线播放 | 亚洲热妇无码av在线播放 | 久久精品99久久香蕉国产色戒 | 日本精品久久久久中文字幕 | 国产无遮挡又黄又爽又色 | 野外少妇愉情中文字幕 | 国产特级毛片aaaaaa高潮流水 | 一本大道伊人av久久综合 | 狠狠躁日日躁夜夜躁2020 | 亚洲中文字幕乱码av波多ji | 国产精品福利视频导航 | 国产免费久久久久久无码 | 东京无码熟妇人妻av在线网址 | 国产麻豆精品精东影业av网站 | 国产午夜无码精品免费看 | 午夜精品久久久久久久 | 成人精品视频一区二区三区尤物 | 强辱丰满人妻hd中文字幕 | 97无码免费人妻超级碰碰夜夜 | 中文字幕日产无线码一区 | 国产精品美女久久久网av | 麻豆蜜桃av蜜臀av色欲av | 女人被男人躁得好爽免费视频 | 国产成人综合色在线观看网站 | 国产精品国产三级国产专播 | 久久国产精品二国产精品 | 中文字幕人成乱码熟女app | 国内揄拍国内精品少妇国语 | 亚洲午夜无码久久 | 天堂久久天堂av色综合 | 久久精品中文闷骚内射 | 亚洲中文字幕无码中文字在线 | 2020久久超碰国产精品最新 | 成人无码视频免费播放 | √8天堂资源地址中文在线 | 国产网红无码精品视频 | 无码国产乱人伦偷精品视频 | 领导边摸边吃奶边做爽在线观看 | 欧美阿v高清资源不卡在线播放 | 国产黄在线观看免费观看不卡 | 成人影院yy111111在线观看 | 伊在人天堂亚洲香蕉精品区 | 1000部夫妻午夜免费 | 最新版天堂资源中文官网 | 久久人人爽人人爽人人片ⅴ | 狂野欧美性猛交免费视频 | 国产成人人人97超碰超爽8 | 久久久久久九九精品久 | 久久午夜夜伦鲁鲁片无码免费 | 久久久精品国产sm最大网站 | 三上悠亚人妻中文字幕在线 | 亚洲国产精品一区二区第一页 | 国产午夜福利100集发布 | 东北女人啪啪对白 | 精品国产精品久久一区免费式 | 成在人线av无码免观看麻豆 | 少妇人妻大乳在线视频 | 久久久久免费精品国产 | 成人欧美一区二区三区 | 亚洲国产精品无码一区二区三区 | 露脸叫床粗话东北少妇 | 久久综合香蕉国产蜜臀av | 亚洲成熟女人毛毛耸耸多 | 天天摸天天碰天天添 | 俺去俺来也在线www色官网 | 亚洲色大成网站www国产 | 日日躁夜夜躁狠狠躁 | 日日天日日夜日日摸 | 精品欧美一区二区三区久久久 | 国产乱码精品一品二品 | 久久亚洲国产成人精品性色 | 无码播放一区二区三区 | 亚洲a无码综合a国产av中文 | 久久久婷婷五月亚洲97号色 | 999久久久国产精品消防器材 | 乌克兰少妇xxxx做受 | 永久黄网站色视频免费直播 | 国产亚洲精品久久久久久久久动漫 | 永久黄网站色视频免费直播 | 国产成人一区二区三区在线观看 | 特级做a爰片毛片免费69 | 欧美亚洲国产一区二区三区 | 麻花豆传媒剧国产免费mv在线 | 国产精品无码永久免费888 | 国产美女极度色诱视频www | 国产高潮视频在线观看 | 亚洲精品一区二区三区婷婷月 | 国产 精品 自在自线 | 牲欲强的熟妇农村老妇女 | 青草视频在线播放 | 国产国语老龄妇女a片 | 国产婷婷色一区二区三区在线 | 奇米影视7777久久精品 | 人妻插b视频一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 日韩av无码一区二区三区 | 国产精品手机免费 | 国产又粗又硬又大爽黄老大爷视 | 国产精品igao视频网 | 国产精品亚洲五月天高清 | 青青草原综合久久大伊人精品 | 国产内射爽爽大片视频社区在线 | 99久久99久久免费精品蜜桃 | 自拍偷自拍亚洲精品被多人伦好爽 | 麻豆国产丝袜白领秘书在线观看 | 亚洲精品中文字幕乱码 | 成人av无码一区二区三区 | 国产猛烈高潮尖叫视频免费 | 日本一卡二卡不卡视频查询 | 激情内射亚州一区二区三区爱妻 | 久久久亚洲欧洲日产国码αv | 久久久久99精品国产片 | 精品无码一区二区三区的天堂 | 欧美怡红院免费全部视频 | 在线播放亚洲第一字幕 | 无码av最新清无码专区吞精 | 男女下面进入的视频免费午夜 | 久久99精品久久久久婷婷 | 久久亚洲日韩精品一区二区三区 | 极品尤物被啪到呻吟喷水 | 男女爱爱好爽视频免费看 | 中文字幕无码免费久久9一区9 | 欧美人妻一区二区三区 | 日本xxxx色视频在线观看免费 | 大乳丰满人妻中文字幕日本 | 久久天天躁狠狠躁夜夜免费观看 | 久久人人爽人人爽人人片ⅴ | 动漫av网站免费观看 | 久久久久成人精品免费播放动漫 | aa片在线观看视频在线播放 | 国产精品资源一区二区 | 国产av无码专区亚洲a∨毛片 | 老熟妇乱子伦牲交视频 | 亚洲中文字幕无码中文字在线 | 色一情一乱一伦一视频免费看 | 无遮挡国产高潮视频免费观看 | 免费乱码人妻系列无码专区 | 国产午夜手机精彩视频 | 丰满人妻翻云覆雨呻吟视频 | 任你躁在线精品免费 | 国产九九九九九九九a片 | 高潮毛片无遮挡高清免费视频 | 国产三级精品三级男人的天堂 | 国产特级毛片aaaaaa高潮流水 | 国产精品美女久久久久av爽李琼 | 国产成人久久精品流白浆 | 中文字幕无码视频专区 | 国产精品办公室沙发 | 久久午夜夜伦鲁鲁片无码免费 | 久久国产精品萌白酱免费 | 九九在线中文字幕无码 | 亚洲毛片av日韩av无码 | 成人三级无码视频在线观看 | 国产亚洲精品久久久ai换 | 无码国模国产在线观看 | 免费男性肉肉影院 | 日韩人妻无码中文字幕视频 | 午夜熟女插插xx免费视频 | 99久久精品午夜一区二区 | 东京一本一道一二三区 | 国产免费久久久久久无码 | 又紧又大又爽精品一区二区 | 国产区女主播在线观看 | 亚洲成av人影院在线观看 | 国产小呦泬泬99精品 | 久久99久久99精品中文字幕 | 无码精品人妻一区二区三区av | 免费国产成人高清在线观看网站 | 国产精品爱久久久久久久 | 国产香蕉尹人视频在线 | 欧美肥老太牲交大战 | 亚洲а∨天堂久久精品2021 | 中文精品无码中文字幕无码专区 | 漂亮人妻洗澡被公强 日日躁 | 日本精品少妇一区二区三区 | 精品熟女少妇av免费观看 | 久久婷婷五月综合色国产香蕉 | 日日麻批免费40分钟无码 | 伊人色综合久久天天小片 | 日韩av激情在线观看 | 激情内射日本一区二区三区 | 99久久人妻精品免费一区 | 99久久99久久免费精品蜜桃 | 久久国产精品_国产精品 | 麻豆国产97在线 | 欧洲 | 亚洲精品午夜无码电影网 | 岛国片人妻三上悠亚 | 国产精品爱久久久久久久 | 国产av一区二区三区最新精品 | 在线欧美精品一区二区三区 | 国内精品人妻无码久久久影院蜜桃 | а√资源新版在线天堂 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 人妻人人添人妻人人爱 | 中国大陆精品视频xxxx | 日韩少妇内射免费播放 | 在线观看国产午夜福利片 | 国产小呦泬泬99精品 | 国产精品久久久久无码av色戒 | 国产精品高潮呻吟av久久 | 亚洲中文字幕成人无码 | 国内少妇偷人精品视频免费 | 国产精品久久久久7777 | 国产无遮挡又黄又爽免费视频 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 大屁股大乳丰满人妻 | 人妻插b视频一区二区三区 | 俄罗斯老熟妇色xxxx | 在线看片无码永久免费视频 | 夜夜躁日日躁狠狠久久av | 久久久精品国产sm最大网站 | 超碰97人人做人人爱少妇 | 无码人妻出轨黑人中文字幕 | 精品无码国产一区二区三区av | 成人试看120秒体验区 | 美女极度色诱视频国产 | 精品偷自拍另类在线观看 | 亚洲国产欧美国产综合一区 | 欧美 亚洲 国产 另类 | 国产精品多人p群无码 | 人妻少妇被猛烈进入中文字幕 | 欧美老人巨大xxxx做受 | 亚洲日本va中文字幕 | 图片小说视频一区二区 | 亚洲成av人综合在线观看 | 亚洲精品久久久久久一区二区 | 美女毛片一区二区三区四区 | 中文字幕av伊人av无码av | 性开放的女人aaa片 | 国产成人精品一区二区在线小狼 | 无码国模国产在线观看 | 亚洲日韩av一区二区三区中文 | 亚洲精品久久久久avwww潮水 | 亚洲日韩乱码中文无码蜜桃臀网站 |