精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 Python 開發一個 Python 解釋器

開發 后端
在本文中,我們將設計一個可以執行算術運算的解釋器。一起來看看吧。

 

計算機只能理解機器碼。歸根結底,編程語言只是一串文字,目的是為了讓人類更容易編寫他們想讓計算機做的事情。真正的魔法是由編譯器和解釋器完成,它們彌合了兩者之間的差距。解釋器逐行讀取代碼并將其轉換為機器碼。

在本文中,我們將設計一個可以執行算術運算的解釋器。

我們不會重新造輪子。文章將使用由 David M. Beazley 開發的詞法解析器 —— PLY(Python Lex-Yacc(https://github.com/dabeaz/ply))。

PLY 可以通過以下方式下載:

  1. $ pip install ply 

我們將粗略地瀏覽一下創建解釋器所需的基礎知識。欲了解更多,請參閱這個 GitHub 倉庫(https://github.com/dabeaz/ply)。

標記(Token)

標記是為解釋器提供有意義信息的最小字符單位。標記包含一對名稱和屬性值。

讓我們從創建標記名稱列表開始。這是一個必要的步驟。 

  1. tokens = (  
  2.     # 數據類型  
  3.     "NUM",  
  4.     "FLOAT",  
  5.     # 算術運算  
  6.     "PLUS",  
  7.     "MINUS",  
  8.     "MUL",  
  9.     "DIV",  
  10.     # 括號  
  11.     "LPAREN",  
  12.     "RPAREN",  

詞法分析器(Lexer)

將語句轉換為標記的過程稱為標記化或詞法分析。執行詞法分析的程序是詞法分析器。 

  1. # 標記的正則表達  
  2. t_PLUS   = r"\+"  
  3. t_MINUS  = r"\-"  
  4. t_MUL    = r"\*"  
  5. t_DIV    = r"/"  
  6. t_LPAREN = r"\("  
  7. t_RPAREN = r"\)"  
  8. t_POW    = r"\^"  
  9. # 忽略空格和制表符  
  10. t_ignore = " \t"  
  11. # 為每個規則添加動作  
  12. def t_FLOAT(t):  
  13.     r"""\d+\.\d+"""  
  14.     t.value = float(t.value)  
  15.     return t  
  16. def t_NUM(t):  
  17.     r"""\d+"""  
  18.     t.value = int(t.value)  
  19.     return t  
  20. # 未定義規則字符的錯誤處理  
  21. def t_error(t):  
  22.     # 此處的 t.value 包含未標記的其余輸入  
  23.     print(f"keyword not found: {t.value[0]}\nline {t.lineno}")  
  24.     t.lexer.skip(1)  
  25. # 如果遇到 \n 則將其設為新的一行  
  26. def t_newline(t):  
  27.     r"""\n+"""  
  28.     t.lexer.lineno += t.value.count("\n") 

為導入詞法分析器,我們將使用:

import ply.lex as lex

t_ 是一個特殊的前綴,表示定義標記的規則。每條詞法規則都是用正則表達式制作的,與 Python 中的 re 模塊兼容。正則表達式能夠根據規則掃描輸入并搜索符合的符號串。正則表達式定義的文法稱為正則文法。正則文法定義的語言則稱為正則語言。

定義好了規則,我們將構建詞法分析器。 

  1. data = 'a = 2 +(10 -8)/1.0'  
  2. lexlexer = lex.lex()  
  3. lexer.input(data)  
  4. while tok :lexer.token():  
  5.     print(tok) 

為了傳遞輸入字符串,我們使用 lexer.input(data)。lexer.token() 將返回下一個 LexToken 實例,最后返回 None。根據上述規則,代碼 2 + ( 10 -8)/1.0 的標記將是:

紫色字符代表的是標記的名稱,其后是標記的具體內容。

巴科斯-諾爾范式(Backus-Naur Form,BNF)

大多數編程語言都可以用上下文無關文法來編寫。它比常規語言更復雜。對于上下文無關文法,我們用上下文無關語法,它是描述語言中所有可能語法的規則集。BNF 是一種定義語法的方式,它描述了編程語言的語法。讓我們看看例子:

symbol : alternative1 | alternative2 …

根據產生式,: 的左側被替換為右側的其中一個值替換。右側的值由 | 分隔(可理解為 symbol 定義為 alternative1 或 alternative2或…… 等等)。對于我們的這個算術解釋器,語法規格如下: 

  1. expression : expression '+' expression  
  2.            | expression '-' expression  
  3.            | expression '/' expression  
  4.            | expression '*' expression  
  5.            | expression '^' expression  
  6.            | +expression  
  7.            | -expression  
  8.            | ( expression )  
  9.            | NUM  
  10.            | FLOAT 

輸入的標記是諸如 NUM、FLOAT、+、-、*、/ 之類的符號,稱作終端(無法繼續分解或產生其他符號的字符)。一個表達式由終端和規則集組成,例如 expression 則稱為非終端。

解析器(Parser)

我們將使用 YACC(Yet Another Compiler Compiler) 作為解析器生成器。導入模塊:import ply.yacc as yacc。 

  1. from operator import (add, sub, mul, truediv, pow)  
  2. # 我們的解釋器支持的運算符列表  
  3. ops = {  
  4.     "+": add,  
  5.     "-": sub,  
  6.     "*": mul,  
  7.     "/": truediv,  
  8.     "^": pow,  
  9. def p_expression(p):  
  10.     """expression : expression PLUS expression  
  11.                   | expression MINUS expression  
  12.                   | expression DIV expression  
  13.                   | expression MUL expression  
  14.                   | expression POW expression"""  
  15.     if (p[2], p[3]) == ("/", 0):  
  16.         # 如果除以 0,則將“INF”(無限)作為值  
  17.         p[0] = float("INF")  
  18.     else:  
  19.         p[0] = ops[p[2]](p[1], p[3])  
  20. def p_expression_uplus_or_expr(p):  
  21.     """expression : PLUS expression %prec UPLUS  
  22.                   | LPAREN expression RPAREN"""  
  23.     p[0] = p[2]  
  24. def p_expression_uminus(p):  
  25.     """expression : MINUS expression %prec UMINUS"""  
  26.     p[0] = -p[2]  
  27. def p_expression_num(p):  
  28.     """expression : NUM  
  29.                   | FLOAT"""  
  30.     p[0] = p[1]  
  31. # 語法錯誤時的規則  
  32. def p_error(p):  
  33.     print(f"Syntax error in {p.value}") 

在文檔字符串中,我們將添加適當的語法規范。p 列表中的的元素與語法符號一一對應,如下所示: 

  1. expression : expression PLUS expression  
  2. p[0]         p[1]       p[2] p[3] 

在上文中,%prec UPLUS 和 %prec UMINUS 是用來表示自定義運算的。%prec 即是 precedence 的縮寫。在符號中本來沒有 UPLUS 和 UMINUS 這個說法(在本文中這兩個自定義運算表示一元正號和符號,其實 UPLUS 和 UMINUS 只是個名字,想取什么就取什么)。之后,我們可以添加基于表達式的規則。YACC 允許為每個令牌分配優先級。我們可以使用以下方法設置它: 

  1. precedence = (  
  2.     ("left", "PLUS", "MINUS"),  
  3.     ("left", "MUL", "DIV"),  
  4.     ("left", "POW"),  
  5.     ("right", "UPLUS", "UMINUS")  

在優先級聲明中,標記按優先級從低到高的順序排列。PLUS 和 MINUS 優先級相同并且具有左結合性(運算從左至右執行)。MUL 和 DIV 的優先級高于 PLUS 和 MINUS,也具有左結合性。POW 亦是如此,不過優先級更高。UPLUS 和 UMINUS 則是具有右結合性(運算從右至左執行)。

要解析輸入我們將使用: 

  1. parser = yacc.yacc()  
  2. result = parser.parse(data)  
  3. print(result) 

完整代碼如下: 

  1. #####################################  
  2. # 引入模塊                           #  
  3. #####################################  
  4. from logging import (basicConfig, INFO, getLogger)  
  5. from operator import (add, sub, mul, truediv, pow)  
  6. import ply.lex as lex  
  7. import ply.yacc as yacc  
  8. # 我們的解釋器支持的運算符列表  
  9. ops = {  
  10.     "+": add,  
  11.     "-": sub,  
  12.     "*": mul,  
  13.     "/": truediv,  
  14.     "^": pow,  
  15.  
  16. #####################################  
  17. # 標記集                             #  
  18. #####################################  
  19. tokens = (  
  20.     # 數據類型  
  21.     "NUM",  
  22.     "FLOAT",  
  23.     # 算術運算  
  24.     "PLUS",  
  25.     "MINUS",  
  26.     "MUL",  
  27.     "DIV",  
  28.     "POW",  
  29.     # 括號  
  30.     "LPAREN",  
  31.     "RPAREN",  
  32.  
  33. #####################################  
  34. # 標記的正則表達式                    #  
  35. #####################################  
  36. t_PLUS   = r"\+"  
  37. t_MINUS  = r"\-"  
  38. t_MUL    = r"\*"  
  39. t_DIV    = r"/"  
  40. t_LPAREN = r"\("  
  41. t_RPAREN = r"\)"  
  42. t_POW    = r"\^"  
  43. # 忽略空格和制表符  
  44. t_ignore = " \t"  
  45. # 為每個規則添加動作  
  46. def t_FLOAT(t):  
  47.     r"""\d+\.\d+"""  
  48.     t.value = float(t.value)  
  49.     return t  
  50. def t_NUM(t):  
  51.     r"""\d+"""  
  52.     t.value = int(t.value)  
  53.     return t  
  54. # 未定義規則字符的錯誤處理  
  55. def t_error(t):  
  56.     # 此處的 t.value 包含未標記的其余輸入  
  57.     print(f"keyword not found: {t.value[0]}\nline {t.lineno}")  
  58.     t.lexer.skip(1)  
  59. # 如果看到 \n 則將其設為新的一行 
  60.  def t_newline(t):  
  61.     r"""\n+"""  
  62.     t.lexer.lineno += t.value.count("\n")  
  63. #####################################  
  64. # 設置符號優先級                      #  
  65. #####################################  
  66. precedence = (  
  67.     ("left", "PLUS", "MINUS"),  
  68.     ("left", "MUL", "DIV"),  
  69.     ("left", "POW"),  
  70.     ("right", "UPLUS", "UMINUS")  
  71.  
  72. #####################################  
  73. # 書寫 BNF 規則                      #  
  74. #####################################  
  75. def p_expression(p):  
  76.     """expression : expression PLUS expression  
  77.                   | expression MINUS expression  
  78.                   | expression DIV expression  
  79.                   | expression MUL expression  
  80.                   | expression POW expression"""  
  81.     if (p[2], p[3]) == ("/", 0):  
  82.         # 如果除以 0,則將“INF”(無限)作為值  
  83.         p[0] = float("INF")  
  84.     else:  
  85.         p[0] = ops[p[2]](p[1], p[3])  
  86. def p_expression_uplus_or_expr(p):  
  87.     """expression : PLUS expression %prec UPLUS  
  88.                   | LPAREN expression RPAREN"""  
  89.     p[0] = p[2]  
  90. def p_expression_uminus(p):  
  91.     """expression : MINUS expression %prec UMINUS"""  
  92.     p[0] = -p[2]  
  93. def p_expression_num(p):  
  94.     """expression : NUM  
  95.                   | FLOAT"""  
  96.     p[0] = p[1]  
  97. # 語法錯誤時的規則  
  98. def p_error(p):  
  99.     print(f"Syntax error in {p.value}") 
  100.  #####################################  
  101. # 主程式                             #  
  102. #####################################  
  103. if __name__ == "__main__":  
  104.     basicConfig(level=INFOfilename="logs.txt"
  105.     lexlexer = lex.lex()  
  106.     parser = yacc.yacc()  
  107.     while True:  
  108.         try:  
  109.             result = parser.parse(  
  110.                 input(">>>"),  
  111.                 debug=getLogger())  
  112.             print(result)  
  113.         except AttributeError:  
  114.             print("invalid syntax") 

結論

由于這個話題的體積龐大,這篇文章并不能將事物完全的解釋清楚,但我希望你能很好地理解文中涵蓋的表層知識。 

 

責任編輯:龐桂玉 來源: 馬哥Linux運維
相關推薦

2024-01-31 08:16:38

IPythonPython解釋器

2024-05-15 10:07:11

Agents人工智能CSV

2022-11-02 21:00:21

Python解釋器智能手機

2023-03-10 13:38:00

Python文檔掃描器

2010-02-01 13:55:12

Python 解釋器

2012-08-14 10:44:52

解釋器編程

2024-01-25 11:41:00

Python開發前端

2016-09-12 14:05:27

PythonPython解釋器Web

2022-06-29 09:02:31

go腳本解釋器

2014-04-18 09:31:04

PystonDropboxPython

2019-07-24 13:42:34

Python編程語言代碼

2020-01-10 18:04:01

Python編程語言Windows

2018-08-26 05:38:44

路由器調制解調器網絡設備

2020-10-16 16:28:54

Python開發技術

2010-02-23 15:52:14

Python編輯器

2021-12-01 07:02:55

Python 記錄器按鍵

2021-09-03 12:33:36

語言并發下載器

2023-09-05 09:00:00

工具Python抄襲檢測系統

2010-02-24 15:41:53

Python解釋器

2018-12-04 13:30:28

Javascript編譯原理前端
點贊
收藏

51CTO技術棧公眾號

久久av一区二区三区| 欧美三级一区| 国产精品日韩精品欧美在线| 国产日韩欧美视频在线| 美女福利视频在线观看| 国产精品自在| 欧美伊人久久大香线蕉综合69 | 一本久道久久综合无码中文| 久久久国产精品| 亚洲精品理论电影| 五月激情五月婷婷| 欧亚av在线| 亚洲欧美一区二区不卡| 久久国产精品一区二区三区 | 日韩一区二区在线播放| 国内外成人激情视频| 国产成人无吗| 久久综合国产精品| 91视频免费进入| 青娱乐在线免费视频| 亚洲香蕉网站| 色天天综合狠狠色| 欧美丰满少妇人妻精品| 蜜桃精品视频| 欧美日韩亚洲综合| 国产精品视频一区二区三区四区五区| 黄av在线免费观看| 国产偷v国产偷v亚洲高清| 国产伦精品一区二区三区照片| 亚洲视屏在线观看| 国产欧美成人| 国产综合在线视频| www青青草原| 欧美韩日一区| 国产亚洲精品久久久| 成熟妇人a片免费看网站| 综合久久av| 欧美撒尿777hd撒尿| 欧美视频第三页| aa级大片免费在线观看| 一区二区三区色| 久久av秘一区二区三区| www 日韩| 欧美国产激情一区二区三区蜜月| 精品网站在线看| 亚洲国产精品二区| 国产激情91久久精品导航| 成人免费视频网| 一级黄色大片免费| 日韩成人一区二区三区在线观看| 青青草一区二区| 日本一级片免费看| 亚洲毛片视频| 51ⅴ精品国产91久久久久久| 青青操免费在线视频| 一二三区精品| 97视频在线观看免费| 日韩在线观看第一页| 一本色道久久综合亚洲精品高清| 性色av一区二区三区| 日产亚洲一区二区三区| 亚洲激情午夜| 欧美一级视频一区二区| 亚洲国产成人无码av在线| 性一交一乱一区二区洋洋av| 成人午夜激情片| 国产欧美韩国高清| 中文字幕精品在线观看| 麻豆极品一区二区三区| 国产区亚洲区欧美区| 国产欧美日韩成人| 国产成人啪午夜精品网站男同| 国产精品乱码视频| 色视频精品视频在线观看| 久久久久综合网| 亚洲午夜激情| 色呦呦网站在线观看| 亚洲成精国产精品女| 久久久久久香蕉| 亚洲欧洲二区| 精品999在线播放| 免费看黄色的视频| 亚洲久久久久| 国外成人性视频| www.com亚洲| 精品一区二区三区免费| 91精品入口蜜桃| 色呦呦视频在线| 久久精品一区二区三区不卡 | 亚洲男女av一区二区| 欧美激情啊啊啊| 人妻 日韩精品 中文字幕| 久久成人18免费观看| 高清日韩一区| 国产乱子伦三级在线播放| 中文字幕一区二区三区乱码在线| 高清无码一区二区在线观看吞精| 亚洲美女尤物影院| 欧美福利电影网| 日本视频一区二区不卡| 中文字幕久久精品| 免费观看黄网站| 天天操综合520| 中文字幕日韩欧美在线| 妺妺窝人体色www婷婷| 久久久久久久波多野高潮日日| 国产欧美精品xxxx另类| 午夜影院免费体验区| 国产精品色哟哟| 日韩伦理在线免费观看| 一区在线不卡| 精品国产一区a| 亚洲毛片亚洲毛片亚洲毛片| 亚洲国产精品一区| 国产精品视频在线播放| 亚洲av毛片成人精品| 亚洲视频在线一区观看| 日本精品www| japanese色系久久精品| 少妇激情综合网| 国产区一区二区三| 成人午夜看片网址| 自拍偷拍视频在线| 97久久网站| 日韩精品极品视频免费观看| 久久国产精品波多野结衣av| 蜜桃久久av一区| 欧美乱偷一区二区三区在线| www在线看| 日韩免费看网站| 在线观看天堂av| 天堂va蜜桃一区二区三区| 国产精品免费一区二区三区四区 | 中文字幕1区2区3区| 91在线观看免费视频| 欧美黑人在线观看| 日本超碰一区二区| 久久手机免费视频| 国产又爽又黄又嫩又猛又粗| 国产精品污污网站在线观看| 茄子视频成人免费观看| 老牛国内精品亚洲成av人片| 国内精品400部情侣激情| www.99视频| 亚洲乱码中文字幕| 天天av天天操| 中文字幕日韩一区二区不卡| 成人午夜两性视频| 老司机在线看片网av| 欧美日韩亚洲高清一区二区| 免费看91的网站| 人人爽香蕉精品| 亚洲ai欧洲av| 日韩一级视频| 不卡中文字幕av| 国产激情久久久久久熟女老人av| 亚洲免费av高清| 国产精品99久久久精品无码| 在线成人国产| 久久综合狠狠综合久久综青草| 男人久久天堂| 亚洲日韩中文字幕| 欧美三级网站在线观看| 国产精品五月天| 国产精品自在自线| 欧美极品一区二区三区| 国产精品免费一区二区| 中文字幕在线官网| 中国人与牲禽动交精品| 一区二区三区免费在线| 亚洲麻豆国产自偷在线| 无码成人精品区在线观看| 亚洲专区一区| 五月天亚洲综合| 成人激情久久| 国产做受69高潮| 国产福利免费在线观看| 在线不卡欧美精品一区二区三区| 国产一区二区播放| 99精品视频中文字幕| 日本在线视频www| 91视频久久| 官网99热精品| 国产精品蜜月aⅴ在线| 欧美日韩aaaa| 国产精品免费观看| 欧美一区2区视频在线观看| 日本视频免费在线| 中文字幕av一区 二区| 熟妇无码乱子成人精品| 国产精品亚洲产品| 亚洲午夜激情| 日韩伦理一区二区三区| 国产在线精品成人一区二区三区| 伦理av在线| 欲色天天网综合久久| 国产成人精品毛片| 色视频一区二区| 久久精品www人人爽人人| 国产午夜亚洲精品不卡| 亚洲欧美激情一区二区三区| 石原莉奈在线亚洲二区| 欧美 国产 精品| 精品日韩毛片| 精品国产乱码久久久久久88av| 色综合久久久| 热久久99这里有精品| 污污网站在线看| 深夜福利国产精品| 欧美挠脚心网站| 日韩欧美黄色影院| 亚洲网站在线免费观看| 岛国精品视频在线播放| 天天看片中文字幕| 中文在线一区二区| 成人免费av片| 成人福利视频在线看| 欧美成年人视频在线观看| 国产精品日本欧美一区二区三区| 天天想你在线观看完整版电影免费| 久久av资源| 精品不卡在线| 国产精品久久久久av蜜臀| 91理论片午午论夜理片久久| 蜜桃视频成人m3u8| 日韩av手机在线看| zzzwww在线看片免费| 欧美大荫蒂xxx| 超碰人人在线| 少妇激情综合网| h网站在线免费观看| 亚洲欧美日韩精品久久亚洲区 | 成人久久网站| 日韩免费在线播放| 男人天堂视频在线观看| 国内揄拍国内精品| 久久久123| 欧美国产日韩免费| 色噜噜狠狠狠综合欧洲色8| 久久在线视频在线| 免费高清在线观看| 日韩视频在线免费观看| 日本高清视频在线观看| 这里只有精品在线播放| www.中文字幕久久久| 一本一道久久a久久精品逆3p| 天堂网2014av| 日韩成人在线电影网| 三级黄视频在线观看| 亚洲女同精品视频| 国产特黄在线| 一区二区三区国产在线观看| jzzjzzjzz亚洲成熟少妇| 中文字幕日本精品| 日本三级在线视频| 欧美大胆a视频| 人交獸av完整版在线观看| 欧美激情视频网址| 欧美久久天堂| 国产成+人+综合+亚洲欧美丁香花| 成人黄色免费短视频| 国产精品视频成人| 欧美影院视频| 久久国产精品一区二区三区| 亚洲制服欧美另类| 香蕉久久夜色| 亚洲国产精品久久久久蝴蝶传媒| 四虎精品欧美一区二区免费| 精品1区2区3区4区| 国产精品-区区久久久狼| 日韩成人一级大片| 国产91在线免费观看| a亚洲天堂av| 欧美黄色激情视频| 亚洲天堂成人网| 国产一级做a爰片在线看免费| 婷婷综合另类小说色区| 无码人妻黑人中文字幕| 7777精品伊人久久久大香线蕉的| 午夜精品久久久久久久96蜜桃| 日韩成人av在线| 日本视频在线播放| 午夜精品美女自拍福到在线| av高清一区| 国产成人精品日本亚洲11| 国产va免费精品观看精品视频| 亚洲综合激情五月| 一本久道久久综合婷婷鲸鱼| 日韩在线不卡一区| av电影在线观看完整版一区二区| 国产又粗又猛又爽又黄av| 亚洲精品视频在线看| 中文字幕精品三级久久久 | 欧美一级免费视频| 亚洲国产aⅴ精品一区二区三区| 国产精品综合久久久久久| 精品国产成人| 国产美女主播在线播放| 麻豆视频一区二区| 中文成人无字幕乱码精品区| 国产精品二区一区二区aⅴ污介绍| 国产在线免费视频| 欧美日韩精品欧美日韩精品一| 蜜臀av中文字幕| www.亚洲人.com| 中文在线а√天堂| 5g国产欧美日韩视频| 国产精品自拍区| 日本福利视频一区| 国内精品写真在线观看| 成人乱码一区二区三区av| 亚洲国产婷婷综合在线精品| 亚洲系列在线观看| 亚洲三级 欧美三级| 污污片在线免费视频| 91精品视频免费观看| 国产一区二区三区91| 日本丰满少妇xxxx| 国产99一区视频免费| 久久中文免费视频| 欧美日韩高清在线| 韩日在线视频| 欧美专区日韩视频| 国产在线播放精品| 欧美一级中文字幕| 精品写真视频在线观看| 亚洲最大成人综合网| 色哟哟精品一区| 四虎精品在线| 91精品国产91久久久久久最新| 2021年精品国产福利在线| 日本xxxxx18| 国产一区二区毛片| 四虎地址8848| 欧美裸体bbwbbwbbw| 午夜在线播放| 国产精品香蕉av| 日韩欧美高清在线播放| 性欧美videossex精品| 国产亚洲欧美在线| 日本视频免费观看| 亚洲美女性生活视频| 久久青青视频| 日韩欧美亚洲日产国| 亚洲欧美日韩国产综合精品二区 | 最新中文字幕一区二区三区| 最近中文字幕在线观看视频| 伊人青青综合网站| 国产一区二区主播在线| 午夜欧美性电影| 老司机精品视频一区二区三区| 成人无码精品1区2区3区免费看| 欧美日韩一区高清| 在线播放麻豆| 亚洲a成v人在线观看| 亚洲欧美一级二级三级| 污污免费在线观看| 天天av天天翘天天综合网色鬼国产| 无码国产色欲xxxx视频| 91精品国产自产91精品| 一道在线中文一区二区三区| wwwwww.色| 国产精品超碰97尤物18| 国产手机精品视频| 久久久噜噜噜久久中文字免| 日韩最新在线| 三级在线视频观看| 亚洲免费观看高清完整版在线 | 五十路熟女丰满大屁股| 99久久99久久精品免费看蜜桃| 日本一本在线观看| www国产精品com| 澳门成人av| 激情婷婷综合网| 日韩美女视频19| 少妇无码一区二区三区| 国产精品国产亚洲伊人久久| 亚洲成人精品| 屁屁影院国产第一页| 欧美视频在线一区| 亚洲丝袜精品| 欧美动漫一区二区| 久久激情五月婷婷| 国产成年人免费视频| 亚洲性夜色噜噜噜7777| 高清久久一区| 少妇性饥渴无码a区免费| 国产精品高潮久久久久无| 亚洲精品中文字幕成人片| 日本三级韩国三级久久| 亚洲啊v在线观看| 自拍偷拍中文字幕| 日韩一区二区视频在线观看| free欧美| www.国产在线视频| 中文字幕av在线一区二区三区| 日韩有码第一页| 成人疯狂猛交xxx| 亚洲欧美清纯在线制服| 欧美日韩在线视频免费|