青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評論-2670  文章-0  trackbacks-0
    對上一次的分析器進行重構之后,Combinator Parser加入了對字符串、詞法分析器以及正則表達式的新支持。功能上則添加了對于歧義和非歧義的控制。Demo代碼結構如下:

    <Library>
        <Data>
            <Data>數據結構
            <Grammar2>正則表達式源代碼
                <Combinator>文法分析器
    <Demo>例子以及可以在Visual Studio 2008下編譯的工程

    下面是執行的截圖:


    點擊這里下載。
posted on 2009-04-06 06:18 陳梓瀚(vczh) 閱讀(10246) 評論(34)  編輯 收藏 引用 所屬分類: 作品

評論:
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-04-06 17:04 | 1shou
高科技啊。。 樓主牛13  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-04-07 08:28 | shiweifu
牛人!  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載)[未登錄] 2009-04-11 00:42 | jans2002
好東西.  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-04-21 06:00 | ooseven
請教樓主一個問題。既然語法分析里的lr1算法那么好用,為什么編譯原理每一本教科書里都還保留著ll(1)的內容。是不是ll(1)在實際應用中有比lr(1)優勢的地方。還是僅僅是它比較適合初學者學習,而在實際應用中與lr比較一無是處?到底有沒有從ll(1)開始學習的必要?  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-04-21 07:47 | 陳梓瀚(vczh)
@ooseven
你不認為這樣做理解會深刻一點么  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-04-28 16:33 | 林林
請問博主,這個自動機是lair(1)? , 它是在編譯期生成還是在執行期呢?
boost::spirit是在編譯期生成還是在執行器呢?先謝謝了。  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-04-28 23:41 | 林林
呵呵,我把博主當成老師了,沒辦法水平比較差,請老師多多包涵。我還有一個問題。正則語法中大部分操作的意思與ebnf或abnf的意思是一樣的,不知道為什么ebnf或abnf要標新立異?
比如正則文法中的 *, + ,{ 、}, ?
分別可對應于上下文無關文法中的:
元素* = {元素}
元素+ = 元素,{元素}
元素{1,2} = ebnf沒有相對應,abnf中有 1*2元素
元素? = [元素]

二者的文法所表達的意思完全一樣,但是形式不統一,給開發分析器的同學增加了工作量。我想問的是這么做有什么原因嗎?  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-04-29 19:04 | 陳梓瀚(vczh)
歷史原因  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-05-13 23:47 | dingding
你很強我佩服你,但是你能不能不用unicode編碼。vc6完全打不開。  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-05-14 02:01 | 陳梓瀚(vczh)
@dingding
不能  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-05-15 00:43 | 林林
陳梓瀚兄還沒解答我的問題呢,你這個分析器的自動機是用元編程于編譯期生成的還是在執行期才生成呢?  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-05-15 04:33 | 陳梓瀚(vczh)
@林林
大部分編譯期生成,循環嵌套的由執行期生成并做垃圾收集。  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-01 04:08 | ooseven
陳大俠好:
請教大俠一個問題,我已經完成了一個初級可用的LALR(1)語法分析引擎,里面包含了詞法分析,并且設計了ide界面。正在爽的時候,卻被一個不起眼的小問題給難到了。就是當發現錯誤的時候,如何實時的與窗口界面交互?一般來說編譯器都允許出現錯誤的情況下繼續編譯,如果在dos的界面下就簡單了,一個printf語句就解決問題,但在窗口下就麻煩了。如果直接向窗口發送消息,就會引起引擎與界面代碼混在一起的引起人們詬病的設計,如果用throw那么就只允許發生一次錯誤。如果這樣的話,那錯誤恢復策略就白做了!,不知道有沒有什么好的解決方案啊!
感謝您白忙之中的恢復
敬禮!
2009/08/01
來自廈門。  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-02 02:30 | 陳梓瀚(vczh)
@ooseven
用Observer模式  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-02 04:58 | ooseven
Observer模式!馬上去學習,謝謝大俠!  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-02 05:47 | ooseven
看了一下observer模式,其實沒什么稀奇,我以前做的工程中就實現了這種思路,只不過不知道這就是observer模式。但是,這種模式不適合作為語法分析引擎與ide的交互吧?
三個理由:
1、還是要包含窗口句柄,只不過改到一個單獨的類里的觀測者鏈表中。
2、語法分析引擎不需要同時與多個窗口交互,只需要與一個窗口交互就
夠了。
3、還是免不了sendmessge,而ide要注冊這個自定義的message,然后在
這個消息里接收。
耦合得太厲害了,用了observer后簡直就是變本加厲!
不過我倒是在網上看到了一種方案,就是ide端通過創建一線程,在線程里創建命名管道監聽stderr,從而達到實時接收引擎消息的目的。這種方式雖然在ide端工作量不小,但由于其通用性強,可以封裝成一個類。更主要的是引擎端根本就直接printf 到stderr就行了。
到目前為止,這是我覺得的最好的方案了,不知道還有沒有更好的方案!  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-02 08:15 | 陳梓瀚(vczh)
@ooseven
難道監聽stderr就不是observer?  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-02 17:16 | 林林
@陳梓瀚(vczh)
observer不是處理一個消息源對多個訂閱者發行的關系模型嗎?,多個訂閱者一起預約,一旦有消息發生,就通知全部的訂閱者。可是,我這里只有一個窗口需要得到引擎的stderr消息啊?  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-04 23:13 | 陳梓瀚(vczh)
@林林
不要搞教條主義和本本主義。  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-16 16:54 | 林林
請教陳兄一個問題:
邏輯表達式結合算術表達式的bnf怎么寫啊,我寫的怎么都有沖突!
要實現的功能很簡單:
實現:
1、 a+1>0 Or b*10
2、 a*9>0 Or b
第一條語句的bnf沒問題,問題在于當第二條語句的bnf加進去的時候出現兩個沖突。
第一個移進與歸約沖突在于,當出現')'的時候有一個移進,移進到一個新的狀態,該狀態有一個歸約arithmetic_factor : '(' arithmetic_exp ')'。或者直接歸約compare_exp : arithmetic_exp

