久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的遞歸下降分析器

瀏覽:3日期:2022-07-15 15:10:50

問(wèn)題

你想根據(jù)一組語(yǔ)法規(guī)則解析文本并執(zhí)行命令,或者構(gòu)造一個(gè)代表輸入的抽象語(yǔ)法樹(shù)。 如果語(yǔ)法非常簡(jiǎn)單,你可以不去使用一些框架,而是自己寫這個(gè)解析器。

解決方案

在這個(gè)問(wèn)題中,我們集中討論根據(jù)特殊語(yǔ)法去解析文本的問(wèn)題。 為了這樣做,你首先要以BNF或者EBNF形式指定一個(gè)標(biāo)準(zhǔn)語(yǔ)法。 比如,一個(gè)簡(jiǎn)單數(shù)學(xué)表達(dá)式語(yǔ)法可能像下面這樣:

expr ::= expr + term | expr - term | term

term ::= term * factor | term / factor | factor

factor ::= ( expr ) | NUM

或者,以EBNF形式:

expr ::= term { (+|-) term }*

term ::= factor { (*|/) factor }*

factor ::= ( expr ) | NUM

在EBNF中,被包含在 {...}* 中的規(guī)則是可選的。*代表0次或多次重復(fù)(跟正則表達(dá)式中意義是一樣的)。

現(xiàn)在,如果你對(duì)BNF的工作機(jī)制還不是很明白的話,就把它當(dāng)做是一組左右符號(hào)可相互替換的規(guī)則。 一般來(lái)講,解析的原理就是你利用BNF完成多個(gè)替換和擴(kuò)展以匹配輸入文本和語(yǔ)法規(guī)則。 為了演示,假設(shè)你正在解析形如 3 + 4 * 5 的表達(dá)式。 這個(gè)表達(dá)式先要通過(guò)使用2.18節(jié)中介紹的技術(shù)分解為一組令牌流。 結(jié)果可能是像下列這樣的令牌序列:

NUM + NUM * NUM

在此基礎(chǔ)上, 解析動(dòng)作會(huì)試著去通過(guò)替換操作匹配語(yǔ)法到輸入令牌:

exprexpr ::= term { (+|-) term }*expr ::= factor { (*|/) factor }* { (+|-) term }*expr ::= NUM { (*|/) factor }* { (+|-) term }*expr ::= NUM { (+|-) term }*expr ::= NUM + term { (+|-) term }*expr ::= NUM + factor { (*|/) factor }* { (+|-) term }*expr ::= NUM + NUM { (*|/) factor}* { (+|-) term }*expr ::= NUM + NUM * factor { (*|/) factor }* { (+|-) term }*expr ::= NUM + NUM * NUM { (*|/) factor }* { (+|-) term }*expr ::= NUM + NUM * NUM { (+|-) term }*expr ::= NUM + NUM * NUM

下面所有的解析步驟可能需要花點(diǎn)時(shí)間弄明白,但是它們?cè)矶际遣檎逸斎氩⒃囍テヅ湔Z(yǔ)法規(guī)則。 第一個(gè)輸入令牌是NUM,因此替換首先會(huì)匹配那個(gè)部分。 一旦匹配成功,就會(huì)進(jìn)入下一個(gè)令牌+,以此類推。 當(dāng)已經(jīng)確定不能匹配下一個(gè)令牌的時(shí)候,右邊的部分(比如 { (*/) factor }* )就會(huì)被清理掉。 在一個(gè)成功的解析中,整個(gè)右邊部分會(huì)完全展開(kāi)來(lái)匹配輸入令牌流。

有了前面的知識(shí)背景,下面我們舉一個(gè)簡(jiǎn)單示例來(lái)展示如何構(gòu)建一個(gè)遞歸下降表達(dá)式求值程序:

