黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

Python實現一個簡單的遞歸下降分析器

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

問題

你想根據一組語法規則解析文本并執行命令,或者構造一個代表輸入的抽象語法樹。 如果語法非常簡單,你可以不去使用一些框架,而是自己寫這個解析器。

解決方案

在這個問題中,我們集中討論根據特殊語法去解析文本的問題。 為了這樣做,你首先要以BNF或者EBNF形式指定一個標準語法。 比如,一個簡單數學表達式語法可能像下面這樣:

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中,被包含在 {...}* 中的規則是可選的。*代表0次或多次重復(跟正則表達式中意義是一樣的)。

現在,如果你對BNF的工作機制還不是很明白的話,就把它當做是一組左右符號可相互替換的規則。 一般來講,解析的原理就是你利用BNF完成多個替換和擴展以匹配輸入文本和語法規則。 為了演示,假設你正在解析形如 3 + 4 * 5 的表達式。 這個表達式先要通過使用2.18節中介紹的技術分解為一組令牌流。 結果可能是像下列這樣的令牌序列:

NUM + NUM * NUM

在此基礎上, 解析動作會試著去通過替換操作匹配語法到輸入令牌:

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

下面所有的解析步驟可能需要花點時間弄明白,但是它們原理都是查找輸入并試著去匹配語法規則。 第一個輸入令牌是NUM,因此替換首先會匹配那個部分。 一旦匹配成功,就會進入下一個令牌+,以此類推。 當已經確定不能匹配下一個令牌的時候,右邊的部分(比如 { (*/) factor }* )就會被清理掉。 在一個成功的解析中,整個右邊部分會完全展開來匹配輸入令牌流。

有了前面的知識背景,下面我們舉一個簡單示例來展示如何構建一個遞歸下降表達式求值程序:

#!/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()

討論

文本解析是一個很大的主題, 一般會占用學生學習編譯課程時剛開始的三周時間。 如果你在找尋關于語法,解析算法等相關的背景知識的話,你應該去看一下編譯器書籍。 很顯然,關于這方面的內容太多,不可能在這里全部展開。

盡管如此,編寫一個遞歸下降解析器的整體思路是比較簡單的。 開始的時候,你先獲得所有的語法規則,然后將其轉換為一個函數或者方法。 因此如果你的語法類似這樣:

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

你應該首先將它們轉換成一組像下面這樣的方法:

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

每個方法要完成的任務很簡單 - 它必須從左至右遍歷語法規則的每一部分,處理每個令牌。 從某種意義上講,方法的目的就是要么處理完語法規則,要么產生一個語法錯誤。 為了這樣做,需采用下面的這些實現方法:

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

盡管向你演示的是一個簡單的例子,遞歸下降解析器可以用來實現非常復雜的解析。 比如,Python語言本身就是通過一個遞歸下降解析器去解釋的。 如果你對此感興趣,你可以通過查看Python源碼文件Grammar/Grammar來研究下底層語法機制。 看完你會發現,通過手動方式去實現一個解析器其實會有很多的局限和不足之處。

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

items ::= items ’,’ item | item

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

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

唯一的問題是這個方法根本不能工作,事實上,它會產生一個無限遞歸錯誤。

關于語法規則本身你可能也會碰到一些棘手的問題。 比如,你可能想知道下面這個簡單扼語法是否表述得當:

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

這個語法看上去沒啥問題,但是它卻不能察覺到標準四則運算中的運算符優先級。 比如,表達式 '3 + 4 * 5' 會得到35而不是期望的23. 分開使用”expr”和”term”規則可以讓它正確的工作。

對于復雜的語法,你最好是選擇某個解析工具比如PyParsing或者是PLY。 下面是使用PLY來重寫表達式求值程序的代碼:

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()

這個程序中,所有代碼都位于一個比較高的層次。你只需要為令牌寫正則表達式和規則匹配時的高階處理函數即可。 而實際的運行解析器,接受令牌等等底層動作已經被庫函數實現了。

下面是一個怎樣使用得到的解析對象的例子:

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

如果你想在你的編程過程中來點挑戰和刺激,編寫解析器和編譯器是個不錯的選擇。 再次,一本編譯器的書籍會包含很多底層的理論知識。不過很多好的資源也可以在網上找到。 Python自己的ast模塊也值得去看一下。