第二個歸約與歸約沖突在于,當遇到'$'的時候,是以program : arithmetic_exp歸約,還是以compare_exp : arithmetic_exp歸約。
我搞不定!請陳兄百忙之中,抽空看看啊!

%lextest
{
%skip : <\s| |//[^\r\n]+>
IF : <if>
ELSE : <else>
WHILE : <while>
BREAK : <break>
CONTINUE : <continue>
RETURN : <return>
'(' : <\(>
')' : <\)>
'*' : <\*>
'/' : <\/>
'+' : <\+>
'-' : <\->
ISEQUAL : <==>
ISNOTEQUAL : <!=>
GREATER : <\>>
GREATEROREQUAL : <>=>
LESSER : <<>
LESSEROREQUAL : <<=>
NOT : <Not>
AND : <And>
OR : <Or>
NUMBER : <[0-9]+(\.[0-9])*>
VARIABLENAME : <[a-zA-Z][a-zA-Z0-9]*>
STRING : <"[^\r\n]+">
}
%syntax
{
%terminator_type {int}
program : logic_exp
| arithmetic_exp ;


logic_exp : logic_exp OR logic_and_term
| logic_and_term;
logic_and_term : logic_and_term AND logic_not_term
| logic_not_term;
logic_not_term : NOT logic_factor
| logic_factor;
logic_factor : '(' logic_exp ')'
| compare_exp;

compare_exp : compare_exp ISEQUAL arithmetic_exp
| compare_exp ISNOTEQUAL arithmetic_exp
| compare_exp GREATER arithmetic_exp
| compare_exp GREATEROREQUAL arithmetic_exp
| compare_exp LESSER arithmetic_exp
| compare_exp LESSEROREQUAL arithmetic_exp
| arithmetic_exp;

arithmetic_exp : arithmetic_exp '+' arithmetic_term
| arithmetic_exp '-' arithmetic_term
| arithmetic_term;

arithmetic_term : arithmetic_term '*' arithmetic_factor
| arithmetic_term '/' arithmetic_factor
| arithmetic_factor;

arithmetic_factor : '(' arithmetic_exp ')'
| NUMBER
| VARIABLENAME ;
}  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-16 17:01 | 林林
改成下面這樣子之后,就只剩下上面那個移進與歸約沖突了

