日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

java实现语法分析器_200 行 JS 代码,带你实现代码编译器

發布時間:2024/9/15 javascript 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java实现语法分析器_200 行 JS 代码,带你实现代码编译器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

對于前端同學來說,編譯器可能適合神奇的魔盒 ,表面普通,但常常給我們驚喜。
編譯器,顧名思義,用來編譯,編譯什么呢?當然是編譯代碼咯 。

其實我們也經常接觸到編譯器的使用場景:

  • React 中 JSX 轉換成 JS 代碼;
  • 通過 Babel 將 ES6 及以上規范的代碼轉換成 ES5 代碼;
  • 通過各種 Loader 將 Less / Scss 代碼轉換成瀏覽器支持的 CSS 代碼;
  • 將 TypeScript 轉換為 JavaScript 代碼。
  • and so on...


使用場景非常之多,我的雙手都數不過來了。
雖然現在社區已經有非常多工具能為我們完成上述工作,但了解一些編譯原理是很有必要的。接下來進入本文主題:「200行JS代碼,帶你實現代碼編譯器」。

二、編譯器介紹

Java進階:架構設計、并發編程等核心知識、電子書、視頻、面試題等免費獲取?shimo.im

2.1 程序運行方式

現代程序主要有兩種編譯模式:靜態編譯和動態解釋。推薦一篇文章《Angular 2 JIT vs AOT》介紹得非常詳細。

靜態編譯

簡稱 「AOT」(Ahead-Of-Time)即 「提前編譯」 ,靜態編譯的程序會在執行前,會使用指定編譯器,將全部代碼編譯成機器碼。


