久久精品中文字幕av,av.涩涩涩涩涩涩涩涩,亚洲国产日韩欧美精品成人久久久,成人福利电影免费在线观看,日产国产原创av,日韩av午夜激情,bt天堂中文字幕,超级碰人妻在线视频,欧美老熟妇久久一区二区

ThinkChat3.0新版上線,打造企業(yè)超級(jí)智能體和OPC神器,直接交付工作成果而非僅僅是給出答案,送30W Token,即刻開啟你的AI之旅 廣告
Lisp 代碼是由 Lisp 對(duì)象的列表來表示。2.3 節(jié)宣稱這讓 Lisp 可以寫出**可自己寫程序的程序**。本章將示范如何跨越表達(dá)式與代碼的界線。 [TOC] ## 10.1 求值 (Eval)[](http://acl.readthedocs.org/en/latest/zhCN/ch10-cn.html#eval "Permalink to this headline") 如何產(chǎn)生表達(dá)式是很直觀的:調(diào)用?`list`?即可。我們沒有考慮到的是,如何使 Lisp 將列表視為代碼。這之間缺少的一環(huán)是函數(shù)?`eval`,它接受一個(gè)表達(dá)式,將其求值,然后返回它的值: ~~~ > (eval '(+ 1 2 3)) 6 > (eval '(format t "Hello")) Hello NIL ~~~ 如果這看起很熟悉的話,這是應(yīng)該的。這就是我們一直交談的那個(gè)?`eval`?。下面這個(gè)函數(shù)實(shí)現(xiàn)了與頂層非常相似的東西: ~~~ (defun our-toplevel () (do () (nil) (format t "~%> ") (print (eval (read))))) ~~~ 也是因?yàn)檫@個(gè)原因,頂層也稱為**讀取─求值─打印循環(huán)**?(read-eval-print loop, REPL)。 調(diào)用?`eval`?是跨越代碼與列表界線的一種方法。但它不是一個(gè)好方法: 1. 它的效率低下:?`eval`?處理的是原始列表 (raw list),或者當(dāng)下編譯它,或者用直譯器求值。兩種方法都比執(zhí)行編譯過的代碼來得慢許多。 2. 表達(dá)式在沒有詞法語境 (lexical context)的情況下被求值。舉例來說,如果你在一個(gè)?`let`?里調(diào)用?`eval`?,傳給?`eval`?的表達(dá)式將無法引用由?`let`?所設(shè)置的變量。 有許多更好的方法 (下一節(jié)敘述)來利用產(chǎn)生代碼的這個(gè)可能性。當(dāng)然?`eval`?也是有用的,唯一合法的用途像是在頂層循環(huán)使用它。 對(duì)于程序員來說,?`eval`?的主要價(jià)值大概是作為 Lisp 的概念模型。我們可以想像 Lisp 是由一個(gè)長(zhǎng)的?`cond`?表達(dá)式定義而成: ~~~ (defun eval (expr env) (cond ... ((eql (car expr) 'quote) (cdr expr)) ... (t (apply (symbol-function (car expr)) (mapcar #'(lambda (x) (eval x env)) (cdr expr)))))) ~~~ 許多表達(dá)式由預(yù)設(shè)子句 (default clause)來處理,預(yù)設(shè)子句獲得?`car`?所引用的函數(shù),將?`cdr`?所有的參數(shù)求值,并返回將前者應(yīng)用至后者的結(jié)果。?[[1]](http://acl.readthedocs.org/en/latest/zhCN/ch10-cn.html#id5) 但是像?`(quote?x)`?那樣的句子就不能用這樣的方式來處理,因?yàn)?`quote`?就是為了防止它的參數(shù)被求值而存在的。所以我們需要給`quote`?寫一個(gè)特別的子句。這也是為什么本質(zhì)上將其稱為特殊操作符 (special operator): 一個(gè)需要被實(shí)現(xiàn)為?`eval`?的一個(gè)特殊情況的操作符。 函數(shù)?`coerce`?與?`compile`?提供了一個(gè)類似的橋梁,讓你把列表轉(zhuǎn)成代碼。你可以?`coerce`?一個(gè) lambda 表達(dá)式,使其成為函數(shù), ~~~ > (coerce '(lambda (x) x) 'function) #<Interpreted-Function BF9D96> ~~~ 而如果你將?`nil`?作為第一個(gè)參數(shù)傳給?`compile`?,它會(huì)編譯作為第二個(gè)參數(shù)傳入的 lambda 表達(dá)式。 ~~~ > (compile nil '(lambda (x) (+ x 2))) #<Compiled-Function BF55BE> NIL NIL ~~~ 由于?`coerce`?與?`compile`?可接受列表作為參數(shù),一個(gè)程序可以在動(dòng)態(tài)執(zhí)行時(shí) (on the fly)構(gòu)造新函數(shù)。但與調(diào)用?`eval`?比起來,這不是一個(gè)從根本解決的辦法,并且需抱有同樣的疑慮來檢視這兩個(gè)函數(shù)。 函數(shù)?`eval`?,?`coerce`?與?`compile`?的麻煩不是它們跨越了代碼與列表之間的界線,而是它們?cè)趫?zhí)行期做這件事??缭浇缇€的代價(jià)昂貴。大多數(shù)情況下,在編譯期做這件事是沒問題的,當(dāng)你的程序執(zhí)行時(shí),幾乎不用成本。下一節(jié)會(huì)示范如何辦到這件事。 ## 10.2 宏 (Macros)[](http://acl.readthedocs.org/en/latest/zhCN/ch10-cn.html#macros "Permalink to this headline") 寫出能寫程序的程序的最普遍方法是通過定義宏。*宏*是通過轉(zhuǎn)換 (transformation)而實(shí)現(xiàn)的操作符。你通過說明你一個(gè)調(diào)用應(yīng)該要翻譯成什么,來定義一個(gè)宏。這個(gè)翻譯稱為宏展開(macro-expansion),宏展開由編譯器自動(dòng)完成。所以宏所產(chǎn)生的代碼,會(huì)變成程序的一個(gè)部分,就像你自己輸入的程序一樣。 宏通常通過調(diào)用?`defmacro`?來定義。一個(gè)?`defmacro`?看起來很像?`defun`?。但是與其定義一個(gè)函數(shù)調(diào)用應(yīng)該產(chǎn)生的值,它定義了該怎么翻譯出一個(gè)函數(shù)調(diào)用。舉例來說,一個(gè)將其參數(shù)設(shè)為?`nil`?的宏可以定義成如下: ~~~ (defmacro nil! (x) (list 'setf x nil)) ~~~ 這定義了一個(gè)新的操作符,稱為?`nil!`?,它接受一個(gè)參數(shù)。一個(gè)這樣形式?`(nil!?a)`?的調(diào)用,會(huì)在求值或編譯前,被翻譯成?`(setf?anil)`?。所以如果我們輸入?`(nil!?x)`?至頂層, ~~~ > (nil! x) NIL > x NIL ~~~ 完全等同于輸入表達(dá)式?`(setf?x?nil)`?。 要測(cè)試一個(gè)函數(shù),我們調(diào)用它,但要測(cè)試一個(gè)宏,我們看它的展開式 (expansion)。 函數(shù)?`macroexpand-1`?接受一個(gè)宏調(diào)用,并產(chǎn)生它的展開式: ~~~ > (macroexpand-1 '(nil! x)) (SETF X NIL) T ~~~ 一個(gè)宏調(diào)用可以展開成另一個(gè)宏調(diào)用。當(dāng)編譯器(或頂層)遇到一個(gè)宏調(diào)用時(shí),它持續(xù)展開它,直到不可展開為止。 理解宏的秘密是理解它們是如何被實(shí)現(xiàn)的。在臺(tái)面底下,它們只是轉(zhuǎn)換成表達(dá)式的函數(shù)。舉例來說,如果你傳入這個(gè)形式?`(nil!?a)`的表達(dá)式給這個(gè)函數(shù) ~~~ (lambda (expr) (apply #'(lambda (x) (list 'setf x nil)) (cdr expr))) ~~~ 它會(huì)返回?`(setf?a?nil)`?。當(dāng)你使用?`defmacro`?,你定義一個(gè)類似這樣的函數(shù)。?`macroexpand-1`?全部所做的事情是,當(dāng)它看到一個(gè)表達(dá)式的?`car`?是宏時(shí),將表達(dá)式傳給對(duì)應(yīng)的函數(shù)。 ## 10.3 反引號(hào) (Backquote)[](http://acl.readthedocs.org/en/latest/zhCN/ch10-cn.html#backquote "Permalink to this headline") 反引號(hào)讀取宏 (read-macro)使得從模版 (templates)建構(gòu)列表變得有可能。反引號(hào)廣泛使用在宏定義中。一個(gè)平常的引用是鍵盤上的右引號(hào) (apostrophe),然而一個(gè)反引號(hào)是一個(gè)左引號(hào)。(譯注: open quote 左引號(hào),closed quote 右引號(hào))。它稱作“反引號(hào)”是因?yàn)樗雌饋硐袷欠催^來的引號(hào) (titled backwards)。 (譯注: 反引號(hào)是鍵盤左上方數(shù)字 1 左邊那個(gè):?`````?,而引號(hào)是 enter 左邊那個(gè)?`'`) 一個(gè)反引號(hào)單獨(dú)使用時(shí),等于普通的引號(hào): ~~~ > `(a b c) (A B C) ~~~ 和普通引號(hào)一樣,單一個(gè)反引號(hào)保護(hù)其參數(shù)被求值。 反引號(hào)的優(yōu)點(diǎn)是,在一個(gè)反引號(hào)表達(dá)式里,你可以使用?`,`?(逗號(hào))與?`,@`?(comma-at)來重啟求值。如果你在反引號(hào)表達(dá)式里,在某個(gè)東西前面加逗號(hào),則它會(huì)被求值。所以我們可以使用反引號(hào)與逗號(hào)來建構(gòu)列表模版: ~~~ > (setf a 1 b 2) 2 > `(a is ,a and b is ,b) (A IS 1 AND B IS 2) ~~~ 通過使用反引號(hào)取代調(diào)用?`list`?,我們可以寫出會(huì)產(chǎn)生出展開式的宏。舉例來說?`nil!`?可以定義為: ~~~ (defmacro nil! (x) `(setf ,x nil)) ~~~ `,@`?與逗號(hào)相似,但將(本來應(yīng)該是列表的)參數(shù)扒開。將列表的元素插入模版來取代列表。 ~~~ > (setf lst '(a b c)) (A B C) > `(lst is ,lst) (LST IS (A B C)) > `(its elements are ,@lst) (ITS ELEMENTS ARE A B C) ~~~ `,@`?在宏里很有用,舉例來說,在用剩余參數(shù)表示代碼主體的宏。假設(shè)我們想要一個(gè)?`while`?宏,只要初始測(cè)試表達(dá)式為真,對(duì)其主體求值: ~~~ > (let ((x 0)) (while (< x 10) (princ x) (incf x))) 0123456789 NIL ~~~ 我們可以通過使用一個(gè)剩余參數(shù) (rest parameter) ,搜集主體的表達(dá)式列表,來定義一個(gè)這樣的宏,接著使用 comma-at 來扒開這個(gè)列表放至展開式里: ~~~ (defmacro while (test &rest body) `(do () ((not ,test)) ,@body)) ~~~ ## 10.4 示例:快速排序法(Example: Quicksort)[](http://acl.readthedocs.org/en/latest/zhCN/ch10-cn.html#example-quicksort "Permalink to this headline") 圖 10.1 包含了重度依賴宏的一個(gè)示例函數(shù) ── 一個(gè)使用快速排序演算法?[λ](http://acl.readthedocs.org/en/latest/zhCN/notes-cn.html#notes-164)?來排序向量的函數(shù)。這個(gè)函數(shù)的工作方式如下: ~~~ (defun quicksort (vec l r) (let ((i l) (j r) (p (svref vec (round (+ l r) 2)))) ; 1 (while (<= i j) ; 2 (while (< (svref vec i) p) (incf i)) (while (> (svref vec j) p) (decf j)) (when (<= i j) (rotatef (svref vec i) (svref vec j)) (incf i) (decf j))) (if (>= (- j l) 1) (quicksort vec l j)) ; 3 (if (>= (- r i) 1) (quicksort vec i r))) vec) ~~~ **圖 10.1 快速排序。** 1. 開始你通過選擇某個(gè)元素作為主鍵(?*pivot*?)。許多實(shí)現(xiàn)選擇要被排序的序列中間元素。 2. 接著你分割(partition)向量,持續(xù)交換元素,直到所有主鍵左邊的元素小于主鍵,右邊的元素大于主鍵。 3. 最后,如果左右分割之一有兩個(gè)或更多元素時(shí),你遞歸地應(yīng)用這個(gè)算法至向量的那些分割上。 每一次遞歸時(shí),分割越變?cè)叫?,直到向量完整排序?yàn)橹埂? 在圖 10.1 的實(shí)現(xiàn)里,接受一個(gè)向量以及標(biāo)記欲排序范圍的兩個(gè)整數(shù)。這個(gè)范圍當(dāng)下的中間元素被選為主鍵 (?`p`?)。接著從左右兩端開始產(chǎn)生分割,并將左邊太大或右邊太小的元素交換過來。(將兩個(gè)參數(shù)傳給?`rotatef`?函數(shù),交換它們的值。)最后,如果一個(gè)分割含有多個(gè)元素時(shí),用同樣的流程來排序它們。 除了我們前一節(jié)定義的?`while`?宏之外,圖 10.1 也用了內(nèi)置的?`when`?,?`incf`?,?`decf`?以及?`rotatef`?宏。使用這些宏使程序看起來更加簡(jiǎn)潔與清晰。 ## 10.5 設(shè)計(jì)宏 (Macro Design)[](http://acl.readthedocs.org/en/latest/zhCN/ch10-cn.html#macro-design "Permalink to this headline") 撰寫宏是一種獨(dú)特的程序設(shè)計(jì),它有著獨(dú)一無二的目標(biāo)與問題。能夠改變編譯器所看到的東西,就像是能夠重寫它一樣。所以當(dāng)你開始撰寫宏時(shí),你需要像語言設(shè)計(jì)者一樣思考。 本節(jié)快速給出宏所牽涉問題的概要,以及解決它們的技巧。作為一個(gè)例子,我們會(huì)定義一個(gè)稱為?`ntimes`?的宏,它接受一個(gè)數(shù)字?*n*?并對(duì)其主體求值?*n*?次。 ~~~ > (ntimes 10 (princ ".")) .......... NIL ~~~ 下面是一個(gè)不正確的?`ntimes`?定義,說明了宏設(shè)計(jì)中的某些議題: ~~~ (defmacro ntimes (n &rest body) `(do ((x 0 (+ x 1))) ((>= x ,n)) ,@body)) ~~~ 這個(gè)定義第一眼看起來可能沒問題。在上面這個(gè)情況,它會(huì)如預(yù)期的工作。但實(shí)際上它在兩個(gè)方面壞掉了。 一個(gè)宏設(shè)計(jì)者需要考慮的問題之一是,不小心引入的變量捕捉 (variable capture)。這發(fā)生在當(dāng)一個(gè)在宏展開式里用到的變量,恰巧與展開式即將插入的語境里,有使用同樣名字作為變量的情況。不正確的?`ntimes`?定義創(chuàng)造了一個(gè)變量?`x`?。所以如果這個(gè)宏在已經(jīng)有`x`?作為名字的地方被調(diào)用時(shí),它可能無法做到我們所預(yù)期的: ~~~ > (let ((x 10)) (ntimes 5 (setf x (+ x 1))) x) 10 ~~~ 如果?`ntimes`?如我們預(yù)期般的執(zhí)行,這個(gè)表達(dá)式應(yīng)該會(huì)對(duì)?`x`?遞增五次,最后返回?`15`?。但因?yàn)楹暾归_剛好使用?`x`?作為迭代變量,`setf`?表達(dá)式遞增那個(gè)?`x`?,而不是我們要遞增的那個(gè)。一旦宏調(diào)用被展開,前述的展開式變成: ~~~ > (let ((x 10)) (do ((x 0 (+ x 1))) ((>= x 5)) (setf x (+ x 1))) x) ~~~ 最普遍的解法是不要使用任何可能會(huì)被捕捉的一般符號(hào)。取而代之的我們使用 gensym (8.4 小節(jié))。因?yàn)?`read`?函數(shù)?`intern`?每個(gè)它見到的符號(hào),所以在一個(gè)程序里,沒有可能會(huì)有任何符號(hào)會(huì)?`eql`?gensym。如果我們使用 gensym 而不是?`x`?來重寫?`ntimes`?的定義,至少對(duì)于變量捕捉來說,它是安全的: ~~~ (defmacro ntimes (n &rest body) (let ((g (gensym))) `(do ((,g 0 (+ ,g 1))) ((>= ,g ,n)) ,@body))) ~~~ 但這個(gè)宏在另一問題上仍有疑慮: 多重求值 (multiple evaluation)。因?yàn)榈谝粋€(gè)參數(shù)被直接插入?`do`?表達(dá)式,它會(huì)在每次迭代時(shí)被求值。當(dāng)?shù)谝粋€(gè)參數(shù)是有副作用的表達(dá)式,這個(gè)錯(cuò)誤非常清楚地表現(xiàn)出來: ~~~ > (let ((v 10)) (ntimes (setf v (- v 1)) (princ "."))) ..... NIL ~~~ 由于?`v`?一開始是?`10`?,而?`setf`?返回其第二個(gè)參數(shù)的值,應(yīng)該印出九個(gè)句點(diǎn)。實(shí)際上它只印出五個(gè)。 如果我們看看宏調(diào)用所展開的表達(dá)式,就可以知道為什么: ~~~ > (let ((v 10)) (do ((#:g1 0 (+ #:g1 1))) ((>= #:g1 (setf v (- v 1)))) (princ "."))) ~~~ 每次迭代我們不是把迭代變量 (gensym 通常印出前面有?`#:`?的符號(hào))與?`9`?比較,而是與每次求值時(shí)會(huì)遞減的表達(dá)式比較。這如同每次我們查看地平線時(shí),地平線都越來越近。 避免非預(yù)期的多重求值的方法是設(shè)置一個(gè)變量,在任何迭代前將其設(shè)為有疑惑的那個(gè)表達(dá)式。這通常牽扯到另一個(gè) gensym: ~~~ (defmacro ntimes (n &rest body) (let ((g (gensym)) (h (gensym))) `(let ((,h ,n)) (do ((,g 0 (+ ,g 1))) ((>= ,g ,h)) ,@body)))) ~~~ 終于,這是一個(gè)?`ntimes`?的正確定義。 非預(yù)期的變量捕捉與多重求值是折磨宏的主要問題,但不只有這些問題而已。有經(jīng)驗(yàn)后,要避免這樣的錯(cuò)誤與避免更熟悉的錯(cuò)誤一樣簡(jiǎn)單,比如除以零的錯(cuò)誤。 你的 Common Lisp 實(shí)現(xiàn)是一個(gè)學(xué)習(xí)更多有關(guān)宏的好地方。借由調(diào)用展開至內(nèi)置宏,你可以理解它們是怎么寫的。下面是大多數(shù)實(shí)現(xiàn)對(duì)于一個(gè)?`cond`?表達(dá)式會(huì)產(chǎn)生的展開式: ~~~ > (pprint (macroexpand-1 '(cond (a b) (c d e) (t f)))) (IF A B (IF C (PROGN D E) F)) ~~~ 函數(shù)?`pprint`?印出像代碼一樣縮排的表達(dá)式,這在檢視宏展開式時(shí)特別有用。 ## 10.6 通用化引用 (Generalized Reference)[](http://acl.readthedocs.org/en/latest/zhCN/ch10-cn.html#generalized-reference "Permalink to this headline") 由于一個(gè)宏調(diào)用可以直接在它出現(xiàn)的地方展開成代碼,任何展開為?`setf`?表達(dá)式的宏調(diào)用都可以作為?`setf`?表達(dá)式的第一個(gè)參數(shù)。 舉例來說,如果我們定義一個(gè)?`car`?的同義詞, ~~~ (defmacro cah (lst) `(car ,lst)) ~~~ 然后因?yàn)橐粋€(gè)?`car`?調(diào)用可以是?`setf`?的第一個(gè)參數(shù),而?`cah`?一樣可以: ~~~ > (let ((x (list 'a 'b 'c))) (setf (cah x) 44) x) (44 B C) ~~~ 撰寫一個(gè)展開成一個(gè)?`setf`?表達(dá)式的宏是另一個(gè)問題,是一個(gè)比原先看起來更為困難的問題??雌饋硪苍S你可以這樣實(shí)現(xiàn)?`incf`?,只要 ~~~ (defmacro incf (x &optional (y 1)) ; wrong `(setf ,x (+ ,x ,y))) ~~~ 但這是行不通的。這兩個(gè)表達(dá)式不相等: ~~~ (setf (car (push 1 lst)) (1+ (car (push 1 lst)))) (incf (car (push 1 lst))) ~~~ 如果?`lst`?是?`nil`?的話,第二個(gè)表達(dá)式會(huì)設(shè)成?`(2)`?,但第一個(gè)表達(dá)式會(huì)設(shè)成?`(1?2)`?。 Common Lisp 提供了?`define-modify-macro`?作為寫出對(duì)于?`setf`?限制類別的宏的一種方法 它接受三個(gè)參數(shù): 宏的名字,額外的參數(shù) (隱含第一個(gè)參數(shù)?`place`),以及產(chǎn)生出?`place`?新數(shù)值的函數(shù)名。所以我們可以將?`incf`?定義為 ~~~ (define-modify-macro our-incf (&optional (y 1)) +) ~~~ 另一版將元素推至列表尾端的?`push`?可寫成: ~~~ (define-modify-macro append1f (val) (lambda (lst val) (append lst (list val)))) ~~~ 后者會(huì)如下工作: ~~~ > (let ((lst '(a b c))) (append1f lst 'd) lst) (A B C D) ~~~ 順道一提,?`push`?與?`pop`?都不能定義為 modify-macros,前者因?yàn)?`place`?不是其第一個(gè)參數(shù),而后者因?yàn)槠浞祷刂挡皇歉暮蟮膶?duì)象。 ## 10.7 示例:實(shí)用的宏函數(shù) (Example: Macro Utilities)[](http://acl.readthedocs.org/en/latest/zhCN/ch10-cn.html#example-macro-utilities "Permalink to this headline") 6.4 節(jié)介紹了實(shí)用函數(shù) (utility)的概念,一種像是構(gòu)造 Lisp 的通用操作符。我們可以使用宏來定義不能寫作函數(shù)的實(shí)用函數(shù)。我們已經(jīng)見過幾個(gè)例子:?`nil!`?,?`ntimes`?以及?`while`?,全部都需要寫成宏,因?yàn)樗鼈內(nèi)夹枰撤N控制參數(shù)求值的方法。本節(jié)給出更多你可以使用宏寫出的多種實(shí)用函數(shù)。圖 10.2 挑選了幾個(gè)實(shí)踐中證實(shí)值得寫的實(shí)用函數(shù)。 ~~~ (defmacro for (var start stop &body body) (let ((gstop (gensym))) `(do ((,var ,start (1+ ,var)) (,gstop ,stop)) ((> ,var ,gstop)) ,@body))) (defmacro in (obj &rest choices) (let ((insym (gensym))) `(let ((,insym ,obj)) (or ,@(mapcar #'(lambda (c) `(eql ,insym ,c)) choices))))) (defmacro random-choice (&rest exprs) `(case (random ,(length exprs)) ,@(let ((key -1)) (mapcar #'(lambda (expr) `(,(incf key) ,expr)) exprs)))) (defmacro avg (&rest args) `(/ (+ ,@args) ,(length args))) (defmacro with-gensyms (syms &body body) `(let ,(mapcar #'(lambda (s) `(,s (gensym))) syms) ,@body)) (defmacro aif (test then &optional else) `(let ((it ,test)) (if it ,then ,else))) ~~~ **圖 10.2: 實(shí)用宏函數(shù)** 第一個(gè)?`for`?,設(shè)計(jì)上與?`while`?相似 (164 頁,譯注: 10.3 節(jié))。它是給需要使用一個(gè)綁定至一個(gè)值的范圍的新變量來對(duì)主體求值的循環(huán): ~~~ > (for x 1 8 (princ x)) 12345678 NIL ~~~ 這比寫出等效的?`do`?來得省事, ~~~ (do ((x 1 (+ x 1))) ((> x 8)) (princ x)) ~~~ 這非常接近實(shí)際的展開式: ~~~ (do ((x 1 (1+ x)) (#:g1 8)) ((> x #:g1)) (princ x)) ~~~ 宏需要引入一個(gè)額外的變量來持有標(biāo)記范圍 (range)結(jié)束的值。 上面在例子里的?`8`?也可是個(gè)函數(shù)調(diào)用,這樣我們就不需要求值好幾次。額外的變量需要是一個(gè) gensym ,為了避免非預(yù)期的變量捕捉。 圖 10.2 的第二個(gè)宏?`in`?,若其第一個(gè)參數(shù)?`eql`?任何自己其他的參數(shù)時(shí),返回真。表達(dá)式我們可以寫成: ~~~ (in (car expr) '+ '- '*) ~~~ 我們可以改寫成: ~~~ (let ((op (car expr))) (or (eql op '+) (eql op '-) (eql op '*))) ~~~ 確實(shí),第一個(gè)表達(dá)式展開后像是第二個(gè),除了變量?`op`?被一個(gè) gensym 取代了。 下一個(gè)例子?`random-choice`?,隨機(jī)選取一個(gè)參數(shù)求值。在 74 頁 (譯注: 第 4 章的圖 4.6)我們需要隨機(jī)在兩者之間選擇。?`random-choice`?宏實(shí)現(xiàn)了通用的解法。一個(gè)像是這樣的調(diào)用: ~~~ (random-choice (turn-left) (turn-right)) ~~~ 會(huì)被展開為: ~~~ (case (random 2) (0 (turn-left)) (1 (turn-right))) ~~~ 下一個(gè)宏?`with-gensyms`?主要預(yù)期用在宏主體里。它不尋常,特別是在特定應(yīng)用中的宏,需要 gensym 幾個(gè)變量。有了這個(gè)宏,與其 ~~~ (let ((x (gensym)) (y (gensym)) (z (gensym))) ...) ~~~ 我們可以寫成 ~~~ (with-gensyms (x y z) ...) ~~~ 到目前為止,圖 10.2 定義的宏,沒有一個(gè)可以定義成函數(shù)。作為一個(gè)規(guī)則,寫成宏是因?yàn)槟悴荒軐⑺鼘懗珊瘮?shù)。但這個(gè)規(guī)則有幾個(gè)例外。有時(shí)候你或許想要定義一個(gè)操作符來作為宏,好讓它在編譯期完成它的工作。宏?`avg`?返回其參數(shù)的平均值, ~~~ > (avg 2 4 8) 14/3 ~~~ 是一個(gè)這種例子的宏。我們可以將?`avg`?寫成函數(shù), ~~~ (defun avg (&rest args) (/ (apply #'+ args) (length args))) ~~~ 但它會(huì)需要在執(zhí)行期找出參數(shù)的數(shù)量。只要我們?cè)敢夥艞墤?yīng)用?`avg`?,為什么不在編譯期調(diào)用?`length`?呢? 圖 10.2 的最后一個(gè)宏是?`aif`?,它在此作為一個(gè)故意變量捕捉的例子。它讓我們可以使用變量?`it`?來引用到一個(gè)條件式里的測(cè)試參數(shù)所返回的值。也就是說,與其寫成 ~~~ (let ((val (calculate-something))) (if val (1+ val) 0)) ~~~ 我們可以寫成 ~~~ (aif (calculate-something) (1+ it) 0) ~~~ **小心使用**?(?*Use judiciously*),預(yù)期的變量捕捉可以是一個(gè)無價(jià)的技巧。Common Lisp 本身在多處使用它: 舉例來說?`next-method-p`與?`call-next-method`?皆依賴于變量捕捉。 像這些宏明確演示了為何要撰寫替你寫程序的程序。一旦你定義了?`for`?,你就不需要寫整個(gè)?`do`?表達(dá)式。值得寫一個(gè)宏只為了節(jié)省打字嗎?非常值得。節(jié)省打字是程序設(shè)計(jì)的全部;一個(gè)編譯器的目的便是替你省下使用機(jī)械語言輸入程序的時(shí)間。而宏允許你將同樣的優(yōu)點(diǎn)帶到特定的應(yīng)用里,就像高階語言帶給程序語言一般。通過審慎的使用宏,你也許可以使你的程序比起原來大幅度地精簡(jiǎn),并使程序更顯著地容易閱讀、撰寫及維護(hù)。 如果仍對(duì)此懷疑,考慮看看如果你沒有使用任何內(nèi)置宏時(shí),程序看起來會(huì)是怎么樣。所有宏產(chǎn)生的展開式,你會(huì)需要用手產(chǎn)生。你也可以將這個(gè)問題用在另一方面。當(dāng)你在撰寫一個(gè)程序時(shí),捫心自問,我需要撰寫宏展開式嗎?如果是的話,宏所產(chǎn)生的展開式就是你需要寫的東西。 ## 10.8 源自 Lisp (On Lisp)[](http://acl.readthedocs.org/en/latest/zhCN/ch10-cn.html#lisp-on-lisp "Permalink to this headline") 現(xiàn)在宏已經(jīng)介紹過了,我們看過更多的 Lisp 是由超乎我們想像的 Lisp 寫成。許多不是函數(shù)的 Common Lisp 操作符是宏,而他們?nèi)坑?Lisp 寫成的。只有二十五個(gè) Common Lisp 內(nèi)置的操作符是特殊操作符。 [John Foderaro](http://www.franz.com/about/bios/jkf.lhtml)?將 Lisp 稱為“可程序的程序語言?!?[λ](http://acl.readthedocs.org/en/latest/zhCN/notes-cn.html#notes-173)?通過撰寫你自己的函數(shù)與宏,你將 Lisp 變成任何你想要的語言。 (我們會(huì)在 17 章看到這個(gè)可能性的圖形化示范)無論你的程序適合何種形式,你確信你可以將 Lisp 塑造成適合它的語言。 宏是這個(gè)靈活性的主要成分之一。它們?cè)试S你將 Lisp 變得完全認(rèn)不出來,但仍然用一種有原則且高效的方法來實(shí)作。在 Lisp 社區(qū)里,宏是個(gè)越來越感興趣的主題??梢允褂煤贽k到驚人之事是很清楚的,但更確信的是宏背后還有更多需要被探索。如果你想的話,可以通過你來發(fā)現(xiàn)。Lisp 永遠(yuǎn)將進(jìn)化放在程序員手里。這是它為什么存活的原因。 ## Chapter 10 總結(jié) (Summary)[](http://acl.readthedocs.org/en/latest/zhCN/ch10-cn.html#chapter-10-summary "Permalink to this headline") 1. 調(diào)用?`eval`?是讓 Lisp 將列表視為代碼的一種方法,但這是不必要而且效率低落的。 2. 你通過敘說一個(gè)調(diào)用會(huì)展開成什么來定義一個(gè)宏。臺(tái)面底下,宏只是返回表達(dá)式的函數(shù)。 3. 一個(gè)使用反引號(hào)定義的主體看起來像它會(huì)產(chǎn)生出的展開式 (expansion)。 4. 宏設(shè)計(jì)者需要注意變量捕捉及多重求值。宏可以通過漂亮印出 (pretty-printing)來測(cè)試它們的展開式。 5. 多重求值是大多數(shù)展開成?`setf`?表達(dá)式的問題。 6. 宏比函數(shù)來得靈活,可以用來定義許多實(shí)用函數(shù)。你甚至可以使用變量捕捉來獲得好處。 7. Lisp 存活的原因是它將進(jìn)化交給程序員的雙手。宏是使其可能的部分原因之一。 ## Chapter 10 練習(xí) (Exercises)[](http://acl.readthedocs.org/en/latest/zhCN/ch10-cn.html#chapter-10-exercises "Permalink to this headline") 1. 如果?`x`?是?`a`?,?`y`?是?`b`?以及?`z`?是?`(c?d)`?,寫出反引用表達(dá)式僅包含產(chǎn)生下列結(jié)果之一的變量: ~~~ (a) ((C D) A Z) (b) (X B C D) (c) ((C D A) Z) ~~~ 1. 使用?`cond`?來定義?`if`?。 2. 定義一個(gè)宏,接受一個(gè)數(shù)字?*n*?,伴隨著一個(gè)或多個(gè)表達(dá)式,并返回第?*n*?個(gè)表達(dá)式的值: ~~~ > (let ((n 2)) (nth-expr n (/ 1 0) (+ 1 2) (/ 1 0))) 3 ~~~ 1. 定義?`ntimes`?(167 頁,譯注: 10.5 節(jié))使其展開成一個(gè) (區(qū)域)遞歸函數(shù),而不是一個(gè)?`do`?表達(dá)式。 2. 定義一個(gè)宏?`n-of`?,接受一個(gè)數(shù)字?*n*?與一個(gè)表達(dá)式,返回一個(gè)?*n*?個(gè)漸進(jìn)值: ~~~ > (let ((i 0) (n 4)) (n-of n (incf i))) (1 2 3 4) ~~~ 1. 定義一個(gè)宏,接受一變量列表以及一個(gè)代碼主體,并確保變量在代碼主體被求值后恢復(fù) (revert)到原本的數(shù)值。 2. 下面這個(gè)?`push`?的定義哪里錯(cuò)誤? ~~~ (defmacro push (obj lst) `(setf ,lst (cons ,obj ,lst))) 舉出一個(gè)不會(huì)與實(shí)際 push 做一樣事情的函數(shù)調(diào)用例子。 ~~~ 1. 定義一個(gè)將其參數(shù)翻倍的宏: ~~~ > (let ((x 1)) (double x) x) 2 ~~~ 腳注 [[1]](http://acl.readthedocs.org/en/latest/zhCN/ch10-cn.html#id2) | 要真的復(fù)制一個(gè) Lisp 的話,?`eval`?會(huì)需要接受第二個(gè)參數(shù) (這里的?`env`) 來表示詞法環(huán)境 (lexical enviroment)。這個(gè)模型的`eval`?是不正確的,因?yàn)樗趯?duì)參數(shù)求值前就取出函數(shù),然而 Common Lisp 故意沒有特別指出這兩個(gè)操作的順序。
亚洲欧美日韩在线中文字幕小| 日韩在线啊啊啊的视频| 福利一福利二福利三| 国产美女深喉口爆吞精免费| 日韩成视频在线播放| 篠田优中文字幕在线播| 天天干天天天天射天天操| 色图av亚洲综合| 久久亚洲熟妇中文字幕| 国产成人精品久久久女| 91偷伦一区二区三区蜜臀| 999热精品在线观看| av日韩在线免费观看网站| 久热中文字幕在线精品| 国产丝袜香蕉在线观看| 日韩国产91综合精品| 搡老熟女一区二区三区老熟女| 婷婷亚洲免费基地| 国产又大又长又粗又硬免费视频| 欧美熟女人妻一区二区三区| 福利小视频国产一区| 亚洲 免费在线视频| 91人妻人人做人碰人人| 五月爱婷婷六月丁香性| 国产精品男人的天堂999| 日韩日韩av在线| 中文字幕理伦福利片| 精品乱码一区二区三四五六区| 亚洲欧美在线视频播放| 天天操天天爽天天舔天天操一操| 日韩亚洲图色在线| 蜜臀av日韩特黄大片| 久久99精品国产91| 中文字幕日韩久久精品tv| 精品美女1区2区3区| 日本女优中文字幕在线| 男人的天堂久久精平| 亚洲欧美在线制服丝袜| 国产一区二区免费五遮挡| 少妇高潮喷水久久久久久桃花| 在线观看日韩中文| 一级久久久久久久18| 狠狠久久综合丁香777米奇| 日韩精品在线播放第三页| 中文字幕av久久爽爽| www.成人国产精品| 日韩av在线点播| 欧美熟女vides| 777亚洲精品乱码久久| 久久视频一区二区三| 91啪啪啪内射网站| 久久人妻少妇嫩草av蜜桃动态图| 97偷拍视频在线观看| 欧美人妻a∨中文字幕在线| 亚洲久久精品午夜| 天天日天天干天天爱天天| 中文字幕 日本伊人| 四虎国产精品久久免费精品| 1024 国产高清の最新合集| 最新偷窥偷拍免费视频观看| 久久久国产一区二区视| 久久人人爽爽人人爽av| 欧美激情 另类视频 亚洲| 色丁香婷婷综合久久| 日韩精品免费91aa| 国产成人免费精品视频大全| 亚洲欧美av在线观看| 亚洲一区二区三区久久aa| 亚洲自拍偷拍色图区| 国产人妻另类综合专区| 97成人免费碰碰碰视频| 日本美女大学生一区二区三区| 色哟哟视频在线观看国产| 人妻熟 中文字幕| 十八禁久久久久久久久久久久久久| 国产精品久久久久一区二区| 欧美日韩激情在线视频观看| 日韩美女主播人体视频自拍首页 | 中文字幕亚洲中文字幕| 91精品一二三区在线观看| 午夜在线看1000集| 久久久久久久黄色午夜精品| 亚洲精品熟女中文字幕| 麻豆丝袜美女人妻中文| av久久伊人精品中文字幕| 久久久成人在线免费视频 | 久久精品人人看人人爽| 亚洲少妇黄色一级片| 婷婷亚洲天堂中文字幕| 日韩手机无线看视频| 国产自拍 偷拍 在线| 首页国产中文字幕av| 亚洲丰满熟妇乱xxxxx| 成人国产一区二区免费| 天天日天天日天天日天天日| 国产日韩欧美春色另类小说| 91久久亚洲成人精品| 亚洲第一黄色天堂| 亚洲青青青国产观看视频| 99爱99久久久久久久久久| 久久最近最新中文字幕大全| 日韩av在线不卡网站| 熟妇人妻 一区二区三区中文字幕| 久久视频黄色观看网站| 之久精品一区二区| 亚洲精品网站成人久久综合| av蜜臀懂色啊啊啊| 色哟哟视频在线一区| av国偷自产自拍自在线| 久久久久国产精品夜夜夜| 亚洲人的午夜影院| 日韩av在线观看卡一卡| 欧美老熟妇重口另类xxx| 成年人免费看黄色片| 久久久久久久久久久免费网| 国产麻豆剧传媒精品视频| 久久久九九九九九精品6| 国产精品久久久久久吹吹潮| 91精品久久久久久五月天| 99精品高清免费在线视频| 亚洲少妇黄色一级片| 欧美精品人妻丝袜一区| 日韩中文字幕在线综合网| 五月激情爱爱婷婷| 国产麻豆剧传媒精品视频| 精品欧美乱子伦一区二区三区| 亚洲中文字幕福利视频| 日韩av在线精品观看| 精品久久精品久久久久| 亚洲久久久久久久人妻| 美女18禁久久久久麻豆| 亚洲伊人网在线观看| 加勒比精品一区二区三区| 少妇人妻成人在线| 亚洲一区二区三二区厕所偷拍| 久久精品香蕉绿巨人| 97人妻中文字幕精品视频| 欧美熟女高清视频一区二区| 少妇人妻视频在线观看| 人妻丰满一区二区三区| 日本熟妇人妻在线| 国产精品99久久电影| 午夜精品久久久久久久久二区三区| 日韩av手机在线电影| 精品国产麻豆免费成人网| 欧美精品一区二区在线视频| japanese 在线中文字幕| 亚洲一级av大片| 99久久999久久久精品综合| 日韩久久久三级电影| 亚洲五月婷婷激情图片| 久久精品美国亚洲av伦理| 人妻办公室被强d在线电影| 一级片一级片久久精品电影网电影 | 亚洲欧美自拍偷拍在线观看| 亚洲视频另类专区| 久久久久国产精品夜夜夜| 久久精品色婷婷国产网站| 最美人妻一区二区三区| www.视频一区二区三区| 久久久96精品久久久| 国产精品网址在线观看| 少妇人妻一区2区中文字幕| 蜜臀av 麻豆av| 久久 99 精品视频| 亚洲:西西一区二区三区四区五区| 日韩精品综合视频在线| 国产丝袜香蕉在线观看| 欧美熟女高清视频一区二区| 天天射天天舔天天射| 97cao瑟瑟在线观看| 天天色天天日天天操| 日韩电影黄色免费| 另类欧美亚洲中文综合| 日本高清理论片中文字幕| 欧美熟妇人妻视频在线| 日韩美女夜夜爽av| 日韩欧美久久免费观看| 丰满少妇精品一区二区| 热热久久这里只有精品| 高清视频在线观看一区二区三区 | 人人妻人人澡人人看| 欧美熟女人妻一区二区三区| 天天插天天日天天舔| 高清一区二区日韩视频精品| 亚洲欧美日韩偷拍综合| 欧美 国产 日韩 一区二区| 青青青高清国产视频| 国产成人精品久久久女| 99国产在线拍91揄自揄视| 五月天色图婷婷亚洲| w疯狂的少妇2做爰韩国| 伊人久久婷婷色综合98网| 麻豆在线视频看片免费| 人人妻人人澡人人爽国产一区 | 日韩av福利大片在线观看| 亚洲伊人网在线播放| 亚洲丰满熟妇乱xxxxx| 欧美一区二区性久久久| 国产一区二区三区黄色| 久久人人爽爽人人爽av| 久久久久精美免费观看视频| 国产91色在线i免费| laoyawo老鸭窝在线视频| 91人妻九色大屁股| 亚洲少妇黄色一级片| 久久99精品国产91| 中文字幕精品久久久人妻| 人妻一区二区中文字幕在线| 亚洲av综合色区手机| 丰满人妻一区二区三区av| 久久五月婷婷综合视频| 精品欧美乱子伦一区二区三区| 少妇激情视频一区二区 | 一区二区三区内射美女毛片| 麻豆丝袜美女人妻中文| 日韩美女影院免费在线观看| 日韩中文字幕在线网站| 国产精品成人av在线网站| 久久久久久人妻无码| 人妻精品少妇嫩草麻豆| 亚洲自拍偷拍色图区| 91在线精品一区二区网站| 色丁香婷婷综合久久| 久久成人网男人的天堂| 91免费av在线观看| 色哟哟视频在线一区| 97人妻中文字幕精品视频| 初撮日本五十路人妻| 免费精品国产日韩热久久| 日韩精品在线视频播放| 俺去鲁婷婷六月色综合| 久久久久国产精品免费| 另类蜜桃刺激视频在线观看| 亚洲综合成人久久av| 超碰在线免费成人午夜剧场97| 精品无人区一区二区三区竹菊| 国产视频av一区二区| 国产精品综合手机在线| 亚洲.欧美.日韩.| 久久人妻少妇嫩草av蜜桃动态图| 熟女大白屁股在线播放| 亚洲伊人网在线观看| 欧美熟妇人妻视频在线| 久久久久久久久久久久久熟女a∨| 国产精品亚洲精品成人| 婷婷 少妇 av| 日韩日韩av在线| 日韩有码视频在线免费观看| 一本一道久久a久久久| 五月天色图婷婷亚洲| 丰满少妇精品一区二区| 999热精品在线观看| 成年美女黄色av网站| 夜夜撸日日撸夜夜爽日日干| 中文字幕日韩久久精品tv| av色香蕉一区二区三区| 一区二区三区四区中文字幕| 自拍偷拍 亚洲 在线| 日韩精品久久久久久久软件| 丝袜日韩中文字幕| 蜜臀久久99精品久久久久久久久| 人妻精品一区二区在线播放| 88在线观看91蜜桃国自产| 日本美女大学生一区二区三区| 日韩a视频在线播放视频| 欧美日韩亚洲大片在线| 国产一区二区不卡91| 五月综合婷婷婷婷婷婷| 999热精品在线观看| 天美麻豆成人av精品小说| 久久成人福利视频资源| 亚洲激情熟女色图| 欧美日韩一区二区综合视频| 日韩精品免费91aa| 瑟瑟网站免费观看| 9久久国产精品一区二区| 丝袜日韩中文字幕| 91精品国产综合久久久久久粉嫩| 久久免费视频观看99| 熟妇人妻 一区二区三区中文字幕| 视频免费在线观看91| 久久精品琪琪男人的天堂| 中文字幕国产在线观看| 精品日韩偷拍欧美另类| 5858s在线视频| 精品国产乱码久久久久夜深| 国产精品一区二区久久精品蜜臀| 十八禁久久久久久久久久久久久久| 精品成人1区2区3区在线看片| 国产精品色呦呦视频免费看 | 久久蜜桃视频亚洲精品| 天天干天天草天天日天天天射伊人| 久久久久久少妇被弄高潮| 亚洲天堂av电影| 秋霞电影韩国一区二区二区三区| 热热久久这里只有精品| 久久久久久夜夜夜精品国产| 日韩精品刺激视频| 麻豆亚州av熟女国产一区二| av在线免费在线观看av| 久久久久在线免费看| 一区,二区,三区视频| 日韩av午夜精品| 亚洲精品久久久久久无几年桃| 国产又粗又硬又长又爽视频| 国产成人一区二区三区在线视频| 日韩成视频在线播放| 中文字幕 日本伊人| 久久久久久久久久性| 色哟哟视频在线观看国产 | 骚妻少妇一区二区| 先锋男人资源中文字幕| 在线人妻国产精品| 国产欧美日韩不卡在线观看| 天天干天天天天射天天操| 亚洲久久精品午夜| 欧美中文字幕在线一区| 97成人免费碰碰碰视频| 在线观看视频 你懂得| 午夜寻花美女在线| 日韩黄色一级大片| 精品国产久久久久蜜臀| 天天射天天舔天天射| 热久久免费频精品18| 中文字幕在线有码二区| 夜夜撸日日撸夜夜爽日日干| 亚洲女人老师毛茸茸| 亚洲av色图com| 成人免费av在线网站| 99九九99九九热视频| av传媒高清影院免费| 久久精品琪琪男人的天堂| 欧美中文字幕在线一区| 清纯唯美激情亚洲综合另类| 国产三级三级三级三级av精品| 国产99久久久国产精品成人免费| 日韩欧美 国产精品| av岛国不卡在线观看| 久久成人网男人的天堂| 人妻精品无码一区二区三区| 久久久久久一欧美国产| 日韩av午夜免费| 久久久久女优免费视频| 中文字幕精品久久久人妻| 制服巨乳人妻在线| 嫩草一区二区三区四区中文| 青草青草视频免费2在线观看| 久久视频在线免费播放| 中文字幕亚洲专区欧美| 国产亚洲精久久久久久无码色戒| 欧美中文字幕久久久| 天天日天天干天天色| 久久av一区中文字幕| 久久最近最新中文字幕大全| 麻豆成人在线免费观看视频| 性欧美另类sex极品free| 久久久久久少妇被弄高潮| 中文字幕+人妻熟女| 中文字幕av最新资源| 青草青草视频免费2在线观看| 欧美人妻一区二区三区在线播放| 国产又粗又黄又大又长视频| 国产成AV人片在线观看天堂无码| 91九色蝌蚪熟妇出轨| 久久久久久添逼视频| av一级二级三级久久久| 蜜桃一区二区三区大香蕉| 日韩欧美一二三级| 久久99精品久久久久久三级| 亚洲欧美在线制服丝袜| 一区二区三区内射美女毛片| 久久在线人妻熟女高清完整版| 亚洲av亚洲av亚洲| 日韩av在线精品观看| 青青草成人影院在线观看| 免费a级电影在线观看| 99日本亚洲精品视频| 丰满大屁股熟妇猛交xxx| 久久视频免费有精品| 91国偷自产一区二区三区老熟女| 亚洲男人五月天堂| 国产高潮好爽受不了了视频| 久久热最新视频在线观看| 国产欧美日韩不卡在线观看| 日韩av一区二区三区久久久| 免费a级电影在线观看| 日韩不卡一级成人免费视频| 精品久久久久久18免费网站| 日韩一区二区三区乱码| 精品人妻熟女在线视频| 50岁老熟女一区二区三区| 日韩不卡高清视频| 日韩欧美亚州综合久久 | 瑟瑟网站免费观看| 97精品国产自在在线观看蜜臀 | 少妇惨叫久久久久久久| jizzhd国产剧情| 亚洲 欧美 自拍 中文| sepapa自拍偷拍| 日韩国产91综合精品| 91精品久久久久久久久不卡网站| 日韩中文字幕有码人妻在线| 久久久久久夜夜夜精品国产| 激情婷婷综合久久五月天| 色婷婷一区二区三区四区五| 日本久久久大片中文字幕| 午夜在线观看高清完整版| 精品久久久久久999| 日韩中文字幕理伦| 自拍偷拍 亚洲 在线| 丰满少妇精品一区二区| 日韩成人免费电影三区| 日本中文字幕久久免费精品| 激情黄色开心五月天| av熟妇翔田千里俱乐部| 欧美一区二区性久久久| 人妻精品一区二区在线播放| 99热精品国产影视久久久影院 | 91高级会所在线播放| 精品美女1区2区3区| 208精品福利导航| 国产日韩欧美成人一二三区| 久久99国产综合精品无码免费| 99久久窝窝午夜影视| 91人妻人人做人碰人人 | 在线观看色有小视频| 久久视频黄色观看网站| 97人妻人人揉人人澡人人爽国产| 秋霞电影韩国一区二区二区三区| 国产99成人自拍视频| 久久久久精美免费观看视频| 美女18禁久久久久麻豆| 久久视频精彩在线观看| 美女18禁久久久久麻豆| 99久久极品蜜桃臀精品久久| japanese 在线中文字幕| 99热在线精品免费观看| 日韩av中文网址| 先锋男人资源中文字幕| 国产成人精品视频免费网站| 日韩av一区中文| 18久久久免费视频| 中文字幕av最新在线| 精品国产久久久久99| 久久婷婷亚洲中文一区二区| 香蕉久久a v一区二区三区| 视频在线观看黄页| 欧美一级黄片视频看看| 欧美日韩国产一级一顶级| 日韩乱妇乱女熟妇熟女网红| 麻豆精品123在线观看| 国产有码av一区二区| 久久传奇网站一区三区视频| 亚洲日本韩国欧美一起| 日本亚洲天堂久久| 久久久久精美免费观看视频| 久久人妻久久人妻一区| 人妻熟 中文字幕| 国产aⅴ爽av久久久久成| 91插插插操美女视频| 欧美日韩久久久久久精品 | 搡老熟女一区二区三区老熟女| 日韩高清av一区| av国产一区二区三区| 清纯唯美激情五月| 亚洲情欲大片在线观看| 久久行黑国产露脸精品| 日韩av福利大片在线观看| 日韩av手机在线电影| 欧美中文字幕视频网| 99久久国语露脸精彩对白| 日韩二区不卡视频| 精品国产久久久久99| 欧美肥臀精品一区二区三区| 中文字幕一区二区三区六区9区| 中文字幕一区二区三区中文字幕| 久久99国产综合精品无码免费| 久久精品视频在线国国| 蜜臀av一区二区三区人妻少妇| 日韩欧美xxxx大片| 日韩美女夜夜爽av| 久久精品美国亚洲av伦理| 蜜桃视频在线观看一区精品| 天天日天天日天天日天天日| 中文字幕亚洲中文字幕| 久久精品国产亚洲av久丨| 91国偷自产一区二区三区偷拍| 国产99精品久久久久久圆免看片| 成人免费观看av毛片| 天天日天天日天天日天天日| 亚洲熟妇av日韩熟妇在线| 91免费版下载成人| 最新精品成人在线| 国产欧美日韩亚洲另类第一第二页| 久久国产精品——国产精品| 久久久久久久黄色午夜精品| 国产亚洲av免费一区二区| 亚洲最大成人网一区二区三区| 亚洲国产精品午夜av| 2020日本中文字幕| 久久精品美国亚洲av伦理| 国产成人精品久久久女| 欧美熟妇人妻视频在线| 97cao瑟瑟在线观看| 日日日日日夜夜夜夜| 婷婷丁香花五月天| 亚洲欧洲黄色图区| 久久热最新视频在线观看| 蜜臀av久久久久av蜜臀| 亚洲欧洲久久精品| 久久精品久久一区二区三区| 精品久久久久久18免费网站| 亚洲男人五月天堂| 91天仙tv国产福利精品| 18在线观看久久久麻豆| 久久精品 中文字幕| 另类欧美亚洲中文综合| 思思久久国产精品视频| 日韩三级伦理片免费看| 天美麻豆成人av精品小说| 国产91色在线i免费| av岛国不卡在线观看| 五月综合缴情婷婷六月| 99久久窝窝午夜影视| 亚洲精品久久第一页| 亚洲人妻中文字幕av首页| 国产精品午夜蜜av| 99久久久99久久91熟女| 日韩精品综合视频在线| 日韩国产精品电影网| 中文字幕日韩天堂| 明天我们好好过高清免费| 蜜桃一区二区三区大香蕉| 99热2这里只有精品| av青青草原在线观看| 中文字幕在线视频亚洲| 国产清纯白嫩美女无套| 日韩高清av一区| 亚洲国产精品97久久宅男| 国产亚洲天堂sss| 久久精品 中文字幕| 日韩少妇视频在线直播| 亚洲狠狠婷婷综合久久a| 五月婷婷激情四射综合网| 亚洲精品乱码97久久久久久| 99久久窝窝午夜影视| 国产黄色主播网址大全在线播放| 人妻丰满精品一区二区三区| 国产探花在线播放精品| 熟女人妻之中文字幕| 亚洲国产aⅴ精品一区二区欧美| 国产一区二区三区四区中文字幕| 在线中文免费黄色| 国产69tv精品久久| 人妻人人揉人人澡人人| 精品日韩偷拍欧美另类| 国产高潮国产高潮久久久久久91| 精品国产乱码久久久久夜深| 国产 欧美 日韩 视频| 三级亚洲天堂亚洲天堂| 伊人久久婷婷色综合98网| 久久久久国产亚洲av麻豆| 国产一级淫片免费看久久| 亚洲 欧美 自拍 中文| 日韩手机在线一区二区三区| 国产欧美日韩亚洲另类第一第二页| 精品一区二区国产在线观看| 精品人妻一区二区三区√| 五月天色图婷婷亚洲| 国产熟女高潮av77777| 熟女人妻之中文字幕| 国产欧美日韩亚洲另类第一第二页| 久久这里只有欧美精品| 午夜寻花美女在线| 中文字幕一线一区和二区 | 热久久免费频精品18| 国产成人无码AA精品一区| 精品国产精品视频免费在线观看| 国产欧美一区二区二区精品| 精品人妻二区中文字幕| 首页国产中文字幕av| 人妻啪啪视频免费看| 亚洲av综合色区手机| 91大神精品大长腿在线观看| 日本中文国产字幕| 日韩亚洲图色在线| 日本少妇人妻xxxx| 91沈先生探花极品在线| 中文字幕熟女人妻乳一区二区| 欧美精品人妻丝袜一区| 日韩精品免费91aa| 亚洲国产精品五月天久久久| 在线观看视频 你懂得| 国产欧美版日韩综合| 亚洲激情国产一区| 久久久久久夜夜夜精品国产| 欧美日韩一区二区综合视频| av传媒高清影院免费| 欧美日韩成人精品视频| 篠田优中文字幕在线播 | 在线中文免费黄色| 蜜桃精品一区二区三区在| 91久久婷婷国产麻豆精品| 久久亚洲 欧美 综合aⅴ| 91精品久久久久久五月天| 久久精品国产亚洲av不卡性色| 福利一福利二福利三| av福利网站在线观看| 欧美 国产 日韩 一区二区| 欧美精品国产精品久久久| 亚洲欧洲偷拍自拍| 七十路熟女俱乐部| 国产剧情高清在线观看| 色播五月激情四射| 麻豆网站在线免费看| 人妻日韩精品在线观看视频| 日韩av在线观看免费看看| 精品久久久久久999| 日本高清理论片中文字幕| 日韩在线观看免费全集网站| 国产欧美一二三区视频| 亚洲熟妇免费在线视频| 9久久国产精品一区二区| av岛国不卡在线观看| 久久一本麻豆天美欧美日韩| 91高级会所在线播放| 日韩欧美国产成人一区| 97网视频免费在线观看| 92视频影院视频影院麻豆| 久久精品国产av网| 国产日韩一区二区三区啪啪啪| 久久一本麻豆天美欧美日韩| 素人阁久久久久精品人妻| 91在线无精精品一区二区| 最新精品成人在线| 日本熟妇人妻在线| 天天操天天干天天色| 日韩av在线点播| av在线免费在线观看av| 亚洲欧美日韩国产精品综合| 国产探花在线播放精品| 久久2020精品免费网站| 丰满少妇精品一区二区| 欧美一区二区三区激情无套| 国产无av码在线观看| 少妇一区二区在线免费观看| 三级亚洲天堂亚洲天堂| 十八禁久久久久久久久久久久久久| 精品久久精品久久久久| 首页国产中文字幕av| av熟妇翔田千里俱乐部| 精品欧美乱子伦一区二区三区 | 欧美一区二区三日韩| 日韩精品综合免费视频| 国产一区二区三区女同| 清纯唯美激情亚洲综合另类| 亚洲日韩视频高清在线观看| 日韩人妻插舔激情午夜| 日本女优和黑人的| www.成人国产精品| 国产精品久久久久久久久久网站| 亚洲中文字幕精品高清| 精品人妻二区中文字幕| 91高级会所在线播放| 精品美女1区2区3区| 久久久久精美免费观看视频| 国产精品网址在线观看| 福利一福利二福利三| 久久国产精品久久伊人麻豆| 国产熟女高潮av77777| 999精品插丰满少妇人妻| 热热久久这里只有精品| 99久久精品国产777| 又粗又猛又爽黄老大爷视频| 99久久窝窝午夜影视| 中文字幕亚洲专区欧美| 制服丝袜亚洲欧美第一| 免费av网站在线浏览| 97人人人欧美人人妻人人| 97精品国产自在在线观看蜜臀| 国产又粗又硬又长又爽视频| 五月黄色激情视频| 日韩不卡一级成人免费视频| 中文字幕 日本伊人| 久久久国产精品尤物av| 欧美一区二区三区aa大片| 91超碰熟女在线97| 亚洲欧美在线制服丝袜| 中文字幕人妻互换久久视频| 99热2这里只有精品| 美女在线观看亚洲一区| 日韩有码视频在线免费观看| 日韩日韩av在线| 久久男人精品男人天堂免费视频 | 日韩欧美激情入口| 久久99永久免费看| 久久久久久一欧美国产| 亚洲一级av大片| 亚洲激情有码一区二区| 国产剧情高清在线观看| 蜜桃一区二区三区大香蕉| 久久久久久久久久久最新| 欧美一级黄片视频看看| 一区二区三区乱码视频| 久久久久在线免费看| 91亚洲国产成人久久精品app| 欧美一区二区精品人妻免费视频| 日韩亚洲图色在线| 欧美日本韩国乱搞视频| 久久久国产精品尤物av| 色男人天堂东京热| 国产 日韩 欧美 日本| 欧美日韩在线观看大香蕉| 久久这里只有欧美精品| 日韩尤物人妻av在线网| 超碰97在线观看国产| 99爱99久久久久久久久久| 欧美日韩成人三级在线| 精品无人区一区二区三区竹菊| 欧美熟妇精品在线观看| 午夜国产福利电影| 中文字幕 日本伊人| 欧美人妻激情中文视频| 91亚洲国产成人久久精品app| 国内精品久久久久久久久久清纯| 性欧美另类sex极品free| 亚洲视频另类专区| 91偷伦一区二区三区蜜臀| 风间由美交换夫中文字幕| 久久成人网男人的天堂| 婷婷亚洲免费基地| 免费av网站在线浏览| 天天操,天天干,天天| 蜜臀久久久久精品一区二区三区| 欧美日韩久久久久久精品| 亚洲 免费 在线 观看| 亚洲视频另类专区| 成人免费av在线网站| 91中日在线中文字幕| 中文字幕理伦福利片| 久久久久久夜夜夜精品国产| 91在线国产九色porny| 熟女少妇一区二区精品| 人妻精品少妇嫩草麻豆| 精品一区二区三区四区日产| 日韩高清av一区| 日本加勒比中文字幕久久| 亚洲国产aⅴ精品一区二区欧美 | 国产精品福利久久久久久久| 日韩福利视频在线看| 成人av激情网一区二区三区| 久久久久久久久久性| 日韩成人av在线电影观看| 色丁香婷婷综合久久| 初撮日本五十路人妻| 国产 另类 在线 欧美日韩| 免费a级电影在线观看| 久久亚洲AV成人无码| 国产清纯白嫩美女无套| 激情亚洲一区蜜桃在线| 午夜日韩麻豆福利| 亚洲午夜电影久久久| 日韩在线播放视频1区| 欧美精品一区二区在线视频| 国产91久久精品一区二区老| 日韩av在线观看卡一卡| 福利小视频国产一区| 精品人妻一区二区三区√| 国产一区二区视频大全床| 99re6热在线视频免费观看| 久久男人精品男人天堂免费视频| aaaaa亚洲电影| 中文字幕精品久久久人妻| 亚洲熟妇免费在线视频| wwxxx中文字幕| 国产精品一二三四在线| 人妻人人揉人人澡人人| 国产91熟女免费视频| 人妻一区二区中文字幕在线| 亚洲熟妇免费在线视频| 五月综合缴情婷婷六月| 91精品乱码久久久久久| 欧美日韩精品亚洲欧美| 熟妇人妻 一区二区三区中文字幕| 国产精品久久欠久久al换脸综合| 久久久精品欧美一区二区国产| 99国产在线拍91揄自揄视| 蜜桃黄色av网站免费播放| 另类欧美亚洲中文综合| 久久久久久少妇被弄高潮| 丰满大屁股熟妇猛交xxx| 欧美日韩在线观看大香蕉| 国产一区二区免费五遮挡| 少妇高潮一区二区三区99欧美| 91老司机免费福利| 精品国产一区二区三区无码蜜桃| 明天我们好好过高清免费| 5858s在线视频| 久久伊人亚洲综合网| 久久久成人在线免费视频| 福利精品视频免费观看| 中文字幕亚洲中文字幕| 91久久婷婷国产麻豆精品| 欧美一区二区三区成人免费看| 欧美人妻a∨中文字幕在线 | 999热这里只有精品在线 | 日韩一级黄色大片免费观看| 亚洲欧美日韩大陆| 777亚洲精品乱码久久| 日本美女大学生一区二区三区| 91免费av在线观看| 国产日韩av免费一区二区三区| 蜜桃av 1区二区| 中文字幕人妻互换久久视频| 五月天丁花香婷婷| 国产日本精品久久久久| 亚洲精品网站成人久久综合| 天天操天天干天天妻| 亚洲中文字幕精品高清| 久久久久精美免费观看视频| 国语黄色淫秽录像带| 欧美日韩综合国产精品| 婷婷午夜美女诱惑福利电影网| 国产精品一区二区久久精品蜜臀| av岛国不卡在线观看| 国产精品久久久久久久久久69| 日韩欧美激情入口| jizzhd国产剧情| 热热久久这里只有精品| 久久久久久久久久性| 欧美人妻一区二区三区在线播放| 91精品久久久久久五月天| 国产精品久久久久久久网站门| 久久免费视频精彩视频| av国偷自产自拍自在线| 亚洲情色av网站| 色婷婷国产熟妇人妻露脸| 精品国产一区二区三区无码蜜桃 | 国产精品首页在线播放| 免费麻豆国产一区二区三区| 免费av网站在线浏览| 一区,二区,三区视频| 美女在线观看亚洲一区| 日韩手机无线看视频| 久久精品 中文字幕| 制服巨乳人妻在线| 91麻豆精品91久久久久同性 | 91人妻九色大屁股| 青青青手机版视频在线看| 日韩av黄片在线观看| 人妻精品一区二区在线播放| 成人免费av在线网站| 欧美日本韩国乱搞视频| 日韩av在线天堂| 久久视频一区二区三| 91偷拍老熟女露脸合集| 激情婷婷综合久久五月天| 91在线播放视频免费| 日韩日韩av在线| 91porny国产九色| 日韩不卡一级成人免费视频 | 日韩美女主播人体视频自拍首页| 中文字幕的不卡人妻| 日韩av在线不卡网站| 五月综合缴情婷婷六月| 亚洲人妻中文字幕一区二区| 篠田优中文字幕在线播| 四虎网站免费av| 2020日韩中文字幕| 在线免费观看日韩精品视频| 亚洲 自拍偷拍 欧美| 亚洲情欲大片在线观看| 五月婷久久综合狠狠爱97| 欧美精品人妻丝袜一区| 视频在线观看黄页| 精品人妻久久久久中文字幕19禁| 亚洲国产欧美日本视频| 亚洲天堂黄色在线| 麻豆精品一区在线免费观看| 日韩欧美国产成人一区| 国产精品久久久久一区二区| 偷偷夜夜精品一区二区三区蜜桃| 日韩黄色一级大片| 国产精品久久久久久久漫画| 久久久久国产精品夜夜夜| w疯狂的少妇2做爰韩国| ass日本丰满熟妇pics| 九九re精品免费视频| 人人妻人人爱碰千| 亚洲一区二区三区久久aa| 欧美一级黄片视频看看| 狠狠干中文字幕97视频| 欧美日韩成人精品视频| 国产精品色呦呦视频免费看| 国产欧美日韩亚洲另类第一第二页| 亚洲欧洲色图动图| 国产探花在线播放精品| 精品一区二区三区蜜桃臀的优势| 亚洲av亚洲av亚洲| 日韩厕所偷拍美女| 超碰97在线观看国产| 精品国产乱码久久久人妻| 色综合色综合色综合久久| 亚洲国产欧美日本视频| 50岁老熟女一区二区三区| 色综合精品一区二区三区| 欧美一区二区三区成人免费看 | 麻豆中文字幕av在线| 熟女少妇视频一区二区在线| 麻豆亚州av熟女国产一区二| 日日日日日夜夜夜夜| 精品人妻一区二区三区人妻视频 | 日韩尤物人妻av在线网| 精品激情视频在线免费观看| 国产av一区二区三区天美| 日韩午夜激情福利免费| 欧美一区二区三日韩| 99热这里只有精品网| 秋霞电影韩国一区二区二区三区 | 欧美日韩久久久久久精品| 麻豆精品123在线观看| 午夜寻花美女在线| 97人妻人人揉人人澡人人爽国产| 亚洲欧美日产人妻| 蜜臀久久99精品久久久久久久久| 97cao瑟瑟在线观看| 欧美日韩国产综合aⅴ| 玖玖玖玖日在线视频| 久久人搡人人玩人妻精品| 国产精品一区二区三区福利| 国产成人一区二区三区在线视频| 麻豆丝袜美女人妻中文| 人妻精品一区二区在线播放| 50岁老熟女一区二区三区| 91综合精品国产丝袜长腿| 国产成人av最新网址| 国产又粗又黄又大又长视频| 亚洲av色图com| 亚洲视频另类专区| 999热精品在线观看| 激情一区日韩一区欧美一区| 亚洲视频欧美视频另类| 国产精品首页在线播放| 欧美日韩一区二区综合视频| 日韩电影黄色免费| 乱女乱妇熟女熟妇综合站| 97人妻中文字幕精品视频| 大香蕉影视日本大香蕉97| 欧美日韩精品综合在线一区二区| 91成人国产精品视频| 色熟女蜜臀又伦av| 亚洲激情 欧美激情| 99re6热在线视频免费观看| 激情五月天狠婷婷| 久久久久女优免费视频| japanese 在线中文字幕| 久久久久久久久久久免费网| 亚洲激情熟女色图| 日韩草比网站在线免费观看| 99久久久99久久91熟女| 亚洲精选黄色在线观看| 久久视频这里都是精品| 91制片在线观看视频| 少妇高潮一区二区三区99欧美 | 蜜桃一区二区三区大香蕉| 麻豆成人在线免费观看视频| 91麻豆免费国产在线| 日韩在线免费视频精品| 高清视频在线观看一区二区三区| 欧美中文字幕在线观看视频| 激情四射五月开心六月婷婷| 亚洲欧美国产另类91综合| 国产自拍 偷拍 在线| 久操免费福利在线视频观看视频| 欧美日韩精品一区电影| www.成人国产精品| 大尺度av一区二区三区| 97网视频免费在线观看| 久久久免费精品少妇| 国产欧美版日韩综合| 亚洲欧洲久久精品| 亚洲人妻中文字幕av首页| 亚洲av电影在线一区二区| 日本高清理论片中文字幕| 亚洲熟妇免费在线视频| 大香蕉大香蕉大香蕉大香蕉大| 欧美日韩亚洲大片在线| 久久精品中文闷骚内射| 91九色蝌蚪熟妇出轨| 日韩av手机在线电影| 精品一区二区三区四区| 亚洲成年人电影天堂| 91亚洲精品成人在线| 一级久久久久久久18| 日韩欧美久久免费观看| 91影视一区二区三区| 亚洲一级av大片| 免费色婷婷在线视频 | 七十路熟女俱乐部| 人妻啪啪视频免费看| 久久综合中文字幕一区二区三区 | 91高级会所在线播放| 色婷婷久久久swag精品| 久久婷婷亚洲中文一区二区 | 欧美日韩精品成人在线| 肥臀熟女一区二区三区肥女人| 91久久久久久久久久粉嫩| 99久久久99久久91熟女| 91精品人妻一区二区三区四区| 国产99久久久国产精品成人免费| 五月天丁花香婷婷| 亚洲成人影院中文字幕| 国产精品久久精品一区二区三区| 中文在线字幕a在线| 亚洲激情有码一区二区| 欧美日本一道本一区二区| 2020中文字幕在线看电影| 久久久久久精品国产成人| 国产精品午夜蜜av| 欧洲美女黑人粗性暴交视| 国产精品久久久久久久网站门| 日韩欧美xxxx大片| 日韩av在线观看免费看看| 欧美一区二区精品人妻免费视频| 福利一福利二福利三| 亚洲国产精品五月天久久久| 亚洲日本韩国欧美一起| 精品人妻熟女在线视频| 日韩欧美一级在线视频| 国产一级淫片免费看久久| 久久av一区中文字幕| 1024欧美一区二区看片| 清纯唯美激情亚洲综合另类| 大尺度av一区二区三区| 亚洲中文字幕成人久久| 久久蜜臀精品一区二区| 91成人国产精品视频| 91沈先生探花极品在线| 日韩中文字幕视频在线播放| 亚洲欧美日产人妻| av在线免费播放成人| 人妻熟女视频免费观看| 2019年中文字幕在线看| 亚洲最大成人网一区二区三区| 明天我们好好过高清免费| 成人国产一区二区免费| 日韩尤物人妻av在线网| 天天色综合天天射综合| 黄色片一级美女黄色片| 日韩精品综合视频在线| av国偷自产自拍自在线| 国产精品日韩欧美综合| 亚洲精品久久第一页| 少妇一区二区在线免费观看| 日本午夜在线免费观看| av成人教育在线播放| 国产网址手机上可以看的国产网站| 中文字幕成人资源网站| 久操免费福利在线视频观看视频| 久久精品人妻中文字幕一区 | 2020日韩中文字幕| 亚洲久久亚女同性| 丰满人妻一区二区三区视频看看| 激情五月天狠婷婷| 久久久亚洲熟妇熟女在线| 91熟女视频在线观看| 日韩中文字幕在线综合网| 久久久亚洲在线视频| 蜜桃一区二区三区大香蕉| 国产91在线播放精品| 欧美一区二区性久久久| 精品国产一区二区三区制服| 熟妇人妻 一区二区三区中文字幕| 中文字幕成人资源网站| av在线免费在线观看av| 91久久精品日日躁夜夜躁 | 一区二区三区乱码视频| 亚洲香蕉av电影| 91精品欧美久久久久视频| 一区二区三区四区中文字幕| 欧美日韩少妇一二三| 成年女人晚上碰免费视频| av传媒高清影院免费| 中文字幕av最新在线| 日韩国产91综合精品| 五月爱婷婷六月丁香性| 国产又大又长又粗又硬免费视频 | 日韩欧美激情入口| 亚洲丰满熟妇乱xxxxx| 玖玖资源站中文字幕一区二区| 婷婷在线综合观看视频| www.亚洲成人色| 日韩av 自拍偷拍| 国产91熟女免费视频| 中文字幕的不卡人妻| 中文字幕日韩天堂| 麻豆精品一区在线免费观看| 日本加勒比中文字幕久久| 高清一区二区日韩视频精品| 国产精品久久久久久吹吹潮| aaa久久久久久久久久网站| 18在线观看久久久麻豆| 高清不卡av在线网| 国产一区二区视频大全床| 5858s在线视频| 瑟瑟网站免费观看| 久久99精品久久久久久三级| 久久久久国产麻豆婷婷| 国产又粗又黄又大又长视频| av青青草原在线观看| 大尺度av一区二区三区| 日韩欧美爱爱视频免费观看| 久久视频一区二区三| 337p亚洲精品色噜噜| 风间由美交换夫中文字幕| 超碰97在线观看国产| 国产麻豆剧传媒精品视频| 9久久国产精品一区二区| 亚洲av亚洲av亚洲| 3d动漫一区二区在线观看| 亚洲精品,欧美日韩| 中文字幕婷婷网站| 另类欧美亚洲中文综合| 日韩av在线观看免费看看| 亚洲国模私拍视频| 日韩成人av在线电影观看| 性欧美另类sex极品free| 五月婷婷激情四射综合网| 久久蜜臀精品一区二区| 日韩国产91综合精品| 亚洲欧洲偷拍自拍| 精品国产乱码久久久久久蜜坠欲下 | 亚洲av激情小说| 欧美一区二区精品人妻免费视频 | 亚洲激情网在线播放| 久久精品香蕉绿巨人| 97精品国产自在在线观看蜜臀| 91啪啪啪内射网站| 91久久婷婷国产麻豆精品| 久久综合久久综合久久色| 日韩av网址在线播放| av熟妇翔田千里俱乐部| 久久久久中文字幕免费久久久久久 | 中文字幕av最新在线| 青草青草视频免费2在线观看| 日韩av午夜精品| 欧美性久久久久久久久久久| 亚洲 免费在线视频| 国产视频av一区二区| 五月婷久久综合狠狠爱97| 大香蕉影视日本大香蕉97| 久久久精品国产亚洲av网深田| 热香蕉和冷香蕉功效一样吗| 日韩a大片在线观看| 精品97人妻无码中文永久| 777亚洲精品乱码久久| 亚洲成人av久久久久| 国产精品99久久久高清| 91丝袜放荡丝袜脚交| 日韩美女在线视频一区| 亚洲av网站女性向在线观看 | 亚洲男人五月天堂| 日韩精品刺激视频| 韩国女团午夜大尺度福利| 中文字幕在线视频亚洲| 玖玖玖玖日在线视频| 亚洲精选黄色在线观看| 久久五月婷婷综合视频| 久久成人网男人的天堂| 国产精品久久久久久久网站门| 欧美一区二区三区激情啪啪啪| 18久久久免费视频| 国产亚洲天堂sss| 国产91久久久久久久| 视频免费在线观看91| 日韩日韩av在线| 另类蜜桃刺激视频在线观看| 天天操天天干天天色| laoyawo老鸭窝在线视频| 亚洲av色图com| 在线人妻国产精品| 午夜寻花美女在线| 一区二区三区精品乱子伦……| 欧美日韩精品在线观看免费| 久久99精品久久久久久三级| 欧美日韩久久久久久精品| 婷婷 少妇 av| 亚洲激情 欧美激情| 91人妻九色大屁股| 亚洲欧洲国产一区二区| 久久久久久久久久久免费网| 欧美亚洲av日韩综合一区| 蜜臀av 麻豆av| 日韩av在线天堂| 精品国产乱码久久久人妻| 性欧美另类sex极品free| 91熟女视频在线观看| 99精品视频在线看17| 精品日韩偷拍欧美另类| 欧美人妻系列,中文字幕| 国产人妻另类综合专区| 国产又大又猛又黄的视频| 亚洲av不卡码在线看| 五月综合缴情婷婷六月| 97人妻人人揉人人澡人人爽国产| 日韩欧美综合一区二区在线| 欧美日韩在线卡一卡二卡三| 91精品乱码久久久久久| 日韩在线播放视频1区|