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

編程語言的 IDE 支持

開發(fā) 后端
或許是出自于對編寫編程語言的興趣,又或許是對于創(chuàng)建 IDE/編輯器的興趣,對于『IDE/編輯器是如何提供編程語言的支持』,我充滿了興趣。

[[345814]]

或許是出自于對編寫編程語言的興趣,又或許是對于創(chuàng)建 IDE/編輯器的興趣,對于『IDE/編輯器是如何提供編程語言的支持』,我充滿了興趣。其中的一個主要原因是,這是每天我們打交道最多的工具,另外一個原因可能是,咦,我們怎么沒有國產(chǎn)的 IDE(手動狗頭)。

編輯器 & IDE

先前,我已經(jīng)在那篇《編輯器的自制》中介紹了,怎么去創(chuàng)建一個簡單的文本編輯器?這是一個相對簡單的問題。對于一個可用的代碼編輯器來說,我們對它的基本訴求是:快速啟動 + 語法高亮,然后能進行基本的文本編輯。不過呢,這是以我角度來看待問題的,我的想法里:一個編輯器,就干好一個編輯器應該做的事情。對于一些開發(fā)人員而言,他/她們會配置上強大的各種支持功能,以使它看上去像是一個 IDE。而后呢,它失去了快速啟動的能力,或者失去了一部分的快速啟動的速度,這便是有些遺憾的。

關于編輯器與 IDE 的這一一點的討論,似乎會有些偏頗。我自知我是一個 IDE 黨,擁有公司提供的 Jetbrains 全家桶。日常我也會使用 Sublime Text、Xi Editor、Vim、VS Code 進行一些快速的文件修改和查找。順便提一句,盡管過去我是一個 Emacs 粉,但是自我寫了自己的 Markdown 編輯器之后,我已經(jīng)……。好在下一步,我打算做一個自己的代碼編輯器,這樣一來,也許就不會那么內(nèi)疚了。或許呢,我已經(jīng)在實現(xiàn)的路上了。

回到正題上,如果是一個 IDE 的話(以 IDEA 老用戶的感受),那么我估摸著需要這么一些功能:

  1. 語法高亮
  2. 文本編輯
  3. 子系統(tǒng)關聯(lián)與集成
  4. 跳轉與引用分析
  5. 智能感知
  6. 重構
  7. 快速修復
  8. 語言特性分析
  9. 結構化視圖
  10. ……

PS:仔細一看,諸如于 VSCode 這一類強大的編輯器里,已經(jīng)內(nèi)置了大部分的功能,而且它還是免費的。你還只需要一個,不需要啟動多個不同的 IDE,還省下了硬盤空間。笑~

不過,總的來說,這些功能都依賴于詞法分析,有了這個支持,才能進行其它部分的操作。

語法分析

對于開發(fā)工具來說,語法分析有幾個重要的功能:

  • 語法高亮,是指根據(jù)術語類別來顯示不同的顏色與字體以增強可讀性的一種編輯器特性。
  • 實現(xiàn)智能感知
  • 實現(xiàn)跳轉和引用分析

從我粗糙的調(diào)查來看,大致可以分析為四類:

  • 基于正則表達式來實現(xiàn)語法分析

Sublime Text 基于 YAML 形式的正則匹配方式:Sublime Syntax files

Textmate、VS Code 基于 JSON 的正則匹配方式:Language Grammars

  • 基于語法分析器(如 BNF)生成中間代碼

Jetbrins 基于 BNF 生成代碼的方式:Grammar and Parser

  • 自制 DSL 進行語法解析

Vim 基于正則 + 自制 DSL:Vim documentation: syntax、Rust 示例

  • 手寫解析語法

Eclipse IDE 提供了個 JFace editor,但是似乎是要手寫:FAQ How do I provide syntax coloring in an editor?

Emacs Mode: ModeTutorial

每一類各自有各自的優(yōu)缺點和編寫難度。但是,總的來說,沒有一個方式是簡單的。

正則實現(xiàn)語法分析