%lextest
{
%skip : <\s| |//[^\r\n]+>
IF : <if>
ELSE : <else>
WHILE : <while>
BREAK : <break>
CONTINUE : <continue>
RETURN : <return>
'(' : <\(>
')' : <\)>
'*' : <\*>
'/' : <\/>
'+' : <\+>
'-' : <\->
ISEQUAL : <==>
ISNOTEQUAL : <!=>
GREATER : <\>>
GREATEROREQUAL : <>=>
LESSER : <<>
LESSEROREQUAL : <<=>
NOT : <Not>
AND : <And>
OR : <Or>
NUMBER : <[0-9]+(\.[0-9])*>
VARIABLENAME : <[a-zA-Z][a-zA-Z0-9]*>
STRING : <"[^\r\n]+">
}
%syntax
{
%terminator_type {int}

program : ifstmt ;

ifstmt : IF '(' logic_exp ')' arithmetic_exp
| IF '(' logic_exp ')' arithmetic_exp ELSE arithmetic_exp
| IF '(' logic_exp ')' arithmetic_exp ELSE ifstmt ;

logic_exp : logic_exp OR logic_and_term
| logic_and_term;
logic_and_term : logic_and_term AND logic_not_term
| logic_not_term;
logic_not_term : NOT logic_factor
| logic_factor;
logic_factor : '(' logic_exp ')'
| compare_exp;

compare_exp : compare_exp ISEQUAL arithmetic_exp
| compare_exp ISNOTEQUAL arithmetic_exp
| compare_exp GREATER arithmetic_exp
| compare_exp GREATEROREQUAL arithmetic_exp
| compare_exp LESSER arithmetic_exp
| compare_exp LESSEROREQUAL arithmetic_exp
| arithmetic_exp;

arithmetic_exp : arithmetic_exp '+' arithmetic_term
| arithmetic_exp '-' arithmetic_term
| arithmetic_term;

arithmetic_term : arithmetic_term '*' arithmetic_factor
| arithmetic_term '/' arithmetic_factor
| arithmetic_factor;

arithmetic_factor : '(' arithmetic_exp ')'
| NUMBER
| VARIABLENAME ;
}  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-16 17:18 | 林林
發現問題在于 當邏輯表達式也要支持(logic_exp )優先級的時候,就會有沖突!  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-16 17:58 | 林林
經過了下面的修改,已經通過!!!,哈,高興
%lextest
{
%skip : <\s| |//[^\r\n]+>
IF : <if>
ELSE : <else>
WHILE : <while>
BREAK : <break>
CONTINUE : <continue>
RETURN : <return>
'(' : <\(>
')' : <\)>
'*' : <\*>
'/' : <\/>
'+' : <\+>
'-' : <\->
ISEQUAL : <==>
ISNOTEQUAL : <!=>
GREATER : <\>>
GREATEROREQUAL : <>=>
LESSER : <<>
LESSEROREQUAL : <<=>
NOT : <Not>
AND : <And>
OR : <Or>
NUMBER : <[0-9]+(\.[0-9])*>
VARIABLENAME : <[a-zA-Z][a-zA-Z0-9]*>
STRING : <"[^\r\n]+">
}
%syntax
{
%terminator_type {int}

program : logic_exp;

logic_exp : logic_exp OR logic_and_term
| logic_and_term;
logic_and_term : logic_and_term AND logic_not_term
| logic_not_term;
logic_not_term : NOT compare_exp
| compare_exp;

compare_exp : compare_exp ISEQUAL arithmetic_exp
| compare_exp ISNOTEQUAL arithmetic_exp
| compare_exp GREATER arithmetic_exp
| compare_exp GREATEROREQUAL arithmetic_exp
| compare_exp LESSER arithmetic_exp
| compare_exp LESSEROREQUAL arithmetic_exp
| arithmetic_exp;

arithmetic_exp : arithmetic_exp '+' arithmetic_term
| arithmetic_exp '-' arithmetic_term
| arithmetic_term;

arithmetic_term : arithmetic_term '*' arithmetic_factor
| arithmetic_term '/' arithmetic_factor
| arithmetic_factor;

arithmetic_factor : '(' logic_exp ')'
| NUMBER
| VARIABLENAME ;
}  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-16 19:25 | 林林
最新問題!
問題在于這條產生式:
statement : block
| sentence
| ifstmt
| whilestmt
| forstmt;
當加入了ifstmt,whilestmt,forstmt后出現了沖突!
可是,如果不加的話就不支持如下的語法:
if(a>0)
for(a=1 to 10) do
b = 10;
而一定要象這樣
if(a>0)
begin
for(a=1 to 10) do
b=10;
end