以上就是Python實現一個簡單的遞歸下降分析器的詳細內容,更多關于Python實現遞歸下降分析器的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚洲国产成人久久 | 亚洲色欲色欲www在线观看 | 丝袜av在线播放 | 一本色道亚洲精品aⅴ | 国产在线观看一区 | 亚洲美女影院 | av毛片在线| 波多野结衣一级 | 国产成人一区二区三区视频 | 99热国产 | 久久久成人精品 | 国产91精品一区二区绿帽 | 俄罗斯15一18性视频 | 黄色精品一区二区 | 黄色av网站免费观看 | 色哟哟入口国产精品 | 久久综合久久自在自线精品自 | 色吊丝永久性观看网站免费 | 天堂在/线资源中文在线 | 久久精品 | 撕开奶罩揉吮奶头视频 | 中文字幕在线观看视频一区 | 97丨九色丨国产人妻熟女 | 女人让男人桶爽30分钟 | 漂亮人妻被黑人久久精品 | 成人无码在线视频网站 | 搡老岳熟女国产熟妇 | 美女视频黄免费 | 51精品视频在线视频观看 | 无码免费一区二区三区免费播放 | 欧美精品99久久久 | 91久久精品一区二区三区 | 欧美在线视频一区二区三区 | 日本一本在线观看 | 极品色av| 黄色a级片网站 | 亚洲熟妇少妇任你躁在线观看无码 | 久久久久久久久久国产精品 | 国产色在线 | 国产精品99久久免费黑人人妻 | 欧美一区二区三区免费观看 | 欧美成人在线免费 | 日韩欧美国产成人 | 色久综合网 | 国产做受视频 | 91免费观看网站 | 国产3页| 午夜欧美视频 | 激情xxx| 欧美~大家屁股网站 | 灌满闺乖女h高h调教尿h | 大香焦久久 | 国产精品v欧美精品 | 乱妇乱女熟妇熟女网站 | 国产56页| 日日摸夜夜添夜夜添国产精品 | 中文字幕亚洲乱码熟女在线萌芽 | 亚洲人成网站在线在线观看 | 黄色一几片 | 五月天小说网 | 不卡av在线免费观看 | 亚洲 小说区 图片区 都市 | 国产丰满大乳奶水 | 中文字幕亚洲一区 | 亚洲v欧美v日韩v国产v | 日本一卡二卡视频 | 69堂成人精品免费视频 | 女高中生自慰污污网站 | 97资源共享在线视频 | 日本熟妇hdsex视频 | 亚洲无线视频 | 亚洲第一精品网站 | 国产成人精品午夜视频 | h动漫一区二区 | 日本不卡视频在线 | 国产91色| 亚洲国产精品无码观看久久 | 日韩国产成人 | 成人午夜免费无码区 | 少妇午夜三级伦理影院播放器 | 中文人妻无码一区二区三区信息 | 高柳家动漫在线观看 | 亚洲字幕av一区二区三区四区 | 日韩高清片 | 精品一区二区三区自拍图片区 | 激情伊人五月天久久综合 | 99色这里只有精品 | 大江大河第3部48集在线观看 | 久久精品小视频 | 97高清国语自产拍 | 中文字幕妇偷乱视频在线观 | www.操| 看片在线观看 | 丰满亚洲大尺度无码无码专线 | 亚洲精品久久久久久久蜜桃臀 | 上原亚衣av一区二区三区 | 成熟丰满熟妇高潮xxxxx视频 | 99草在线视频 | 亚洲综合一区二区三区葵つかさ | 狠狠干婷婷 | 永久精品视频 | 婷婷精品国产一区二区三区日韩 | 亚洲欧美国产双大乳头 | 免费在线一级片 | 欧美激情视频一区二区三区免费 | 久久国产一 | 国产 日韩 欧美 制服丝袜 | 一本一道a∨波多野极衣 | 久久综合婷婷 | 亚洲最大看欧美片网站 | 精品久久久久久久久久久久 | 日韩在线视频观看 | 日本不卡高字幕在线2019 | 丝袜脚交国产在线观看 | 中文字幕乱偷无码av先锋 | 无套内谢孕妇毛片免费看 | 精品一区二区三区免费播放 | 黄网址在线免费观看 | 中文字幕成人 | 精品久久久久久一区二区 | 国产女主播在线观看 | 日本一级吃奶淫片免费 | 午夜av无码福利免费看网站 | 国产又黄又硬又湿又黄的网站免费 | 永久免费在线观看视频 | 日本成人精品在线 | 国产精品福利视频推女郎 | 成人免费无遮挡做性视频 | 久久爽久久爽久久av东京爽 | 漂亮人妻被中出中文字幕 | 国产三级视频在线播放 | 欧美波霸videosex极品 | 午夜精品一区二区三区在线播放 | 少妇又粗又猛又爽又黄的视频 | 国产白丝无码免费视频 | 中文无码精品一区二区三区 | 午夜免费学生在线观看av | 久久久99国产精品免费 | 少妇人妻偷人精品一区二区 | 高h禁伦肉伦np双龙 高h捆绑拘束调教小说 | 日本亲子乱子伦xxxx60岁 | 日本大片在线播放在线软件功能 | 欧美日韩有码 | 国内丰满少妇猛烈精品播 | 伊人春色影院 | 夜影影视剧大全在线观看 | 国产又粗又猛又黄视频 | 国产99久久久国产精品下药 | 丰满少妇aaaaaa爰片毛片 | 国产精品爱久久久久久久电影蜜臀 | 99热免费精品 | 国产精品爽黄69天堂a | 中文在线а天堂中文在线新版 | 中国黄色片子 | 屁屁影院ccyy备用地址 | 蜜桃成人在线观看 | 国产九九| 国产成人啪精品午夜网站 | 色人阁在线视频 | 69大片视频免费观看视频 | 在线免费观看黄 | 99精品视屏 | 产乳奶水文h男男喂奶 | 激情综合视频 | 台湾佬美性中文网 | 午夜黄色影院 | 91精品乱码久久蜜桃 | 国产乱对白刺激在线视频 | 国产精品乱码一区二区三区视频 | 国色天香社区在线视频 | 天天躁夜夜躁狠狠躁2020色戒 | 青青草十七色 | 少妇苏晴的性荡生活 | 三级艳丽杨钰莹三级 | 九一亚洲精品 | 18无码粉嫩小泬无套在线观看 | 成人av在线资源 | 国产精品丝袜黑色高跟鞋v18 | 国产成人自拍网站 | 波多野结衣不打码视频 | 国精品人妻无码一区二区三区蜜柚 | 中文字幕亚洲无线码 | 日本亲子乱子伦xxxx50路 | 中文字幕日韩精品在线观看 | 国产精品久久久久久久av | 中文字幕在线视频免费 | 97成人在线观看 | 久久精品国产导航 | 涩涩99| 日韩欧美激情兽交 | aaa私人欧美69 | 日本一区二区三区视频免费看 | 波多野结衣一区二区三区高清 | 国产sm重味一区二区三区 | 99在线精品视频免费观看20 | 国产精品久久久区三区天天噜 | 毛片网站免费观看 | 三级毛片子| 麻豆安全免费网址入口 | 狠狠色狠狠干 | 1000部夫妻午夜免费 | jizzjizzjizz国产 | 午夜在线网站 | 老头与老头性ⅹxx视频 | 欧美性黑人极品hd | 影音先锋在线播放 | 国产成人精品视频 | 欧美精品性视频 | 国产精品久久久久久久久久久久午夜 | 97插插插| 久久亚洲日韩看片无码 | 国产男女精品 | 91丨porny丨蝌蚪新疆 | 国产综合色视频 | 超碰一级片 | 日本三级吃奶头添泬 | 日本乱码视频 | 国产精品久久久久久影视 | 69av网站| 国产l精品国产亚洲区久久 国产sm主人调教女m视频 | zzijzzij日本丰满少妇 | 久久99国产精一区二区三区 | 国产高潮好紧好爽hd | 亚洲欧美一区二区三区情侣bbw | 日韩一级在线观看视频 | 青春草在线视频免费观看 | 国产91一区二区三区 | 亚洲欧美激情视频 | 日韩精品蜜桃 | 日韩精品人成在线播放 | 久久综合精品国产丝袜长腿 | 二区影院 | 久久精品国产免费观看 | 久久狠狠高潮亚洲精品 | 国产又色又爽又黄刺激视频 | 在线观看不卡av | 性猛交ⅹxxx乱大交孕妇 | 中文高清av| 大荫蒂欧美精品另类 | 97久久精品人人澡人人爽 | 免费无码毛片一区二三区 | 亚洲最大成人在线 | 亚洲日本不卡 | h网站在线播放 | 天天射天天操天天干 | 羞羞视频网址 | 日韩在线第二页 | 一区二区日韩精品 | 国产高清在线免费视频 | 久久久www成人免费毛片 | 农村妇女一区二区 | 欧美一级网 | 亚洲精品一卡二卡 | 久久国产三级 | 国产视频日本 | 麻豆蜜桃九色在线视频 | 1024福利| 国产麻豆精品久久一二三 | 91亚洲精品一区二区乱码 | 国内外成人激情视频 | 影音先锋中文字幕在线播放 | 麻豆网站 | 欧美男人的天堂 | 中文字幕女教师julia视频 | 中文字幕欧美日韩va免费视频 | 国产少妇自拍 | 亚洲欧美精选 | 性猛交xxxx乱大交孕妇2 | 日本在线视频www色 中国妇女做爰视频 | 国精品无码人妻一区二区三区 | 亚洲中文字幕在线无码一区二区 | 国产精品国产三级国产专区53 | 免费视频拗女稀缺一区二区 | 国语对白永久免费 | 国产精品xxx在线观看 | 荫蒂被男人添的好舒服爽免费视频 | 国产熟睡乱子伦视频 | 特黄性暴力强在线线播放 | 亚洲中文字幕av无码区 | 日韩av在线不卡 | jvid视频在线观看 | 日韩欧美网 | 精品国产乱码久久久久久丨区2区 | 精品人妻中文字幕有码在线 | 日韩在线 中文字幕 | 国产乱xxxxx79国语对白 | 国产精品第一页在线观看 | 午夜精品久久久久久久久久 | 毛片高清免费 | 男女超爽视频免费播放 | 爱情岛av亚洲论坛自拍品质 | 国产麻豆一精品一男同 | 深夜激情网 | 久久久日韩精品一区二区三区 | www.久久爽| 成人免费看黄网站在线观看 | 亚洲a免费 | 美女调教网站18+ | 成人美女视频在线观看 | 亚洲欧洲成人精品香蕉网 | 天天弄天天模 | 亚洲综合网国产精品一区 | 日韩精品人妻系列无码专区 | 国产精品178页 | 麻豆黄色网| 中文字幕精品av乱喷 | 91久久国产综合久久91 | 精品少妇一区二区三区免费观 | 曰韩精品一区二区 | 亚洲综合精品在线 | 色小姐综合| 91精品久久天干天天天按摩 | 小柔的淫辱日记(1~7) | 五月婷中文字幕 | 色狠狠一区| 18禁黄网站禁片免费观看女女 | 神马午夜av| 国产精品美女久久久久久久 | 老汉色av | 亚洲国产成人精品久久久国产成人一区 | 亚洲欧美激情小说另类 | 婷婷精品进入 | 日韩av在线免费看 | 成人国产精品免费观看动漫 | 国产欧美一区二区精品性色超碰 | 国产一级免费看 | 性生交大片免费全毛片 | 欧美1级片 | 给个av网站 | 少妇搡bbbb搡bbb搡打电话 | 国产黄色高清 | 久久久久久亚洲精品不卡4k岛国 | 亚洲最大福利网站 | 亚洲免费黄网 | 免费人成激情视频在线观看 | 极品白嫩的小少妇avove | 久久本道综合久久伊人 | 日免费视频 | 国产专区在线视频 | 国产熟妇乱xxxxx大屁股网 | 国产精品99久久 | 草草久久久 | 国产免费黄色网址 | 日本热久久 | 国产精品视频一区二区三区四区国 | 女朋友闺蜜奶好大下面好紧视频 | 在线看片人成视频免费无遮挡 | 亚洲高清免费 | 天堂网中文在线观看 | 盗摄精品av一区二区三区 | av免费片| 色婷婷久久久亚洲一区二区三区 | 岛国av动作片在线观看 | 精品蜜桃av| 黑料视频在线观看 | 毛片免| 男人的天堂av社区在线 | 五月激情综合网 | av在线专区| 免费一淫片6级 | 日本免费三级网站 | 印度a级片 | 男女高潮网站 | 天海冀一二三区 | 国户精品久久久久久久久久久不卡 | 美女国产毛片a区内射 | av男女 | 老熟女重囗味hdxx69 | 狠狠干成人 | 久久99精品国产麻豆91樱花 | 九九九伊在人现综合 | 欧美日韩成人精品 | 麻豆成人久久精品二区三区免费 | 久久激情免费视频 | 天天插在线视频 | 久久久蜜桃 | 高大丰满毛茸茸xxx性 | 亚洲国产精品无卡做爰天天 | 亚洲综合p| 国产精品69久久久久999小说 | 九色网址| 日韩激情视频网站 | 么公的好大好硬好深好爽视频 | 少妇精品偷拍高潮少妇 | 婷婷综合网站 | 午夜大片在线观看 | 伊人网大香 | 日韩精品久久久久久久酒店 | 午夜视 | 热久久网站 | 四虎国产精品成人免费4hu | 国产精品vr专区 | 欧美日韩高清在线 | 国产精品视频一区二区在线观看 | 国产一区二区精品在线观看 | 国产自产才c区 | 免费网站日本a级淫片免费看 | 亚洲综合激情在线 | 91精品一区二区三区在线观看 | 最新最近中文字幕 | 三级特黄特色视频 | 男男车车的车车网站w98免费 | 国产日韩欧美一区二区 | 欧美激情福利 | 欧美成人免费一区二区 | 国产无套内射久久久国产 | 久久久久蜜桃精品成人片 | 国产真实乱人偷精品视频 | 国产精品一国产精品 | 日日摸夜夜骑 | 精品人妻无码一区二区色欲产成人 | 中文字幕在线精品视频入口一区 | 亚洲第一天堂无码专区 | 在线成人欧美 | 国产不卡网 | 777米奇影视第四色 韩产日产国产欧产 | 一色屋免费视频 | 国产对白国语对白 | 亚洲天堂一区在线观看 | 亚洲国产97在线精品一区 | www.国产高清 | 欧美成人vr18sexvr | 超碰免费97| 日本在线免费观看视频 | 亚洲狠狠丁香婷婷综合久久久 | 女女同性女同一区二区三区av | 久久伊人精品一区二区三区 | 成人午夜免费在线观看 | 久久99精品视频 | 怡红院亚洲 | 黄色小视频入口 | 无码精品a∨在线观看中文 亚洲熟妇自偷自拍另欧美 无码少妇a片一区二区三区 | 久久久一区二区三区捆绑sm调教 | 国产偷国产偷亚洲高清人白洁 | 久久精品人人做人人爽97 | 亚洲国产一区久久yourpan | 在线观看三区 | 韩国一级淫片 | 国产精品一区二区四区 | 2021av在线| 国产一区二区三区久久精品 | 野外吮她的花蒂高h在线观看 | 亚洲国产经典 | 无码内射成人免费喷射 | 一区在线观看 | 色婷婷av国产精品 | 女女互揉吃奶揉到高潮视频 | 第一136av福利视频导航 | 成人h动漫精品一区二区 | 国产精品爽爽久久 | 亚洲色大成网站www久久九九 | 成人精品久久日伦片大全免费 | 亚洲精品成人无码中文毛片 | 色婷婷国产 | 日韩av少妇 | 国产毛片又黄又爽 | 国产情人综合久久777777 | 内地级a艳片高清免费播放 内谢老女人视频在线观看 嫩草99 | 97香蕉超级碰碰久久免费软件 | 精品人妻av区波多野结衣 | 国产一区二区三区影院 | 亚洲国产成人va在线观看天堂 | 无人码一区二区三区视频 | 日韩在线观看第一页 | 免费a爱片猛猛 | 国产欧美一区二区精品久导航 | 日本二区三区视频 | 国产精品视频99 | 99久久99久久精品国产片 | 69视频在线播放 | 美国美女群体交乱 | 污污网站在线观看视频 | 国产精品视频偷伦精品视频 | 亚洲一区二区中文字幕 | 中文在线观看免费 | 国产第一毛片 | 欧美精品久久久久性色 | 国产免费人做人爱午夜视频 | 青草成人| 久久久男女 | 久久国产麻豆 | 在线观看三级网站 | yy8090理论片在线大全中文 | 乌克兰极品少妇ⅹxxx做受 | 精品国产一区二区三区久久影院 | 国产亚洲视频一区 | 成人精品999| 国产在线不卡av | 国产成人综合av | 在线视频网 | 天天爽夜夜爽 | 国产口语对白老妇 | 无码国产69精品久久久久网站 | 狠狠色综合7777久夜色撩人ⅰ | 日本一二三不卡视频 | 性色欲网站人妻丰满中文久久不卡 | 99久久国产综合精品女不卡 | 久久91精品国产91久久小草 | 深夜精品 | 久91 | 免费激情视频网站 | 无码吃奶揉捏奶头高潮视频 | 18禁真人抽搐一进一出免费 | 窝窝午夜精品一区二区 | 992tv成人国产福利在线 | 欧日韩av| 欧美性猛交一区二区三区精品 | 国产精品23p| 国产骚b| 男女后进式猛烈xx00动态图片 | 18性xxxxx性猛交 | 亚洲午夜精品久久久久久人妖 | 97精产国品一二三产区在线 | 一本一道久久a久久综合精品 | 亚洲综合色成在线播放 | 精品欧美h无遮挡在线看中文 | 人妻少妇精品无码专区二区 | 国产成人无码a区在线观看导航 | 好莱坞性战| 中文字幕超清在线观看 | av网站免费在线看 | 国产欧美日韩在线在线播放 | 艹少妇视频 | 国产黄a三级三级三级av在线看 | 99热在线免费观看 | 中文字幕在线视频精品 | 激情区| 免费日韩av | 黄色片在线免费观看视频 | 中国xxxx性xxxx产国 | 女人被狂躁c到高潮喷水一区二区 | 揄拍成人国产精品视频 | 成熟老妇女视频 | 久久国产精品99国产精 | 狼人av在线 | 免费看色网站 | 一本大道久久 | 视频一区 视频二区 视频三区 视频四区 国产 | 亚洲色偷偷偷综合网 | 在线观看黄色片网站 | 国产精品久久久久久久久久王欧 | 久久精品久久久久久噜噜老黄 | 久久精品欧美日韩 | 91豆花精品一区 | 国产精品高潮露脸在线观看 | 丝袜 国产 日韩 另类 美女 | 久久精品无码一区二区日韩av | 国产性猛交 | 国产精品黄色网 | 无码人妻品一区二区三区精99 | 双乳奶水饱满少妇呻吟 | 精品66| 99re8在线精品视频免费播放 | 伊人色播 | 亚洲图片中文字幕 | 国产在线国偷精品免费看 | 欧美乱日| 日韩人妻精品无码一区二区三区 | 成人激烈床戏免费观看网站 | 曰本丰满熟妇xxxx性 | 九色蝌蚪9l视频蝌蚪9l视频开放 | 亚洲+小说+欧美+激情+另类 | 国产小视频精品 | 国产精品蜜臀av免费观看四虎 | 精品国产乱码久久久久久1区2区 | 在线免费观看中文字幕 | 红杏亚洲影院一区二区三区 | 亚洲最黄视频 | 免费观看理伦片在线播放 | 日韩欧美网址 | 国产亚洲欧美精品久久久久久 | 久久久www成人免费毛片女 | 黄色精品一区 | 日韩久久高清 | 欧洲成人午夜精品无码区久久 | 亚洲色大成网站www永久男同 | 精品人伦一区二区三区 | 懂色av一区二区夜夜嗨 | 日韩av网站在线观看 | 天天爽天天爽夜夜爽毛片 | 国产成人在线播放视频 | 五月婷婷丁香六月 | 少妇无码一区二区二三区 | 日本淫片免费啪啪3 | 色老头综合网 | 99精品视频免费热播在线观看 | 91爱| 欧洲精品99毛片免费高清观看 | 久久国产乱子伦精品 | 国产一级黄 | 30一40一50老女人毛片 | 欧美日韩精选 | 日韩精品人妻中文字幕有码 | 国产精品27p| 俺啪也| 狠狠躁夜夜躁xxxxaaaa | 日本视频在线观看免费 | 久久久www免费人成精品 | 国产日韩精品在线观看 | 长春chinese少妇 | 久久精热 | 日韩 国产 在线 | 日本久久综合网 | 无码av动漫精品一区二区免费 | 91久久久久久久 | 亚洲国产精品无码久久一区二区 | 亚洲日本一区二区三区在线 | 欧美日韩在线播放三区四区 | 毛片无遮挡 | 久久久综合婷婷精品国产一区影院 | 婷婷激情小说网 | 国产极品美女高潮无套嗷嗷叫酒店 | 欧洲精品码一区二区三区 | 性免费视频 | 久久久久免费视频 |