對于正則方式來說,不論是 Sublime Text 還是 Textmate 及基于 Textmate 語法規(guī)則的 VS Code,它們都有一個顯著的缺點:長,如 VCode 的java.tmLanguage.json,從長度上來說,我看到的這個版本有 1831 行。表達方式也有些繁瑣:

  1. "comments": { 
  2. "patterns": [ 
  3. "captures": { 
  4. "0": { 
  5. "name""punctuation.definition.comment.java" 
  6. }, 
  7. "match""/\\*\\*/"
  8. "name""comment.block.empty.java" 
  9. }, 
  10. "include""#comments-inline" 
  11. }, 

其中還有各種 include 關系等。對于 Sublime Text 也是類似的:

  1. comments: 
  2. - match: /\*\*/ 
  3. scope: comment.block.empty.java punctuation.definition.comment.java 
  4. - include: scope:text.html.javadoc 
  5. - include: comments-inline 

看了看,是不是會懷疑他們建立了語法同盟。

但是呢,yaml 和 json 是一個編程語言無關的東西。所以,VS Code 和 Atom 可以基于 Textmate 語法規(guī)則,快速建立對于主流語言的詞法分析,從而建立了語法高亮的支持。

我們也可以說 BNF 是一種編程語言無關的東西。但是,實際上在我們操作的時候,就會加入一些編程語言特定的要素。

語法分析器分析

由于先前編寫系統(tǒng)分析工具 Coca 和通用語法分析器 Chapi ,我對于 BNF 的詞法也是頗為上手的——實際上不難。唯一麻煩的地方就是,寫完之后,我們要編寫代碼做一些轉換,所以讓我們來看看 Jetbrians 插件的示例:

  1. COMMENT = 'regexp://[^\r\n]*' 
  2. BLOCK_COMMENT = 'regexp:[/][*][^*]*[*]+([^/*][^*]*[*]+)*[/]' 

這一點上和 antlr 沒有太大的區(qū)別:

  1. WS: [ \t\r\n\u000C]+ -> channel(HIDDEN); 
  2. COMMENT: '/*' .*? '*/' -> channel(HIDDEN); 
  3. LINE_COMMENT: '//' ~[\r\n]* -> channel(HIDDEN); 

然后,就是設計和分析詞法了:

  1. functionParameters ::= 
  2. LPAREN inputParameters RPAREN outputParameters? 
  3. IN SUB GT inputParameters 
  4. | outputParameters 

接著,在 IDEA 里面,我們可以通過這個 BNF 文件生成對應的 Lexer 文件和代碼等。對于使用 Antlr 編寫的詞法來說,Java 部分的代碼規(guī)模也就在 800 左右。

不過呢,從兩者的閱讀體驗對比來看,顯然 BNF 會更加友好一點。

自制 DSL 語法解析

頗為遺憾的是,我尚未寫過任何的 Vim 插件,好在我還知道 Vim 是如何退出來的。我使用 Vim 作為 git 的 editor,還熟知一些 Vim 編輯的常用快捷鍵。所以,語法高亮這一部分主要是參考 Vim 的文檔編寫和代碼示例。這里我找到了一個不錯的中文翻譯:語法高亮

總的來說,語法規(guī)則就是: syn vim關鍵字 匹配規(guī)則,如:

  1. syn region rustCommentLine start="//" end="$" contains=rustTodo,@Spell 
  2. syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell 
  3. syn region rustCommentLineDocError start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell contained 
  4. syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo, 

看上去依舊是正則匹配,如 Float:

  1. syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)\=" 
  2. syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\(f32\|f64\)\=" 
  3. syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)" 

不過,從算法形式上來說,完勝 Textmate 和 Sublime,畢竟是高級的 DSL。

編程語言語法解析