很不爽啊! 怎么辦!

以下是bnf文法:

%lextest
{
%skip : <\s| |//[^\r\n]+>
IF : <if>
ELSE : <else>
THEN : <then>
FOR : <for>
TO : <to>
DO : <do>
DOWNTO : <downto>
WHILE : <while>
BREAK : <break>
LOOP : <loop>
BEGIN : <begin>
END : <end>
';' : <;>
'(' : <\(>
')' : <\)>
'*' : <\*>
'/' : <\/>
'+' : <\+>
'-' : <\->
'=' : <=>
ISEQUAL : <==>
ISNOTEQUAL : <!=>
GREATER : <\>>
GREATEROREQUAL : <>=>
LESSER : <<>
LESSEROREQUAL : <<=>
NOT : <Not>
AND : <And>
OR : <Or>
NUMBER : <[0-9]+(\.[0-9])*>
VARIABLENAME : <[a-zA-Z][a-zA-Z0-9]*>
STRING : <"[^\r\n]+">
}
%syntax
{
%terminator_type {int}

program : ifstmt
|forstmt
|sentences
|whilestmt;

whilestmt : WHILE logic_exp DO circlestatement ;
forstmt : FOR assignment_exp TO logic_exp DO circlestatement
| FOR assignment_exp DOWNTO logic_exp DO circlestatement ;

circlestatement : circleblock
| circlesentence;
circleblock : BEGIN circlesentences END;
circlesentences : circlesentences circlesentence
| circlesentence ;
circlesentence : logic_exp ';'
| LOOP ';'
| BREAK ';';


ifstmt : IF '(' logic_exp ')' THEN statement
| IF '(' logic_exp ')' THEN statement ELSE statement
| IF '(' logic_exp ')' THEN statement ELSE ifstmt ;

statement : block
| sentence
| ifstmt
| whilestmt
| forstmt;
block : BEGIN sentences END;

sentences : sentences sentence
| sentence;
sentence : logic_exp ';'
| assignment_exp ';';

assignment_exp : VARIABLENAME '=' logic_exp;

logic_exp : logic_exp OR logic_and_term
| logic_and_term;
logic_and_term : logic_and_term AND logic_not_term
| logic_not_term;
logic_not_term : NOT compare_exp
| compare_exp;

compare_exp : compare_exp ISEQUAL arithmetic_exp
| compare_exp ISNOTEQUAL arithmetic_exp
| compare_exp GREATER arithmetic_exp
| compare_exp GREATEROREQUAL arithmetic_exp
| compare_exp LESSER arithmetic_exp
| compare_exp LESSEROREQUAL arithmetic_exp
| arithmetic_exp;

arithmetic_exp : arithmetic_exp '+' arithmetic_term
| arithmetic_exp '-' arithmetic_term
| arithmetic_term;

arithmetic_term : arithmetic_term '*' arithmetic_factor
| arithmetic_term '/' arithmetic_factor
| arithmetic_factor;

arithmetic_factor : '(' logic_exp ')'
| NUMBER
| STRING
| VARIABLENAME ;
}



  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-16 19:56 | 陳梓瀚(vczh)
@林林
別刷屏,你應該這么寫:
(C++)
ifstmt = if (exp) stmt else stmt //我沒有考慮那個經典問題
whilestmt = while (exp) stmt
...

