• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    可嵌入C++的腳本語言的設計與實現(xiàn)

    2019-01-02 03:50:38劉永紅趙衛(wèi)東葉安勝
    關鍵詞:腳本語言運算符詞法

    鄢 濤, 曾 誼, 孟 飛, 劉永紅, 趙衛(wèi)東, 葉安勝

    (1.成都大學 信息科學與工程學院, 四川 成都 610106;2.成都大學 模式識別與智能信息處理四川省高校重點實驗室, 四川 成都 610106)

    0 引 言

    C++是一種高效率的編譯型程序設計語言,在硬件、游戲及桌面程序等領域的開發(fā)中有廣泛的應用[1-2].如果源程序代碼被更改,則程序員首先需要重新編譯代碼,然后關閉正在運行的文件,替換為編譯后的二進制文件.對于一些簡單且經(jīng)常需要變動的業(yè)務邏輯,設計人員可以使用腳本語言來實現(xiàn)邏輯功能,這樣只需重新加載腳本文件即可實現(xiàn)服務器熱更新,從而減少維護次數(shù),帶來更大效益.目前較為熱門的腳本語言有Lua、JavaScript等,功能都比較強大,但也有明顯的缺點,例如Lua實現(xiàn)面向對象比較麻煩,而JavaScript和C++相互調用非常困難[3-7].本研究討論了如何利用編譯原理的相關知識,設計并實現(xiàn)一款可嵌入C++且支持面向對象語法的腳本語言,該語言比Lua、JavaScript更貼近于C++,易學習,功能強大,能夠實現(xiàn)C++項目熱更新,可以為C++項目的開發(fā)和維護減少不必要的工作量.

    1 語言設計及語法分析

    1.1 語言設計

    語言設計中,語法的復雜程度是一個關鍵點.如果語法很少,語言的功能則會受到影響,這會讓程序員在實現(xiàn)某些功能時消耗更多精力,而如果語法很多且復雜,就會增加解釋器設計的復雜度,同時可能影響語言的運行效率.在本研究中,腳本語言的設計遵守以下原則:變量使用弱類型,以簡化字符串處理(字符串處理是很多業(yè)務邏輯的關鍵點);面向對象,方便對數(shù)據(jù)進行抽象,也方便代碼復用;支持自動垃圾回收,避免手動管理內存;支持閉包,這對腳本語言是非常重要的功能;其他語法盡量接近C++,以減少學習成本;能很方便實現(xiàn)與C++的相互調用;盡量不引入多余且用處不大的語法.

    1.2 語法介紹

    本研究依據(jù)“1.1”項下的設計原則設計出了Rose腳本語言.Rose語言被設計為弱類型語言,語法本身非常簡單且與C++高度相似,此處僅簡單介紹與C++的不同之處:

    1)變量聲明.類似于Lua語言,直接聲明標識符即可,不需要也不能加類型,變量命名規(guī)則與C++完全相同.

    2)函數(shù)及運算符重載.為了方便解釋器的開發(fā),Rose語言不支持函數(shù)重載,也不支持運算符重載.

    3)參數(shù)傳遞語義.C++中,參數(shù)傳遞有引用傳遞、值傳遞與地址傳遞3種(事實上值傳遞和地址傳遞可以認為是同一種),Rose語言只有引用傳遞.

    4)位運算.由于Rose語言的變量設計較為特殊,所以不支持位運算.

    5)部分運算符語義的調整.在C++中,〉〉和〈〈是2種用于位運算的操作符, 而Rose語言不支持位運算.此外,Rose語言中,形如“a=b;”這樣的語句,會被理解為a和b實際指向同個底層變量,而不是將b值復制給a.運算符〉〉和〈〈在Rose語言中正好可以作為復制運算符,例如,“a〉〉b;”表示將a值復制給b,而“a〈〈b;”則相反.

    6)模板.模板本身不適合腳本語言,因此Rose語言不支持模板.

    7)函數(shù)參數(shù).Rose語言中任何函數(shù)都默認可以接收任意個參數(shù),函數(shù)中通過argNum關鍵字獲取當前調用的參數(shù)個數(shù),而通過args[i]的方式獲取第i個參數(shù).

    8)函數(shù)返回值.C++中的函數(shù)返回值要么為void,要么只有一個,而Rose語言可以有任意多個返回值.

    Rose語言繼承了C++大多數(shù)優(yōu)秀的語法,屏蔽了其中不適合腳本語言且相對復雜的語法.理論上,Rose語言仍然是圖靈完備的編程語言,能做到以相對精簡的語法實現(xiàn)各種業(yè)務邏輯.

    1.3 詞法分析器設計

    詞法分析指的是讀取源代碼,并逐個掃描其中的字符,并將這些字符轉換為一系列有意義的單詞(Token).Rose語言中的Token一共有標識符、運算符與字面量3大類,其中字面量又分為字符串字面量和數(shù)值字面量2種.對于語法復雜的語言(如C++),其詞法分析器可以使用lex工具來實現(xiàn),但是Rose語言的語法遠比C++簡單,即使引入了面向對象的特性,所以Rose語言采用手工實現(xiàn)詞法分析器.

    若使用手工實現(xiàn)詞法分析器,則需要理解有窮自動機的工作機制.圖1展示了一個用于識別不同Token的自動機.

    圖1一種有窮自動機

    Token簽名如下:

    class Token

    {

    public:

    Token();

    Token(Token &&t);

    bool isIntLiteral()const;

    bool isRealLiteral()const;

    bool isStringLiteral()const;

    bool isId()const;

    bool isKeyWord()const;

    std::string toString()const;

    };

    詞法分析器設計為:

    class Lexer

    {

    Lexer();

    ~Lexer();

    void doFile(const std::string &fileName);

    void doString(const std::string &code);

    Token read();

    Token peek(int i);

    }

    其中,doFile和doString用于處理源代碼,read則用于獲取Token,peek用于預讀Token.

    函數(shù)doFile是整個Lexer的核心,其實現(xiàn)并不復雜.偽碼如下:

    while (true)

    {

    char temp = peekChar();

    if (temp == -1)

    break;

    if (isNumber(temp))

    getNumber();/*獲取數(shù)字字面量*/

    else if (isIdStart(temp))

    getId();/*獲取標識符*/

    else

    …/*其他操作*/

    }

    函數(shù)getId、getNumber等是Lexer的私有函數(shù),用于生成一個Id類或者數(shù)值類的Token.

    1.4 語法分析器的設計

    如果使用lex實現(xiàn)詞法分析器,那么語法分析器可以使用yacc實現(xiàn).由于本研究沒有使用lex,所以語法分析也采用手工實現(xiàn).

    先設計用于表示表達式與語句等的類,由于其種類太多,所以需要設計一個抽象基類,具體為:

    class SyntaxTree

    {

    SyntaxTree();

    ~SyntaxTree();

    virtual eval()=0;

    }

    這個抽象基類是一切語法樹的共同基類,其中,eval函數(shù)是Rose語言能運行的關鍵,作用是對當前語法樹求值.事實上,一切語言的運行過程,本質上都是求值.語法分析器的設計如下:

    class Parser

    {

    Parser();

    ~Parser();

    void doFile(const std::string &file);

    void doString(const std::string &code);

    SyntaxTree getFactor();

    SyntaxTree getExpr();

    SyntaxTree getState();

    }

    和詞法分析器類似,語法分析器依然可以處理文件或是字符串.函數(shù)getFactor、getExpr、getState等用于分析不同類型的語句,其中,factor指語句中的最小因子(比如一個id,也可以是由括號括起來的表達式),expr指由若干個運算符拼接而成的若干個因子,state指一條語句(即以分號結尾的一個expr,或if、while等語句).SyntaxTree類型遠遠超過這3種,任何一種運算符都有對應的SyntaxTree類.

    語法分析使用LL(K),這種方式最適合手工實現(xiàn),缺點是效率可能會降低,不過只影響編譯效率,不會影響運行效率.

    Rose語言的核心是運算符與表達式,以下代碼展示了getExpr的工作原理:

    SyntaxTree Parser::getExpr()

    {

    SyntaxTree left = getFactor();

    if (left.get() == nullptr)

    return left;

    while (true)

    {

    OperatorValue *op = findOperator(data->

    token.peek(0).getString());

    if (op == nullptr)

    break;

    left = shift(op,std::move(left));

    }

    return left;

    }

    其原理是:首先獲取一個因子,然后獲取一個雙目運算符.如果沒有獲取到,則直接返回,否則調用shift函數(shù)進行調整(因為運算符存在優(yōu)先級,所以需要調整).函數(shù)shift的實現(xiàn)如下:

    SyntaxTree Parser::doShift(OperatorValue *op, SyntaxTree left)

    {

    SyntaxTree right = getPrimary();

    while (true)

    {

    OperatorValue *op1 = findOperator(t,comma);

    if (op1&&isExpr(op, op1))

    {

    data->token.read();

    right = doShift(op1,std::move(right));

    }

    else

    break;

    }

    return op->make(std::move(left),std::move(right));

    }

    其中,isExpr用于判斷2個運算符的優(yōu)先級.如果存在優(yōu)先級差,則遞歸進行調整,這樣能保證生成的語法樹是正確的.而make是OperatorValue類的成員函數(shù),用于根據(jù)不同的運算符生成不同的語法樹.

    圖2展示了表達式1*(2+3)-5經(jīng)過以上語法分析后產(chǎn)生的語法樹.

    圖2語法樹

    2 虛擬機及相關設計

    2.1 虛擬機設計

    虛擬機的基本設計如下:

    class VirtualMachine

    {

    void setFunctions(std::vector functions);

    bool run();

    void doFile(const std::string &file);

    Object getResult();

    }

    其中,F(xiàn)unction是一個類,是若干個語句的集合.由于Rose語言沒有goto語句,所以通常情況下,這些語句是順序執(zhí)行的(if及for等也被視為語句).

    首先,通過setFunctions來為虛擬機添加函數(shù)(Rose語言的設計是基于函數(shù)的),這個函數(shù)不需要用戶調用,而是由Parser調用.函數(shù)run用于執(zhí)行腳本,執(zhí)行的入口為函數(shù)main,如果沒有函數(shù)main,則run不能執(zhí)行成功.腳本執(zhí)行的原理相對簡單,依次調用每條語句的eval函數(shù)即可,它們會自動遞歸調用下屬語句.函數(shù)doFile用于加載文件,由Parser具體進行解析.函數(shù)getResult則用于在腳本執(zhí)行完畢之后獲取運行的結果,其中,Object是表示變量的類.只有虛擬機并不足以完美運行腳本,而該虛擬機還缺少2個部分,即Object和儲存Object的容器.Object的設計如下:

    class Object

    {

    bool isNum();

    bool isString();

    bool isTable();

    void *data;

    }

    Rose語言本身是弱類型的.一個Object可以是數(shù)字、字符串或者表,甚至可以是函數(shù)(具體實現(xiàn)為函數(shù)指針),其中字符串和函數(shù)最簡單,而數(shù)字則會根據(jù)實際情況選擇使用double或者大數(shù)類來表示.表可以是數(shù)組,也可以是哈希表,也可以是對象,通過[]或者.運算符可以訪問成員,例如a[1]、a.foo()等.

    用于儲存Object的容器設計也很簡單,設計成鏈表的方式即可(考慮到垃圾回收機制).

    2.2 垃圾回收算法設計

    變量不能像C++那樣離開作用域后馬上被析構,這樣就帶來一個問題,即如何進行垃圾回收.本研究設計的垃圾回收算法如下:

    1)從最頂層函數(shù)調用(通常是main,但也可以是其他)開始一直到當前調用,將其中的局部Object進行標記.每標記一個Object,都遞歸標記它的成員(如果這個Object是一個對象或表而非字符串或數(shù)值).遞歸中若遇到已經(jīng)標記的Object則不再往下遞歸(避免死循環(huán)).

    2)掃描儲存所有Object的鏈表,移除并釋放其中未被標記的Object.這些Object是應該被回收的,因為無法通過任何方式訪問到它們.

    3)重新掃描2)中的鏈表,并將所有Object的標記取消.

    Rose語言的垃圾回收默認是自動的,即每進行一定次數(shù)的函數(shù)調用,便會進行垃圾回收.用戶也可以設置為手動回收,使用System.gc()進行.

    3 腳本語言與C++的通信

    3.1 C++調用Rose

    C++調用Rose的方法相對簡單.由于虛擬機的run函數(shù)默認是以main為入口,只需要添加一個用于調用任意函數(shù)的函數(shù):

    bool call(const std::string&name,const std::vector &args);

    其中,name是函數(shù)名,args是參數(shù).

    例如,一段C++代碼:

    VirtualMachine vm;

    vm.doFile(″test.rose″);

    vm.call(″foo″,std::vector{Object(″Hello World″)})

    其中,foo函數(shù)以Rose語言的形式實現(xiàn),代碼如下:

    foo()

    {

    System.print(args[0]);

    }

    程序運行后,在標準輸出通道中可以讀取到以下內容:

    Hello World

    如果foo有返回值,則可以通過vm.getReturnValues()獲取返回值,獲取到的結果為std::vector類型.

    此外,還可以通過以下函數(shù)獲取腳本語言中的任意全局變量:

    Object getGlobal(const std::string&name);

    例如:

    std:cout<

    其中,value是定義于Rose文件中的一個全局變量:

    value=″test″;

    3.2 Rose調用C++

    Rose對C++的調用相對更復雜一些,需要先通過虛擬機的一個成員函數(shù)進行注冊:

    void register(const std::string &name,int (*fun)(VirtualMachine *));

    其中,name是Rose調用的函數(shù)名,fun是一個函數(shù)指針,指向被注冊的函數(shù).當Rose語言中調用名為name的函數(shù)時,實際會調用fun函數(shù),在fun函數(shù)中通過VirtualMachine指針來獲取Rose語言傳遞過來的參數(shù),并處理相關業(yè)務邏輯.而fun的返回值代表了返回給Rose語言的值的個數(shù).

    例如,以下函數(shù)是用于計算若干個參數(shù)的平方和:

    int square(VirtualMachine *vm)

    {

    std::vector args=vm->getArgs();

    std::vector result;

    for(Object &t:args)

    result.push-back(Object(pow(t.toInt(),2)));

    vm->setResult(result);

    return result.size();

    }

    注冊方式為:

    vm.register(″square″,square);

    Rose語言中的調用方式為:

    foo()

    {

    a,b=square(1,2);/*多返回值*/

    print(a+b);

    }

    運行結果為:5

    4 結 語

    本研究設計并實現(xiàn)了一款可嵌入C++的腳本語言,同時為該語言實現(xiàn)了一虛擬機,使其能夠很方便地調用C++或被C++調用,并且該虛擬機也支持自動垃圾回收.這樣的腳本語言能夠讓C++項目變得更容易維護,具有現(xiàn)實的應用意義.更重要的是,它為用戶提供了一種思路去設計和創(chuàng)造編程語言及開發(fā)工具,其能夠在特定的場景和領域中發(fā)揮積極的意義.

    猜你喜歡
    腳本語言運算符詞法
    老祖?zhèn)魇诨具\算符
    科學24小時(2021年10期)2021-10-09 23:09:37
    一種面向SSC的電信增值業(yè)務的生成方法及實現(xiàn)
    應用于詞法分析器的算法分析優(yōu)化
    基于Unity3D的坦克大戰(zhàn)游戲設計與實現(xiàn)
    談對外漢語“詞法詞”教學
    淺析計算機技術在flash動畫中的應用
    基于SiPESC平臺的Python擴展模塊開發(fā)
    C++運算符重載剖析
    價值工程(2014年17期)2014-04-16 03:29:20
    表達式求值及符號推導
    2010年高考英語“相似”考題例析
    午夜福利免费观看在线| 九色国产91popny在线| 日韩 亚洲 欧美在线| 能在线免费观看的黄片| 毛片女人毛片| 国产一区二区亚洲精品在线观看| 精品久久久久久久久av| 亚洲av一区综合| 最后的刺客免费高清国语| 欧美色视频一区免费| 国产美女午夜福利| 亚洲成a人片在线一区二区| 欧美色视频一区免费| 最近在线观看免费完整版| 国产成人aa在线观看| 国产精品嫩草影院av在线观看 | 一本精品99久久精品77| 欧洲精品卡2卡3卡4卡5卡区| 国产 一区 欧美 日韩| 亚洲在线观看片| 欧美高清成人免费视频www| 久久久久国产精品人妻aⅴ院| 九九在线视频观看精品| 精品一区二区三区人妻视频| 99国产极品粉嫩在线观看| 男人舔女人下体高潮全视频| 日本精品一区二区三区蜜桃| 综合色av麻豆| 国产精品久久视频播放| 欧美xxxx性猛交bbbb| 欧美成人免费av一区二区三区| 国产视频内射| 欧美3d第一页| 日韩亚洲欧美综合| 亚洲人成电影免费在线| 日韩 亚洲 欧美在线| 热99re8久久精品国产| 又爽又黄无遮挡网站| 中文字幕人妻熟人妻熟丝袜美| 麻豆一二三区av精品| 在线十欧美十亚洲十日本专区| 九九在线视频观看精品| 大型黄色视频在线免费观看| 日本与韩国留学比较| 18禁黄网站禁片免费观看直播| 色在线成人网| 一区福利在线观看| 在线免费观看的www视频| 亚洲精品成人久久久久久| 一区福利在线观看| 99在线人妻在线中文字幕| 嫩草影院新地址| 嫁个100分男人电影在线观看| 很黄的视频免费| 国产精品永久免费网站| 日日夜夜操网爽| 亚洲最大成人中文| 国产精品久久久久久久电影| 嫩草影视91久久| 亚洲片人在线观看| 欧美日韩中文字幕国产精品一区二区三区| 毛片一级片免费看久久久久 | 露出奶头的视频| 午夜亚洲福利在线播放| 国产一区二区三区在线臀色熟女| 欧美日韩中文字幕国产精品一区二区三区| 最近视频中文字幕2019在线8| 黄色视频,在线免费观看| 天美传媒精品一区二区| 亚洲精品久久国产高清桃花| 久久99热6这里只有精品| 精品人妻一区二区三区麻豆 | 婷婷六月久久综合丁香| 黄片小视频在线播放| 亚洲av成人av| 免费大片18禁| 免费搜索国产男女视频| 成年人黄色毛片网站| 亚洲av免费高清在线观看| 精品人妻熟女av久视频| 非洲黑人性xxxx精品又粗又长| 老司机福利观看| 波多野结衣巨乳人妻| 女同久久另类99精品国产91| 亚洲乱码一区二区免费版| 97人妻精品一区二区三区麻豆| 91在线精品国自产拍蜜月| 亚洲一区高清亚洲精品| 婷婷精品国产亚洲av| 亚洲成人精品中文字幕电影| 国产野战对白在线观看| 日韩人妻高清精品专区| 精品一区二区三区视频在线观看免费| 亚洲 国产 在线| 美女大奶头视频| 欧美黄色片欧美黄色片| 久久人人爽人人爽人人片va | 精品人妻熟女av久视频| 久久精品国产99精品国产亚洲性色| 免费人成在线观看视频色| 变态另类成人亚洲欧美熟女| av中文乱码字幕在线| 国产真实伦视频高清在线观看 | 国产精品一及| 日韩欧美在线二视频| 丰满人妻熟妇乱又伦精品不卡| 天堂影院成人在线观看| 在线国产一区二区在线| 免费av不卡在线播放| 国产三级在线视频| 日本精品一区二区三区蜜桃| 一个人观看的视频www高清免费观看| 51国产日韩欧美| 18+在线观看网站| 日韩欧美精品v在线| av视频在线观看入口| 丰满人妻熟妇乱又伦精品不卡| 久久精品91蜜桃| 99在线人妻在线中文字幕| 国内精品久久久久久久电影| 脱女人内裤的视频| 一个人看的www免费观看视频| 亚洲 欧美 日韩 在线 免费| 国产一级毛片七仙女欲春2| 午夜福利在线观看免费完整高清在 | 国产成人av教育| 天堂影院成人在线观看| 国产伦在线观看视频一区| 久久久久久九九精品二区国产| 天堂动漫精品| 亚洲,欧美精品.| 久久这里只有精品中国| 色在线成人网| 国产爱豆传媒在线观看| 亚洲经典国产精华液单 | 国产精品爽爽va在线观看网站| 国产三级黄色录像| 国产黄a三级三级三级人| 欧美一区二区亚洲| 成人午夜高清在线视频| 久久亚洲真实| 男插女下体视频免费在线播放| 1024手机看黄色片| bbb黄色大片| 很黄的视频免费| 国产69精品久久久久777片| 免费看日本二区| 亚洲美女搞黄在线观看 | 亚洲成人精品中文字幕电影| 国产精品亚洲一级av第二区| 日本黄色视频三级网站网址| 欧美日韩综合久久久久久 | 琪琪午夜伦伦电影理论片6080| 91午夜精品亚洲一区二区三区 | 亚洲一区二区三区色噜噜| 日韩人妻高清精品专区| 色在线成人网| 黄色女人牲交| 亚洲18禁久久av| 亚洲精品粉嫩美女一区| 久久精品国产清高在天天线| 日韩欧美三级三区| 90打野战视频偷拍视频| av在线天堂中文字幕| 亚洲aⅴ乱码一区二区在线播放| 亚洲欧美日韩卡通动漫| 欧美成人一区二区免费高清观看| 国产亚洲精品久久久com| 欧美一区二区国产精品久久精品| 精品久久国产蜜桃| 综合色av麻豆| 淫秽高清视频在线观看| 一区二区三区四区激情视频 | 十八禁人妻一区二区| 精品一区二区三区视频在线| 桃色一区二区三区在线观看| 亚洲国产精品久久男人天堂| 亚洲在线自拍视频| 亚洲无线观看免费| 免费av观看视频| 成人永久免费在线观看视频| 少妇熟女aⅴ在线视频| 国产毛片a区久久久久| 在线a可以看的网站| 久久香蕉精品热| 女同久久另类99精品国产91| 免费在线观看影片大全网站| 久久久久亚洲av毛片大全| 好男人电影高清在线观看| 日本五十路高清| 日韩欧美一区二区三区在线观看| 美女高潮喷水抽搐中文字幕| 我要看日韩黄色一级片| 免费看美女性在线毛片视频| 天天躁日日操中文字幕| 简卡轻食公司| 国产精品亚洲av一区麻豆| 国产久久久一区二区三区| 夜夜躁狠狠躁天天躁| 国产伦一二天堂av在线观看| 三级国产精品欧美在线观看| 一进一出好大好爽视频| 欧美日韩中文字幕国产精品一区二区三区| 国产高清有码在线观看视频| 久久九九热精品免费| 久久99热6这里只有精品| 久久精品国产亚洲av天美| 免费观看精品视频网站| 欧美日韩国产亚洲二区| .国产精品久久| 成人毛片a级毛片在线播放| 美女免费视频网站| 亚洲18禁久久av| 一级毛片久久久久久久久女| 十八禁人妻一区二区| 在线看三级毛片| 黄色丝袜av网址大全| 中文字幕av在线有码专区| 国语自产精品视频在线第100页| 国产免费一级a男人的天堂| 成人三级黄色视频| 长腿黑丝高跟| 岛国在线免费视频观看| 一本一本综合久久| 亚洲一区高清亚洲精品| 观看免费一级毛片| 9191精品国产免费久久| 国产老妇女一区| 2021天堂中文幕一二区在线观| 99久久精品热视频| 久久久精品欧美日韩精品| 久久午夜福利片| bbb黄色大片| 久久精品国产亚洲av天美| 国产激情偷乱视频一区二区| 久久久久免费精品人妻一区二区| 欧美日韩瑟瑟在线播放| 日韩欧美 国产精品| 日韩中字成人| 黄片小视频在线播放| 免费观看人在逋| 国产欧美日韩一区二区精品| 人妻久久中文字幕网| 日日摸夜夜添夜夜添小说| 国产乱人伦免费视频| 日韩欧美 国产精品| 久久亚洲精品不卡| 色播亚洲综合网| 国产av一区在线观看免费| 一区二区三区激情视频| 欧美精品国产亚洲| 国产欧美日韩一区二区精品| 真人做人爱边吃奶动态| 免费看a级黄色片| 一个人免费在线观看电影| 国产成人欧美在线观看| 日日摸夜夜添夜夜添av毛片 | 波多野结衣巨乳人妻| 又黄又爽又免费观看的视频| .国产精品久久| av国产免费在线观看| or卡值多少钱| 18禁黄网站禁片午夜丰满| 窝窝影院91人妻| 91字幕亚洲| 色哟哟·www| 18美女黄网站色大片免费观看| 成人性生交大片免费视频hd| 国产日本99.免费观看| 丰满人妻熟妇乱又伦精品不卡| 国产亚洲精品综合一区在线观看| 精品国产亚洲在线| 国产不卡一卡二| a级毛片a级免费在线| 男人的好看免费观看在线视频| 老司机午夜福利在线观看视频| 尤物成人国产欧美一区二区三区| 中文在线观看免费www的网站| 搞女人的毛片| 国内精品美女久久久久久| 色综合亚洲欧美另类图片| 一个人免费在线观看电影| 男插女下体视频免费在线播放| 午夜福利成人在线免费观看| 在线观看舔阴道视频| 国产精品亚洲一级av第二区| 精品久久久久久久久亚洲 | 国产欧美日韩精品亚洲av| 欧美成人a在线观看| 国产日本99.免费观看| 欧美一级a爱片免费观看看| 国产精品1区2区在线观看.| 精华霜和精华液先用哪个| 色综合站精品国产| 好男人在线观看高清免费视频| 在线播放国产精品三级| 99国产精品一区二区三区| 午夜福利在线在线| 一二三四社区在线视频社区8| 一区二区三区免费毛片| 一卡2卡三卡四卡精品乱码亚洲| 日韩欧美在线乱码| 色哟哟哟哟哟哟| 高清日韩中文字幕在线| 一边摸一边抽搐一进一小说| 51国产日韩欧美| 在线播放无遮挡| 亚洲国产精品999在线| 岛国在线免费视频观看| 亚洲不卡免费看| 欧美日韩综合久久久久久 | 国产高清视频在线播放一区| 亚洲熟妇中文字幕五十中出| 在现免费观看毛片| 欧美另类亚洲清纯唯美| 国产伦精品一区二区三区四那| 午夜两性在线视频| 99热只有精品国产| 听说在线观看完整版免费高清| xxxwww97欧美| 亚洲午夜理论影院| 午夜福利18| 亚洲七黄色美女视频| 欧美黄色淫秽网站| 欧美绝顶高潮抽搐喷水| 2021天堂中文幕一二区在线观| 美女xxoo啪啪120秒动态图 | 麻豆久久精品国产亚洲av| 久久久成人免费电影| 色播亚洲综合网| 亚洲精品乱码久久久v下载方式| 日韩精品中文字幕看吧| 最新中文字幕久久久久| 色播亚洲综合网| 色尼玛亚洲综合影院| 精品不卡国产一区二区三区| 高清日韩中文字幕在线| 给我免费播放毛片高清在线观看| 少妇的逼水好多| 日本五十路高清| 亚洲黑人精品在线| 啦啦啦观看免费观看视频高清| 亚洲成人久久性| 亚洲国产欧洲综合997久久,| 国产真实乱freesex| 99久久精品一区二区三区| 国产毛片a区久久久久| 一级a爱片免费观看的视频| 免费大片18禁| 欧美丝袜亚洲另类 | 亚洲男人的天堂狠狠| 搞女人的毛片| 亚洲国产精品sss在线观看| 淫秽高清视频在线观看| 三级毛片av免费| 中文字幕高清在线视频| 动漫黄色视频在线观看| 国产精品久久久久久精品电影| 亚洲aⅴ乱码一区二区在线播放| 亚洲成a人片在线一区二区| 中文字幕高清在线视频| 大型黄色视频在线免费观看| 亚洲国产欧美人成| 亚洲人与动物交配视频| 高潮久久久久久久久久久不卡| 麻豆成人av在线观看| 精品国产三级普通话版| 69人妻影院| 麻豆av噜噜一区二区三区| 一本综合久久免费| 午夜影院日韩av| 美女xxoo啪啪120秒动态图 | 国产成+人综合+亚洲专区| 午夜福利高清视频| 亚洲熟妇中文字幕五十中出| 久久九九热精品免费| 精品久久久久久久久久免费视频| 不卡一级毛片| 麻豆国产97在线/欧美| 亚洲欧美日韩高清专用| 在线观看舔阴道视频| 中文字幕人成人乱码亚洲影| a级毛片a级免费在线| 老师上课跳d突然被开到最大视频 久久午夜综合久久蜜桃 | 亚洲精品一区av在线观看| 日韩欧美免费精品| 精品国内亚洲2022精品成人| 欧美bdsm另类| 麻豆av噜噜一区二区三区| 身体一侧抽搐| 亚洲狠狠婷婷综合久久图片| 欧美日韩亚洲国产一区二区在线观看| 国产精品乱码一区二三区的特点| 亚洲精品粉嫩美女一区| 高清在线国产一区| 国产野战对白在线观看| 麻豆国产av国片精品| 欧美日韩瑟瑟在线播放| 国产成人福利小说| 国产高清三级在线| 午夜a级毛片| 久久久国产成人精品二区| 99视频精品全部免费 在线| 亚洲av第一区精品v没综合| 日日夜夜操网爽| 久久中文看片网| 免费电影在线观看免费观看| 一边摸一边抽搐一进一小说| 99久久九九国产精品国产免费| 成人特级av手机在线观看| 亚洲国产精品久久男人天堂| 一区二区三区高清视频在线| 久久久久久久久大av| 久久久色成人| 国产人妻一区二区三区在| 99精品久久久久人妻精品| 日本成人三级电影网站| 亚洲av第一区精品v没综合| 好看av亚洲va欧美ⅴa在| a级毛片免费高清观看在线播放| 蜜桃久久精品国产亚洲av| 亚洲国产精品999在线| 三级毛片av免费| 亚洲精品在线美女| 欧美激情在线99| 午夜日韩欧美国产| 精品午夜福利在线看| 国产69精品久久久久777片| 国产一级毛片七仙女欲春2| 老鸭窝网址在线观看| 少妇熟女aⅴ在线视频| 国产亚洲欧美在线一区二区| 99热精品在线国产| www.999成人在线观看| 级片在线观看| 欧美午夜高清在线| 国产精品永久免费网站| 搡女人真爽免费视频火全软件 | 看黄色毛片网站| 亚洲av成人av| 天堂网av新在线| 午夜a级毛片| 国产美女午夜福利| 国产精品一区二区性色av| 91久久精品国产一区二区成人| 亚洲无线观看免费| 成年女人永久免费观看视频| 观看免费一级毛片| 黄色女人牲交| 精品日产1卡2卡| 久久人人精品亚洲av| 免费一级毛片在线播放高清视频| 麻豆av噜噜一区二区三区| 熟妇人妻久久中文字幕3abv| 美女高潮喷水抽搐中文字幕| 精品久久久久久久久久久久久| 亚洲片人在线观看| 亚洲av不卡在线观看| av在线观看视频网站免费| 精品人妻熟女av久视频| 精品一区二区三区人妻视频| 一边摸一边抽搐一进一小说| 在线观看66精品国产| 女人十人毛片免费观看3o分钟| 人人妻人人看人人澡| 床上黄色一级片| 国产成人a区在线观看| 色综合亚洲欧美另类图片| 欧美3d第一页| 成人特级黄色片久久久久久久| 午夜老司机福利剧场| 久久国产精品影院| 午夜老司机福利剧场| 黄色日韩在线| 欧美在线一区亚洲| 亚洲国产精品合色在线| 我要搜黄色片| 欧美日韩国产亚洲二区| 国产亚洲欧美在线一区二区| 午夜视频国产福利| 亚洲av日韩精品久久久久久密| 国产激情偷乱视频一区二区| 亚洲内射少妇av| 国产在视频线在精品| avwww免费| 成人亚洲精品av一区二区| eeuss影院久久| 99久久精品国产亚洲精品| 成人国产一区最新在线观看| 中国美女看黄片| 国产精品人妻久久久久久| 天堂动漫精品| 国产色爽女视频免费观看| 精品一区二区免费观看| 高清在线国产一区| 日本 av在线| 婷婷丁香在线五月| 日韩人妻高清精品专区| 精品人妻熟女av久视频| 一进一出抽搐gif免费好疼| 免费搜索国产男女视频| 老司机深夜福利视频在线观看| 亚洲内射少妇av| 久久久久久久亚洲中文字幕 | 麻豆成人午夜福利视频| 老熟妇乱子伦视频在线观看| 久久久久久国产a免费观看| 在线播放国产精品三级| 一区二区三区高清视频在线| 欧美zozozo另类| 天天一区二区日本电影三级| 日本a在线网址| 亚洲欧美日韩东京热| 国内毛片毛片毛片毛片毛片| 黄色一级大片看看| 亚洲精品影视一区二区三区av| h日本视频在线播放| 色播亚洲综合网| 国产老妇女一区| 国产精品嫩草影院av在线观看 | 亚洲,欧美,日韩| 国产精品自产拍在线观看55亚洲| 久久久久免费精品人妻一区二区| 国内毛片毛片毛片毛片毛片| 9191精品国产免费久久| 一夜夜www| 国产精品乱码一区二三区的特点| 精品免费久久久久久久清纯| 网址你懂的国产日韩在线| 一个人免费在线观看电影| 欧美+日韩+精品| 两个人视频免费观看高清| 日韩国内少妇激情av| 18禁在线播放成人免费| 91九色精品人成在线观看| 狠狠狠狠99中文字幕| 国产乱人伦免费视频| 亚洲欧美清纯卡通| ponron亚洲| 99久久精品国产亚洲精品| 色在线成人网| 亚洲av电影不卡..在线观看| 丰满的人妻完整版| 精品国内亚洲2022精品成人| 午夜福利免费观看在线| 伊人久久精品亚洲午夜| 国产精品女同一区二区软件 | 亚洲av五月六月丁香网| 一夜夜www| 欧美激情久久久久久爽电影| 观看美女的网站| 搞女人的毛片| 天天躁日日操中文字幕| 99久久九九国产精品国产免费| 99riav亚洲国产免费| 身体一侧抽搐| 无人区码免费观看不卡| 亚洲欧美日韩无卡精品| 欧美成人免费av一区二区三区| 99久久精品热视频| 国产色爽女视频免费观看| 一二三四社区在线视频社区8| 免费观看精品视频网站| 精品久久国产蜜桃| 国产av一区在线观看免费| 国产蜜桃级精品一区二区三区| 91麻豆av在线| 午夜福利在线在线| 又爽又黄无遮挡网站| www.色视频.com| 一卡2卡三卡四卡精品乱码亚洲| 免费看a级黄色片| 欧美成人免费av一区二区三区| 精品人妻视频免费看| 直男gayav资源| 亚州av有码| 国产成人a区在线观看| www.999成人在线观看| 国产精品人妻久久久久久| 日本免费a在线| 日韩精品中文字幕看吧| 久久午夜福利片| 啦啦啦韩国在线观看视频| 长腿黑丝高跟| 99久久99久久久精品蜜桃| 久久6这里有精品| 国产亚洲精品久久久久久毛片| 欧美成人一区二区免费高清观看| 在线a可以看的网站| 成人av在线播放网站| 免费看a级黄色片| 国产精品伦人一区二区| 最新中文字幕久久久久| 成人美女网站在线观看视频| 午夜福利免费观看在线| 搞女人的毛片| 18美女黄网站色大片免费观看| 每晚都被弄得嗷嗷叫到高潮| 精品无人区乱码1区二区| 中文字幕人成人乱码亚洲影| 一本精品99久久精品77| 日本 av在线| 亚洲国产精品久久男人天堂| 久久99热这里只有精品18| 国产高清三级在线| 欧美一区二区国产精品久久精品| 亚洲,欧美,日韩| 嫩草影院入口| 国产一级毛片七仙女欲春2| 午夜精品在线福利| 亚洲中文字幕一区二区三区有码在线看| 午夜精品在线福利| 好男人电影高清在线观看| 两人在一起打扑克的视频| 97人妻精品一区二区三区麻豆|