#!/usr/bin/env python# -*- encoding: utf-8 -*-'''Topic: 下降解析器Desc :'''import reimport collections# Token specificationNUM = r’(?P<NUM>d+)’PLUS = r’(?P<PLUS>+)’MINUS = r’(?P<MINUS>-)’TIMES = r’(?P<TIMES>*)’DIVIDE = r’(?P<DIVIDE>/)’LPAREN = r’(?P<LPAREN>()’RPAREN = r’(?P<RPAREN>))’WS = r’(?P<WS>s+)’master_pat = re.compile(’|’.join([NUM, PLUS, MINUS, TIMES, DIVIDE, LPAREN, RPAREN, WS]))# TokenizerToken = collections.namedtuple(’Token’, [’type’, ’value’])def generate_tokens(text): scanner = master_pat.scanner(text) for m in iter(scanner.match, None): tok = Token(m.lastgroup, m.group()) if tok.type != ’WS’: yield tok# Parserclass ExpressionEvaluator: ’’’ Implementation of a recursive descent parser. Each method implements a single grammar rule. Use the ._accept() method to test and accept the current lookahead token. Use the ._expect() method to exactly match and discard the next token on on the input (or raise a SyntaxError if it doesn’t match). ’’’ def parse(self, text): self.tokens = generate_tokens(text) self.tok = None # Last symbol consumed self.nexttok = None # Next symbol tokenized self._advance() # Load first lookahead token return self.expr() def _advance(self): ’Advance one token ahead’ self.tok, self.nexttok = self.nexttok, next(self.tokens, None) def _accept(self, toktype): ’Test and consume the next token if it matches toktype’ if self.nexttok and self.nexttok.type == toktype: self._advance() return True else: return False def _expect(self, toktype): ’Consume next token if it matches toktype or raise SyntaxError’ if not self._accept(toktype): raise SyntaxError(’Expected ’ + toktype) # Grammar rules follow def expr(self): 'expression ::= term { (’+’|’-’) term }*' exprval = self.term() while self._accept(’PLUS’) or self._accept(’MINUS’): op = self.tok.type right = self.term() if op == ’PLUS’:exprval += right elif op == ’MINUS’:exprval -= right return exprval def term(self): 'term ::= factor { (’*’|’/’) factor }*' termval = self.factor() while self._accept(’TIMES’) or self._accept(’DIVIDE’): op = self.tok.type right = self.factor() if op == ’TIMES’:termval *= right elif op == ’DIVIDE’:termval /= right return termval def factor(self): 'factor ::= NUM | ( expr )' if self._accept(’NUM’): return int(self.tok.value) elif self._accept(’LPAREN’): exprval = self.expr() self._expect(’RPAREN’) return exprval else: raise SyntaxError(’Expected NUMBER or LPAREN’)def descent_parser(): e = ExpressionEvaluator() print(e.parse(’2’)) print(e.parse(’2 + 3’)) print(e.parse(’2 + 3 * 4’)) print(e.parse(’2 + (3 + 4) * 5’)) # print(e.parse(’2 + (3 + * 4)’)) # Traceback (most recent call last): # File '<stdin>', line 1, in <module> # File 'exprparse.py', line 40, in parse # return self.expr() # File 'exprparse.py', line 67, in expr # right = self.term() # File 'exprparse.py', line 77, in term # termval = self.factor() # File 'exprparse.py', line 93, in factor # exprval = self.expr() # File 'exprparse.py', line 67, in expr # right = self.term() # File 'exprparse.py', line 77, in term # termval = self.factor() # File 'exprparse.py', line 97, in factor # raise SyntaxError('Expected NUMBER or LPAREN') # SyntaxError: Expected NUMBER or LPARENif __name__ == ’__main__’: descent_parser()

討論

文本解析是一個(gè)很大的主題, 一般會(huì)占用學(xué)生學(xué)習(xí)編譯課程時(shí)剛開(kāi)始的三周時(shí)間。 如果你在找尋關(guān)于語(yǔ)法,解析算法等相關(guān)的背景知識(shí)的話,你應(yīng)該去看一下編譯器書籍。 很顯然,關(guān)于這方面的內(nèi)容太多,不可能在這里全部展開(kāi)。

盡管如此,編寫一個(gè)遞歸下降解析器的整體思路是比較簡(jiǎn)單的。 開(kāi)始的時(shí)候,你先獲得所有的語(yǔ)法規(guī)則,然后將其轉(zhuǎn)換為一個(gè)函數(shù)或者方法。 因此如果你的語(yǔ)法類似這樣:

expr ::= term { (’+’|’-’) term }*term ::= factor { (’*’|’/’) factor }*factor ::= ’(’ expr ’)’ | NUM

你應(yīng)該首先將它們轉(zhuǎn)換成一組像下面這樣的方法:

class ExpressionEvaluator: ... def expr(self): ... def term(self): ... def factor(self): ...

每個(gè)方法要完成的任務(wù)很簡(jiǎn)單 - 它必須從左至右遍歷語(yǔ)法規(guī)則的每一部分,處理每個(gè)令牌。 從某種意義上講,方法的目的就是要么處理完語(yǔ)法規(guī)則,要么產(chǎn)生一個(gè)語(yǔ)法錯(cuò)誤。 為了這樣做,需采用下面的這些實(shí)現(xiàn)方法:

