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

隨筆-341  評(píng)論-2670  文章-0  trackbacks-0
    休息了大半個(gè)月,沒(méi)寫自己的代碼了。國(guó)慶過(guò)了,再不為自己寫寫代碼就有負(fù)罪感了。這篇文章所提到的所有工具的代碼都可以在Vczh Library++ 3.0的頁(yè)面找到。上一篇文章提到了一個(gè)狀態(tài)機(jī)繪圖工具,直到最近我終于把他的第一個(gè)部分給做好了?,F(xiàn)在可以畫圖之后產(chǎn)生一個(gè)可以供這里所描述的高亮控件所使用的著色器了。第一步我們要使用TokenizerBuilder繪制一個(gè)狀態(tài)機(jī):

    然后點(diǎn)擊“Generate to Clipboard”按鈕,就會(huì)要求你輸入一個(gè)類名然后產(chǎn)生著色器插件的代碼了。上面這個(gè)是一個(gè)簡(jiǎn)化過(guò)的C#代碼著色狀態(tài)機(jī),其中Id有個(gè)星號(hào)代表不是所有走到這個(gè)狀態(tài)的東西都可以叫Id(其實(shí)是關(guān)鍵字,懶得改了)。中括號(hào)里面的是顏色的名稱。這些名稱最終是要拿來(lái)生成代碼的,所以必須是C#接受的可以拿來(lái)做變量名的東西,不過(guò)我也沒(méi)檢查,只管拼接字符串生成。

    我把生成后的代碼貼在了CodeForm工程的CSharpTokenizer.Generated.cs里:


    第三步就是要自己建立一個(gè)CSharpColorizer.Configuration.cs了。C#的partial class真是偉大,簡(jiǎn)直就是為了代碼生成而設(shè)計(jì)出來(lái)的。在這里我們看看生成后的CSharpColorizer.Generated.cs的代碼:
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using CodeBoxControl;
  6 using System.Drawing;
  7 
  8 namespace CodeForm
  9 {
 10     partial class CSharpColorizer : ITextEditorColorizer
 11     {
 12         //public const int NormalColorId = 0;
 13         public const int IdColorId = NormalColorId + 1;
 14         public const int StringColorId = NormalColorId + 2;
 15         public const int CommentColorId = NormalColorId + 3;
 16 
 17         //private readonly Color HighlightColor = Color.FromArgb(173, 214, 255);
 18         //private readonly Color NormalColor = Color.FromArgb(0, 0, 0);
 19         //private readonly Color IdColor = Color.FromArgb(0, 0, 0);
 20         //private readonly Color StringColor = Color.FromArgb(0, 0, 0);
 21         //private readonly Color CommentColor = Color.FromArgb(0, 0, 0);
 22 
 23         private const int StartState = 0;
 24         private const int NormalState = 1;
 25         private const int IdStateId = 2;
 26         private const int InStringStateId = 3;
 27         private const int InStringEscapingStateId = 4;
 28         private const int InCharStateId = 5;
 29         private const int InCharEscapingStateId = 6;
 30         private const int StringStateId = 7;
 31         private const int CommentStartStateId = 8;
 32         private const int SingleLineCommentStateId = 9;
 33         private const int InMultipleLineCommentStateId = 10;
 34         private const int InMultipleLineCommentWaitingToFinishStateId = 11;
 35         private const int MultipleLineCommentStateId = 12;
 36 
 37         private TextEditorColorItem[] colorItems = new TextEditorColorItem[NormalColorId + 4];
 38         private int[] charset = new int[65536];
 39         private int[,] transitions = new int[1311];
 40         private bool[] finalStates = new bool[13];
 41         private int[] stateColors = new int[13];
 42 
 43         public TextEditorColorItem[] ColorItems
 44         {
 45             get
 46             {
 47                 return this.colorItems;
 48             }
 49         }
 50 
 51         public CSharpColorizer()
 52         {
 53             this.colorItems[NormalColorId] = new TextEditorColorItem()
 54             {
 55                 Text = NormalColor,
 56                 HighlightText = NormalColor,
 57                 Highlight = HighlightColor
 58             };
 59             this.colorItems[IdColorId] = new TextEditorColorItem()
 60             {
 61                 Text = IdColor,
 62                 HighlightText = IdColor,
 63                 Highlight = HighlightColor
 64             };
 65             this.colorItems[StringColorId] = new TextEditorColorItem()
 66             {
 67                 Text = StringColor,
 68                 HighlightText = StringColor,
 69                 Highlight = HighlightColor
 70             };
 71             this.colorItems[CommentColorId] = new TextEditorColorItem()
 72             {
 73                 Text = CommentColor,
 74                 HighlightText = CommentColor,
 75                 Highlight = HighlightColor
 76             };
 77             // You should write your own CreateAdditionalColors() implementation to add additional colors.
 78             // You can modify the NormalColorId and put all additional colors ids before NormalColorId.
 79             // It is recommended to use another partial class to store all customized code.
 80             CreateAdditionalColors();
 81             CreateStateMachine();
 82         }
 83         public int ColorizeLine(char[] items, int length, int initialState, int[] colors)
 84         {
 85             int state = initialState;
 86             int itemStart = 0;
 87             int lastFinalState = StartState;
 88 
 89             for (int i = 0; i <= length; i++)
 90             {
 91                 if (i != length)
 92                 {
 93                     state = transitions[state, charset[items[i]]];
 94                     if (state == StartState)
 95                     {
 96                         state = transitions[state, charset[items[i]]];
 97                     }
 98                 }
 99                 else
100                 {
101                     lastFinalState = state;
102                 }
103 
104                 if (i == length || lastFinalState != state && lastFinalState != StartState)
105                 {
106                     int color = stateColors[lastFinalState];
107                     switch (lastFinalState)
108                     {
109                         case IdStateId:
110                             // You should write your own IsValidId implementation.
111                             color = IsValidId(new string(items, itemStart, Math.Min(i, length) - itemStart)) ? stateColors[lastFinalState] : NormalColorId;
112                             break;
113                     }
114                     for (int j = itemStart; j < i; j++)
115                     {
116                         colors[j] = color;
117                     }
118                     itemStart = i;
119                 }
120                 lastFinalState = finalStates[state] ? state : StartState;
121             }
122 
123             return transitions[state, charset['\n']];
124         }
125 
126         private void CreateStateMachine()
127         {
128             for (int i = 0; i < 10; i++)
129                 charset[i] = 0;
130             for (int i = 10; i < 11; i++)
131                 charset[i] = 1;
132             for (int i = 11; i < 34; i++)
133                 charset[i] = 0;
134             for (int i = 34; i < 35; i++)
135                 charset[i] = 2;
136             for (int i = 35; i < 36; i++)
137                 charset[i] = 3;
138             for (int i = 36; i < 39; i++)
139                 charset[i] = 0;
140             for (int i = 39; i < 40; i++)
141                 charset[i] = 4;
142             for (int i = 40; i < 42; i++)
143                 charset[i] = 0;
144             for (int i = 42; i < 43; i++)
145                 charset[i] = 5;
146             for (int i = 43; i < 47; i++)
147                 charset[i] = 0;
148             for (int i = 47; i < 48; i++)
149                 charset[i] = 6;
150             for (int i = 48; i < 58; i++)
151                 charset[i] = 7;
152             for (int i = 58; i < 65; i++)
153                 charset[i] = 0;
154             for (int i = 65; i < 91; i++)
155                 charset[i] = 8;
156             for (int i = 91; i < 92; i++)
157                 charset[i] = 0;
158             for (int i = 92; i < 93; i++)
159                 charset[i] = 9;
160             for (int i = 93; i < 95; i++)
161                 charset[i] = 0;
162             for (int i = 95; i < 96; i++)
163                 charset[i] = 8;
164             for (int i = 96; i < 97; i++)
165                 charset[i] = 0;
166             for (int i = 97; i < 123; i++)
167                 charset[i] = 8;
168             for (int i = 123; i < 65536; i++)
169                 charset[i] = 0;
170 
171             finalStates[0= false;
172             finalStates[1= true;
173             finalStates[2= true;
174             finalStates[3= false;
175             finalStates[4= false;
176             finalStates[5= false;
177             finalStates[6= false;
178             finalStates[7= true;
179             finalStates[8= false;
180             finalStates[9= true;
181             finalStates[10= false;
182             finalStates[11= false;
183             finalStates[12= true;
184 
185             stateColors[0= NormalColorId + 0;
186             stateColors[1= NormalColorId + 0;
187             stateColors[2= NormalColorId + 1;
188             stateColors[3= NormalColorId + 2;
189             stateColors[4= NormalColorId + 2;
190             stateColors[5= NormalColorId + 2;
191             stateColors[6= NormalColorId + 2;
192             stateColors[7= NormalColorId + 2;
193             stateColors[8= NormalColorId + 0;
194             stateColors[9= NormalColorId + 3;
195             stateColors[10= NormalColorId + 3;
196             stateColors[11= NormalColorId + 3;
197             stateColors[12= NormalColorId + 3;
198 
199             transitions[00= 1;
200             transitions[01= 1;
201             transitions[02= 3;
202             transitions[03= 2;
203             transitions[04= 5;
204             transitions[05= 1;
205             transitions[06= 8;
206             transitions[07= 1;
207             transitions[08= 2;
208             transitions[09= 1;
209             transitions[010= 1;
210             transitions[10= 0;
211             transitions[11= 0;
212             transitions[12= 0;
213             transitions[13= 0;
214             transitions[14= 0;
215             transitions[15= 0;
216             transitions[16= 0;
217             transitions[17= 0;
218             transitions[18= 0;
219             transitions[19= 0;
220             transitions[110= 0;
221             transitions[20= 0;
222             transitions[21= 0;
223             transitions[22= 0;
224             transitions[23= 0;
225             transitions[24= 0;
226             transitions[25= 0;
227             transitions[26= 0;
228             transitions[27= 2;
229             transitions[28= 2;
230             transitions[29= 0;
231             transitions[210= 0;
232             transitions[30= 3;
233             transitions[31= 0;
234             transitions[32= 7;
235             transitions[33= 3;
236             transitions[34= 3;
237             transitions[35= 3;
238             transitions[36= 3;
239             transitions[37= 3;
240             transitions[38= 3;
241             transitions[39= 4;
242             transitions[310= 0;
243             transitions[40= 3;
244             transitions[41= 0;
245             transitions[42= 3;
246             transitions[43= 3;
247             transitions[44= 3;
248             transitions[45= 3;
249             transitions[46= 3;
250             transitions[47= 3;
251             transitions[48= 3;
252             transitions[49= 3;
253             transitions[410= 0;
254             transitions[50= 5;
255             transitions[51= 0;
256             transitions[52= 5;
257             transitions[53= 5;
258             transitions[54= 7;
259             transitions[55= 5;
260             transitions[56= 5;
261             transitions[57= 5;
262             transitions[58= 5;
263             transitions[59= 6;
264             transitions[510= 0;
265             transitions[60= 5;
266             transitions[61= 0;
267             transitions[62= 5;
268             transitions[63= 5;
269             transitions[64= 5;
270             transitions[65= 5;
271             transitions[66= 5;
272             transitions[67= 5;
273             transitions[68= 5;
274             transitions[69= 5;
275             transitions[610= 0;
276             transitions[70= 0;
277             transitions[71= 0;
278             transitions[72= 0;
279             transitions[73= 0;
280             transitions[74= 0;
281             transitions[75= 0;
282             transitions[76= 0;
283             transitions[77= 0;
284             transitions[78= 0;
285             transitions[79= 0;
286             transitions[710= 0;
287             transitions[80= 1;
288             transitions[81= 1;
289             transitions[82= 1;
290             transitions[83= 1;
291             transitions[84= 1;
292             transitions[85= 10;
293             transitions[86= 9;
294             transitions[87= 1;
295             transitions[88= 1;
296             transitions[89= 1;
297             transitions[810= 1;
298             transitions[90= 9;
299             transitions[91= 0;
300             transitions[92= 9;
301             transitions[93= 9;
302             transitions[94= 9;
303             transitions[95= 9;
304             transitions[96= 9;
305             transitions[97= 9;
306             transitions[98= 9;
307             transitions[99= 9;
308             transitions[910= 0;
309             transitions[100= 10;
310             transitions[101= 10;
311             transitions[102= 10;
312             transitions[103= 10;
313             transitions[104= 10;
314             transitions[105= 11;
315             transitions[106= 0;
316             transitions[107= 10;
317             transitions[108= 10;
318             transitions[109= 10;
319             transitions[1010= 0;
320             transitions[110= 10;
321             transitions[111= 10;
322             transitions[112= 10;
323             transitions[113= 10;
324             transitions[114= 10;
325             transitions[115= 10;
326             transitions[116= 12;
327             transitions[117= 10;
328             transitions[118= 10;
329             transitions[119= 10;
330             transitions[1110= 0;
331             transitions[120= 0;
332             transitions[121= 0;
333             transitions[122= 0;
334             transitions[123= 0;
335             transitions[124= 0;
336             transitions[125= 0;
337             transitions[126= 0;
338             transitions[127= 0;
339             transitions[128= 0;
340             transitions[129= 0;
341             transitions[1210= 0;
342         }
343     }
344 }
345 

    這是一個(gè)典型的狀態(tài)機(jī),里面定義了所有狀態(tài)、顏色和對(duì)外可見(jiàn)的顏色標(biāo)號(hào)。這里使用partial class是因?yàn)轭伾且阕约禾顚懙?,因此你可以看?jiàn)我在代碼的一開始注釋掉了幾行,所以他們就會(huì)出現(xiàn)在CSharpColorizer.Configuration.cs里:
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using CodeBoxControl;
  6 using System.Drawing;
  7 
  8 namespace CodeForm
  9 {
 10     partial class CSharpColorizer
 11     {
 12         public const int BreakPointColorId = 0;
 13         public const int BlockPointColorId = 1;
 14         public const int NormalColorId = 2;
 15 
 16         private readonly Color HighlightColor = Color.FromArgb(173214255);
 17         private readonly Color NormalColor = Color.FromArgb(000);
 18         private readonly Color IdColor = Color.FromArgb(00255);
 19         private readonly Color StringColor = Color.FromArgb(1632121);
 20         private readonly Color CommentColor = Color.FromArgb(01280);
 21 
 22         private readonly Color BreakPointColor = Color.FromArgb(255255255);
 23         private readonly Color BreakPointHighlightColor = Color.FromArgb(123119166);
 24         private readonly Color BlockPointColor = Color.Gray;
 25 
 26         private void CreateAdditionalColors()
 27         {
 28             this.colorItems[BreakPointColorId] = new TextEditorColorItem()
 29             {
 30                 Text = BreakPointColor,
 31                 HighlightText = BreakPointColor,
 32                 Highlight = BreakPointHighlightColor
 33             };
 34             this.colorItems[BlockPointColorId] = new TextEditorColorItem()
 35             {
 36                 Text = BlockPointColor,
 37                 HighlightText = BlockPointColor,
 38                 Highlight = HighlightColor
 39             };
 40         }
 41 
 42         private bool IsValidId(string token)
 43         {
 44             return token[0== '#' || Array.BinarySearch(keywords, token) >= 0;
 45         }
 46 
 47         private static string[] keywords ={
 48             "abstract",
 49             "as",
 50             "base",
 51             "bool",
 52             "break",
 53             "byte",
 54             "case",
 55             "catch",
 56             "char",
 57             "checked",
 58             "class",
 59             "const",
 60             "continue",
 61             "decimal",
 62             "default",
 63             "delegate",
 64             "do",
 65             "double",
 66             "else",
 67             "enum",
 68             "event",
 69             "explicit",
 70             "extern",
 71             "false",
 72             "finally",
 73             "fixed",
 74             "float",
 75             "for",
 76             "foreach",
 77             "goto",
 78             "if",
 79             "implicit",
 80             "in",
 81             "int",
 82             "interface",
 83             "internal",
 84             "is",
 85             "lock",
 86             "long",
 87             "namespace",
 88             "new",
 89             "null",
 90             "object",
 91             "operator",
 92             "out",
 93             "override",
 94             "params",
 95             "private",
 96             "protected",
 97             "public",
 98             "readonly",
 99             "ref",
100             "return",
101             "sbyte",
102             "sealed",
103             "short",
104             "sizeof",
105             "stackalloc",
106             "static",
107             "string",
108             "struct",
109             "switch",
110             "this",
111             "throw",
112             "true",
113             "try",
114             "typeof",
115             "unit",
116             "ulong",
117             "unchecked",
118             "unsafe",
119             "ushort",
120             "using",
121             "virtual",
122             "void",
123             "volatile",
124             "while"
125         };
126     }
127 }
128 

    這個(gè)Configuration做了三件事情。第一、定義了額外的顏色。在這里我們修改了NormalColorId,這是系統(tǒng)顏色的第一個(gè)顏色序號(hào)。我們只需要修改了它,然后把自己的顏色加在它前面就行了。第二件事情是定義了什么是Id。我們?cè)贗d狀態(tài)里打了個(gè)星號(hào),那么生成的代碼就會(huì)要求我們實(shí)現(xiàn)一個(gè)IsValidId函數(shù)。第三件事情就是我們指定了所有記號(hào)的真正的顏色。

    為什么要做成partial class呢?我們可以很容易看出來(lái),每一次生成代碼的時(shí)候,我們只需要修改namespace和類名以及注釋掉NormalColorId和所有顏色的聲明,就可以讓我們的自定義部分得到保留。這無(wú)疑很方便我們對(duì)著色器進(jìn)行修改。只需要修改一下?tīng)顟B(tài)機(jī),生成一份代碼,再做一點(diǎn)很小的改動(dòng)就行了。

    最重要的是,這個(gè)著色器的性能跟手寫的基本一樣優(yōu)秀,因此從現(xiàn)在開始,我們開發(fā)一個(gè)上下文無(wú)關(guān)的著色器控件就基本不需要寫代碼了,只要是用Vczh Library++ 3.0實(shí)驗(yàn)庫(kù)里面的TextEditorControl,再用這個(gè)TokenizerBuilder畫個(gè)狀態(tài)機(jī)生成個(gè)著色器的代碼就搞定了,哇哈哈。下面要做的就是增強(qiáng)TokenizerBuilder,從狀態(tài)機(jī)生成詞法分析器了,然后就可以繼續(xù)智能提示的實(shí)驗(yàn)了。
posted on 2010-10-08 06:05 陳梓瀚(vczh) 閱讀(6793) 評(píng)論(8)  編輯 收藏 引用 所屬分類: 開發(fā)自己的IDE

評(píng)論:
# re: 開發(fā)自己的IDE(五) 2010-10-08 06:11 | 沙發(fā)
沙發(fā)  回復(fù)  更多評(píng)論
  
# re: 開發(fā)自己的IDE(五) 2010-10-08 08:25 | ladeng
國(guó)A威武  回復(fù)  更多評(píng)論
  
# re: 開發(fā)自己的IDE(五) 2010-10-08 17:33 | DiryBoy
集成到VS中去吧~~  回復(fù)  更多評(píng)論
  
# re: 開發(fā)自己的IDE(五)[未登錄](méi) 2010-10-08 19:09 | megax
弄個(gè)HTML里面嵌入各種語(yǔ)言的的試試,呵呵  回復(fù)  更多評(píng)論
  
# re: 開發(fā)自己的IDE(五) 2010-10-08 20:54 | 陳梓瀚(vczh)
@megax
這是上下文有關(guān)著色哈,暫時(shí)不會(huì)為這種東西做自動(dòng)生成代碼的工具,手寫就好了。  回復(fù)  更多評(píng)論
  
# re: 開發(fā)自己的IDE(五) 2010-10-09 23:18 | 程建磊
老大,你先在干什么呢??整的這么深?yuàn)W,我是程建磊  回復(fù)  更多評(píng)論
  
# re: 開發(fā)自己的IDE(五) 2010-10-10 18:35 | 陳梓瀚(vczh)
@程建磊
多直白啊,就是我做了一個(gè)代碼高亮編輯器生成器  回復(fù)  更多評(píng)論
  
# re: 開發(fā)自己的IDE(五) 2010-10-12 07:45 |
vczh依然是對(duì)語(yǔ)法分析情有獨(dú)鐘啊.......  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久av免费一区| 国内久久精品视频| 美日韩免费视频| 欧美日韩另类视频| 国产精品亚洲第一区在线暖暖韩国| 国产精品一区二区欧美| 最新国产拍偷乱拍精品| 午夜一级在线看亚洲| 欧美激情一二三区| 先锋影音久久久| 欧美日韩一区二区三| 新狼窝色av性久久久久久| 久久国产精品99国产| 国产精品一区在线播放| 免费精品视频| 亚洲欧美亚洲| 国产精品成人免费| 艳女tv在线观看国产一区| 久久午夜电影| 性色av一区二区三区在线观看 | 狠狠色丁香婷婷综合影院| 亚洲黄色大片| 欧美大片va欧美在线播放| 欧美专区在线观看| 日韩视频久久| 亚洲国产精品一区二区www| 亚洲一区二区三区视频播放| 久久久人成影片一区二区三区| 一区二区三区鲁丝不卡| 欧美日韩午夜视频在线观看| 久久精品女人的天堂av| 亚洲视屏在线播放| 国产精品美女www爽爽爽视频| 正在播放亚洲一区| 亚洲毛片视频| 欧美日韩伦理在线免费| 久久亚洲高清| 国产免费观看久久黄| 亚洲激情专区| 欧美伦理在线观看| 99精品福利视频| 一区二区免费在线播放| 亚洲第一色在线| 亚洲国产欧美另类丝袜| 国户精品久久久久久久久久久不卡 | 日韩一区二区精品在线观看| 久久成人亚洲| 欧美在线免费视屏| 久久久欧美一区二区| 1000部国产精品成人观看| 亚洲与欧洲av电影| 亚洲电影免费在线观看| 欧美在线视频观看| 久久国内精品视频| 国产精品一级| 亚洲伊人久久综合| 午夜精品久久久久久久99水蜜桃 | 欧美国产专区| 一区二区在线免费观看| 亚洲精品中文字幕女同| 亚洲国产精品悠悠久久琪琪| 久久久亚洲国产美女国产盗摄| 欧美与欧洲交xxxx免费观看| 久久久综合香蕉尹人综合网| 久久久亚洲影院你懂的| 激情视频亚洲| 久久天堂成人| 欧美一区2区三区4区公司二百| 欧美午夜精品电影| 欧美成人资源| 亚洲精品国产精品国自产观看| 夜夜嗨av一区二区三区四季av | 免费在线成人av| 欧美一级网站| 国产午夜精品在线观看| 亚洲精品一区在线观看香蕉| 亚洲一区二区伦理| 亚洲国产影院| 农村妇女精品| 日韩视频在线一区二区| 一区二区三区在线视频播放| 久久午夜电影网| 亚洲精品国精品久久99热| 国产一区二区毛片| 一区二区三区精密机械公司| 午夜精品久久久久久久99水蜜桃 | 国产一区二区三区直播精品电影| 久久福利精品| 亚洲国产成人不卡| 黄色国产精品| 欧美国产高潮xxxx1819| 久久躁狠狠躁夜夜爽| 亚洲黄色一区二区三区| 欧美精品在线一区二区| 午夜精品久久久久久99热| 你懂的国产精品永久在线| 国产精品一区二区三区成人| 欧美一区二区视频97| 99精品视频免费| 国产精品亚洲欧美| 欧美aⅴ一区二区三区视频| 中文精品在线| 亚洲一区二区成人| 一区国产精品| 国产精品亚洲综合一区在线观看| 久久免费国产精品1| 妖精成人www高清在线观看| 麻豆精品精品国产自在97香蕉| 国产日韩欧美中文在线播放| 欧美激情视频在线播放| 亚洲国产成人在线视频| 久久狠狠一本精品综合网| 亚洲裸体视频| 国外成人在线视频| 欧美午夜视频网站| 欧美成人一区二区三区| 欧美激情第9页| 久久精品人人| 亚洲综合视频1区| 国产亚洲日本欧美韩国| 欧美调教视频| 欧美在线|欧美| 亚洲午夜激情免费视频| 亚洲精品乱码久久久久久久久| 久久深夜福利免费观看| 香蕉成人久久| 亚洲一区在线免费| 一区二区三区精密机械公司 | 国产精品mm| 欧美巨乳在线| 欧美精品国产| 欧美国产日韩一区二区三区| 美女精品在线观看| 久久天天综合| 蜜乳av另类精品一区二区| 久久福利影视| 久久久国产精品一区二区中文| 欧美sm视频| 免费不卡在线观看av| 老司机精品久久| 美女图片一区二区| 久久综合伊人77777麻豆| 久久亚洲图片| 牛牛影视久久网| 欧美国产精品| 亚洲国产日韩欧美在线图片| 亚洲激情校园春色| 日韩视频一区二区| 亚洲一区日韩在线| 午夜精品久久久久久久男人的天堂| 亚洲欧美激情一区二区| 亚洲黄色免费电影| 亚洲日韩欧美视频一区| 99爱精品视频| 亚洲欧美成人| 久久夜色精品一区| 欧美巨乳在线观看| 国产免费一区二区三区香蕉精| 国产一区二区三区直播精品电影 | 午夜精彩视频在线观看不卡 | 一区二区日本视频| 亚洲欧美国产高清va在线播| 亚洲国产精品成人va在线观看| 国产精品久久久久aaaa| 国产欧美日韩麻豆91| 欧美日韩三级电影在线| 国产女人aaa级久久久级| 红桃视频欧美| 亚洲一区二区免费| 久久中文精品| 日韩一区二区精品视频| 午夜视频一区在线观看| 欧美a级片网| 国产精品伦理| 亚洲人在线视频| 久久国产精品久久久久久久久久| 欧美成人xxx| 亚洲综合视频网| 男女激情久久| 国产日韩在线播放| 999在线观看精品免费不卡网站| 午夜久久久久| 亚洲精品日本| 久久影视三级福利片| 久久久久高清| 国产精品日韩精品欧美在线| 亚洲精品国产精品国产自| 欧美自拍偷拍午夜视频| 99国产精品| 女人天堂亚洲aⅴ在线观看| 国产精品一页| 亚洲视频免费观看| 欧美激情一区二区在线| 欧美一区亚洲| 国产精品稀缺呦系列在线| 一本到高清视频免费精品| 欧美 亚欧 日韩视频在线| 亚洲欧美在线aaa| 国产精品久久久亚洲一区| 夜夜精品视频|