stmt = (ifstmt | whilestmt) ;
stmt = { 很多stmt }
(PASCAL)
ifstmt = if exp then stmt else stmt;
whilestmt = while exp do stmt;
...
stmt = ifstmt | whilestmt
stmt = begin 很多stmt end
(PASCAL之可以省略最后一個分號)
ifstmt = if exp then stmt else stmt
whilestmt = while exp do stmt
...
stmt = ifstmt | whilestmt
stmt = begin stmt-list end
stmt-list = stmt (; stmt)* [;]  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-17 00:55 | 林林
@陳梓瀚(vczh)
問題解決了,謝謝陳兄的指導!
最終是通過%right,與優先級來解決的  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-17 00:56 | 林林
通過%right 解決了else的移進與歸約沖突
通過符號的優先級,解決了ifstmt else 與statement : ifstmt的歸約與歸約沖突  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-17 18:05 | 林林
請教陳兄:
一般的腳本引擎有沒有必要編譯成字節碼在虛擬機或簡單的堆棧機里運行?還是直接在語法樹里純解析運行就可以了,速度差很多嗎?
如果有一個腳本引擎,沒有源代碼,有沒有什么辦法得知它是純解析運行還是在編譯成字節碼然后才運行?  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-17 20:31 | 陳梓瀚(vczh)
@林林
1:一般生成指令就足夠了,至于指令是struct的數組還是vector還是字節碼那其實沒有多大區別。
2:沒有辦法。
3:速度的瓶頸一般在腳本的對象的內存分配以及調用一個名字的時候查找的過程。  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-25 03:33 | ooseven
@陳梓瀚(vczh)
經過了一個早上的優化后,現在的結果是329.032秒,雖然還是很慢,但是已經很開心了!
cpu e6600
內存 2g

經過測試,vc2008 debug下的運行時間是2秒
vc2008 release下的運行時間是0秒
天啊,太塊了!
陳兄不削拿您的虛擬機跟我比,可以理解。但拿出來跟vc比比總不會辱沒了您的身份吧:)
我說的是虛擬機,而不實您翻譯成機器碼后拿來比較哦  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2009-08-25 05:10 | 陳梓瀚(vczh)
@ooseven
我那個生成的代碼比較垃圾,肯定比debug慢。  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2011-01-09 21:52 | U2U
@ooseven
用Reactive Style來做,類似Rx那樣  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2011-01-10 02:57 | 陳梓瀚(vczh)
@U2U
combinator比rx更合適……  回復  更多評論
  