如果規(guī)則中的下個(gè)符號(hào)是另外一個(gè)語(yǔ)法規(guī)則的名字(比如term或factor),就簡(jiǎn)單的調(diào)用同名的方法即可。 這就是該算法中”下降”的由來(lái) - 控制下降到另一個(gè)語(yǔ)法規(guī)則中去。 有時(shí)候規(guī)則會(huì)調(diào)用已經(jīng)執(zhí)行的方法(比如,在 factor ::= ’(’expr ’)’ 中對(duì)expr的調(diào)用)。 這就是算法中”遞歸”的由來(lái)。 如果規(guī)則中下一個(gè)符號(hào)是個(gè)特殊符號(hào)(比如(),你得查找下一個(gè)令牌并確認(rèn)是一個(gè)精確匹配)。 如果不匹配,就產(chǎn)生一個(gè)語(yǔ)法錯(cuò)誤。這一節(jié)中的 _expect() 方法就是用來(lái)做這一步的。 如果規(guī)則中下一個(gè)符號(hào)為一些可能的選擇項(xiàng)(比如 + 或 -), 你必須對(duì)每一種可能情況檢查下一個(gè)令牌,只有當(dāng)它匹配一個(gè)的時(shí)候才能繼續(xù)。 這也是本節(jié)示例中 _accept() 方法的目的。 它相當(dāng)于_expect()方法的弱化版本,因?yàn)槿绻粋€(gè)匹配找到了它會(huì)繼續(xù), 但是如果沒(méi)找到,它不會(huì)產(chǎn)生錯(cuò)誤而是回滾(允許后續(xù)的檢查繼續(xù)進(jìn)行)。 對(duì)于有重復(fù)部分的規(guī)則(比如在規(guī)則表達(dá)式 ::= term { (’+’|’-’) term }* 中), 重復(fù)動(dòng)作通過(guò)一個(gè)while循環(huán)來(lái)實(shí)現(xiàn)。 循環(huán)主體會(huì)收集或處理所有的重復(fù)元素直到?jīng)]有其他元素可以找到。 一旦整個(gè)語(yǔ)法規(guī)則處理完成,每個(gè)方法會(huì)返回某種結(jié)果給調(diào)用者。 這就是在解析過(guò)程中值是怎樣累加的原理。 比如,在表達(dá)式求值程序中,返回值代表表達(dá)式解析后的部分結(jié)果。 最后所有值會(huì)在最頂層的語(yǔ)法規(guī)則方法中合并起來(lái)。

盡管向你演示的是一個(gè)簡(jiǎn)單的例子,遞歸下降解析器可以用來(lái)實(shí)現(xiàn)非常復(fù)雜的解析。 比如,Python語(yǔ)言本身就是通過(guò)一個(gè)遞歸下降解析器去解釋的。 如果你對(duì)此感興趣,你可以通過(guò)查看Python源碼文件Grammar/Grammar來(lái)研究下底層語(yǔ)法機(jī)制。 看完你會(huì)發(fā)現(xiàn),通過(guò)手動(dòng)方式去實(shí)現(xiàn)一個(gè)解析器其實(shí)會(huì)有很多的局限和不足之處。

其中一個(gè)局限就是它們不能被用于包含任何左遞歸的語(yǔ)法規(guī)則中。比如,假如你需要翻譯下面這樣一個(gè)規(guī)則:

items ::= items ’,’ item | item

為了這樣做,你可能會(huì)像下面這樣使用 items() 方法:

def items(self): itemsval = self.items() if itemsval and self._accept(’,’): itemsval.append(self.item()) else: itemsval = [ self.item() ]

唯一的問(wèn)題是這個(gè)方法根本不能工作,事實(shí)上,它會(huì)產(chǎn)生一個(gè)無(wú)限遞歸錯(cuò)誤。

關(guān)于語(yǔ)法規(guī)則本身你可能也會(huì)碰到一些棘手的問(wèn)題。 比如,你可能想知道下面這個(gè)簡(jiǎn)單扼語(yǔ)法是否表述得當(dāng):

expr ::= factor { (’+’|’-’|’*’|’/’) factor }*factor ::= ’(’ expression ’)’ | NUM

這個(gè)語(yǔ)法看上去沒(méi)啥問(wèn)題,但是它卻不能察覺(jué)到標(biāo)準(zhǔn)四則運(yùn)算中的運(yùn)算符優(yōu)先級(jí)。 比如,表達(dá)式 '3 + 4 * 5' 會(huì)得到35而不是期望的23. 分開(kāi)使用”expr”和”term”規(guī)則可以讓它正確的工作。