Emacs 的 mode 里包含了對于語法高亮的處理,于是為了這個高亮,我們需要寫寫 emacs lisp 代碼。如:

  1. (defvar rust-formatting-macro-opening-re 
  2. "[[:space:]\n]*[({[][[:space:]\n]*" 
  3. "Regular expression to match the opening delimiter of a Rust formatting macro."
  4.  
  5. (defvar rust-start-of-string-re 
  6. "\\(?:r#*\\)?\"" 
  7. "Regular expression to match the start of a Rust raw string."

對于 Eclipse 來說,這個過程就更加麻煩了。

語言的高級支持

在我們實現(xiàn)了開發(fā)工具的詞法分析接口之后,我們就能按不同的 IDE/編輯器所定義的接口,進行定制了。這是一個繁雜,而又充滿挑戰(zhàn)的工作。對于不同的工具來說,它們的接口相關也甚多。我也并非都能一一了解 API,所以只能簡單的以 IDEA 作為一個示例來展示。主要原因大概有兩個:1. 我日常使用的是 Jetbrains 相關的 IDE;2. 我已經(jīng)有一部分代碼了。

語法高亮

在進行了復雜的語法分析之后,接著,我們就可以快速進入一個簡單的環(huán)節(jié),對代碼進行高亮。關于高亮的話,我們可以快速進行一個分類:

  • 關鍵詞。即編程語言的關鍵詞,如 C 語言中的 32 個關鍵詞。
  • 標識符。用戶定義的字符串,如變量名、結構體名、函數(shù)名等等。
  • 特殊詞法。
  • 重要的詞法。根據(jù)需要,可以針對于函數(shù)名、靜態(tài)函數(shù)名等進行標識,以提升識別度。

如下是 Go 語言的一些關鍵詞:

  1. (defconst go-mode-keywords 
  2. '("break" "default" "func" "interface" "select" 
  3. "case" "defer" "go" "map" "struct" 
  4. "chan" "else" "goto" "package" "switch" 
  5. "const" "fallthrough" "if" "range" "type" 
  6. "continue" "for" "import" "return" "var"
  7. "All keywords in the Go language. Used for font locking."

所以,在這個場景之下,不論是何種的 IDE 又或者是編輯器都可以快速實現(xiàn)。

跳轉 goto

不同開發(fā)工具,有各種的跳轉規(guī)則,不同的語言也有各自的跳轉方式。如 Emacs 的 go-mode 就定義了一系列的跳轉:

  1. (let ((m (define-prefix-command 'go-goto-map))) 
  2. (define-key m "a" #'go-goto-arguments) 
  3. (define-key m "d" #'go-goto-docstring) 
  4. (define-key m "f" #'go-goto-function
  5. (define-key m "i" #'go-goto-imports) 
  6. (define-key m "m" #'go-goto-method-receiver) 
  7. (define-key m "n" #'go-goto-function-name
  8. (define-key m "r" #'go-goto-return-values)) 

而 IDEA 也提供了一系列接口來實現(xiàn)類似的功能,如:

  1. gotoActionAliasMatcher 
  2. gotoClassContributor 
  3. gotoSymbolContributor 
  4. gotoFileContributor 
  5. gotoRelatedProvider 

我們只需要分析光標符所在的位置,其所定義的語法,如 IDEA 里是 PSI,再實現(xiàn)對應的邏輯即可。如:

  1. @Override 
  2. public @NotNull NavigationItem[] getItemsByName(String name, String pattern, Project project, boolean includeNonProjectItems) { 
  3. List<CharjStructDeclaration> properties = findStructByKey(project, name); 
  4. return properties.toArray(new NavigationItem[properties.size()]); 

這里定義的是數(shù)據(jù)結構的導航。當我們按下快捷鍵的時候,會傳入 name、pattern 等信息。接著,從所有相關的文件(VirtualFile)中尋找對應的 struct,返回即可。

自動填充

主要可以分為兩類,一類是:代碼段(Snippets),一類是:自動填充(Completion)

好像也沒啥說的,就是綁定在特定關鍵字上的內(nèi)容。

其它

剩下的就是一些比較有意思的功能,諸如于:

  • fileType。文件圖標支持。即某一類型的文件,使用特定的圖標來展示。
  • commet 。即按下注釋的快捷鍵,能快速的注釋和反注釋代碼。
  • line marker。IDEA 提供的功能,用于在行上通過圖標來展示特定的功能。
  • folding。提供特定的代碼段的折疊功能。
  • 數(shù)據(jù)視圖。展示特定數(shù)據(jù)結構關系及參數(shù)等的視圖。
  • ……

其它

我一直在尋找一直簡易的方式,以快速識別編程語言,并標識它們。所以,也就有了這篇文章。

雖然,還在探尋,但是呢,似乎已經(jīng)有了一個初步的結果。

本文轉載自微信公眾號「 phodal」,可以通過以下二維碼關注。轉載本文請聯(lián)系 phodal公眾號。

 

 

責任編輯:武曉燕 來源: phodal
相關推薦

2010-03-29 17:56:20

Nginx反向代理

2012-04-05 09:49:10

Windows 8編程語言

2020-12-15 06:45:01

編程語言

2009-06-11 11:15:40

JSF開發(fā)工具

2018-06-04 09:30:07

編程語言安卓應用開發(fā)

2015-12-04 10:05:09

蘋果編程開源

2025-02-14 08:13:05

AI技術開發(fā)

2015-11-02 14:48:05

LinuxR 語言

2022-06-15 09:54:51

PythonIDELinux

2010-06-29 14:54:42

NetBeansNetBeans 6.

2023-05-31 09:09:34

開發(fā)者

2016-01-29 09:38:03

編程swiftubuntu

2020-09-18 15:22:31

編程語言C語言Java

2023-08-31 22:53:33

IDE工具窗口

2012-09-28 13:23:43

編程語言語言進化程序員

2023-08-01 13:09:42

代碼開發(fā)

2022-06-16 16:08:00

Python初學者IDE

2021-03-22 10:07:11

LinuxIDE驅動支持

2010-03-19 09:39:17

Python編程語言

2021-01-13 10:40:42

編程語言PLCGraph
點贊
收藏

51CTO技術棧公眾號

国产深夜男女无套内射| 黑丝一区二区三区| 久久国产三级精品| 日韩欧美中文字幕制服| 91国在线精品国内播放| caoporn超碰97| 丰满肉肉bbwwbbww| 欧美中文字幕一区二区| 午夜精品在线视频一区| 91九色单男在线观看| 91久久免费视频| 黄色的视频在线观看| 国产午夜一区| 午夜精品一区二区三区电影天堂 | 久久伊人色综合| 激情综合网俺也去| 人人澡人人添人人爽一区二区| 青青草91视频| 日韩精品在线视频美女| 激情成人开心网| 国产女同91疯狂高潮互磨| 精品在线手机视频| 欧美性感美女h网站在线观看免费| 99爱精品视频| 东方av正在进入| 日韩午夜电影免费看| 久久综合色婷婷| 午夜精品在线观看| 波多野结衣一二三区| 免费av在线网站| 精品一区二区综合| xx视频.9999.com| 国产黄色特级片| 精品福利视频导航大全| 麻豆亚洲精品| 亚洲一区二区国产| 五月婷婷深爱五月| 午夜精品一区| 激情综合五月婷婷| 欧美成人免费va影院高清| 国产传媒免费观看| gogogogo高清视频在线| 精品一区二区三区免费毛片爱| 5566成人精品视频免费| 最近中文字幕免费视频| 豆花视频一区二区| 欧美日韩一区二区在线| 欧美午夜视频在线| 久久久久久无码午夜精品直播| 奇米亚洲欧美| 国产视频久久久久| 在线免费观看污视频| 亚洲成人激情社区| 国产精品福利一区| 91九色极品视频| 亚洲欧美在线视频免费| 你微笑时很美电视剧整集高清不卡| 欧美精品一区视频| 18岁网站在线观看| 成人全视频高清免费观看| 黄网站免费久久| 国产欧美精品xxxx另类| 久久成人在线观看| 丝袜连裤袜欧美激情日韩| 欧美日韩午夜在线| 精品久久久无码人妻字幂| www在线免费观看视频| 亚洲天堂福利av| 国产精品sss| jizz国产在线观看| 日韩制服丝袜av| 欧美高清第一页| 免费观看av网站| 免费观看性欧美大片无片| 亚洲成av人片观看| 每日在线更新av| 国精产品一区二区三区有限公司 | 国产天堂第一区| 欧美日韩18| 亚洲亚裔videos黑人hd| 国产馆在线观看| 久久大胆人体视频| 欧美精品 国产精品| 免费在线激情视频| av网站在线看| 国产精品毛片大码女人| 久久久综合香蕉尹人综合网| 国产露脸国语对白在线| 免费永久网站黄欧美| 欧美另类第一页| 美女av免费看| 欧美喷水视频| 国产成人久久久| 欧美亚韩一区二区三区| 久久综合五月| 91成人在线播放| 久久精品国产亚洲av麻豆蜜芽| 激情欧美日韩一区二区| 国产在线精品日韩| 空姐吹箫视频大全| 久久久99精品免费观看不卡| 国产一区在线观| 春暖花开成人亚洲区| 亚洲黄色小说网站| 在线观看免费黄色片| 国产视频网站在线| 久久理论电影网| 中国成人在线视频| 久操视频在线观看| 中文字幕制服丝袜成人av | 久久黄色美女电影| 欧美日韩裸体免费视频| 波多野结衣在线免费观看| 国产成人免费| 欧美在线你懂得| 亚洲一区二区蜜桃| 东京久久高清| 欧美xxxx18性欧美| 中文字幕人妻一区二区在线视频 | 国产成人中文字幕| 亚洲精品国产suv一区| 九九久久精品视频| 精品国产日本| 亚洲欧美自偷自拍| av亚洲精华国产精华| 超碰97人人在线| 日本电影在线观看网站| 日韩欧美精品网址| 亚洲麻豆一区二区三区| 国产66精品| 久久久国产成人精品| 久久99久久98精品免观看软件| 麻豆成人久久精品二区三区小说| 麻豆成人小视频| 国产福利免费在线观看| 五月婷婷综合激情| av在线天堂网| 欧美午夜18电影| 在线观看国产欧美| 成人免费精品动漫网站| 欧美激情精品久久久六区热门| 色综合久久悠悠| 国产一区二区三区中文字幕 | 亚洲成人777| 无码专区aaaaaa免费视频| 99国内精品久久久久| 日韩一区和二区| 久久爱一区二区| 日韩一区二区免费看| 欧洲成人在线视频| 国产又色又爽又黄又免费| 国产清纯白嫩初高生在线观看91| 亚洲永久一区二区三区在线| 污污片在线免费视频| 狠狠躁夜夜躁人人爽天天天天97| 欧美极品jizzhd欧美仙踪林| 国一区二区在线观看| 国产一级二级三级精品| www在线观看黄色| 色先锋资源久久综合| 国产高清999| 老司机精品视频在线播放| 欧美黑人国产人伦爽爽爽| 亚洲第一免费视频| 天天亚洲美女在线视频| 午夜一级免费视频| 亚洲乱码免费伦视频| 69视频在线播放| 亚洲 欧美 激情 另类| 色婷婷精品大在线视频| 色噜噜噜噜噜噜| 在线国产日韩| 国产在线观看一区二区三区 | 亚洲免费成人av电影| 爱爱视频免费在线观看| 国产精品伊人色| 水蜜桃亚洲一二三四在线| 人人超在线公开视频| 亚洲成人网av| 玖玖爱这里只有精品| 国产999精品久久| 午夜久久资源| 久久久国产精品入口麻豆| 午夜精品一区二区三区在线视| 免费人成黄页在线观看忧物| 亚洲一区在线视频观看| 中文字幕资源在线观看| 欧美日韩国产欧| 久久精品国产一区二区三区不卡| 日本精品在线一区| 亚洲欧美成人在线| 怡红院成永久免费人全部视频| 亚洲黄色片在线观看| 超碰97人人干| 国产一区二区0| 色撸撸在线观看| 日本国产一区| 国内精品伊人久久| 亚洲国产精品18久久久久久| 色婷婷精品大在线视频| 日韩一级片av| 精品中文字幕一区二区| 可以看毛片的网址| 麻豆精品国产| 日韩av日韩在线观看| 欧美成人免费| 欧美一二三在线| 波多野结衣高清视频| 久久欧美中文字幕| 久草福利在线观看| 欧美日韩亚洲一区二区三区在线| 日本视频一区二区在线观看| 亚洲欧美韩国| 亚洲精品视频二区| 国产成人精品av在线观| 一区二区三区**美女毛片| 超碰人人cao| 青青草精品视频| av在线播放亚洲| 欧美91大片| 一区二区成人国产精品| 亚洲男人都懂第一日本| 日本成人免费在线| 男人添女人下部高潮视频在线观看| 一区二区三区 在线观看视| 欧洲精品久久一区二区| 五月天国产精品| 精品国产视频在线观看| 国产目拍亚洲精品99久久精品| av2014天堂网| 成人avav影音| 国产精品天天av精麻传媒| 亚洲三级网站| 欧美日韩国产免费一区二区三区| 99亚洲乱人伦aⅴ精品| 午夜剧场成人观在线视频免费观看| 日本综合在线| 中文日韩在线观看| 99草在线视频| 91麻豆精品国产91久久久| 欧美成人一区二区三区高清| 国产精品国产三级国产aⅴ原创| 亚洲区自拍偷拍| 国产资源在线一区| 国产精品自在自线| 久久66热偷产精品| 久热精品在线播放| 中出一区二区| 欧美一级黄色录像片| 中文在线日韩| av 日韩 人妻 黑人 综合 无码| 中文字幕一区二区三区乱码图片| 精品国产一区二区三区在线| 日韩高清成人在线| 九色一区二区| 国产毛片一区二区三区| 日本一区二区三区精品视频| 人人狠狠综合久久亚洲婷| 视频一区不卡| 国产电影一区二区在线观看| 国产精品亚洲综合| 成人国产一区| 国产色综合天天综合网| 欧美黄视频在线观看| 福利视频一区二区三区| 秋霞影视一区二区三区| 日本不卡久久| 婷婷久久国产对白刺激五月99| 视频一区二区视频| 在线国产欧美| 91淫黄看大片| 国内外成人在线视频| 白丝校花扒腿让我c| 91片在线免费观看| 国产精品久久久久野外| 成人国产精品免费观看| 精品人妻互换一区二区三区| 国产精品福利电影一区二区三区四区| 欧美三级在线免费观看| 精品久久久久久久久久久久久久| 无码人妻熟妇av又粗又大 | 国产黄色片av| 亚洲精品720p| www久久久久久| 欧美日韩国产片| 中文字幕激情小说| 亚洲国产一区在线观看| 亚洲黄色免费观看| 天天综合日日夜夜精品| 中文字幕免费在线看| 欧美成人vr18sexvr| 国产又粗又黄又爽| 亚洲国产精品中文| h视频在线免费| 欧美激情第三页| av亚洲一区| 国产区二精品视| 天天射成人网| 欧美日韩中文在线视频| 国产麻豆精品久久一二三| 人人妻人人澡人人爽人人精品 | 亚洲v欧美v另类v综合v日韩v| 欧美成人一品| 91最新在线观看| 成人av动漫在线| 疯狂试爱三2浴室激情视频| 色综合视频在线观看| 亚洲国产日韩在线观看| 综合久久五月天| 成人线上视频| 亲爱的老师9免费观看全集电视剧| 91成人app| 日韩hmxxxx| 日韩久久视频| 在线观看国产一区| 久久xxxx精品视频| 美女久久久久久久久| 亚洲欧美影音先锋| 一区二区国产精品精华液| 欧美性黄网官网| 天堂中文在线观看视频| 亚洲精品www久久久久久广东| 国产一区久久精品| 国产欧美中文字幕| 欧美三级伦理在线| 国产精品99久久久久久大便| 久久中文欧美| 欧美图片一区二区| 天天操天天干天天综合网| 亚洲AV无码乱码国产精品牛牛 | 激情欧美日韩一区二区| 欧美人与禽zoz0善交| 日韩欧美在线视频日韩欧美在线视频 | 大香伊人中文字幕精品| 亚洲tv在线观看| 久9re热视频这里只有精品| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | 中文字幕久热精品在线视频| 成人美女黄网站| 免费看污久久久| 媚黑女一区二区| 久久精品老司机| 色综合一区二区| 蜜桃视频在线观看网站| 日本一欧美一欧美一亚洲视频| 欧美巨大xxxx| 国产三区在线视频| 国产亚洲一区二区三区四区 | 尤物av一区二区| www.亚洲天堂.com| 欧美高跟鞋交xxxxxhd| 97久久亚洲| 欧美久久久久久久久久久久久| av不卡在线观看| 日韩特级黄色片| 欧美精品在线观看一区二区| 一级日本在线| 亚洲va欧美va国产综合剧情| 欧美1区3d| 日韩精品视频一区二区| 欧美性猛交xxxx富婆| 韩国三级在线观看久| 国产精品久久久久不卡| 成人自拍在线| 自慰无码一区二区三区| 久久一日本道色综合| 怡春院在线视频| 欧美另类精品xxxx孕妇| 欧美日韩导航| 午夜dv内射一区二区| 亚洲日本丝袜连裤袜办公室| 丰满肉肉bbwwbbww| 国产成人精品网站| 欧美高清在线| 成人在线观看a| 国产精品美女久久久久久久久 | 在线观看一区二区三区三州| 国内久久精品视频| 亚洲精品国产精品乱码| 国产亚洲激情在线| 国产精品777777在线播放| 欧美日韩精品不卡| 久久精品国产亚洲a| 免费又黄又爽又色的视频| 日韩电影网在线| 国产福利视频在线观看| 国产精品av一区| 美女视频网站久久| 久久亚洲无码视频| 欧美性黄网官网| 免费av在线网站| 精品国产中文字幕| 美腿丝袜在线亚洲一区| 欧美人与禽zozzo禽性配| 亚洲片在线资源| 少妇淫片在线影院| 国内精品久久久久久久果冻传媒| 视频一区中文字幕国产| 免费无码毛片一区二区app| 亚洲性线免费观看视频成熟|