(圖片來自:http://segmentfault.com/a/1190000008739157)
在 Angular 的 AOT 編譯模式開發流程如下:

  • 使用 TypeScript 開發 Angular 應用
  • 運行 ngc 編譯應用程序
    • 使用 Angular Compiler 編譯模板,一般輸出 TypeScript 代碼
    • 運行 tsc 編譯 TypeScript 代碼
  • 使用 Webpack 或 Gulp 等其他工具構建項目,如代碼壓縮、合并等
  • 部署應用

動態解釋

簡稱 「JIT」(Just-In-Time)即 「即時編譯」 ,動態解釋的程序會使用指定解釋器,一邊編譯一邊執行程序。

(圖片來自:http://segmentfault.com/a/1190000008739157[1])
在 Angular 的 JIT 編譯模式開發流程如下:

  • 使用 TypeScript 開發 Angular 應用
  • 運行 tsc 編譯 TypeScript 代碼
  • 使用 Webpack 或 Gulp 等其他工具構建項目,如代碼壓縮、合并等
  • 部署應用

AOT vs JIT

AOT 編譯流程:

(圖片來自:http://segmentfault.com/a/1190000008739157)

JIT 編譯流程:

(圖片來自:http://segmentfault.com/a/1190000008739157)

特性AOTJIT編譯平臺(Server) 服務器(Browser) 瀏覽器編譯時機Build (構建階段)Runtime (運行時)包大小較小較大執行性能更好-啟動時間更短-

除此之外 AOT 還有以下優點:

  • 在客戶端我們不需要導入體積龐大的 angular 編譯器,這樣可以減少我們 JS 腳本庫的大小。
  • 使用 AOT 編譯后的應用,不再包含任何 HTML 片段,取而代之的是編譯生成的 TypeScript 代碼,這樣的話 TypeScript 編譯器就能提前發現錯誤。總而言之,采用 AOT 編譯模式,我們的模板是類型安全的。

2.2 現代編譯器工作流程

摘抄維基百科中對 編譯器[2]工作流程介紹:

?一個現代編譯器的主要工作流程如下:源代碼(source code)→ 預處理器(preprocessor)→ 編譯器(compiler)→ 匯編程序(assembler)→ 目標代碼(object code)→ 鏈接器(linker)→ 可執行文件(executables),最后打包好的文件就可以給電腦去判讀運行了。
?

這里更強調了編譯器的作用:「將原始程序作為輸入,翻譯產生目標語言的等價程序」。

目前絕大多數現代編譯器工作流程基本類似,包括三個核心階段:

  • 「解析(Parsing)」 :通過詞法分析和語法分析,將原始代碼字符串解析成「抽象語法樹(Abstract Syntax Tree)」;
  • 「轉換(Transformation)」:對抽象語法樹進行轉換處理操作;
  • 「生成代碼(Code Generation)」:將轉換之后的 AST 對象生成目標語言代碼字符串。
  • 三、編譯器實現

    本文將通過 「The Super Tiny Compiler[3]」 源碼解讀,學習如何實現一個輕量編譯器,最終「實現將下面原始代碼字符串(Lisp 風格的函數調用)編譯成 JavaScript 可執行的代碼」。

    Lisp 風格(編譯前)JavaScript 風格(編譯后)2 + 2(add 2 2)add(2, 2)4 - 2(subtract 4 2)subtract(4, 2)2 + (4 - 2)(add 2 (subtract 4 2))add(2, subtract(4, 2))


    話說 The Super Tiny Compiler 號稱「可能是有史以來最小的編譯器」,并且其作者 James Kyle 也是 Babel 活躍維護者之一。


    讓我們開始吧~

    3.1 The Super Tiny Compiler 工作流程

    現在對照前面編譯器的三個核心階段,了解下 The Super Tiny Compiler 編譯器核心工作流程:

    圖中詳細流程如下:

  • 執行「入口函數」,輸入「原始代碼字符串」作為參數;
  • // 原始代碼字符串 (add 2 (subtract 4 2))
  • 進入「解析階段(Parsing)」,原始代碼字符串通過「詞法分析器(Tokenizer)」轉換為「詞法單元數組」,然后再通過 「詞法分析器(Parser)」將「詞法單元數組」轉換為「抽象語法樹(Abstract Syntax Tree 簡稱 AST)」,并返回;
  • 進入「轉換階段(Transformation)」,將上一步生成的 「AST 對象」 導入「轉換器(Transformer)」,通過「轉換器」中的「遍歷器(Traverser)」,將代碼轉換為我們所需的「新的 AST 對象」;
  • 進入「代碼生成階段(Code Generation)」,將上一步返回的「新 AST 對象」通過「代碼生成器(CodeGenerator)」,轉換成 「JavaScript Code」;
  • 「代碼編譯結束」,返回 「JavaScript Code」。

  • 上述流程看完后可能一臉懵逼,不過沒事,請保持頭腦清醒,先有個整個流程的印象,接下來我們開始閱讀代碼:

    3.2 入口方法

    首先定義一個入口方法 compiler ,接收原始代碼字符串作為參數,返回最終 JavaScript Code:

    // 編譯器入口方法 參數:原始代碼字符串 input function compiler(input) {let tokens = tokenizer(input);let ast = parser(tokens);let newAst = transformer(ast);let output = codeGenerator(newAst);return output; }

    3.3 解析階段

    在解析階段中,我們定義「詞法分析器方法」 tokenizer 和「語法分析器方法」 parser 然后分別實現:

    // 詞法分析器 參數:原始代碼字符串 input function tokenizer(input) {};// 語法分析器 參數:詞法單元數組tokens function parser(tokens) {};

    詞法分析器

    「詞法分析器方法」 tokenizer 的主要任務:遍歷整個原始代碼字符串,將原始代碼字符串轉換為「詞法單元數組(tokens)」,并返回。
    在遍歷過程中,匹配每種字符并處理成「詞法單元」壓入「詞法單元數組」,如當匹配到左括號( ( )時,將往「詞法單元數組(tokens)「壓入一個」詞法單元對象」({type: 'paren', value:'('})。

    // 詞法分析器 參數:原始代碼字符串 input function tokenizer(input) {let current = 0; // 當前解析的字符索引,作為游標let tokens = []; // 初始化詞法單元數組// 循環遍歷原始代碼字符串,讀取詞法單元數組while (current < input.length) {let char = input[current];// 匹配左括號,匹配成功則壓入對象 {type: 'paren', value:'('}if (char === '(') {tokens.push({type: 'paren',value: '('});current++;continue; // 自增current,完成本次循環,進入下一個循環}// 匹配右括號,匹配成功則壓入對象 {type: 'paren', value:')'}if (char === ')') {tokens.push({type: 'paren',value: ')'});current++;continue;}// 匹配空白字符,匹配成功則跳過// 使用 s 匹配,包括空格、制表符、換頁符、換行符、垂直制表符等let WHITESPACE = /s/;if (WHITESPACE.test(char)) {current++;continue;}// 匹配數字字符,使用 [0-9]:匹配// 匹配成功則壓入{type: 'number', value: value}// 如 (add 123 456) 中 123 和 456 為兩個數值詞法單元let NUMBERS = /[0-9]/;if (NUMBERS.test(char)) {let value = '';// 匹配連續數字,作為數值while (NUMBERS.test(char)) {value += char;char = input[++current];}tokens.push({ type: 'number', value });continue;}// 匹配形雙引號包圍的字符串// 匹配成功則壓入 { type: 'string', value: value }// 如 (concat "foo" "bar") 中 "foo" 和 "bar" 為兩個字符串詞法單元if (char === '"') {let value = '';char = input[++current]; // 跳過左雙引號// 獲取兩個雙引號之間所有字符while (char !== '"') {value += char;char = input[++current];}char = input[++current];// 跳過右雙引號tokens.push({ type: 'string', value });continue;}// 匹配函數名,要求只含大小寫字母,使用 [a-z] 匹配 i 模式// 匹配成功則壓入 { type: 'name', value: value }// 如 (add 2 4) 中 add 為一個名稱詞法單元let LETTERS = /[a-z]/i;if (LETTERS.test(char)) {let value = '';// 獲取連續字符while (LETTERS.test(char)) {value += char;char = input[++current];}tokens.push({ type: 'name', value });continue;}// 當遇到無法識別的字符,拋出錯誤提示,并退出throw new TypeError('I dont know what this character is: ' + char);}// 詞法分析器的最后返回詞法單元數組return tokens; }

    語法分析器

    「語法分析器方法」 parser 的主要任務:將「詞法分析器」返回的「詞法單元數組」,轉換為能夠描述語法成分及其關系的中間形式(「抽象語法樹 AST」)。

    // 語法分析器 參數:詞法單元數組tokens function parser(tokens) {let current = 0; // 設置當前解析的詞法單元的索引,作為游標// 遞歸遍歷(因為函數調用允許嵌套),將詞法單元轉成 LISP 的 AST 節點function walk() {// 獲取當前索引下的詞法單元 tokenlet token = tokens[current];// 數值類型詞法單元if (token.type === 'number') {current++; // 自增當前 current 值// 生成一個 AST節點 'NumberLiteral',表示數值字面量return {type: 'NumberLiteral',value: token.value,};}// 字符串類型詞法單元if (token.type === 'string') {current++;// 生成一個 AST節點 'StringLiteral',表示字符串字面量return {type: 'StringLiteral',value: token.value,};}// 函數類型詞法單元if (token.type === 'paren' && token.value === '(') {// 跳過左括號,獲取下一個詞法單元作為函數名token = tokens[++current];let node = {type: 'CallExpression',name: token.value,params: []};// 再次自增 current 變量,獲取參數詞法單元token = tokens[++current];// 遍歷每個詞法單元,獲取函數參數,直到出現右括號")"while ((token.type !== 'paren') || (token.type === 'paren' && token.value !== ')')) {node.params.push(walk());token = tokens[current];}current++; // 跳過右括號return node;}// 無法識別的字符,拋出錯誤提示throw new TypeError(token.type);}// 初始化 AST 根節點let ast = {type: 'Program',div: [],};// 循環填充 ast.divwhile (current < tokens.length) {ast.div.push(walk());}// 最后返回astreturn ast; }

    3.4 轉換階段

    在轉換階段中,定義了轉換器 transformer 函數,使用詞法分析器返回的 LISP 的 AST 對象作為參數,將 AST 對象轉換成一個新的 AST 對象。
    為了方便代碼組織,我們定義一個遍歷器 traverser 方法,用來處理每一個節點的操作。

    // 遍歷器 參數:ast 和 visitor function traverser(ast, visitor) {// 定義方法 traverseArray// 用于遍歷 AST節點數組,對數組中每個元素調用 traverseNode 方法。function traverseArray(array, parent) {array.forEach(child => {traverseNode(child, parent);});}// 定義方法 traverseNode// 用于處理每個 AST 節點,接受一個 node 和它的父節點 parent 作為參數function traverseNode(node, parent) {// 獲取 visitor 上對應方法的對象let methods = visitor[node.type];// 獲取 visitor 的 enter 方法,處理操作當前 nodeif (methods && methods.enter) {methods.enter(node, parent);}switch (node.type) {// 根節點case 'Program':traverseArray(node.div, node);break;// 函數調用case 'CallExpression':traverseArray(node.params, node);break;// 數值和字符串,忽略case 'NumberLiteral':case 'StringLiteral':break;// 當遇到無法識別的字符,拋出錯誤提示,并退出default:throw new TypeError(node.type);}if (methods && methods.exit) {methods.exit(node, parent);}}// 首次執行,開始遍歷traverseNode(ast, null); }


    在看「遍歷器」 traverser 方法時,建議結合下面介紹的「轉換器」 transformer 方法閱讀:

    // 轉化器,參數:ast function transformer(ast) {// 創建 newAST,與之前 AST 類似,Program:作為新 AST 的根節點let newAst = {type: 'Program',div: [],};// 通過 _context 維護新舊 AST,注意 _context 是一個引用,從舊的 AST 到新的 AST。ast._context = newAst.div;// 通過遍歷器遍歷 處理舊的 ASTtraverser(ast, {// 數值,直接原樣插入新AST,類型名稱 NumberLiteralNumberLiteral: {enter(node, parent) {parent._context.push({type: 'NumberLiteral',value: node.value,});},},// 字符串,直接原樣插入新AST,類型名稱 StringLiteralStringLiteral: {enter(node, parent) {parent._context.push({type: 'StringLiteral',value: node.value,});},},// 函數調用CallExpression: {enter(node, parent) {// 創建不同的AST節點let expression = {type: 'CallExpression',callee: {type: 'Identifier',name: node.name,},arguments: [],};// 函數調用有子類,建立節點對應關系,供子節點使用node._context = expression.arguments;// 頂層函數調用算是語句,包裝成特殊的AST節點if (parent.type !== 'CallExpression') {expression = {type: 'ExpressionStatement',expression: expression,};}parent._context.push(expression);},}});return newAst; }


    重要一點,這里通過 _context 引用來「維護新舊 AST 對象」,管理方便,避免污染舊 AST 對象。

    3.5 代碼生成

    接下來到了最后一步,我們定義「代碼生成器」 codeGenerator 方法,通過遞歸,將新的 AST 對象代碼轉換成 JavaScript 可執行代碼字符串。

    // 代碼生成器 參數:新 AST 對象 function codeGenerator(node) {switch (node.type) {// 遍歷 div 屬性中的節點,且遞歸調用 codeGenerator,按行輸出結果case 'Program':return node.div.map(codeGenerator).join('n');// 表達式,處理表達式內容,并用分號結尾case 'ExpressionStatement':return (codeGenerator(node.expression) +';');// 函數調用,添加左右括號,參數用逗號隔開case 'CallExpression':return (codeGenerator(node.callee) +'(' +node.arguments.map(codeGenerator).join(', ') +')');// 標識符,返回其 namecase 'Identifier':return node.name;// 數值,返回其 valuecase 'NumberLiteral':return node.value;// 字符串,用雙引號包裹再輸出case 'StringLiteral':return '"' + node.value + '"';// 當遇到無法識別的字符,拋出錯誤提示,并退出default:throw new TypeError(node.type);} }

    3.6 編譯器測試

    截止上一步,我們完成簡易編譯器的代碼開發。接下來通過前面原始需求的代碼,測試編譯器效果如何:

    const add = (a, b) => a + b; const subtract = (a, b) => a - b; const source = "(add 2 (subtract 4 2))"; const target = compiler(source); // "add(2, (subtract(4, 2));"const result = eval(target); // Ok result is 4

    3.7 工作流程小結

    總結 The Super Tiny Compiler 編譯器整個工作流程:「1、input => tokenizer => tokens」「2、tokens => parser => ast」「3、ast => transformer => newAst」「4、newAst => generator => output」

    其實多數編譯器的工作流程都大致相同:

    四、手寫 Webpack 編譯器

    根據之前介紹的 The Super Tiny Compiler編譯器核心工作流程,再來手寫 Webpack 的編譯器,會讓你有種眾享絲滑的感覺~


    話說,有些面試官喜歡問這個呢。當然,手寫一遍能讓我們更了解 Webpack 的構建流程,這個章節我們簡要介紹一下。

    4.1 Webpack 構建流程分析

    從啟動構建到輸出結果一系列過程:

  • 「初始化參數」
  • 解析 Webpack 配置參數,合并 Shell 傳入和 webpack.config.js 文件配置的參數,形成最后的配置結果。

  • 「開始編譯」
  • 上一步得到的參數初始化 compiler 對象,注冊所有配置的插件,插件監聽 Webpack 構建生命周期的事件節點,做出相應的反應,執行對象的 run 方法開始執行編譯。

  • 「確定入口」
  • 從配置的 entry 入口,開始解析文件構建 AST 語法樹,找出依賴,遞歸下去。

  • 「編譯模塊」
  • 遞歸中根據「文件類型」和 「loader 配置」,調用所有配置的 loader 對文件進行轉換,再找出該模塊依賴的模塊,再遞歸本步驟直到所有入口依賴的文件都經過了本步驟的處理。

  • 「完成模塊編譯并輸出」
  • 遞歸完事后,得到每個文件結果,包含每個模塊以及他們之間的依賴關系,根據 entry 配置生成代碼塊 chunk 。

  • 「輸出完成」
  • 輸出所有的 chunk 到文件系統。
    注意:在構建生命周期中有一系列插件在做合適的時機做合適事情,比如 UglifyPlugin 會在 loader 轉換遞歸完對結果使用 UglifyJs 壓縮「覆蓋之前的結果」。

    4.2 代碼實現

    手寫 Webpack 需要實現以下三個核心方法:

    • createAssets : 收集和處理文件的代碼;
    • createGraph :根據入口文件,返回所有文件依賴圖;
    • bundle : 根據依賴圖整個代碼并輸出;

    1. createAssets

    function createAssets(filename){const content = fs.readFileSync(filename, "utf-8"); // 根據文件名讀取文件內容// 將讀取到的代碼內容,轉換為 ASTconst ast = parser.parse(content, {sourceType: "module" // 指定源碼類型})const dependencies = []; // 用于收集文件依賴的路徑// 通過 traverse 提供的操作 AST 的方法,獲取每個節點的依賴路徑traverse(ast, {ImportDeclaration: ({node}) => {dependencies.push(node.source.value);}});// 通過 AST 將 ES6 代碼轉換成 ES5 代碼const { code } = babel.transformFromAstSync(ast, null, {presets: ["@babel/preset-env"]});let id = moduleId++;return {id,filename,code,dependencies} }

    2. createGraph

    function createGraph(entry) {const mainAsset = createAssets(entry); // 獲取入口文件下的內容const queue = [mainAsset];for(const asset of queue){const dirname = path.dirname(asset.filename);asset.mapping = {};asset.dependencies.forEach(relativePath => {const absolutePath = path.join(dirname, relativePath); // 轉換文件路徑為絕對路徑const child = createAssets(absolutePath);asset.mapping[relativePath] = child.id;queue.push(child); // 遞歸去遍歷所有子節點的文件})}return queue; }

    3. bunlde

    function bundle(graph) {let modules = "";graph.forEach(item => {modules += `${item.id}: [function (require, module, exports){${item.code}},${JSON.stringify(item.mapping)}],`})return `(function(modules){function require(id){const [fn, mapping] = modules[id];function localRequire(relativePath){return require(mapping[relativePath]);}const module = {exports: {}}fn(localRequire, module, module.exports);return module.exports;}require(0);})({${modules}})` }

    總結

    以上是生活随笔為你收集整理的java实现语法分析器_200 行 JS 代码,带你实现代码编译器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    欧美激情视频一区二区三区 | 99免费精品 | 在线午夜 | 欧美贵妇性狂欢 | 91丨九色丨高潮 | 91久久黄色 | 蜜臀久久99精品久久久无需会员 | 国产一卡久久电影永久 | 久久久久久久久久久国产精品 | 亚洲最大av网站 | 国产成人久久精品 | 国产不卡av在线 | 99久久久久 | 久久免费看a级毛毛片 | av电影 一区二区 | 日韩av影视在线 | 美女网站在线看 | 国产精品一区二区三区免费视频 | 中文字幕在线观看一区二区 | 又黄又网站 | 激情欧美一区二区免费视频 | 探花视频网站 | 91自拍视频在线观看 | 色av网站| 最近免费中文字幕大全高清10 | 久久免费国产电影 | 成人av一区二区在线观看 | av在线网站大全 | 欧美一区二区视频97 | 成人一区电影 | 在线免费观看国产黄色 | 亚洲狠狠操 | 91亚色视频 | 成人av网址大全 | 天堂在线一区二区 | 综合色站 | 色 免费观看 | 婷婷激情影院 | 成人在线视频免费 | 日韩av成人 | 免费日p视频 | 免费在线日韩 | 日韩电影久久 | 黄色天堂在线观看 | 国产精品免费视频观看 | 91传媒在线 | 日韩中文字幕国产 | 最近免费中文字幕mv在线视频3 | 黄色大全免费观看 | 日韩免费在线观看视频 | 日韩欧美在线国产 | 亚洲手机av| 日日碰狠狠添天天爽超碰97久久 | 中文字幕色播 | 亚洲激情在线观看 | 黄色的视频网站 | 久久综合久久综合久久综合 | 91精品国产麻豆国产自产影视 | 日操操 | 日本女人在线观看 | 久久99久久精品国产 | 日韩免费在线看 | 97碰碰精品嫩模在线播放 | 一本一道久久a久久综合蜜桃 | 91一区二区三区久久久久国产乱 | 美国三级黄色大片 | www在线观看视频 | 色婷五月 | 天天干天天操天天做 | 久久免费中文视频 | 成人亚洲精品国产www | 亚洲成人精品在线观看 | 麻豆精品视频在线观看免费 | 国产破处视频在线播放 | 国产精品成人久久久久久久 | 日本天天操| 成人黄色片免费 | 99视频在线观看视频 | 久久免费国产精品1 | 一区二区三高清 | 日韩精品播放 | 伊人影院得得 | 日韩高清国产精品 | 91麻豆精品国产91久久久使用方法 | av大全在线 | 亚洲精品影院在线观看 | 久草网站在线观看 | 三级动图 | 五月情婷婷 | 久久免费视屏 | 99国产成+人+综合+亚洲 欧美 | 国产精品成人国产乱一区 | 日韩高清成人在线 | 人人干干人人 | v片在线看 | 日韩| 2019中文字幕网站 | 毛片一二区 | 狠狠干夜夜爽 | 亚洲国产精品久久久久 | 91精品国产入口 | 97视频人人免费看 | 精品国产美女在线 | 欧美日韩一区二区三区在线观看视频 | 久久久久电影 | 成人动漫一区二区 | 久草在线费播放视频 | 99久久日韩精品免费热麻豆美女 | 麻豆综合网 | 成人黄色国产 | 欧美色综合 | 久久免费视频在线 | 国产在线一区二区三区播放 | 久章草在线 | 欧美最猛性xxxxx免费 | www免费黄色 | 91精品啪啪 | 国产一区二区三区在线免费观看 | 美女视频久久久 | 在线观看免费成人av | 久久精品中文字幕免费mv | 国产精品岛国久久久久久久久红粉 | 九九九九热精品免费视频点播观看 | 91亚瑟视频 | 亚洲区另类春色综合小说 | 久久久黄色av | 日韩欧美高清不卡 | 视频二区在线视频 | 国产中文字幕在线看 | 不卡av在线免费观看 | a级国产片 | 视频国产精品 | 成年人黄色免费看 | 亚洲精品高清一区二区三区四区 | 国产成人精品一区二区在线 | 久久亚洲精品电影 | 99久久婷婷国产综合精品 | 玖玖在线精品 | 成年人黄色大片在线 | 亚洲经典视频在线观看 | 国产视频导航 | 三级黄色免费片 | 免费男女羞羞的视频网站中文字幕 | 久久天堂精品视频 | 91九色蝌蚪国产 | 亚洲综合色婷婷 | 狠狠干我 | 天无日天天操天天干 | 亚洲亚洲精品在线观看 | 国产91aaa | 久久久久看片 | 精品 一区 在线 | 欧美一级电影片 | 日本中文字幕一二区观 | 日韩在线二区 | 午夜精品一区二区三区四区 | 91av电影在线 | 97国产大学生情侣酒店的特点 | 午夜美女网站 | 日本韩国在线不卡 | 国产精品美女999 | 久久婷婷激情 | 久久99电影 | 亚洲jizzjizz日本少妇 | 精品国产视频一区 | 在线看片视频 | 午夜精品一区二区三区视频免费看 | 91在线超碰 | 国产精品久久久久久久久久不蜜月 | 国产一区二区在线免费播放 | www.com黄| 精品国产资源 | 免费黄色一区 | 91视频高清完整版 | 在线观看91av | 免费久久99精品国产 | 国产精品电影一区二区 | 99热都是精品| 成人在线视频论坛 | 99r在线视频 | 国产欧美精品一区二区三区四区 | 欧美日韩在线观看不卡 | 久久免费视频在线 | 97人人人人| 在线国产视频观看 | 东方av免费在线观看 | 久艹视频在线观看 | 超碰人人干人人 | 国产xx视频 | 草久久久| 日韩三级中文字幕 | 中文字幕在线播出 | 日日操操 | 亚洲精品欧美专区 | 最近日韩中文字幕中文 | 99亚洲视频 | 免费进去里的视频 | 久久精品99国产精品日本 | 日韩 精品 一区 国产 麻豆 | 天天艹| 成人国产在线 | 国产99久久九九精品免费 | 91在线观看黄| 视频在线观看亚洲 | 91视频 - x99av | 中文字幕 国产视频 | 中文字幕一区二区三区久久 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 成人av在线影视 | 91成人免费 | 日韩特黄一级欧美毛片特黄 | 婷婷色吧 | 国产精品永久免费在线 | 午夜精品99久久免费 | 综合婷婷| 免费日韩电影 | 久久99免费观看 | 国产黄色片一级 | 精品久久久久久亚洲综合网站 | 国产精品99久久久精品 | 色九九在线 | 久久久久亚洲精品国产 | 国内毛片毛片 | 一级成人免费 | 97超碰在线视 | 免费视频 三区 | 日日天天狠狠 | 亚洲视频在线免费看 | 91麻豆传媒 | 伊人久久在线观看 | 午夜精品视频一区二区三区在线看 | 国产成人精品电影久久久 | 福利电影一区二区 | 4p变态网欧美系列 | 婷婷久久精品 | 亚洲天堂在线观看完整版 | 国产小视频你懂的 | 日韩av电影免费在线观看 | 激情视频免费观看 | 中文字幕在线观看免费 | 911国产| 狠狠色丁香久久婷婷综合丁香 | 亚洲一区二区三区91 | 成人久久视频 | 一区二区三区四区精品视频 | 天天做日日爱夜夜爽 | 国产在线观看,日本 | 亚洲在线视频播放 | 91精品国产成人观看 | 欧美日韩在线视频一区 | av成人免费在线看 | 91精品一区国产高清在线gif | 最近中文字幕mv免费高清在线 | 91视频啊啊啊 | 一区二区三区中文字幕在线观看 | 亚洲欧美日韩精品久久奇米一区 | 久久精国产 | 精品亚洲成a人在线观看 | 免费观看www视频 | 91精品国产网站 | 久久精品视频一 | 四虎永久免费 | 天天操夜夜操国产精品 | 欧美日韩国产在线精品 | 免费观看的黄色 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 色噜噜日韩精品欧美一区二区 | av在线一| 成年人免费看 | 99精品国产在热久久下载 | 91av国产视频 | 免费一级日韩欧美性大片 | aaa日本高清在线播放免费观看 | 国产色影院 | 三上悠亚在线免费 | 欧美亚洲国产精品久久高清浪潮 | 涩涩网站免费 | 国产精品热视频 | 91在线视频观看 | 欧美午夜性 | 人人爱人人做人人爽 | 亚洲成av人影片在线观看 | 精品免费视频 | 国产精品99久久免费黑人 | 国产精品麻豆一区二区三区 | 久久午夜免费视频 | 精品亚洲二区 | 午夜视频福利 | japanese黑人亚洲人4k | 日韩精品视频一二三 | 国产精品毛片网 | 成人毛片100免费观看 | 日韩资源在线观看 | 91丨九色丨勾搭 | 欧美在线视频一区二区 | 日日天天干 | 丁香高清视频在线看看 | 亚洲精品www | 天天做日日做天天爽视频免费 | 久久麻豆视频 | 国产精品成人国产乱一区 | 一本大道久久精品懂色aⅴ 五月婷社区 | 中文字幕日韩伦理 | 九九久久精品视频 | 日日爱999 | 欧美最猛性xxxxx亚洲精品 | 91精品国产福利在线观看 | 久久久久免费观看 | 国产1区在线观看 | 欧美一区二区三区不卡 | 亚洲最大在线视频 | 成人午夜电影在线播放 | 国产一区二区精品久久 | 中文字幕制服丝袜av久久 | 婷婷六月天在线 | 2023av在线| 国内精品久久久精品电影院 | 欧美资源 | av在线中文 | 国产精品免费一区二区 | 精品视频免费观看 | 亚洲国内精品在线 | 91av视频免费观看 | 国产精品99精品久久免费 | 成人福利在线观看 | 麻豆网站免费观看 | 青青河边草免费观看完整版高清 | av在线电影播放 | 久久人人添人人爽添人人88v | 日本性视频 | 成人综合婷婷国产精品久久免费 | 日韩午夜高清 | 国产精品久久久久久爽爽爽 | 夜夜操网| 天堂va欧美va亚洲va老司机 | 99久久精品电影 | 国产黄色片免费观看 | 亚洲精品乱码久久久久久蜜桃不爽 | 探花在线观看 | 色资源网免费观看视频 | 91av视频在线免费观看 | 国产永久免费高清在线观看视频 | 99久久婷婷国产综合精品 | 亚洲专区一二三 | 日日夜夜天天人人 | 伊人影院99 | 人人插人人做 | 国产成人精品999 | www五月天 | 国产区av在线 | 天天干夜夜爽 | 免费观看黄色12片一级视频 | 99精品免费 | 日韩精品专区在线影院重磅 | 九草视频在线 | 成人免费看片98欧美 | 国产成人综合图片 | 麻花传媒mv免费观看 | 色婷婷天天干 | 91视频三区 | 亚洲情婷婷 | 免费高清无人区完整版 | 男女啪啪视屏 | 欧美日性视频 | 午夜久久成人 | 波多野结依在线观看 | 国产精品99精品久久免费 | 久久综合之合合综合久久 | 干干干操操操 | 国产精彩视频一区 | 日日爽天天 | 香蕉视频久久 | 久久综合五月婷婷 | 久久久国产精品成人免费 | 久久国产精品免费看 | 精品二区久久 | 国产一区在线免费 | 久草在线视频网 | 国产精品6 | 精品久久精品久久 | 99re热精品视频 | 在线观看岛国av | 日韩av中文字幕在线免费观看 | 欧美极品久久 | 日韩特级黄色片 | 国产午夜三级一区二区三 | 日韩色在线 | 九九久久久久久久久激情 | 亚洲一区二区视频在线播放 | 97国产超碰在线 | 美女久久 | 日韩最新中文字幕 | 2023av在线 | 精品国产电影 | 亚在线播放中文视频 | 五月婷婷综合激情网 | 国产精品欧美日韩 | 久久久久中文 | 一级黄色大片在线观看 | 亚洲一二三久久 | 欧美大香线蕉线伊人久久 | 草久久影院 | 亚州免费视频 | 精品亚洲成人 | 亚洲理论影院 | 中文字幕在线看视频国产中文版 | 成人在线视频论坛 | 亚洲欧美国产精品18p | av大全在线 | 成人av在线亚洲 | 日韩午夜av电影 | 日本精品一区二区 | 中文字幕高清在线播放 | 99国产一区二区三精品乱码 | 一区二区精品视频 | 丝袜+亚洲+另类+欧美+变态 | 亚洲黄色av网址 | 天天操夜夜干 | 久久久免费看片 | 亚洲综合视频在线播放 | 国产麻豆精品传媒av国产下载 | 黄色视屏av | 在线中文字母电影观看 | 日韩久久一区 | 日本精品va在线观看 | 久草在线观看资源 | 午夜私人影院久久久久 | 国产精品乱码久久 | 国产在线观看h | 色婷婷福利 | 热久久精品在线 | 九九交易行官网 | 亚洲婷婷在线 | 黄色大片入口 | 欧美激情精品久久 | 精品国产乱码久久久久久浪潮 | 麻豆免费视频网站 | 久一久久| 夜夜骑首页| 亚洲精品99久久久久中文字幕 | 日韩网 | 欧美精品三级在线观看 | 国产成年免费视频 | 国产高清免费在线观看 | 天天操天天谢 | 欧美天天综合 | 91mv.cool在线观看| 综合网伊人 | 国产亚洲aⅴaaaaaa毛片 | 欧美一区二区日韩一区二区 | 免费看污的网站 | 五月综合激情婷婷 | 国内99视频| 91av在| 深爱开心激情 | 激情综合网婷婷 | 一区二区三区中文字幕在线 | 在线观看小视频 | www五月| 黄色大片日本免费大片 | 国产资源| 免费在线观看日韩 | 欧美与欧洲交xxxx免费观看 | 一本一道久久a久久精品蜜桃 | 五月开心激情 | 日韩国产欧美在线视频 | 在线观看视频 | 欧美日韩高清一区二区三区 | 日韩av看片| 91精品一区二区三区蜜桃 | 亚洲国产播放 | 24小时日本在线www免费的 | 亚洲国产中文字幕在线观看 | 日韩av看片 | 婷婷综合影院 | 国产精品久久久av久久久 | 久久精品波多野结衣 | 中文字幕资源网 国产 | 国产免费又粗又猛又爽 | 91色亚洲| 97超碰人人爱 | 91免费高清 | 国产精品69av | 国产精品毛片久久蜜 | 国产精品h在线观看 | 亚洲天天综合网 | 国内精自线一二区永久 | 四虎成人av | 午夜国产福利视频 | 成人午夜电影久久影院 | 特级毛片aaa| 国产精品第54页 | 亚洲视频1区2区 | 精品国产午夜 | 国产精品刺激对白麻豆99 | 免费在线观看av的网站 | 国产精品成人一区二区 | 18久久久久久 | 成年人免费在线 | 日韩免费中文 | 免费国产黄线在线观看视频 | 丁香六月av| 婷婷色中文网 | 国内精品久久久久久久久久久 | 国产精品激情偷乱一区二区∴ | 91成人欧美 | 欧美最新大片在线看 | 色妞色视频一区二区三区四区 | 最新在线你懂的 | 国产精品一区二区三区视频免费 | 欧美日韩高清在线一区 | 亚洲国产一二三 | .精品久久久麻豆国产精品 亚洲va欧美 | 中文字幕一区在线观看视频 | 欧美a在线免费观看 | 欧美视屏一区二区 | 久久综合偷偷噜噜噜色 | 一本一道久久a久久精品 | 亚洲精品自在在线观看 | 在线观看亚洲精品视频 | 探花视频在线版播放免费观看 | 99久久毛片| 国产成人精品av在线观 | 亚洲伊人成综合网 | 91成熟丰满女人少妇 | 五月婷激情| 国产精品手机看片 | 国产精品一区二区三区在线播放 | 国产成人久久av免费高清密臂 | 91麻豆精品国产91久久久更新时间 | 日韩欧美专区 | 日本成人免费在线观看 | 久久久首页 | 久久99精品久久久久婷婷 | av中文字幕网站 | 久久av影视| 色婷婷国产精品 | 99久久www免费| 中文字幕亚洲情99在线 | 波多野结衣电影一区二区三区 | 国产伦理一区二区三区 | 超级碰视频 | 超碰97人人射妻 | 国产成人一区三区 | 久久成人久久 | 久久噜噜少妇网站 | 国产一区国产二区在线观看 | 国产精品欧美久久久久天天影视 | 激情综合网色播五月 | 午夜黄网 | 香蕉免费| 久久国产一二区 | 国产香蕉97碰碰碰视频在线观看 | 日韩高清在线一区二区 | 超碰在线日本 | 国产亚洲精品久久久久久无几年桃 | 色综合中文综合网 | 免费观看一级一片 | 久久成年人网站 | 国产精品第7页 | 性日韩欧美在线视频 | 午夜丁香视频在线观看 | 免费在线观看成人av | 岛国av在线不卡 | 国产精品成人一区二区三区 | 高清av免费一区中文字幕 | 成人精品久久久 | 国内精品久久久久久久97牛牛 | 国产精品久久久区三区天天噜 | 日日干天夜夜 | 亚洲一区黄色 | 国产福利午夜 | 狠狠色丁香婷婷综合最新地址 | 亚洲第一中文网 | 国产精品久久久av久久久 | 色综合亚洲精品激情狠狠 | 欧美一区二区在线刺激视频 | 久久草av | 99久久这里只有精品 | 中文字幕观看av | 狠狠操综合| 人人插人人草 | 四虎永久免费在线观看 | 9热精品| 国产精品久久久久久久久久99 | 精品美女在线观看 | 日韩四虎 | 日本久久中文字幕 | 国产精品久久久久久五月尺 | 最新国产精品拍自在线播放 | 精品国产资源 | 国产亚洲久一区二区 | 91视频最新网址 | 正在播放久久 | 丁香婷婷网 | 9992tv成人免费看片 | 国产精品原创在线 | 99产精品成人啪免费网站 | 91在线观看高清 | 欧美少妇xx | 欧美日本中文字幕 | 亚洲国产精品久久久久婷婷884 | 久久9视频 | 免费高清在线一区 | 亚洲天堂社区 | av看片在线| 久久人人爽视频 | 日本在线观看黄色 | 九月婷婷综合网 | 久久黄色影院 | 日韩理论在线 | 成人观看 | 97精品视频在线 | 国产精品美女999 | 午夜精品剧场 | 97精品超碰一区二区三区 | 久久久久久久久久免费视频 | 成人免费毛片aaaaaa片 | 久久精品9 | 91精品欧美一区二区三区 | 久插视频 | 久久久久久国产精品久久 | 狠狠干成人综合网 | 国产黄色成人 | 99热这里是精品 | 97在线精品| 9i看片成人免费看片 | 国产五月色婷婷六月丁香视频 | 91麻豆精品国产91 | 五月婷婷,六月丁香 | 成人综合日日夜夜 | 丁香久久久 | 国产亚洲精品久久 | 亚洲欧美日本国产 | 色婷婷色| 成人久久毛片 | 亚洲黄色三级 | 玖玖在线观看视频 | 韩国在线视频一区 | 免费高清在线观看成人 | 亚洲精品永久免费视频 | 国产手机av在线 | wwxxxx日本 | 在线观看中文字幕一区 | 国产在线免费观看 | 婷婷网五月天 | 973理论片235影院9 | 贫乳av女优大全 | a视频免费 | 久久天堂影院 | 青青视频一区 | 97精品国产97久久久久久久久久久久 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 亚洲午夜精品一区二区三区电影院 | 91福利区一区二区三区 | 成人免费视频网 | 久久久www成人免费毛片 | 久久久久观看 | 久久精品一二区 | 五月亚洲综合 | 婷婷精品视频 | 国产精品久久久久久久久久久免费看 | 91精品国产自产在线观看 | 国产热re99久久6国产精品 | 日日躁夜夜躁aaaaxxxx | 91麻豆产精品久久久久久 | 国产精品美女久久久久久久 | 日韩天天操| 色综合久久88色综合天天人守婷 | 视频一区二区在线 | 五月黄色 | 69国产盗摄一区二区三区五区 | 涩涩网站在线看 | 亚洲男男gaygayxxxgv | 一级成人免费 | 99精品乱码国产在线观看 | av中文字幕av | 国产伦理精品一区二区 | 亚洲精品免费在线观看视频 | 97av在线视频免费播放 | 亚洲少妇自拍 | 国内精品视频在线播放 | 激情五月***国产精品 | 在线天堂中文在线资源网 | 国产成人精品一区二区三区 | 欧美乱码精品一区 | 91完整版观看 | 久久综合免费 | 伊人激情综合 | 成人免费毛片aaaaaa片 | 2019中文 | 亚洲综合成人婷婷小说 | 免费激情网 | 又黄又爽免费视频 | 精品一区二区久久久久久久网站 | 日日干夜夜骑 | 精品在线观看免费 | 国产手机精品视频 | 日日干天天操 | 在线播放国产精品 | 天天综合在线观看 | 欧美精品久久久久久久久久丰满 | 人人涩| 日韩欧美精品在线 | 狠狠干网 | 国产高清不卡一区二区三区 | 日韩中文字幕免费视频 | 精品亚洲男同gayvideo网站 | 精品国产一区二区三区在线 | 97精品超碰一区二区三区 | 国内精品一区二区 | 国产精品igao视频网网址 | 亚洲成人动漫在线观看 | 探花视频在线版播放免费观看 | 日韩最新av在线 | 久久精品视频观看 | 日韩免费观看一区二区三区 | 国产成人亚洲精品自产在线 | 国产精品高潮呻吟久久av无 | 亚洲成人av在线 | 最新中文在线视频 | 欧美一级性视频 | 91高清在线| 日韩视频一二三区 | 99精品视频在线免费观看 | 国产精品毛片一区二区三区 | 欧美日韩在线网站 | 五月婷婷久草 | 日本在线视频一区二区三区 | 日韩在线免费 | 超碰电影在线观看 | 美女黄色网在线播放 | 2022久久国产露脸精品国产 | 欧美一二三专区 | 天天操天天操 | 免费在线色| 国产不卡在线观看视频 | 99久久精品国产亚洲 | 就要色综合| 热久久免费视频精品 | 国产又粗又猛又爽又黄的视频先 | 免费成人在线观看 | 中文国产在线观看 | 欧美另类69 | 丁香激情综合久久伊人久久 | 狠狠干五月天 | 国产不卡一二三区 | 香蕉免费 | 在线观看国产91 | 亚洲综合在线五月 | 精品99久久 | 涩涩在线 | 国产男女无遮挡猛进猛出在线观看 | 93久久精品日日躁夜夜躁欧美 | 天天爽天天爽夜夜爽 | 日韩av一卡二卡三卡 | 97av在线视频免费播放 | 成人在线播放视频 | 亚洲天天看 | 国产精品久久久久久电影 | 一区二区三区免费在线观看 | 日韩精品久久久久久 | 久久歪歪 | 92av视频 | 日韩精品一区二区三区免费观看 | 日韩av视屏 | 亚洲精品一区二区三区新线路 | 精品久久久亚洲 | 国产v欧美 | 久久久久久久久久久电影 | 波多野结衣小视频 | 中文字幕在线视频国产 | 婷婷六月丁 | 日韩羞羞| 亚洲精品日韩在线观看 | 国产成人综 | 亚洲天堂网视频在线观看 | 美女黄频视频大全 | 久久电影中文字幕视频 | 天天爱天天操天天爽 | 韩国av不卡 | 园产精品久久久久久久7电影 | 国产亚洲精品久久久久久无几年桃 | 国产精品 中文在线 | 免费福利片2019潦草影视午夜 | 亚洲精品456在线播放乱码 | 中文字幕在线播放视频 | 日韩一区视频在线 | 久久看看 | 在线不卡中文字幕播放 | 制服丝袜欧美 | 四虎影视国产精品免费久久 | 国产尤物在线视频 | 国产精品一区二区视频 | 98超碰人人 | 国产美女网站在线观看 | 蜜桃视频在线观看一区 | 国产精品欧美激情在线观看 | 色av色av色av | 久久黄色免费 | 狠狠狠狠狠操 | 国产成人三级 | 亚洲狠狠婷婷综合久久久 | 中文字字幕在线 | 美国三级黄色大片 | 免费www视频| 日韩欧美国产精品 | 国产精品av免费观看 | 视频国产在线 | 日韩精品一区二区在线 | 午夜精品一区二区三区四区 | 天天综合网天天综合色 | 国产精品中文久久久久久久 | 九九热久久免费视频 | 国产免费三级在线观看 | 久久中国精品 | 夜色资源站wwwcom | 国产高清av免费在线观看 | 中文字幕二区在线观看 | 午夜视频福利 | 久久欧美视频 | 亚洲五月婷婷 | 国产一区av在线 | 操久久免费视频 | 日本中文字幕在线看 | 久久精品com | 玖玖玖在线观看 | 99中文字幕在线观看 | 国产va饥渴难耐女保洁员在线观看 | 最新日韩在线观看视频 | 亚洲精品黄色 | 亚洲在线视频网站 | 久久精品九色 | 最近中文字幕国语免费高清6 | 免费三级av | 国产精品美女久久久久久久久 | 色诱亚洲精品久久久久久 | 免费久久精品视频 | 天天色天天草天天射 | 亚洲高清在线观看视频 | 久久综合成人网 | 免费看国产精品 | 国产一区二区精 | 视频在线观看入口黄最新永久免费国产 | 探花视频免费观看 | 亚洲精品午夜aaa久久久 | 久久精品一二三区白丝高潮 | 日韩毛片在线播放 | 国产一级片网站 | 色噜噜在线观看 | 99视频精品免费观看, | 国产91亚洲精品 | 日韩激情视频在线 | 国产亚洲亚洲 | 日韩中文字幕免费视频 | 97成人在线视频 | 国产不卡高清 | 色91在线| 亚洲免费在线观看视频 | 久久黄色精品视频 | 中文一区在线观看 | 韩国av免费观看 | 国产中文a | 国产精品亚洲综合久久 | 中文字幕av在线播放 | a级国产乱理论片在线观看 特级毛片在线观看 | 成人毛片一区二区三区 | 国产精品一区二区免费在线观看 | 日韩xxx视频 | 在线观看成人一级片 | 久久与婷婷 | 久久国产精品电影 | 丁香九月激情 | 国产精品欧美激情在线观看 | 国产精品一区二区在线观看免费 | www.夜夜骑.com| 国产黄大片在线观看 | 亚洲网站在线 | 国产精品久久久久久久久久99 | 国产热re99久久6国产精品 | 99r在线观看| 久久精品香蕉视频 | 天天综合网在线 | 精品福利视频在线观看 | 99热在线看 | 黄色aa久久| 久草9视频| 国产成人精品综合久久久久99 | 99久久毛片| 国产淫片免费看 | 美女视频黄色免费 | 久久国产91 | 免费高清在线一区 | 91电影福利 | www.天天干.com | 色综合网在线 | 在线国产一区 | av电影中文字幕 | 欧美九九九| 黄色亚洲免费 | 日日日日干 | 久草在线视频资源 | 狠狠综合网| 免费色视频网址 | 一区二区三区免费网站 | 亚洲另类视频在线观看 | 国产偷v国产偷∨精品视频 在线草 | 国产精品视频地址 | 国产一区在线精品 | 色噜噜在线观看视频 | 99久久www | 国产不卡一二三区 | 精品电影一区 | 亚洲一级电影视频 | 五月天亚洲婷婷 | 精品国产欧美一区二区三区不卡 | 久久黄色片子 | 国产一区二区三区免费在线观看 | 日韩成人看片 | 在线观看国产福利片 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 欧美在线视频精品 | 一区二区国产精品 | 日日添夜夜添 | 国产香蕉97碰碰久久人人 | 精品免费一区二区三区 | 国产精品乱码久久 | 亚洲精品国产精品99久久 | 亚洲欧美视频一区二区三区 | 一区二区三区四区在线免费观看 | 天天草天天干天天射 | 精品久久久久久久久久久久久久久久久久 | 人人超碰人人 | 97超碰总站| 国产成人一区二区在线观看 | 精品久久一二三区 | 亚洲黄色小说网 | 亚洲www天堂com | 天天干天天摸天天操 | 成人黄色一级视频 | 久久伦理网 | 中文国产字幕在线观看 | 丁香在线观看完整电影视频 | 激情综合五月天 | 亚洲欧洲国产日韩精品 | 四虎成人精品永久免费av | 中文乱码视频在线观看 | av观看网站 | 欧美尹人 | avv天堂| 91传媒免费在线观看 | 久久蜜臀一区二区三区av | 久久超碰99 | 97超碰人人澡人人 | 免费在线观看污 | 麻豆免费在线播放 | 欧美日韩精品电影 | 欧美精品v国产精品v日韩精品 | 久草视频在线播放 | 欧美孕妇视频 | 人人干干人人 | 日本一区二区三区免费观看 | 国产精品一区二区在线观看 | 午夜色性片 | 在线观看中文字幕dvd播放 | 草免费视频 | 成人小视频在线免费观看 | 深爱激情av| 九九视频免费观看视频精品 | 亚洲成人av免费 | 精品国产乱码久久久久久天美 | 超碰97在线资源 | 亚洲精品久久久蜜桃直播 | 成年人免费在线 | 国产成人福利在线观看 | 国产成人黄色在线 | 国产精品视频999 | 欧美精品乱码久久久久久按摩 | 三级视频片| 成人三级av | 九九九九免费视频 | 国产xxxx性hd极品 | 日韩免费高清在线观看 | 亚洲 欧美变态 另类 综合 | 九九在线精品视频 | 日本激情动作片免费看 | 日韩欧美在线一区 | 国产亚洲一区二区三区 | 97超碰人人干 | 国产精品3 | 国色天香在线 | 欧美日韩久久 | 国产精品美女视频网站 | 在线播放91 | 亚洲 中文 在线 精品 | 欧美99精品 | free. 性欧美.com | 久久国产精品电影 |