對(duì)于復(fù)雜的語(yǔ)法,你最好是選擇某個(gè)解析工具比如PyParsing或者是PLY。 下面是使用PLY來(lái)重寫表達(dá)式求值程序的代碼:

from ply.lex import lexfrom ply.yacc import yacc# Token listtokens = [ ’NUM’, ’PLUS’, ’MINUS’, ’TIMES’, ’DIVIDE’, ’LPAREN’, ’RPAREN’ ]# Ignored characterst_ignore = ’ tn’# Token specifications (as regexs)t_PLUS = r’+’t_MINUS = r’-’t_TIMES = r’*’t_DIVIDE = r’/’t_LPAREN = r’(’t_RPAREN = r’)’# Token processing functionsdef t_NUM(t): r’d+’ t.value = int(t.value) return t# Error handlerdef t_error(t): print(’Bad character: {!r}’.format(t.value[0])) t.skip(1)# Build the lexerlexer = lex()# Grammar rules and handler functionsdef p_expr(p): ’’’ expr : expr PLUS term | expr MINUS term ’’’ if p[2] == ’+’: p[0] = p[1] + p[3] elif p[2] == ’-’: p[0] = p[1] - p[3]def p_expr_term(p): ’’’ expr : term ’’’ p[0] = p[1]def p_term(p): ’’’ term : term TIMES factor | term DIVIDE factor ’’’ if p[2] == ’*’: p[0] = p[1] * p[3] elif p[2] == ’/’: p[0] = p[1] / p[3]def p_term_factor(p): ’’’ term : factor ’’’ p[0] = p[1]def p_factor(p): ’’’ factor : NUM ’’’ p[0] = p[1]def p_factor_group(p): ’’’ factor : LPAREN expr RPAREN ’’’ p[0] = p[2]def p_error(p): print(’Syntax error’)parser = yacc()

這個(gè)程序中,所有代碼都位于一個(gè)比較高的層次。你只需要為令牌寫正則表達(dá)式和規(guī)則匹配時(shí)的高階處理函數(shù)即可。 而實(shí)際的運(yùn)行解析器,接受令牌等等底層動(dòng)作已經(jīng)被庫(kù)函數(shù)實(shí)現(xiàn)了。

下面是一個(gè)怎樣使用得到的解析對(duì)象的例子:

>>> parser.parse(’2’)2>>> parser.parse(’2+3’)5>>> parser.parse(’2+(3+4)*5’)37>>>

如果你想在你的編程過(guò)程中來(lái)點(diǎn)挑戰(zhàn)和刺激,編寫解析器和編譯器是個(gè)不錯(cuò)的選擇。 再次,一本編譯器的書籍會(huì)包含很多底層的理論知識(shí)。不過(guò)很多好的資源也可以在網(wǎng)上找到。 Python自己的ast模塊也值得去看一下。

