日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

逻辑程序设计语言Prolog

發布時間:2023/12/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 逻辑程序设计语言Prolog 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • Prolog 概念
  • Prolog 基礎
    • 一、Prolog 的語句
      • 1、事實
      • 2、規則
      • 3、問題
    • 二、Prolog 的程序
    • 三、Prolog 程序的運行機理
      • 1、自由變量與約束變量
      • 2、匹配合一
      • 3、回溯
  • Turbo Prolog 程序設計
    • 一、程序結構
    • 二、數據與表達式
      • 1、領域
      • 2、常量與變量
      • 3、算術表達式
      • 4、關系表達式
    • 三、輸入與輸出
    • 四、分支與循環
      • 1、分支
      • 2、循環
    • 五、動態數據庫
    • 六、表處理與遞歸
      • 1、表頭與表尾
      • 2、表的匹配合一
    • 七、回溯控制
    • 八、程序舉例
  • Visual Prolog 語言簡介

Prolog 概念

Prolog(PROgramming in LOGic的縮寫)語言是一種基于 [Horn 子句](http://www.baidu.com)的邏輯型程序設計語言,也是一種陳述性語言。 Prolog 與人工智能的知識表示、自動推理、圖搜索、產生式系統和專家(知識)系統有著天然的聯系,很適合智能程序設計。 若想詳細了解可自行百科:http://baike.baidu.com/item/Prolog

今天我們先搞明白 Prolog 語言的基本原理,然后再詳細學習一下 Turbo Prolog 語言程序設計。選擇 Turbo Prolog 是因為它是一個功能較齊全的邏輯程序語言,其程序的可讀性強而且簡單易學,是一個很好的教學語言。另外, Turbo Prolog 程序既可以在 Trubo Prolog 和 PDC Prolog 環境下運行或編譯,又可以在當前流行的可視化語言 Visual Prolog 的環境下運行或編譯。


Prolog 基礎

一、Prolog 的語句

Prolog 語言僅有三種語句:事實(Fact)、規則(Rule)和問題(Question)。

1、事實

格式:

<謂詞名>(<項表>).
  • 謂詞名是以大小寫字母開頭,字母、數字、下劃線等組成的字符串;
  • 項表是以逗號隔開的項序列。

Prolog 中的項包括由常量或變量表示的簡單對象以及函數、結構和表等,即事實的形式是一個原子謂詞公式

功能:

一般表示對象的性質或關系。

舉個例子:

student(john). like(mary, music).

這就是 Prolog 中兩個合法的事實。分別表示“約翰是學生”和“瑪麗喜歡音樂”。

當然了,作為特殊情形,一個事實也可以只有謂詞名而無參量。
舉個例子:

abc. repeat.

等也是允許的。

2、規則

格式:

<謂詞名>(<項表>):-<謂詞名>(<項表>){,<謂詞名>(<項表>)}.
  • “:-”號表示“if”(也可以直接寫為 if ),其左部的謂詞是規則的結論(亦稱為頭),右部的謂詞是規則的前提(亦稱為體);
  • “{}”表示零次或多次重復,逗號表示 and(邏輯與)。

即規則的形式是一個邏輯蘊涵式

功能:

一般表示對象間的因果關系、蘊含關系或對應關系。

舉個例子:

bird(X) :- animal(X), has(X, feather). grandfather(X, Y) :- father(X, Z), father(Z, Y).

分別表示“如果 X 是動物,并且 X 有羽毛,則 X 是鳥”和“ X 是Y 的祖父,前提是如果存在 Z,X 是 Z 的父親并且 Z 又是 Y 的父親”。

作為特殊情形,規則中的謂詞也可以只有謂詞而無參量。
舉個例子:

run :- start, step1(X), step2(X), end.

也是一個合法規則。

3、問題

格式:

?-<謂詞名>(<項表>){,<謂詞名>(<項表>)}.

功能:

問題表示用戶的詢問,它就是程序運行的目標。

舉個例子:

?-student(john). ?-like(mary, X).

分別表示“約翰是學生嗎?”和“瑪麗喜歡誰?”。

問題可以與規則及事實同時一起給出,也可以在程序運行時臨時給出。

二、Prolog 的程序

Prolog 程序一般由一組事實、規則和問題組成。問題是程序執行的起點,稱為程序的目標。


我們首先寫出一個 Prolog 的程序,如下:(為引用方便起見,我們把這個程序稱為“程序0”

likes(bell, sports). likes(mary, music). likes(mary, sports). likes(jane, smith). friend(john, X) :- likes(X, reading), likes(X, music). friend(john, X) :- likes(X, sports), likes(X, music). ?- friend(john, Y).

接下來我們分析一下這個程序:
可以看出,這個程序中有四個事實、兩條規則和一個問題。其中事實、規則和問題都分行書寫;規則和事實可連續排列在一起,其順序可隨意安排,但同一謂詞名的事實或規則必須集中排列在一起;問題不能與規則及事實排在一起,它作為程序的目標要么單獨列出,要么在程序運行時臨時給出。
這個程序的事實描述了一些對象(包括人和事物)間的關系;而規則則描述了 John 交朋友的條件,即如果一個人喜歡讀書并且喜歡音樂(或者喜歡運動和喜歡音樂),那么這個人就是 John 的朋友(當然,這個規則也可看做 John 朋友的定義);程序中的問題是“約翰的朋友是誰?"

Prolog 程序中的目標還可以變化,也可以含有多個語句(上例中只有一個)。如果有多個語句,則這些語句稱為子目標。例如對上面的程序,其問題也可以是:

?-likes(mary, X). 或?-likes(mary, music). 或?-friend(X, Y). 或?-likes(bell, sports),likes(mary, music),friend(john, X).

等。但對于不同的問題,程序運行的結果一般是不一樣的。

還需說明的是,Prolog程序中的事實或規則一般稱為它們對應謂詞的子句。例如,上面程序中的前4句都是謂詞 likes 的子句。 Prolog 規定,同一謂詞的子句應排在一起。從語句形式和程序組成來看, Prolog 就是一種基于 Horn 子句的邏輯程序。這種程序要求用事實和規則來求證詢問,即證明所給出的條件子句和無條件子句與目標子句是矛盾的,或者說程序中的子句集是不可滿足的。這就是所謂的 Prolog 的說明性語義。

從 Prolog 的語句來看, Prolog 語言的文法結構相當簡單。但由于它的語句是 Horn 子句,而 Horn 子句的描述能力是很強的,所以 Prolog 的描述能力也是很強的。例如,當它的事實和規則描述的是某一學科的公理,那么問題就是待證的命題;當事實和規則描述的是某些數據和關系,那么問題就是數據查詢語句;當事實和規則描述的是某領域的知識,那么問題就是利用這些知識求解的問題;當事實和規則描述的是某初始狀態和狀態變化規律,那么問題就是目標狀態。所以, Prolog 語言實際是一種應用相當廣泛的智能程序設計語言。從上面最后一個目標可以看出,同過程性語言相比,對于一個 Prolog 程序,其問題就相當于主程序,其規則就相當于子程序,而其事實就相當于數據。

三、Prolog 程序的運行機理

要想了解 Prolog 的運行機理,首先需要了解幾個基本概念。

1、自由變量與約束變量

Prolog中把無值的變量稱為自由變量,有值的變量稱為約束變量。一個變量取了某值就說該變量約束于某值,或者說該變量被某值所約束,或者說該變量被某值實例化了。在程序運行期間,一個自由變量可以被實例化而成為約束變量,反之,一個約束變量也可被解除其值而成為自由變量。

2、匹配合一

兩個謂詞可匹配合一,是指兩個謂詞的名相同,參量項的個數相同,參量類型對應相同,并且對應參量項還滿足下列條件之一。

  • 如果兩個都是常量,則必須完全相同。
  • 如果兩個都是約束變量,則兩個約束值必須相同。
  • 如果其中一個是常量,一個是約束變量,則約東值與常量必須相同。
  • 至少有一個是自由變量。
  • 例如下面的兩個謂詞:

    prel("ob1", "ob2", Z) prel("ob1", X, Y)

    只有當變量 X 被約束為"ob2",且 Y、Z 的約束值相同或者至少有一個是自由變量時,它們才是匹配合一的。
    Prolog 的匹配合一,與歸結原理中的合一的意思基本一樣,但這里的合一同時也是一種操作。這種操作可使兩個能匹配的謂詞合一起來,即為參加匹配的自由變量和常量,或者兩個自由變量建立一種對應關系,使得常量作為對應變量的約束值,使得兩個對應的自由變量始終保持一致,即若其中一個被某值約束,則另一個也被同一值約束;反之,若其中一個的值被解除,則另一個的值也被解除。

    3、回溯

    所謂回溯,就是在程序運行期間,當某一個子目標不能滿足(即謂詞匹配失敗)時,控制就返回到前一個已經滿足的子目標(如果存在的話),并撤銷其有關變量的約束值,然后再使其重新滿足。成功后,再繼續滿足原來的子目標。如果失敗的子目標前再無子目標,則控制就返回到該子目標的上一級目標(即該子目標謂詞所在規則的頭部)使它重新匹配。回溯也是 Prolog 的一個重要機制。

    不懂沒關系,下面有例子,看完這個 Prolog 程序的運行過程就懂了。

    有了上面的基本概念,下面就介紹所 Prolog 程序的運行過程。我們仍以上面給出的 Prolog 程序“程序0”為例。

    設所給的詢問是:

    ?-friend(john, Y). (john和誰是朋友?)

    則求解目標為:

    friend(john, Y).

    這時,系統對程序進行掃描,尋找能與目標謂詞匹配合一的事實或規則頭部。顯然,程序中前面的 4 個事實均不能與目標匹配,而第 5 個語句的左端即規則為:

    friend(john, Y) :- likes(X, reading), likes(X, music).

    的頭部可與目標謂詞匹配合一。但由于這個語句又是一個規則,所以其結論要成立則必須其前提全部成立。于是,對原目標的求解就轉化為對新目標:

    likes(X, reading), likes(X, music).

    的求解。這實際是經過歸結,規則頭部被消去,而目標子句變為:

    ?- likes(X, reading), likes(X, music).

    現在依次對子目標:

    likes(X, reading)和 likes(X, music)

    求解。
    子目標的求解過程與主目標完全一樣,也是從頭對程序進行掃描,不斷進行測試和匹配合一等,直到匹配成功或掃描完整個程序為止。
    可以看出,對第一個子目標 like(X, reading)的求解因無可匹配的事實和規則而立即失敗,進而導致規則:

    friend(john, X) :- likes(X, reading), likes(X, music).

    的整體失敗。于是,剛才的子目標:

    likes(X, reading)和 likes(X, music)

    被撤銷,系統又回溯到原目標 friend(john, X)。這時,系統從該目標剛才的匹配語句處(即第 5 句)向下繼續掃描程序中的子句,試圖重新使原目標匹配,結果發現第 6 條語句的左部,即規則

    friend(john, X) :- likes(X, sports), likes(X, music).

    的頭部可與目標謂詞匹配。但由于這個語句又是一個規則,于是,這時對原目標的求解就又轉化為依次對子目標:

    likes(X, sports)和 likes(X, music)

    的求解。這次子目標 likes(X, sports)與程序中的事實立即匹配成功,且變量 X 被約束為 bell。于是,系統便接著求解第 2 個子目標。由于變量 X 已被約束,所以這時第 2 個子目標實際上已變成:

    likes(bell, music).

    由于程序中不存在事實 likes(bell, music),所以該目標的求解失敗。于是,系統就放棄這個子目標,并使變量 X 恢復為自由變量,然后回溯到第一個子目標,重新對它進行求解。由于系統已經記住了剛才已同第一子目標謂詞匹配過的事實的位置,所以重新求解時,便從下一個事實開始測試。易見,當測試到程序中的第 3 個事實時,第一個子目標便求解成功,且變量 X 被約束為 mary 。這樣,第 2 個子目標也就變成:

    likes(mary, music).

    再對它進行求解。這次很快成功。
    由于兩個子目標都求解成功,所以,原目標 friend(john, Y)也成功,且變量 Y 被約束為 mary(由 Y 與 X 的合一關系)。于是,系統回答:

    Y = mary

    程序運行結束。上述程序的執行過程如圖下所示。

    上述程序的運行是一個通過推理實現的求值過程。我們也可以使它變為證明過程。例如,把上述程序中的詢問改為:

    friend(john, mary).

    則系統會回答“yes”。
    若將詢問改為:

    friend(john, smith).

    則系統會回答“no”。

    從上述程序的運行過程來看, Prolog 程序的執行過程是一個(歸結)演繹推理過程。其推理方式為反向推理,控制策略是深度優先且有回溯機制,具體實現方法是:自上而下匹配子句;從左向右選擇子目標;(歸結后)產生的新子目標總是插入被消去的目標處(即目標隊列的左部)。Prolog 的這種歸結演繹方法被稱為 SLD(Linear resolution with Selection function for Definite clause)歸結, 或 SLD 反駁 - 消解法。這樣,SLD 歸結就是 Prolog 程序的運行機理,也就是所謂的 Prolog 語言的過程性語義


    Turbo Prolog 程序設計

    Turbo Prolog 是一個編譯型語言,1986 年由美國的 BORLAND 公司推出,運行在 IBM PC 系列機及其兼容機上。Turbo prolog 除了具有基本 prolog 的邏輯程序特點外還具有速度快、功能強,具有集成化開發環境,可同其他語言接口,能實現動態數據庫和大型外部數據庫,可直接訪問機器系統硬軟件和具有圖形、窗口功能等一系列特點。

    本次我們以 Turbo prolog(2.0版)為例,介紹 prolog程序設計。

    一、程序結構

    一個完整的 Turbo prolog 程序一般包括常量段領域段數據庫段謂詞段目標段子句段 6 個部分。各段以其相應的關鍵字 constantsdomainsdatabasepredicatesgoalclauses 開頭加以標識。另外,在程序的首部還可以設置指示編譯程序執行特定任務的編譯指令;在程序的任何位置都可設置注解。總之,一個完整的 Turbo prolog(2.0版)程序的結構如下:

    /* < 注 釋 > */<編譯指令> constants<常量說明> domains<域說明> database<數據庫說明> predicates<謂詞說明> goal<目標語句> clauses<子句集>

    當然,一個程序不一定要包括上述所有段,但一個程序至少要有一個 predicates 段clauses 段goal 段。在大多數情形中,還需要一個 domains段,以說明表、復合結構及用戶自定義的域名。如若省略 goal 段,則可在程序運行時臨時給出,但這僅當在開發環境中運行程序時方可給出。若要生成一個獨立的可執行文件,則在程序中必須包含 goal 段。另外,一個程序也只能有個 goal 段。
    在模塊化程序設計中,可以在關鍵字 domains, predicates 及 database前加上 global,以表明相應的說明是全局的,以便作用于幾個程序模塊。

    舉個例子,如果要將上面的 Prolog 程序“程序0”作為 Turbo prolog程序,則應改寫為

    DOMAINSname = symbol PREDICATESlikes(name, name)friend(name, name) GOALfriend(john,Y), write("Y = ", Y). CLAUSESlikes(bell, sports).likes(mary, music).likes(mary, sports).likes(jane, smith).friend(john, X) :- likes(X, sports), likes(X, music).friend(john, X) :- likes(X, reading), likes(X, music).

    下面對程序結構中的幾個段作以說明。

    領域段 該段說明程序謂詞中所有參量項所屬的領域。領域的說明可能會出現多層說明,直到說明到 Turbo prolog 的標準領域為止(如上例所示)。Turbo prolog 的標準領域即標準數據類型,包括整數、實數、字符、串和符號等,其具體說明如下表所示。

    領域名稱標識符取值范圍例子
    整數integer-32 767 ~ +32 767
    實數real±IE-307 ~ ±IE+308
    字符char用單引號括住的所有可能的字符‘a’, ‘5’
    string用一對雙引號括住的任意字符序列。程序中的串最長可達 255 個字符,文件中的可為 64k‘abc’, ‘123’
    符號symbol以小寫字母打頭的字母、數字和下劃線序列;串‘abc’, abc
    Turbo Prolog 的標準領域表

    謂詞段 該段說明程序中用到的謂詞的名和參量項的名(但 Turbo prolog的內部謂詞無須說明)。

    子句段 該段是 Turbo prolog 程序的核心,程序中的所有事實和規則就放在這里,系統在試圖滿足程序的目標時就對它們進行操作。

    目標段 該段是放置程序目標的地方。目標段可以只有一個目標謂詞,例如上面的例子中就只有一個目標謂詞;也可以含有多個目標謂詞,如:

    goalreadint(X), Y = X+3, write("Y ='%Y).

    就有3個目標謂詞。這種目標稱為復合目標。

    二、數據與表達式

    1、領域

    (1)標準領域。
    Turbo prolog中不定義變量的類型,只說明謂詞中各個項的取值域。由上面我們知道, Turbo prolog 有整數實數字符符號這5種標準域。另外,它還有結構文件這3種復合域

    (2)結構。
    結構也稱復合對象,它是 Turbo prolog 謂詞中的一種特殊的參量項(類似于謂詞邏輯中的函數)。結構的一般形式為:

    <函子>(<參量表>)

    其中函子及參量的標識符與謂詞相同。注意,這意味著結構中還可包含結構。所以,復合對象可表達樹形數據結構。例如下面的謂詞:

    likes("Tom", sports(football, basketball, table_tennis)).

    中的

    sports(football, basketball, table_tennis)

    就是一個結構,即復合對象。又如:

    person("張華", student("清華大學"), address("中國", "北京")). reading("王宏", book("人工智能技術導論", "西安電子科技大學出版社")). friend(father("Li"), father("Zhao")).

    這幾個謂詞中都有復合對象。
    復合對象在程序中的說明,需分層進行。例如,對于上面的謂詞:

    likes("Tom", sports(football, basketball, table_tennis)).

    在程序中可說明如下:

    domainsname = symbolsy = symbolsp = sports(sy, sy, sy) predicateslikes(name, sp)

    (3)表。
    表的一般形式是:

    [x1, x2, ..., xn]

    其中xi(i=1,2,...,n)為 Prolog 的項,一般要求同一個表的元素必須屬于同一領域。不含任何元素的表稱為空表,記為[]。例如下面就是一些合法的表。

    [1,2,3] [ apple, orange, banana, grape, cane] ["Prolog", "MAENS", "PROGRAMMING", "in logic"] [[a, b], [c, d], [e]] []

    表的最大特點是其元素個數可在程序運行期間動態變化。表的元素也可以是結構或表,且這時其元素可以屬于不同領域。例如:

    [name("LiMing"), age(20), sex(male), address(xian)] [[1, 2], [3, 4, 5], [6, 7]]

    都是合法的表。后一個例子說明,表也可以嵌套。
    實際上,表是一種特殊的結構,它是遞歸結構的另一種表達形式。這個結構的函數名取決于具體的 Prolog 版本,這里我們就用一個圓點來表示。下面就是一些這樣的結構及它們的表的表示形式:

    結構形式表形式
    ·(a, [])[a]
    ·(a, ·(b, []))[a, b]
    ·(a, ·(b, ·(c, [])))[a, b, c]

    表的說明方法是在其組成元素的說明符后加一個星號*。如:

    domainslists = string* predicatespl(lists)

    就說明謂詞 pl 中的項 lists 是一個由串 string 組成的表。
    對于由結構組成的表,至少分3步說明。例如對于下面謂 p 中的表

    p([name("Liming"), age(20)])

    則需這樣說明:

    domainsrec=seg*seg=name(string); age(integer) predicatesp(rec)

    2、常量與變量

    由上面的領域可知, Turbo Prolog的常量有整數實數字符符號結構文件 這8種數據類型。同理, Turbo Prolog 的變量也就有這8種取值。另外,變量名要求必須是以大寫字母或下劃線開頭字母、數字和下劃線 序列,或者只有一個下劃線(這種變量稱為無名變量)

    3、算術表達式

    Turbo Prolog 提供了 5 種最基本的算術運算:加、減、乘、除 和 取模,相應運算符號為“+”、“-”、“*”、“/”、“mod”。這 5 種運算的順序為:“*”、“/”、“mod”優先于“+”、“-”。同級從左到右按順序運算,括號優先。
    算術表達式的形式與數學中的形式基本一樣。例如:

    數學中的算術表達式Turbo Prolog 中的算術表達式
    x + yzX + Y * Z
    ab - c / dA * B - C / D
    u mod vU mod V(表示求U除以V所得的余數)

    即, Turbo Prolog 中算術表達式采用通常數學中使用的中綴形式。這種算術表達式為 Prolog 的一種異體結構,若以 Prolog 的結構形式來表示,則它們應為:

    +(X, *(Y, Z)) -(*(A, B), /(C, D)) mod(U, V)

    所以,運算符“+”、“-”、“*”、“/”和“mod”實際也就是 Prolog 內部定義好了的函數符。
    在 Turbo Prolog 程序中,如果一個算術表達式中的變元全部被實例化(即被約束),則這個算術表達式的值就會被求出。求出的值可用來實例化某變量,也可用來同其他數量進行比較,用一個算術表達式的值實例化一個變量的方法是用謂詞“is”或“=”來實現的。例如:

    Y is X + 5 或 Y = X + 5 (*)

    就使變量 Y 實例化為 X+5 的值(當然 X 也必須經已被某值實例化),可以看出,這里對變量 Y 的實例化方法類似于其他高級程序語言中的“賦值”,但又不同于賦值。例如,在 Prolog 中下面的式子是錯誤的:

    X = X + 1

    需要說明的是,雖然 Prolog 是一種邏輯程序設計語言,但在目前的硬件條件下卻非突破邏輯框架不可。這是因為有些實用操作是無法用邏輯描述的(如輸入與輸出),有些算術運算在原則上可用邏輯描述,但這樣做效率太低。為此, Prolog 提供了若干內部謂詞(亦稱 預定義謂詞),來實現算術運算、輸入與輸出等操作。所謂內部謂詞,就是 Prolog 的解釋程序中,預先用實現語言定義好的用戶可直接作為子目標調用的謂詞。一般的 Prolog 實用系統都配有 100 個以上的內部謂詞,這些內部謂詞涉及輸入輸出、算術運算、搜索控制、文件操作和圖形聲音等方面,它們是實用 Prolog 程序設計所必不可少的。這樣,上面的(*)式以及下面的關系表達式稱為異體謂詞

    4、關系表達式

    Turbo Prolog 提供了 6 種常用的關系運算,即 小于小于或等于等于大于大于或等于不等于,其運算符依次為:

    <, <=, =, >, >=, <>

    Turbo Prolog 的關系表達式的形式和數學中的也基本一樣,例如:

    數學中的關系式Turbo Prolog 中的關系式
    X + 1 ≥ YX + 1 >= Y
    X ≠ YX <> Y

    即, Turbo Prolog 中的關系式也用中綴形式。當然,這種關系式為 Turbo Prolog 中的異體原子。若按 Turbo Prolog 中的原子形式來表示,則上面的兩個例子為:

    >=(X +1, Y) 和 <>(X, Y)

    所以上述 6 種關系運算符,實際上也就是 Turbo Prolog 內部定義好了的 6 個謂詞。這 6 個關系運算符可用來比較兩個算術表達式的大小。例如:

    brother(Name1, Name2) :- person(Name1, man, Age1),person(Name2, man, Age2),mother(Z, Name1), mother(Z, Name2), Age1 > Age2.

    需要說明的是,“=”的用法比較特殊,它既可以表示比較,也可以表示約束值,即使在同一個規則中的同一個“=”也是如此。例如:

    p(X, Y, Z) :- Z = X + Y.

    當變量 X、Y、Z全部被實例化時,“=”就是比較符。如對于問題:

    Goal: p(3, 5, 8).

    機器回答“yes”,而對于:

    Goal: p(3, 5, 7).

    機器回答“no”。即這時機器把 X+Y 的值與Z的值進行比較。但當 X,Y 被實例化,而 Z 未被實例化時, “=”號就是約束符,如:

    Goal: P(3, 5, Z).

    機器回答“Z = 8”。這時,機器使 Z 實例化為 X+Y 的結果。

    三、輸入與輸出

    雖然 Prolog 能自動輸出目標子句中的變量的值,但這種輸出功能必定有限,往往不能滿足實際需要;另外,對通常大多數的程序來說,運行時從鍵盤上輸人有關數據或信息也是必不可少的。為此每種具體 Prolog 一般都提供專門的輸人和輸出謂詞,供用戶直接調用。例如,下面就是 Turbo Prolog 的幾種輸入輸出謂詞:

  • readin(X)。這個謂詞的功能是從鍵盤上讀取一個字符串,然后約束給變量 X 。
  • readint(X)。這個謂詞的功能是從鍵盤上讀取一個整數,然后約束給變量 X,如果鍵盤上打入的不是整數,則該謂詞失敗。
  • readreal(X)。這個謂詞的功能是從鍵盤上讀取一個實數,然后約束給變量 X,如果鍵盤上打入的不是實數,則該謂詞失敗。
  • readchar(X)。這個謂詞的功能是從鍵盤上讀取一個字符,然后約束給變量 X,如果鍵盤上打入的不是單個字符,則該謂詞失敗。
  • write(X1, X2, …, Xn)。這個謂詞的功能是把項 Xi(i=1,2,…,n) 的值顯示在屏幕上或者打印在紙上,當有某個 Xi 未實例化時,該謂詞失敗。其中的 Xi 可以是變量,也可以是字符串或數字。例如:
    write("computer", "Prolog", Y, 1992)
  • nl(換行謂詞)。它使后面的輸出(如果有的話)另起一行。另外,利用 write的輸出項“\n”也同樣可起到換行作用。例如:
    write("name"), nl, write("age")

    write("name", "\n", "age")
    的效果完全一樣。
  • 舉個例子:
    用上面的輸入輸出謂詞編寫一個簡單的學生成績數據庫查詢程序。

    PREDICATESstudent(integer, string, real)grade GOALgrade. CLAUSESstudent(1, "張三", 90.2).student(2, "李四", 95.5).student(3, "王五", 96.4).grade :- write("請輸人姓名:"), readln(Name), student(_, Name, Score),nl, write(Name, "的成績是", Score).grade :- write("對不起,找不到這個學生!").

    下面是程序運行時的屏幕顯示

    請輸入姓名:王五 王五的成績是96.4

    四、分支與循環

    Prolog 本來沒有分支和循環語句,但可以利用其邏輯機制實現分支和循環效果。

    1、分支

    對于通常的 IF-THEN-ELSE 分支結構,Prolog可用兩條同頭的(同頭即指結論相同)并列規則實現。例如,將:

    IF X>0 THEN X:=1 ELSE X:=0

    用 Prolog實現則是:

    br :- X > 0, X = 1. br :- X = 0.

    類似地,對于多分支,可以用多條規則實現。例如:

    br :- X > 0, X = 1. br :- X = 0, X = 0. br :- X < 0, X = -1.

    2、循環

    Prolog 可以實現計循環次數的 FOR 循環,也可以實現不計循環次數的 DO 循環。

    舉個例子:
    下面的程序段就實現了循環,它使得 write 語句重復執行了3次,而打印輸出了3個學生的記錄:

    student(1, "張三", 90.2). student(2, "李四", 95.5). student(3, "王五", 96.4). print :- student(Number, Name, Score),write(Number, Name, Score), nl,Number = 3.

    可以看出,程序第一次執行,student 謂詞與第一個事實匹配,write 語句便輸出了張三同學的記錄。但當程序執行到最后一句時,由于 Number 不等于 3,則該語句失敗,于是,引起回溯。而 write 語句和 nl 語句均只能執行一次,所以繼續向上回溯到 student 語句。這樣,student 謂詞則因失敗而重新匹配。這一次與第二個事實匹配,結果輸出了李四的記錄。同理,當執行到最后一句時又引起了回溯。write 語句第三次執行后,由于 Number 已等于3,所以最后一個語句成功,程序段便運行結束。
    這個例子可以看做是計數循環。當然,也可以通過設置計數器而實現真正的計數循環。下面的程序段實現的則是不計數的 DO 循環:

    student(1, "張三", 90.2). student(2, "李四", 95.5). student(3, "王五", 96.4). print :- student(Number, Name, Score),write(Number, Name, Score), nl,fail. print :-.

    這個程序段中的 fail 是一個內部謂詞,它的語義是恒失敗。這個程序段與上面的程序段的差別僅在于把原來用計數器(或標記數)進行循環控制的語句變成了恒失敗謂詞 fail,另外又增加了一個 print 語句,增加這個語句的目的是為程序設置一個出口。因為 fail 是恒失敗,下面若無出口的話,將引起 print 本身的失敗,進而又會導致程序的連鎖失敗。
    還需說明的是,用 Prolog的遞歸機制也可以實現循環,不過用遞歸實現循環通常需與表相配合。另外,遞歸的缺點是容易引起內存溢出,故通常的循環多是用上述方法實現的。

    五、動態數據庫

    動態數據庫就是在內存中實現的動態數據結構。它由事實組成,程序可以對它操作,所以在程序運行期間它可以動態變化。Turbo Prolog 提供了 3 個動態數據庫操作謂詞,即:

    asserta(< fact >) assertz(< fact >) retract(< fact >)

    其中 fact 表示事實。這 3 個謂詞的功能如下:

    • asserta(< fact >) 把 fact 插入當前動態數據庫中的同名謂詞的事實之前。
    • assertz(< fact >) 把 fact 插入當前動態數據庫中的同名謂詞的事實之后。
    • retract(< fact >) 把 fact 從當前動態數據庫中刪除。

    例如語句:

    asserta(student(20, "李明", 90.5)).

    將在內存的謂詞名為 student 的事實前插入一個新事實:

    student(20, ''李明", 90.5)

    如果內存中還沒有這樣的事實,則它就是第一個。又如語句:

    retract(student(20, _, _)).

    將從內存的動態數據庫中的刪除事實:

    student(20, _, _)

    它可解釋為學號為 20 的一個學生的記錄。注意,這里用了無名變量 “_”
    可以看出,Turbo Prolog 提供的動態數據庫機制,可非常方便地實現堆棧、隊列等動態數據結構,提供的數據庫操作謂詞大大簡化了編程。
    另外,Turbo Prolog 還提供了兩個文件操作謂詞:

    save(< filename >). consult(< filename >).

    其中 save 可將當前內存中的事實存入文件“filename”中,consult 則將文件“filename”中的事實調入內存。

    六、表處理與遞歸

    1、表頭與表尾

    表是 Prolog 中一種非常有用的數據結構。表的表述能力很強,數字中的序列、集合,通常語言中的數組、記錄等均可用表來表示。表的最大特點是其長度不固定,在程序的運行過程中可動態地變化。具體來講,就是在程序運行時,可對表施行一些操作,如給表中添加一個元素,或從中刪除一個元素,或者將兩個表合并為一個表等。用表還可以方便地構造堆棧、隊列、鏈表、樹等動態數據結構。
    表還有一個重要特點,就是它可分為兩部分。表頭是表中第一個元素,而表尾是表中除第一個元素外的其余元素按原來順序組成的。例如下面的表所示就是一個例子。

    表表 頭表 尾
    [1, 2, 3, 4, 5]1[2, 3, 4, 5]
    [apple, orange, banana]apple[orange, banana]
    [[a, b], [c], [d, e]][a, b][[c], [d, e]]
    [“Prolog”]“Prolog”[]
    []無定義無定義
    **表頭與表尾示例** 表

    2、表的匹配合一

    在程序中是用“|”來區分表頭和表尾的,而且還可以使用變量。例如一般地用[H|T]來表示一個表,其中 H、T 都是變量,H 為表頭,T為表尾。注意,此處 H 是一個元素(表中第一個元素),而 T 則是一個表(除第一個元素外表中的其余元素按原來順序組成的表)。表的這種表示法很有用,它為表的操作提供了極大的方便。如下面的表所示即為用這種表示法通過匹配合一提取表頭和表尾的例子。

    表1表2合一后的變量值
    [X | Y][a, b, c]X = a, Y = [b, c]
    [X | Y][a]X = a, Y = []
    [a | Y][X, b]X = a, Y = [b]
    [X, Y, Z][a, b, c]X = a, Y = b, Z = c
    [[a, Y] | Z][[X, b], [c]]X = a, Y = b, Z = [[c]]
    **表的匹配合一示例** 表

    還需說明的是,表中的“|”后面只能有一個變量。例如寫法 [X | Y, Z] 就是錯誤的。但豎杠前面的變量可以多于一個。例如寫法 [ X, Y | Z] 是允許的。這樣,這個表同 [a, b, c] 匹配合一后,有:

    X = a, Y = b, Z = [c]

    另外,豎杠的前面和后面也可以是常量,例如 [a | Y] 和 [X | b] 都是允許的,但需要注意,后一個表稱為無尾表,如果它同表 [a | Y] 匹配,則有:

    X = a, Y = b (而不是 Y = [b])

    如果無“|”,則不能分離出表尾。例如,表 [X, Y, Z] 與 [a, b, c] 合一后得 X = a,Y = b,Z = c,其中變量 Z 并非等于 [c] 。

    接下來我們通過三個例子來更詳細地了解表的操作

    例6-1:設計一個能判斷對象 X 是表 L 的成員的程序。
    我們可以這樣設想:
    如果 X 與表 L 中的第一個元素(即表頭)是同一個對象,則 X 就是 L的成員;
    如果 X 是 L 的尾部的成員,則 X 也就是 L 的成員。
    根據這種邏輯關系,有下面的 Prolog 程序:

    member(X, [X | Tail]). member(X, [Head | Tail]) :- member(X, Tail).

    其中第一個子句的語義就是上面的第一句話;第二個子句的語義就是上面的第二句話。可以看出,這個程序中使用了遞歸技術,因為謂詞 member 的定義中又含有它自身。利用這個程序就可以判定任意給定的一個對象和一個表之間是否具有 member(成員)關系。例如,取表 L 為 [a, b, c, d],取 X 為 a,對上面的程序提出如下詢問:

    Goal : member(a, [a, b, c, d]).

    則回答“yes”。同樣對于詢問:

    Goal : member(b, [a, b, c, d]). Goal : member(c, [a, b, c, d]). Goal : member(d, [a, b, c, d]).

    均回答“yes”。但若詢問:

    Goal : member(e, [a, b, c, d]).

    則回答“no”。如果我們這樣詢問:

    Goal : member(X, [a, b, c, d]).

    意思是要證明存在這樣的 X,它是該表的成員,這時系統返回 X 的值,即:

    X = a

    如果需要的話,系統還會給出 X 的其他所有值。

    例6-2:寫一個表的拼接程序,即把兩個表連接成一個表。

    append([], L, L). append([H | T], L2, [H | Tn]) :- append(T, L2, Tn).

    程序中第一個子句的意思是空表同任一表 L 拼接的結果仍為表 L;第二個子句的意思是說,一個非空的表 L1 與另一個表 L2 拼接的結果 L3 是這樣一個表,它的頭是 L1 的頭,它的尾是由 L1 的尾 T 同 L2 拼接的結果 Tn。這個程序刻畫了兩個表與它們的拼接表之間的邏輯關系。
    可以看出,謂詞 append 是遞歸定義的,子句append([], L, L).為終結條件即遞歸出口。
    對于這個程序,如果我們詢問:

    Goal : append([1, 2, 3], [4, 5], L).

    則系統便三次遞歸調用程序中的第二個子句,最后從第一個子句終止,然后反向依次求出每次的拼接表,最后輸出:

    L=[1, 2, 3, 4, 5]

    當然,對于這個程序也可以給出其他各種詢問,如:

    Goal : append([1, 2, 3], [4, 5], [1, 2, 3, 4, 5]).

    系統回答yes。

    Goal : append([1, 2, 3], [4, 5], [1, 2, 3, 4, 5, 6]).

    系統回答no。

    Goal : append([1, 2, 3], Y, [1, 2, 3, 4, 5]).

    系統回答X = [4, 5]。

    Goal : append(X, [4, 5], [1, 2, 3, 4, 5]).

    系統回答X = [1, 2, 3]。

    Goal : append(X, Y, [1, 2, 3, 4, 5]).

    系統回答

    X = [], Y = [1, 2, 3, 4, 5] X = [1], Y = [2, 3, 4, 5] X = [1, 2], Y = [3, 4, 5] X = [1, 2, 3], Y = [4, 5] 等(如果需要所有解的話)。

    例6-3:表的輸出

    print([]). print([H | T]) :- write(H), print(T).

    例6-4:表的倒置,即求一個表的逆序表。

    reverse([], []). reverse([H | T], L) :- reverse(T, L1), append(L1, [H], L).

    這里,reverse的第一個項是輸入,即原表;第二個項是輸出,即原表的倒置。

    七、回溯控制

    Prolog 在搜索目標解的過程中,具有回溯機制,即當某一個子目標“Gi”不能滿足時,就返回到該子目標的前一個子目標“Gi-1”,并放棄“Gi-1”的當前約束值,使它重新匹配合一。在實際問題中,有時卻不需要回溯,為此 Prolog 中就專門定義了一個阻止回溯的內部謂同——“!”,稱為截斷謂詞

    截斷謂詞的語法格式很簡單,就是一個感嘆號“!”。! 的語義如下。

  • 若將“!”插在子句體內作為一個子目標,它總是立即成功。
  • 若“!”位于子句體的最后,則它就阻止對它所在子句的頭謂詞的所有子句的回溯訪向,而讓回溯跳過該頭謂詞(子目標),去訪問前一個子目標(如果有的話)。
  • 若“!”位于其他位置,則當其后發生回溯且回溯到“!”處時,就在此處失敗,并且“!”還使它所在子句的頭謂詞(子目標)整個失敗(即阻止再去訪問頭謂詞的其余子向(如果有的話),即迫使系統直接回溯到該頭謂詞(子目標)的前一個子目標(如果有的話))。
  • 舉個例子:
    考慮下面的程序

    p(a). (7 - 1) p(b). (7 - 2) q(b). (7 - 3) r(X) :- p(X), q(X). (7 - 4) r(c).

    對于目標:r(X).可有一個解:
    Y = b
    但當我們把式(7 - 4)改為:

    r(X) :- p(X), !, q(X). (7 - 4')

    時,卻無解。為什么?
    這是由于添加了截斷謂詞“!”。因為式(7 - 4’)中求解子目標 p(X) 時,X 被約束到 a,然后跳過“!”,但在求解子目標 q(a) 時遇到麻煩,于是又回溯到“!”,而“!”阻止了對 p(X)的下一個子句 p(b) 和 r 的下一個定義子句 r? 的訪問。從而導致整個求解失敗。

    再舉個例子:
    設有程序:

    g0 :- g11, g12, g13. (7 - 5) g0 :- g14. (7 - 6) g12 :- g21, !, g23. (7 - 7) g12 :- g24, g25. (7 - 8) ... ...

    給出目標:g0。
    假設運行到子目標 g23 時失敗,這時如果子句(7 - 7)中無“!”的話,則會回溯到 g21,并且如果 g21 也失敗的話,則會訪問下面的子句(7 - 8)。但由于有“!”存在,所以不能回溯到 g21,而直接宣告 g12 失敗。于是由子句(7 - 5),這時則回溯到 g11。如果我們把子句(7 - 7)改為:

    g12 :- g21, g23, !. (7 - 9)

    當然這時若 g23 失敗時,便可回溯到 g21,而當 g21 也失敗時,便回溯到 g12,即子句(7 - 8)被“激活”。但對于修改后的程序,如果 g13 失敗,則雖然可回溯到 g12,但對 g12 不做任何事情便立即跳過它,而回溯到 g11。如果子句(7 - 9)中無“!”,則當 g13 失敗時,回溯到 g12 便去考慮子句(7 - 8),只有當子句(7 - 8)再失敗時才回溯到 g11。

    八、程序舉例

    下面給出幾個簡單而又典型的程序實例。通過這些程序,讀者可以進一步體會和理解 Prolog 程序的風格和能力,也可以掌握一些基本的編程技巧。

    例8-1:下面是一個簡單的路徑查詢程序。程序中的事實描述了如下圖所示的有向圖,規則是圖中兩節點間有通路的定義。

    predicatesroad(symbol, symbol)path(symbol, symbol) clausesroad(a, b).road(a, c).road(b, d).road(c, d).road(d, e).road(b, e).path(X, Y) :- road(X, Y).path(X, Y) :- road(X, Z), path(Z, Y).

    程序中未含目標,所以運行時需給出外部目標。例如當給出目標:

    path(a, e).

    時,系統將回答yes,但當給出目標:

    path(e, a).

    時,系統則回答no,如果給出目標:

    run.

    且在程序中增加子句:

    run :- path(a, X), write("X =", X), nl, fail. run.

    屏幕上將會輸出:

    X = b X = c X = d X = e X = d X = e X = e

    即從 a 出發到其他節點的全部路徑。

    例8-2:下面是一個求階乘程序,程序中使用了遞歸。

    /* a Factorial Program */ domainsn, f = integer predicatesfactorial(n, f) goalreadint(I),factorial(I, F),write(I, "!=", F). clausesfactorial(1, 1).factorial(N, Res) :-N > 0,N1 = N - 1,factorial(N1, FacN1),Res = N * FacN1.

    程序運行時,從鍵盤上輸入一個整數,屏幕上將顯示其階乘數。

    例8-3:下面是一個表的排序程序,采用插入排序法。

    /* insert sort */ domainslisti = integer* predicatesinsert_sort(listi, listi)insert(integer, listi, listi)asc_order(integer, integer) clausesinsert_sort([], []).insert\_sort([H | Tail], Sorted_list) :-insert_sort(Tail, Sorted\_Tail),insert(H, Sorted_Tial, Sorted\_list).insert(X, [Y | Sorted_list1]) :-asc_order(X, Y), !,insert(X, Sorted_list, Sorted\_list1).insert(X, Sorted_list, [X | Sorted\_list]).asc_order(X, Y) :- X > Y.

    程序中對表的處理使用了遞歸。程序中也未給出目標,需要在運行時臨時給出。例如當給出目標:

    insert_sort([5, 3, 4, 2, 6, 1, 7, 8, 9, 0], L).

    時,系統將輸出:

    L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    Visual Prolog 語言簡介

    Visual Prolog 是一種可視化邏輯程序設計語言。它是美國的 Prolog 開發中心(PDC)推出的新一代 Prolog 語言,其語言特性符合相應的國際標準 ISO/IEC13211-1:1995;并自帶可視化集成開發環境。
    Visual Prolog 與 Turbo Prolog 及 PDC Prolog 最顯著的區別就是支持圖形用戶界面程序設計。Visual Prolog 及其 Visual Prolog 程序不僅能夠運行于 Windows 系列操作系統環境,而且也可以運行于 Linux、SCOUNIX 和 OS/2 等操作系統環境。
    Visual Prolog 不僅可以用于邏輯程序設計,而且還支持模塊化和面向對象程序設計。它幾乎是一個融邏輯、函數、過程和面向對象等程序設計范型為一體的綜合型程序設設計語言。
    Visual Prolog 幾乎包含了各種應用程序和系統程序所需要的所有特性和功能。例如,它不僅具有諸如模式匹配、遞歸、回溯、動態數據庫、謂詞庫、文件操作、圖形開發、字符串處理、位級運算、算術與邏輯運算、與其他語言的接口、編譯器、連接器和調試器等傳統功能,而且還具有對象機制、動態連接庫 DLL、多線程、異常處理,支持基于網絡的應用開發,支持與 C/C++ 的直接鏈接,對 Win32 API 函數的直接訪問以及數據庫、多媒體等。而且隨著版本的升級,這些特性和功能還在不斷擴充和提高。
    從結構來看, Visual Prolog 包含一個大型庫,捆綁了大量的 API函數,包括 Windows GUI 函數族、ODBC/OCI 數據庫函數族和 Internet 函數族(socket、FTP、HTTP、CGI等)。其開發環境包含對話框、菜單、工具欄等若干編碼專家和圖形編輯器。
    正因為有如此強大的功能和優勢,所以 Visual Prolog 已是當今智能化應用開發的有力工具。據悉,Visual Prolog 在美國、加拿大、西歐、澳大利亞、新西蘭、日本、韓國、新加坡等國家和地區廣為流行。
    由于篇幅所限,本節僅對 Visual Prolog 作簡單介紹。有興趣的讀者可登錄 PDC 網站:http://www.visual-prolog.com/,對 Visual Prolog 及其編程作進一步了解和學習。


    參考文獻:《人工智能技術簡明教程》–廉師友 編著

    總結

    以上是生活随笔為你收集整理的逻辑程序设计语言Prolog的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    亚洲高清色综合 | 色综合人人 | 精品国产91亚洲一区二区三区www | 日韩专区av | 欧美综合在线视频 | 国产99久久久国产精品成人免费 | 日韩午夜大片 | 91精品国产高清自在线观看 | 国产主播大尺度精品福利免费 | 肉色欧美久久久久久久免费看 | 久久99精品一区二区三区三区 | 91免费国产在线观看 | 亚州日韩中文字幕 | 成人黄色电影在线播放 | 六月丁香婷婷久久 | 最近更新好看的中文字幕 | 天天在线免费视频 | 亚洲视频免费在线 | 国产免费区 | 一区二区三区国产精品 | 国产1级视频 | 亚洲国产视频a | 激情视频在线观看网址 | 玖草影院| 国内外成人免费在线视频 | 日韩有码第一页 | 亚洲香蕉在线观看 | 欧美激情va永久在线播放 | 日本最新高清不卡中文字幕 | 手机在线看永久av片免费 | 久久免费视频2 | 欧美一二在线 | 欧美国产日韩一区二区三区 | 日本女人的性生活视频 | 亚洲 成人 一区 | 久久精品系列 | 久草热久草视频 | 黄色成人在线观看 | 国产传媒中文字幕 | 一区二区三区国产欧美 | 特级毛片在线观看 | 久久精品国产免费 | 四虎影视欧美 | 99免费看片 | 天天干天天操天天操 | 国产性天天综合网 | 六月天色婷婷 | 国产美腿白丝袜足在线av | 黄色成年网站 | 五月婷婷.com | 日批视频在线播放 | 国产一级二级在线观看 | 一区二区理论片 | 最近中文字幕国语免费av | 三级av在线免费观看 | 日韩高清精品免费观看 | 奇米影视8888 | 六月婷色 | 91精品视频免费看 | 久草在线高清 | 97视频在线观看免费 | 免费黄色网址大全 | 国产热re99久久6国产精品 | 国产一区二区三区免费视频 | 就操操久久| 又湿又紧又大又爽a视频国产 | 中文字幕中文字幕在线一区 | 久草在线免费新视频 | 久久99亚洲网美利坚合众国 | 亚洲精品免费在线播放 | 欧美综合色在线图区 | 国产韩国精品一区二区三区 | 欧美日韩国产网站 | 综合网av | 欧美精品生活片 | 91精彩在线视频 | 97超碰国产精品女人人人爽 | 中文字幕久久精品一区 | 揉bbb玩bbb少妇bbb | 日韩av线观看| 91九色国产在线 | 综合天天色 | 91九色国产在线 | 在线免费av网 | 午夜18视频在线观看 | 91私密保健 | 欧美日韩久久不卡 | 国产福利一区二区在线 | 狠狠久久婷婷 | 992tv在线观看 | 国产一区二区三区视频在线 | 国产在线视频一区二区三区 | 久草在线视频免赞 | 99久久日韩精品视频免费在线观看 | 中文字幕在线观看第一页 | 久久久久国产精品午夜一区 | 三三级黄色片之日韩 | 久久99精品久久久久久久久久久久 | 99久久精品免费看国产四区 | 国产做aⅴ在线视频播放 | 日韩videos| 日韩精选在线 | 深爱激情站 | 一区二区精品在线 | 亚洲欧美少妇 | 操操碰 | 国产激情久久久 | 公开超碰在线 | 国产精品午夜久久久久久99热 | 色久网 | 亚洲一二区视频 | 日韩视频中文字幕在线观看 | 人人爽人人做 | 狠狠狠狠狠干 | 国产麻豆精品在线观看 | 精品久久久久久综合日本 | 成片免费观看视频999 | 四虎影视成人永久免费观看视频 | 人人澡人摸人人添学生av | 一区二区三区视频 | 狠狠狠狠狠狠 | 91精品国| 99热最新地址 | 久久你懂得 | 综合色狠狠 | 最近最新最好看中文视频 | 免费看片在线观看 | 国产麻豆果冻传媒在线观看 | 网站免费黄色 | 国产一区二区高清 | 亚洲三级在线播放 | 91在线免费视频观看 | 国产在线视频一区二区三区 | 久久免费视频在线观看6 | 国产精品爽爽爽 | 久久久穴| 国产91精品高清一区二区三区 | 久久精精品 | 国产资源| 久久tv视频 | a天堂在线看 | 波多野结衣在线观看视频 | 精品国产免费一区二区三区五区 | 一级免费黄色 | 久久九九影视 | 国产成人免费观看 | 国产亚洲成人网 | 亚洲专区在线播放 | 天天操天天干天天爱 | 久久久亚洲麻豆日韩精品一区三区 | 91毛片视频 | 久久人人爽爽 | 天天·日日日干 | 久草在线视频首页 | 国产高清第一页 | 久久天天操 | 手机看片 | 国产精品免费久久久久久 | 美女视频永久黄网站免费观看国产 | 精品久久久免费视频 | 色播99| 97国产情侣爱久久免费观看 | 可以免费观看的av片 | 开心激情五月婷婷 | 91看片在线免费观看 | 国产成人精品一区二区三区免费 | 天天躁天天躁天天躁婷 | a级国产乱理伦片在线观看 亚洲3级 | 国产在线色 | 国产精品久久久久久久久久久久午夜 | 国产免码va在线观看免费 | 天天操月月操 | 伊人色综合久久天天 | 成人在线视频你懂的 | 天天操天天干天天玩 | 色偷偷88欧美精品久久久 | 久久综合99| 香蕉视频在线视频 | 久久精品视频在线免费观看 | 91九色国产视频 | 亚洲不卡av一区二区三区 | 日韩xxxx视频 | 激情视频免费观看 | 欧美性黑人| 欧美久久久久久久久久久 | 日本中文字幕网址 | 日韩精品综合在线 | 最近免费观看的电影完整版 | 国产看片免费 | 中字幕视频在线永久在线观看免费 | 最新99热| 久久国产精品成人免费浪潮 | 亚洲黄色免费电影 | 2019中文字幕网站 | 国产 日韩 在线 亚洲 字幕 中文 | 黄色软件大全网站 | 国产最顶级的黄色片在线免费观看 | 欧美性护士 | 免费视频一二三 | 欧美日韩一区二区三区在线免费观看 | 免费视频a | 午夜av影院 | 97在线观看免费高清 | 亚洲国产婷婷 | 五月婷婷综合激情网 | 天天操天天干天天玩 | 一区二区三区精品久久久 | 国产亚洲久一区二区 | 久草精品在线 | 成年人视频在线 | 黄色小说视频网站 | 久久久国产精品麻豆 | 香蕉影院在线观看 | 久色免费视频 | 国产高清在线a视频大全 | 久久官网| 免费观看福利视频 | 激情久久综合 | 亚洲午夜电影网 | 91九色网址 | 人人澡澡人人 | 精品国产片 | 日本午夜在线亚洲.国产 | 粉嫩av一区二区三区入口 | 欧美国产日韩一区 | 精品久久久久久久 | 婷婷六月综合网 | 一区二区三区四区不卡 | 天天色天天射天天干 | 欧美日韩一级久久久久久免费看 | 天天干亚洲 | a一片一级 | 中文字幕91在线 | 亚洲国产成人精品久久 | 久久久首页| 精品免费视频123区 午夜久久成人 | 手机在线看a | 九九国产视频 | 免费的黄色的网站 | 午夜精品中文字幕 | 中文字幕一区二区三区在线视频 | 国产视频99 | 99精品国产成人一区二区 | 亚洲欧美国产精品va在线观看 | 青青河边草观看完整版高清 | 亚洲日本在线一区 | 国产成人精品一区二区三区福利 | 日韩天堂在线观看 | 国内偷拍精品视频 | 亚洲国产成人在线观看 | 亚洲欧美日韩国产一区二区三区 | 在线免费中文字幕 | 国产在线2020| 欧美激情va永久在线播放 | 黄色软件视频大全免费下载 | 欧美另类成人 | 久久最新网址 | 在线欧美最极品的av | 亚洲国产中文在线观看 | 三级黄色免费 | 456免费视频 | 黄色aaa毛片| 狠狠狠色丁香综合久久天下网 | 国产精品免费不卡 | 午夜视频在线瓜伦 | 日本精品在线视频 | 国产精品粉嫩 | 日韩欧美综合 | 久久久久高清 | 一本一道久久a久久精品 | 91免费版在线 | 成人h视频| 成人一区二区三区在线观看 | 又粗又长又大又爽又黄少妇毛片 | 国产色黄网站 | 成人97人人超碰人人99 | www.色五月 | 国产亚洲精品久 | av 一区二区三区 | 国产国产人免费人成免费视频 | 伊人久操| 大胆欧美gogo免费视频一二区 | 四虎最新域名 | 97视频免费观看 | 人人插人人澡 | 亚洲一区二区精品视频 | 国产中年夫妇高潮精品视频 | 亚洲一级片免费观看 | 久久伊人精品一区二区三区 | 国产一区二区久久久 | 亚洲精品影视在线观看 | 久久精品国产一区二区三 | 中文字幕乱码亚洲精品一区 | 天天曰夜夜操 | 91精品国产麻豆国产自产影视 | 国产在线观看你懂得 | 国色天香第二季 | 国产一级视频在线 | 黄色官网在线观看 | 国产精品入口传媒 | 国产精品视频你懂的 | 成人久久免费 | 99久久久久久久久久 | 97天天干| 特级黄录像视频 | 免费一级片在线观看 | 成人午夜在线电影 | 伊人狠狠色 | 96超碰在线| 亚洲欧美婷婷六月色综合 | 成年人在线免费看 | 成年人视频在线免费播放 | 热久久免费国产视频 | 在线看av的网址 | 日韩中文在线播放 | 国产精品成人自产拍在线观看 | 91黄色免费网站 | 久久乐九色婷婷综合色狠狠182 | 日本爽妇网 | 久久优 | 国产视频在线观看一区二区 | 91视频成人免费 | 狠狠色丁香婷婷综合久小说久 | 亚洲经典中文字幕 | 99re国产| av888av.com| 日韩av电影国产 | 在线观看国产中文字幕 | 五月激情亚洲 | 午夜影院一级 | 人人插人人爱 | 国产精品入口麻豆 | 黄色片网站免费 | 国产精品国产三级国产不产一地 | 97在线影视 | 色婷婷综合五月 | 亚洲国产中文字幕在线观看 | 国产一区自拍视频 | 五月开心婷婷网 | 五月天伊人网 | 国产在线污 | 久久精品资源 | www.在线看片.com | 日韩欧美网址 | 国产999精品久久久影片官网 | 成人免费观看视频大全 | 久久好看 | 中文字幕久久精品 | 国产成人精品一区二三区 | 麻豆视频国产精品 | 国产精品video爽爽爽爽 | 色欲综合视频天天天 | 人人添人人澡人人澡人人人爽 | 亚洲免费av观看 | 伊人婷婷在线 | 在线亚洲高清视频 | 一级一片免费看 | 伊人五月天 | 久久91久久久久麻豆精品 | 亚洲自拍偷拍色图 | 色婷婷福利视频 | 精品一区二区电影 | 久久情爱 | 在线看毛片网站 | 久久影视中文字幕 | 午夜婷婷综合 | 精品99999 | 精油按摩av | 国产精品一区二区吃奶在线观看 | 亚洲国产成人精品在线观看 | 欧美一级电影免费观看 | 99久久综合狠狠综合久久 | 国产福利一区二区三区在线观看 | 午夜 免费 | av成人免费观看 | 黄色精品久久 | 中文字幕av电影下载 | 九九热精品视频在线观看 | 国语久久 | 欧美久久电影 | 国产成人免费观看 | 天堂网一区二区 | 久久久久久久久久久久久久免费看 | 97在线观看免费高清完整版在线观看 | 精品久久久久久久久中文字幕 | 特级毛片在线免费观看 | 在线看片91| 91成人精品观看 | 亚洲最快最全在线视频 | 九色精品在线 | 在线亚洲人成电影网站色www | 欧美日韩另类视频 | 国产精品五月天 | 国产精品福利午夜在线观看 | 最新成人在线 | 99这里有精品 | 国产精品久久久久久电影 | 高清av免费看 | 久久国产精品久久精品国产演员表 | 欧美激情视频一区 | 久久美女免费视频 | 在线国产视频一区 | av激情五月 | 一区在线播放 | 中文字幕在线视频一区 | 天天曰天天爽 | 久久久精品国产免费观看同学 | 超碰在线观看97 | 日本中文字幕网站 | 色婷婷激婷婷情综天天 | 亚洲天堂网在线视频观看 | 成人免费视频免费观看 | 久久视频精品 | 国产视频一二区 | 精品国内自产拍在线观看视频 | 亚洲少妇久久 | 美女国产在线 | 色网影音先锋 | 亚洲视频免费在线看 | 中文字幕日韩电影 | 久久精品99精品国产香蕉 | 97超碰在线免费 | 免费又黄又爽 | 国产传媒中文字幕 | 中文字幕免费高清在线 | 国产在线最新 | 久久精品国产亚洲精品2020 | 国产乱码精品一区二区三区介绍 | av中文字幕在线播放 | 欧美日韩在线播放 | 亚洲砖区区免费 | 久久成年人视频 | 免费久久精品视频 | 国产手机视频 | 91热这里只有精品 | 亚洲精品在线播放视频 | 亚洲资源一区 | 日韩激情三级 | 69精品久久久 | 亚洲国产精品推荐 | a视频在线观看 | 中文字幕专区高清在线观看 | 亚洲成人免费观看 | 日韩欧美一区二区三区免费观看 | 亚洲区视频在线观看 | 四虎国产精品免费观看视频优播 | 激情综合久久 | 精品久久久久久亚洲 | 久久成视频 | 99国产在线观看 | 五月天视频网 | 久草视频免费在线播放 | 亚洲成人av一区二区 | 91激情小视频 | 美女福利视频 | 久久国产亚洲精品 | 国产一级免费在线观看 | 精品高清美女精品国产区 | 99在线热播 | 午夜视频在线观看一区二区三区 | 九精品| 午夜 在线| 美女视频一区 | 在线观看精品黄av片免费 | 久草在线这里只有精品 | 五月婷婷电影网 | 免费观看国产视频 | 久久久久久在线观看 | 国产精品久久久久影院 | 伊人宗合网 | 亚洲五月婷 | 中文字幕乱在线伦视频中文字幕乱码在线 | 五月婷婷av| 91网页版免费观看 | 中文字幕日韩一区二区三区不卡 | 国内小视频在线观看 | 欧美一二区视频 | 日本爱爱免费 | 欧美精彩视频 | 伊人狠狠色丁香婷婷综合 | 久久99这里只有精品 | 日韩久久久久久 | 欧美日产在线观看 | av免费在线观看网站 | 久久久久亚洲精品男人的天堂 | 97视频免费观看2区 亚洲视屏 | 欧美淫aaa免费观看 日韩激情免费视频 | 中文字幕乱视频 | 麻豆91在线播放 | 国产精品视频在线观看 | 国产日韩精品欧美 | 国产九九精品 | 国产麻豆电影在线观看 | 黄在线免费观看 | 欧美日韩一区二区在线观看 | 不卡视频一区二区三区 | 日韩av二区 | 国产高清精 | 一级欧美黄 | 中文字幕在线观看免费高清电影 | 日本黄色免费电影网站 | 午夜骚影| 超碰激情在线 | 久久伊人色综合 | 粉嫩av一区二区三区四区 | 国产探花在线看 | 国产精品久久久久永久免费观看 | av电影中文字幕 | 看全黄大色黄大片 | 亚洲午夜av电影 | 97电影在线 | 正在播放国产一区二区 | 97超视频 | 国产免费视频在线 | 欧美精品在线视频 | 欧美国产日韩在线观看 | 最新中文在线视频 | 日本久久久久久 | 亚洲成成品网站 | 久久av福利 | 日韩视频免费在线观看 | 久久手机免费视频 | 欧美aa一级片| 日韩精品免费一线在线观看 | 国产精品第2页 | 黄免费在线观看 | 夜夜躁日日躁 | 国产高清在线一区 | 日韩欧美高清免费 | 九九久久婷婷 | 久热电影 | 婷婷综合影院 | 久久短视频| 天天干天天干天天干天天干天天干天天干 | 精品视频在线视频 | 特级黄色片免费看 | 丰满少妇麻豆av | 91探花在线 | 婷婷夜夜 | 在线免费观看av网站 | 成人国产精品一区二区 | 亚洲理论电影网 | 在线日韩中文字幕 | 国产亚洲精品久久久网站好莱 | 久久99久久99精品免视看婷婷 | 天天草天天插 | 91精品区| 亚洲成免费| 欧美日韩高清在线观看 | 日韩高清免费观看 | 国产玖玖精品视频 | 最新国产一区二区三区 | 福利视频一区二区 | 一级a性色生活片久久毛片波多野 | 日韩精品一区二区三区免费视频观看 | 中文字幕亚洲不卡 | 综合久久影院 | 一级a毛片高清视频 | 中文字幕你懂的 | 婷婷激情小说网 | 欧美激情视频免费看 | 国产不卡视频在线 | 国产亚州av | 日本在线观看一区二区三区 | av资源在线观看 | 天天射天天 | 精品国产理论片 | 国产免费av一区二区三区 | 国产在线精品一区二区三区 | 久日精品 | 97精品国产91久久久久久 | 日日摸日日添日日躁av | 91亚洲精品久久久久图片蜜桃 | 一区二区日韩av | 久久午夜国产精品 | 操处女逼| 国产色 在线 | 日韩免费电影一区二区三区 | 一区二区三区免费 | 一区二区三区中文字幕在线 | 激情丁香婷婷 | 91精品资源 | 久久久精品影视 | 国产成人综合图片 | 国产97视频 | 国产免费久久 | 狠狠五月天 | wwxxx日本| 国产一级做a爱片久久毛片a | 97超碰免费在线观看 | 婷婷综合在线 | 欧美污在线观看 | 亚洲精品中文在线资源 | 日本中文字幕久久 | 视频国产在线观看18 | 一区二区在线电影 | 综合激情婷婷 | 99免在线观看免费视频高清 | 黄色a在线观看 | 人人cao | 中文字幕网站视频在线 | 国产精品欧美日韩在线观看 | 一区二区三区高清在线 | 亚洲精品视频免费 | 免费看的黄色 | 91| 日韩在线视频看看 | 国产精品综合久久久久久 | 在线播放视频一区 | 亚洲成人精品在线 | 精品国产亚洲一区二区麻豆 | 一区国产精品 | 日韩av电影中文字幕 | www.天天射 | 亚洲电影在线看 | 丁香在线视频 | 国产美女视频免费观看的网站 | 有码一区二区三区 | 久久公开视频 | 国产午夜精品一区二区三区 | 国产精品区一区 | 国产精品一区二区三区久久 | 日韩大陆欧美高清视频区 | 色com网 | 日日夜夜天天久久 | 国产区精品在线 | 国产精品成人一区二区三区吃奶 | 亚洲精品乱码久久久久 | 国产精品国产三级国产aⅴ入口 | 日本二区三区在线 | 丁香久久激情 | 九九99靖品| 国产黄a三级三级 | av综合网址 | 99视频在线精品免费观看2 | 日韩在线观看网址 | 一区二区三区在线免费播放 | 五月开心婷婷网 | 精品av网站 | www.天天射| 黄色免费网 | 久久不见久久见免费影院 | 久久久久黄 | 国产黄网站在线观看 | 岛国一区在线 | 欧美激情片在线观看 | 精品亚洲免费视频 | 日本精品视频一区 | 久久99热这里只有精品 | 国产 字幕 制服 中文 在线 | 精品成人a区在线观看 | 欧美va日韩va | 欧美激情精品久久久 | 一区二区三区在线观看 | 97超在线 | av免费播放 | 狠狠干天天干 | 国产精品久久久久永久免费 | 91人人网 | 色偷偷av男人天堂 | 伊人网av | 成人国产精品av | 狠狠狠狠狠狠狠狠干 | 最近更新中文字幕 | 国产无限资源在线观看 | 九九热视频在线 | 国产精品久久久久久久久久免费 | 在线观看91精品国产网站 | 欧美在线视频一区二区三区 | 精品一区二区免费视频 | 欧美日韩一区二区三区在线免费观看 | 三级av在线播放 | 天天曰天天射 | 久久精品观看 | 日本中文字幕在线视频 | 97视频免费观看 | 国产亚洲高清视频 | 91手机视频| 91视频 - x99av | 色999精品 | 国产高清av | 99视频在线观看视频 | 一区二区激情视频 | 99精品国产在热久久下载 | 欧美日韩亚洲第一 | 婷婷综合 | 色成人亚洲 | 三级av免费 | 日韩欧美高清不卡 | 婷婷成人在线 | 日批视频在线观看免费 | av超碰在线 | 久久九九久久九九 | 玖玖玖在线 | 在线午夜av| 久久久999免费视频 日韩网站在线 | 国产午夜激情视频 | 超碰在线人人爱 | 伊人婷婷激情 | 九九导航 | 五月天久久综合 | 91精品入口 | 人人爽人人爽人人片av免 | av线上看 | 精品国产电影一区 | 韩国av一区二区三区 | 久久在线免费观看 | 精品久久久久久国产 | 久草久草久草久草 | 五月天综合激情网 | 99精品免费观看 | 色射色| 在线观看免费高清视频大全追剧 | 福利一区视频 | 黄色片免费看 | 黄色aaa毛片| 中文字幕av全部资源www中文字幕在线观看 | 免费裸体视频网 | 福利一区在线 | 亚洲天堂va | 亚洲 综合 国产 精品 | 黄色一级免费网站 | 亚洲国产中文在线观看 | 天天激情在线 | 久久午夜精品视频 | 亚洲视频 在线观看 | 中文字幕在线观看免费观看 | 久久免费福利视频 | 27xxoo无遮挡动态视频 | 欧美日韩91 | 在线观看成人国产 | 色www免费视频 | 91av视频播放 | 99婷婷 | 干 操 插 | 色网站在线免费 | 91视频黄色| 在线播放你懂 | 五月婷婷色综合 | 中文字幕丝袜制服 | 日本三级久久久 | 久草视频免费 | 欧美大片mv免费 | 欧美在线视频a | 久久久鲁| 成人av在线看 | 国产日韩精品在线观看 | 午夜精品导航 | 中文字幕在线免费观看视频 | 日日精品 | 天天舔夜夜操 | 一区二三国产 | 99久久精 | 色综合久久综合网 | av中文字幕在线电影 | 欧美成人性战久久 | 成人国产精品久久久久久亚洲 | 高清一区二区三区av | 国产精品欧美激情在线观看 | 黄色app网站在线观看 | 国产黄色特级片 | 久久伊人热 | 国产色婷婷精品综合在线手机播放 | 成人h视频在线播放 | 高清av网| 精品亚洲视频在线观看 | 亚洲激情 | 国产精品6999成人免费视频 | 久久国产精品影片 | 色激情五月 | 97精品国产97久久久久久免费 | 超级碰碰免费视频 | 麻豆国产精品va在线观看不卡 | 色综合久久五月天 | 97在线观看免费观看高清 | 午夜精品一区二区三区在线视频 | 激情视频一区二区 | 丝袜美腿在线播放 | 欧美日本不卡视频 | 综合激情伊人 | 韩国av一区二区三区在线观看 | 国产拍揄自揄精品视频麻豆 | 成人三级视频 | 成人三级av | 超碰97人人干| 日韩性色 | 欧美激情精品久久久久久免费印度 | 久久久久国产一区二区三区四区 | 草久久久| 九九精品视频在线 | 美女视频黄频大全免费 | 国产在线观看xxx | 91九色国产在线 | 久久免费视频在线观看6 | 亚洲国产精品日韩 | 免费a现在观看 | 日本最新一区二区三区 | 国产精品18videosex性欧美 | 欧美另类老妇 | 国产午夜精品一区二区三区嫩草 | 国产伦精品一区二区三区四区视频 | 久久免费播放 | 精品国产综合区久久久久久 | 午夜色场| 国产99在线播放 | 在线观看黄 | 日韩欧美视频二区 | 中文字幕在线影院 | 蜜臀久久99精品久久久无需会员 | 久艹在线观看视频 | 成年人免费看片 | 色天天中文 | 久草精品视频在线播放 | 成人午夜在线观看 | 天天射天天干天天插 | 国产69精品久久99不卡的观看体验 | 欧美极品久久 | 免费看黄在线 | 在线视频中文字幕一区 | 色九九视频 | 日韩综合第一页 | 精品国产免费久久 | 久久久久久黄 | 黄色影院在线免费观看 | 亚洲丝袜一区 | 波多野结衣资源 | 日韩久久在线 | 国产午夜精品一区二区三区四区 | 国产四虎影院 | 日韩精品免费一线在线观看 | 99久久精品免费看国产一区二区三区 | 色.www | 免费91麻豆精品国产自产在线观看 | 国产精品中文字幕在线观看 | 欧美一区日韩一区 | 精品欧美一区二区三区久久久 | 91丨精品丨蝌蚪丨白丝jk | 六月激情婷婷 | 色片网站在线观看 | 天天干天天弄 | 亚洲第一色 | 国产黄色高清 | www.天天草| 亚洲天堂va | 在线日韩视频 | 91精彩视频 | 久久免费视频3 | 久久久久国 | 国产精品va视频 | 精品久久国产精品 | 98久9在线 | 免费 | 国产高清日韩 | 欧美精品999 | 国产精品刺激对白麻豆99 | 五月天久久综合网 | 精品久久久久久综合 | 久久免费视频1 | 毛片二区 | 丁香花在线视频观看免费 | 久久久久成人精品 | 日韩免费三区 | 激情视频国产 | 在线观看国产www | 亚洲高清av | 一区二区视频电影在线观看 | 狠狠干.com| 久久字幕精品一区 | 干亚洲少妇 | 在线成人性视频 | 久久午夜电影院 | 五月天高清欧美mv | 福利视频一区二区 | 国产乱对白刺激视频在线观看女王 | 午夜12点 | 波多野结衣视频一区二区 | 欧美午夜理伦三级在线观看 | 亚洲精品在线播放视频 | 久草综合视频 | 欧美一级免费在线 | 国产系列 在线观看 | 摸bbb搡bbb搡bbbb | 久久公开视频 | 亚洲精品视频免费在线 | 免费看三片 | 亚洲激情综合 | 久精品视频在线 | 91一区啪爱嗯打偷拍欧美 | 免费三级在线 | 97在线视频观看 | 亚洲精品视频免费在线观看 | 国产成人精品av在线 | 国产69精品久久久久99 | 一区二区三区免费播放 | 国产精品无av码在线观看 | 久久69精品久久久久久久电影好 | 在线视频观看亚洲 | 超碰在线91 | 亚洲欧美激情精品一区二区 | 免费高清在线视频一区· | 女人高潮特级毛片 | 亚洲闷骚少妇在线观看网站 | 精品国产一区二区三区四区vr | 国产偷v国产偷∨精品视频 在线草 | 久久久999免费视频 日韩网站在线 | 国产视频在线看 | 国产在线观看二区 | 国产亚洲字幕 | 国产成人精品国内自产拍免费看 | 成人97人人超碰人人99 | 精品亚洲成a人在线观看 | 日韩在线播放欧美字幕 | 久草视频网 | 色五月成人 | 国产精品中文字幕在线 | 国产精品18久久久久久vr | 五月天天色 | 精品在线观看一区二区 | 97在线看 | 国产电影一区二区三区四区 | 欧美一级片免费播放 | 在线小视频你懂得 | 五月天中文字幕mv在线 | 视频一区亚洲 | 欧美在线视频a | 亚洲一区二区精品在线 | 青青看片| 久久无码精品一区二区三区 | 人人添人人澡人人澡人人人爽 | 精品国偷自产在线 | 成片免费观看视频 | 在线国产小视频 | 超碰在线人人爱 | 91av视频导航 | 欧美久久综合 | 天天综合网天天 | 色窝资源 | 国产精品尤物视频 | 99婷婷| 岛国av在线免费 | 国产精品久久久久久久久久久免费 | 麻豆 videos| 国产亚洲精品久久久久久无几年桃 | 中文字幕在线视频一区二区三区 | 激情丁香 | 成人黄色视 | 日韩欧三级 | 中文字幕在线视频一区二区三区 | 97在线视频免费 | 黄色三级视频片 | 黄色毛片视频免费观看中文 | 亚洲免费av在线 | av电影亚洲 | 91久久影院 | 日韩av免费在线电影 | 国产大片黄色 | 午夜婷婷综合 | 国产伦精品一区二区三区无广告 | 激情小说网站亚洲综合网 | 中文字幕在线观看视频免费 | 顶级bbw搡bbbb搡bbbb | 日产乱码一二三区别免费 | 在线看片视频 | 国产在线超碰 | 欧美日韩另类在线观看 | 国产成人精品av在线观 | 黄av免费| 在线观看第一页 | 免费a v网站| 日本久久91 | 人人要人人澡人人爽人人dvd | 在线观看视频国产 | 91久久精品一区二区三区 | 免费网站黄色 | 亚洲视频综合在线 | 中文字幕在线视频一区二区 | 国产永久免费 | 四虎国产精品免费 | 天天射天天操天天干 | 欧美一区二区伦理片 | 91色视频| 九色精品在线 | 国产视频中文字幕在线观看 | 国产又粗又猛又黄 | 精品一区二区视频 | 国产亚洲在线视频 | 伊人久久在线观看 | 麻豆国产精品va在线观看不卡 | 日韩欧美精品在线观看视频 | 免费涩涩网站 | 69国产盗摄一区二区三区五区 | 国产麻豆剧果冻传媒视频播放量 | 99亚洲国产 | 国产麻豆精品一区 | 欧美成人日韩 | 精品国产美女 | 97精品电影院 | 久久综合色综合88 | 激情小说网站亚洲综合网 |