# re: C++輕量級文法分析器更新,代碼+DEMO×3(下載) 2015-10-12 03:18 | chanel replica handbags
Reactive Style應該是可以的  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲色无码播放| 欧美亚洲日本网站| 亚洲小说区图片区| 欧美激情区在线播放| 国产一区二区三区奇米久涩| 亚洲桃色在线一区| 亚洲伦理在线免费看| 欧美成人亚洲成人日韩成人| 亚洲国产精品一区| 欧美国产精品久久| 另类欧美日韩国产在线| 一区在线免费| 欧美成人午夜激情| 免费久久久一本精品久久区| 亚洲人人精品| 亚洲精品日韩在线观看| 欧美日韩国产123| 亚洲专区在线| 午夜免费在线观看精品视频| 国产午夜精品在线观看| 久久久久免费| 久久亚洲影音av资源网| 亚洲黄色影院| 亚洲另类视频| 国产精品视频你懂的| 欧美一级久久久久久久大片| 午夜天堂精品久久久久| 激情成人av| 亚洲激情国产精品| 欧美性大战xxxxx久久久| 午夜精品偷拍| 久久久久久久999| 99精品欧美一区二区三区综合在线 | 国产欧亚日韩视频| 蜜桃av一区二区| 欧美在线一二三四区| 亚洲欧美日韩一区二区| 亚洲无毛电影| 狠狠色丁香久久婷婷综合_中| 免费观看不卡av| 欧美sm视频| 亚洲欧美中文另类| 久久香蕉国产线看观看av| 99视频在线精品国自产拍免费观看| 99热这里只有成人精品国产| 国产日韩欧美电影在线观看| 欧美ed2k| 国产精品视频网| 欧美高清视频免费观看| 国产精品高潮呻吟视频| 另类国产ts人妖高潮视频| 欧美理论在线播放| 久久久久久久波多野高潮日日| 欧美va天堂在线| 欧美在线观看天堂一区二区三区| 久久综合狠狠综合久久综合88| 宅男噜噜噜66一区二区| 久久精品在线免费观看| 亚洲一区二区三区影院| 麻豆91精品| 欧美一级淫片aaaaaaa视频| 免费亚洲电影在线| 久久精品免费观看| 欧美午夜精品伦理| 亚洲第一网站| 国产一区二区三区精品久久久| 亚洲乱码国产乱码精品精天堂| 国语自产在线不卡| 亚洲永久在线观看| 亚洲天堂偷拍| 欧美大片在线观看| 美女精品在线| 黑人极品videos精品欧美裸| 亚洲女与黑人做爰| 亚洲在线免费观看| 欧美日韩久久| 亚洲国产一区二区在线| 亚洲高清资源| 久久精品人人爽| 欧美专区在线播放| 国产精品毛片一区二区三区| 亚洲人精品午夜在线观看| 亚洲第一精品久久忘忧草社区| 久久成人一区二区| 久久激情一区| 国产一区二区精品| 欧美一级播放| 久久嫩草精品久久久精品一| 国产一区二区三区日韩| 小嫩嫩精品导航| 久久精品视频导航| 国产一区二区精品| 欧美一级艳片视频免费观看| 久久成人资源| 黄色成人片子| 久久综合亚洲社区| 欧美福利影院| 一区二区免费在线视频| 欧美日韩成人免费| 99国产精品99久久久久久| 亚洲图片激情小说| 国产精品乱子乱xxxx| 欧美一区二区在线视频| 欧美日韩精品一区| 在线视频一区二区| 欧美在线视频网站| 韩国欧美一区| 免费日韩精品中文字幕视频在线| 欧美国产一区在线| 亚洲美女中文字幕| 国产精品高清在线| 欧美一区二区视频观看视频| 裸体歌舞表演一区二区| 亚洲精品少妇30p| 国产精品久久久久7777婷婷| 性色av一区二区怡红| 欧美国产1区2区| 亚洲天堂网站在线观看视频| 国产香蕉97碰碰久久人人| 久久精品日产第一区二区三区| 欧美激情第六页| 亚洲自拍偷拍色片视频| 黄色成人在线网址| 欧美本精品男人aⅴ天堂| 一区二区免费在线视频| 久久九九久久九九| 日韩视频二区| 国产欧美日韩一区| 欧美国产一区视频在线观看| 亚洲影院免费| 亚洲国产成人精品久久久国产成人一区| 一区二区三区国产在线| 国产在线一区二区三区四区| 欧美激情一区二区三区高清视频| 亚洲一区二区三区在线观看视频| 嫩模写真一区二区三区三州| 亚洲小视频在线观看| 激情综合激情| 国产精品免费看片| 欧美激情欧美激情在线五月| 欧美在线视频在线播放完整版免费观看 | 午夜亚洲福利| 亚洲精品一区二区在线观看| 久久看片网站| 亚洲午夜一区二区三区| 亚洲国产精品女人久久久| 国产精品日韩欧美大师| 欧美精品久久一区二区| 久久九九国产精品怡红院| 亚洲午夜极品| 亚洲美女在线看| 亚洲成人资源| 久久综合电影| 久久精品一区二区| 亚洲欧美激情视频在线观看一区二区三区| 亚洲第一精品福利| 韩日欧美一区| 国产欧美日本在线| 国产精品久久久久久av下载红粉 | 国外成人在线视频网站| 欧美视频在线播放| 欧美精品精品一区| 欧美成年人网| 久久午夜精品一区二区| 久久精品国产清高在天天线| 亚洲综合电影| 亚洲午夜精品久久| 亚洲视频视频在线| 99v久久综合狠狠综合久久| 国产日韩av在线播放| 国产精品v亚洲精品v日韩精品 | 亚洲精品国产日韩| 精久久久久久久久久久| 国产伊人精品| 国产亚洲精品v| 国产伪娘ts一区| 国产伦精品一区二区三区| 欧美性猛交xxxx免费看久久久| 欧美连裤袜在线视频| 欧美喷潮久久久xxxxx| 欧美日韩国语| 国产精品v亚洲精品v日韩精品| 国产精品成人一区二区| 国产精品久久久久影院色老大| 国产精品国产三级国产aⅴ入口| 欧美视频一区| 国产欧美日韩亚洲一区二区三区| 国产午夜精品理论片a级大结局| 国产日韩精品一区二区| 国产亚洲福利社区一区| 国产一区二区久久久| 黄色亚洲精品| 日韩一区二区高清| 亚洲欧美精品suv| 久久激情五月激情| 欧美国产欧美亚洲国产日韩mv天天看完整 | 国产精品午夜春色av| 国产小视频国产精品| 在线观看欧美一区| 99热在线精品观看|