以上就是Python實(shí)現(xiàn)一個(gè)簡(jiǎn)單的遞歸下降分析器的詳細(xì)內(nèi)容,更多關(guān)于Python實(shí)現(xiàn)遞歸下降分析器的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 日韩国产免费观看 | 国产欧美综合在线 | 久久久精品国产 | 亚洲国产一区二区三区, | 红桃av一区二区 | 综合自拍偷拍 | 久久精品国产99国产 | 欧美日韩一区二区中文字幕 | 亚洲成成品网站 | 岛国精品 | 亚洲日本中文 | 欧美日韩亚洲国产 | 一区二区成人在线 | 毛片av在线| 在线视频国产一区 | 国产精品久久久久久久久 | 欧美日韩精品一区二区在线观看 | 成人高清在线 | 国产视频1区 | 亚洲欧美精品 | 日本一区二区三区中文字幕 | 日本精品免费在线观看 | 精品欧美乱码久久久久久 | 精品人伦一区二区三区蜜桃视频 | 影音先锋在线看片资源 | 国产欧美精品一区二区三区四区 | 成人在线播放 | 亚洲一区电影 | 精品毛片在线 | 日韩欧美国产一区二区 | 自拍偷拍第一页 | 国产在线观看免费 | 精品天堂 | 欧美日本免费 | 午夜小电影 | 日韩91精品 | 日韩精品一区二区在线观看 | 亚洲欧洲精品一区二区三区 | 激情欧美一区二区 | 一区二区三区四区免费看 | 日韩av免费在线观看 | 国产高清精品一区二区三区 | 国产成人午夜精品5599 | 99免费在线观看视频 | 99视频在线免费观看 | 日韩在线中文 | 日本三级电影天堂 | 男女羞羞视频网站 | 毛片com| 国产精品毛片久久久久久久 | 日韩a| av网站在线免费观看 | 亚洲免费视频网 | 国产乱xxxxx97国语对白 | 97精品国产97久久久久久粉红 | 亚洲一区中文 | 天天插天天射天天干 | 国产精品久久久久久 | 青青草免费在线视频 | 亚洲精品一区二区三区四区高清 | 亚洲中出| caoporn视频 | 两性午夜视频 | 日韩欧美一级片 | 一区二区三区四区在线 | 国产成人久久精品一区二区三区 | 日韩成人在线一区 | 婷婷激情五月 | 性色视频在线 | 日本 国产 欧美 | 特级丰满少妇一级aaaa爱毛片 | www久| 国产在线不卡视频 | 亚洲一区二区三区在线观看免费 | 夜夜操天天干, | 天天碰天天操 | 黄色成人在线网站 | 久久精品国产一区二区三区不卡 | 日日碰碰 | 国产精品一卡二卡三卡 | 成人1区2区 | 国产免费一区二区三区四区五区 | 操操操日日日 | 99热新| www.久| 国产亚洲久久 | 欧美视频二区 | 亚洲毛片| 亚洲日本精品视频 | 欧美日韩电影一区 | 午夜视频在线观看网站 | 伊人久久艹| 四虎5151久久欧美毛片 | 成年视频在线观看福利资源 | 久草福利资源 | 亚洲女人天堂成人av在线 | 国产一区二区在线免费观看 | 日韩精品一区二区三区在线观看 | 久久99久久99精品免观看粉嫩 | 欧美激情综合五月色丁香小说 | 日韩高清成人 | 亚洲人人舔人人 | 中文无码久久精品 | 国产日本韩国在线 | 久久综合久久综合久久综合 | 久久亚洲综合 | 久久久国产精品入口麻豆 | 欧美激情一区二区三区蜜桃视频 | 97精品视频在线 | 亚洲免费在线播放 | 国产精品久久久久久久岛一牛影视 | 国产日韩一区二区 | 国产精品二区一区二区aⅴ污介绍 | 国产精品久久久一区二区三区 | 日韩欧美一区二区视频 | 91伊人| 久久久精品免费看 | 97成人在线| 国产精品二区一区二区aⅴ污介绍 | 欧美久久免费观看 | 日韩三级在线免费 | 日韩欧美在线视频 | 99精品免费视频 | 天天躁日日躁aaaaxxxx | 亚洲综合视频 | 日韩精品小视频 | 国产欧美日韩 | 黄色三级视频 | 日日干夜夜操 | 91精品中文字幕一区二区三区 | 国内成人免费视频 | 91精品啪aⅴ在线观看国产 | 成人av观看 | 美女视频一区二区三区 | 亚洲第一男人天堂 | 91视频在线免费观看 | a免费在线观看 | 成人精品 | 久久久久久久一区二区 | 一区二区日韩 | 亚洲视频一区 | 四虎影视| 亚洲免费在线 | 91大神免费观看 | 久久99精品久久久久蜜臀 | 久久99久久99精品免观看粉嫩 | 81精品国产乱码久久久久久 | 偷拍自拍亚洲欧美 | 青青久久网 | 久久久久久久国产 | 91久久精品 | 成人久久久精品乱码一区二区三区 | 欧美在线a | 爱爱视频网站 | 亚洲一区二区三区在线播放 | 国产一区二区视频在线观看 | 一级黄色片看看 | 欧美一级毛片免费看 | 久久一区二区三区四区 | 亚洲欧美韩国 | www.99| 中文字幕一区二区三区不卡 | 国产精品自拍一区 | 日韩av视屏 | 成人三级在线 | 欧美一二区| 成人国产精品久久久 | 日韩一及片 | 久久生活片 | 亚洲精品在线播放 | 蜜桃视频成人m3u8 | 99热免费精品 | 精品一区二区三区四区视频 | 天天想天天干 | 国产一区二区精品 | 色婷婷综合在线视频 | 久久久久9999国产精品 | 久久久综合网 | 国产综合精品视频 | 久久综合九色综合欧美狠狠 | 99精品欧美一区二区三区综合在线 | 欧美一级高清在线 | 欧美精品久久久久 | 成人羞羞在线观看网站 | 一区二区三区 在线 | 91一区二区三区 | 亚洲欧美激情精品一区二区 | 亚洲精品免费看 | 99精品久久久 | 在线亚洲成人 | 日韩欧美一区二区三区免费观看 | 中文字幕久久久 | 欧美亚洲91 | 毛片免费看| 在线观看第一页 | 色精品 | 国产亚洲精品精品国产亚洲综合 | 蜜桃av人人夜夜澡人人爽 | 久久不卡日韩美女 | 九九久久精品视频 | 国产精品一区二区三区免费视频 | 亚洲成人一区二区三区 | 午夜影院在线 | 欧美日本韩国一区二区 | 亚洲精品久久久久久一区二区 | 亚洲精品日韩综合观看成人91 | 免费观看一级特黄欧美大片 | a在线观看免费视频 | 亚洲免费视频网址 | 日韩精品| 国产视频精品一区二区三区 | 精品国产不卡一区二区三区 | 天天操,夜夜操 | 亚洲成av| 在线观看亚洲一区二区三区 | 久久精品国产99国产 | 久久久久亚洲精品国产 | 在线亚洲成人 | 久久久精品一区 | 伊人狠狠干 | 日韩免费网站 | 看真人视频a级毛片 | 国产欧美专区 | 久久国产精品视频 | 国产一区二区三区四区 | 久久久av亚洲男天堂 | 色婷婷av一区二区三区软件 | 91超碰在线播放 | 在线欧美成人 | 日韩av电影观看 | 欧美激情一区二区三级高清视频 | 亚洲精品第一页 | 国产成人精品一区二区在线 | 亚洲欧洲一区二区三区 | 欧美色阁 | 91高清在线 | 成人精品三级av在线看 | 日韩不卡av | 亚州av| 7777久久 | 国产精品久久嫩一区二区 免费 | 天天操夜夜操av | 国产精品美女久久久久aⅴ国产馆 | 玖玖综合网 | 午夜视频在线观看免费视频 | 毛片av在线播放 | 国产小视频在线播放 | 不卡日韩在线 | 在线毛片观看 | 日韩欧美在线一区 | 三级视频在线 | 免费xxxx大片国产在线 | 亚洲精品乱码久久久久久按摩观 | 久久成人国产精品 | 亚洲免费小视频 | 亚洲一区二区三区四区五区中文 | 午夜精品久久久久久久久久久久 | 搞黄视频在线观看 | 日韩中文字幕在线播放 | 欧美激情欧美激情在线五月 | 日韩欧美一区二区在线 | 国产91视频一区二区 | 亚洲一区视频在线播放 | 狠狠ri| 亚洲精品成人av | 国产一区二区三区免费在线观看 | 中文字幕亚洲一区二区三区 | 免费看一区二区三区 | 狠狠久久综合 | 羞羞视频免费观看 | 国产精品久久久久久福利一牛影视 | 一区二区三区四区在线视频 | www国产免费| 欧美精品久久久久久久久久丰满 | 精品一区二区视频 | 蜜桃视频网站在线观看 | 天天操网 | 午夜精品一区二区三区在线播放 | 亚洲视频一区 | 国产激情毛片 | 国产专区一区二区三区 | 在线免费成人 | 毛片久久 | 亚洲视频免费网站 | 成人亚洲网| 九色91九色porny永久 | 久久国产精品电影 | 久久99国产精品 | 日韩一区二区视频 | 欧美精品一区二区视频 | 亚洲成av人影片在线观看 | 欧美一级黄视频 | 日韩在线www| 日本久久久久久久 | 国产剧情一区二区 | 国产女人和拘做受在线视频 | 国产在视频一区二区三区吞精 | 欧美日韩干 | 精品成人在线 | 国产精品久久久久久久久久10秀 | 色接久久| 天天综合网7799精品 | 精品欧美乱码久久久久久 | 久久精品小视频 | 99久久婷婷| 中文字幕国产在线视频 | 久久久国产日韩 | 国产高清一二三区 | 亚洲人人舔人人 | 国产一区二区免费 | 91亚洲精品在线观看 | 色婷婷国产精品综合在线观看 | 亚洲免费网址 | 久久久久香蕉视频 | 久久久久国产精品免费免费搜索 | 欧美日韩三区 | 亚洲在线一区二区 | 中文字幕国产视频 | 国产69精品久久久久观看黑料 | 特黄特黄aaaa级毛片免费看 | 亚洲黄色成人 | 日本中文在线 | 男人久久天堂 | 中文字幕在线视频第一页 | 免费一级欧美在线观看视频 | 欧美一区二区三区四区五区 | 涩涩导航 | 国产精品久久久久9999 | 久久久性色精品国产免费观看 | 亚洲成人观看 | 国产精品久久久久久久久久三级 | 免费成人在线网站 | 日韩欧美国产精品综合嫩v 国产高清av在线一区二区三区 | 色xx综合网 | 午夜视频在线观看网站 | 男人的天堂久久精品 | 精品国产伦一区二区三区观看说明 | av一二| 国产一区二区在线电影 | 亚洲人免费视频 | 精品国产欧美一区二区 | 欧美一级一区 | 黄a一级 | 免费观看特级毛片 | 久国产 | 精品国产31久久久久久 | 在线欧美日韩 | 精品欧美日韩 | 九色91九色porny永久 | 99久久99 | 欧美日韩午夜 | 神马电影午夜 | 日日干天天操 | 91看片| 激情伊人 | 精品永久 | 国产三级一区二区 | av影音资源 | www.福利视频 | 久久久久久久精 | h成人在线| 男女18免费网站视频 | 中文字幕av亚洲精品一部二部 | 久久久国产一区二区三区 | 成人久久 | 成人免费一区二区三区视频网站 | 国产精品亚洲成在人线 | 91精品中文字幕一区二区三区 | 国产高清视频 | 一区二区网站 | 国产精品99久久久久久久久久久久 | 一级做a爰片毛片 | 欧美日韩成人在线视频 | 成人精品一区二区三区中文字幕 | 亚洲精品中文字幕乱码无线 | 亚洲一区二区三区四区五区中文 | 欧美亚洲成人一区 | 一区视频 | 欧美日韩不卡合集视频 | 17c一起操 | 国产精品国产精品国产专区不片 | 日韩精品一区二区三区在线 | 国产亚洲一区二区三区在线观看 | 欧美日韩精品一区 | 久久婷婷香蕉 | av大片在线观看 | 日韩成人精品在线 | 日韩精品一区二区三区中文字幕 | 欧美日韩a v | 国产欧美综合一区二区三区 | 999久久国产 | 91在线视频播放 | 犬夜叉在线观看 | 中文字幕亚洲欧美日韩在线不卡 | 国产精品片aa在线观看 | 欧美激情网址 | 久久国产精品一区二区三区 | 欧美日韩黄色一区二区 | 日韩城人网站 | 日本成人中文字幕在线观看 | 国产一极毛片 | 国产精品国产 | 91免费在线 | 99国产视频 | 欧美日韩在线观看中文字幕 | 日韩一级大片 | 国产精品揄拍一区二区久久国内亚洲精 | 青青久草在线 | 亚洲欧美日韩精品 | 久久91av | 亚洲精品综合中文字幕 | 成人久久久精品乱码一区二区三区 | 欧美人成在线观看 | 成人欧美一区二区三区在线播放 | 国产精品一区二区久久久久 | 久在线| 国产成人免费视频网站高清观看视频 | av在线免费观看一区二区 | 国产精品久久久久久久竹霞 | 欧美一区国产一区 | 米奇狠狠狠狠8877 | hh99me在线观看 | 黄色国产区 | 日韩一区二区三区精品 | 成人在线免费视频 | 操久在线 | 精品美女在线观看视频在线观看 | 久久aⅴ国产欧美74aaa | 国产一二三区在线观看 | 欧美激情精品久久久久久 | 精品国产一级毛片 | 欧美激情一区二区三区 | 97久久精品午夜一区二区 | 婷婷丁香激情网 | 欧美一级二级三级 | 伊人网网站 | 国产精品不卡 | 狠狠色丁香婷婷综合 | 91国内视频在线观看 | 中文字幕在线观看不卡视频 | 亚洲一区二区视频 | 久久国产精品99久久久久久老狼 | 天天操导航 | 亚洲一区二区三区精品视频 | 欧美日本三级 | 日韩精品专区在线影院重磅 | 中文字幕视频在线观看 | 青青久视频 | 日韩欧美一区二区三区免费观看 | 99久久久免费视频 | 毛片网站免费在线观看 | 嫩草影院网站入口 | 日韩欧美第一页 | 亚洲精品国产第一综合99久久 | 九九免费视频 | 嫩草懂你 | 国产精品视频一二三区 | 国产91在线观看 | 成人欧美一区二区三区视频xxx | 亚洲三级视频 | 国产黄色大片 | 亚洲精品自在在线观看 | 九九福利| 国产剧情一区二区 | 国产精品一区二区在线 | 亚洲欧美日韩在线一区 | 欧美一区二区三区免费 | 精品视频久久 | 成人免费小视频 | 亚洲视频综合 | 亚洲精品国产第一综合99久久 | 午夜影院在线观看 | 亚洲专区欧美 | 亚洲天堂av网 | 在线观看国产 | 国产成人精品一区二区三区 | 99re热精品视频 | 亚洲成人黄色 | 亚洲精品视频在线 | 欧亚视频在线观看 | 久久久久久国产一级毛片高清版 | 成人精品视频在线观看 | 一区二区三区国产好 | 亚洲精品在线视频 | 91精品一区二区三区久久久久 | 97色在线视频 | 精品国产乱码久久久久久丨区2区 | 久久精品无码一区二区日韩av | 中文字幕一区二区三区四区不卡 | 久久综合久久久 | 91精品久久久久久久 | 欧美激情专区 | 久久成人一区 | 国产一区二区免费电影 | 老黄网站在线观看 | 久久久亚洲一区 | 国产视频精品一区二区三区 | 欧美顶级毛片在线播放 | 欧美一区日韩一区 | 中文字幕av一区 | 欧美亚洲国产一区二区三区 | 中文字幕1区 | 久操伊人 | 亚洲国产精品久久久久久 | 亚洲视频一| 综合久久综合 | 一区二区三区观看视频 | 一级黄色国产 | 超碰最新网址 | 欧美精品一区二区在线观看 | 天天操操 | 久久久久久人 | 日本久久久影视 | 黄毛片网站 | 五月天电影网 | 国产在线一二 | 青青草99| 极品久久 | 91短视频版在线观看www免费 | 亚洲精品久久久一区二区三区 | 精品九九 | 欧美日韩精品一区二区三区 | 久久国产精品久久久久久电车 | 成人免费视频网站在线观看 | 精品黄网| 欧美日韩一区二区在线 | 一区二区精品 | 综合自拍偷拍 | 亚洲每日更新 | 午夜av成人 | 色欧美片视频在线观看 | ririsao久久精品一区 | 国产大片久久久 | 伊人二区 | 高清国产一区二区三区四区五区 | 精品久久久久久久 | 中文字幕精品一区 | 91精品国产综合久久福利软件 | 久久精品一区二区三区不卡牛牛 | 国产在线视频xxx | 久久精品亚洲一区二区 | 欧美日韩成人在线观看 | 一级视频黄色 | 国产成人av一区 | 成人免费视频网站 | 日韩av免费看 | 亚洲国产精品久久久久久 | av一二三区 | 亚洲精品视频免费看 | 国产精品高清在线观看 | 久久99精品久久久久久琪琪 | 亚洲精品一二三 | 国产精品综合视频 | 91精品国产高清一区二区三区 | 欧美日韩国产精品久久久久 | 欧美视频一区 | 一区二区观看 | 国产成人在线视频 | 精品久久久久久久久久久 | 亚洲成人免费在线 | 精品国产乱码一区二区三 | 一区视频在线 | 午夜精品一区二区三区在线视频 | 国产精品网站在线观看 | 国产91麻豆视频 | 欧美日本精品 | 国产精品色婷婷亚洲综合看 | 九色视频网站 | 国产一级特黄aaa大片评分 | 亚洲毛片在线观看 | 一级做a爰片性色毛片 | 日本欧美在线观看 | 国产日韩一区二区三区 | 成人欧美一区二区三区在线观看 | 精品免费国产一区二区三区 | 国产精品久久 | 国产精品久久久久久久久久久新郎 | 在线播放国产精品 | 久久精品亚洲欧美日韩精品中文字幕 | 成人激情视频在线播放 | 日本精品一区二区三区在线观看视频 | 久久久成人av | 午夜视频在线 | 中文字幕 国产 | 国产深夜视频在线观看 | 国产精品久久 | 国产精品亚洲一区二区三区在线 | 中文一区二区 | 视频一区 国产精品 | 成人一区二区在线 | 国产精品欧美一区二区三区 | 精品亚洲国产成av人片传媒 | a在线看| 国产美女www | 欧美日韩视频在线观看免费 | 特级毛片在线大全免费播放 | 国产一区二区三区精品久久久 | 欧美一级在线 | 亚洲免费在线播放 | 亚洲精品成人在线 | 欧美中文字幕一区 | 一区二区三区在线视频播放 | 免费日本视频 | 日本全黄裸体片 | 国产成人一区 | 福利视频1000 | 欧美国产日本一区 | 国产在线一二 | 亚洲第一se情网站 | 欧美a网| 欧美精品91 | 亚洲精品永久免费 | 国产在亚洲 线视频播放 | 欧美视频在线一区 | 美女黄网 |