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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js ...运算符_「 giao-js 」用js写一个js解释器

發布時間:2025/3/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js ...运算符_「 giao-js 」用js写一个js解释器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

在這篇文章中,我們將通過 JS 構建我們自己的 JS 解釋器,用 JS 寫 JS,這聽起來很奇怪,盡管如此,這樣做我們將更熟悉 JS,也可以學習 JS 引擎是如何工作的!

什么是解釋器 (Interpreter) ?

解釋器是在運行時運行的語言求值器,它動態地執行程序的源代碼。 解釋器解析源代碼,從源代碼生成 AST(抽象語法樹),遍歷 AST 并逐個計算它們。

解釋器 (Interpreter) 工作原理

  • 詞法分析 (Tokenization)
  • 語法解析 (Parsing)
  • 求值 (Evaluating)

詞法分析 (Tokenization)

將源代碼分解并組織成一組有意義的單詞,這一過程即為詞法分析(Token)。

在英語中,當我們遇到這樣一個語句時:

Javascript is the best language in the world

我們會下意識地把句子分解成一個個單詞:

+----------------------------------------------------------+ | Javascript | is | the | best | language | in |the |world | +----------------------------------------------------------+

這是分析和理解句子的第一階段。

詞法分析是由詞法分析器完成的,詞法分析器會掃描(scanning)代碼,提取詞法單元。

var a = 1;[("var": "keyword"),("a": "identifier"),("=": "assignment"),("1": "literal"),(";": "separator"), ];

詞法分析器將代碼分解成 Token 后,會將 Token 傳遞給解析器進行解析,我們來看下解析階段是如何工作的。

語法解析 (Parsing)

將詞法分析階段生成的 Token 轉換為抽象語法樹(Abstract Syntax Tree),這一過程稱之為語法解析(Parsing)。

在英語中,Javascript is the best language 被分解為以下單詞:

+------------------------------------------+ | Javascript | is | the | best | language | +------------------------------------------+

這樣我們就可以挑選單詞并形成語法結構:

"Javascript": Subject "is the best language": Predicate "language": Object

Javascript 在語法中是一個主語名詞,其余的是一個沒有什么意義的句子叫做謂語,language 是動作的接受者,也就是賓語。結構是這樣的:

Subject(Noun) -> Predicate -> Object

語法解析是由語法解析器完成的,它會將上一步生成的 Token,根據語法規則,轉為抽象語法樹(AST)。

{type: "Program",body: [{type: "VariableDeclaration",declarations: [{type: "VariableDeclarator",id: {type: "Identifier",name: "sum"},init: {type: "Literal",value: 30,raw: "30"}}],kind: "var"}], }

求值階段 (Evaluating)

解釋器將遍歷 AST 并計算每個節點。- 求值階段1 + 2 ||v +---+ +---+ | 1 | | 2 | +---+ +---+///+---+| + |+---+ {lhs: 1,op: '+'.rhs: 2 }

解釋器解析 Ast,得到 LHS 節點,接著收集到操作符(operator)節點+,+操作符表示需要進行一次加法操作,它必須有第二個節點來進行加法操作.接著他收集到 RHS 節點。它收集到了有價值的信息并執行加法得到了結果,3。

{type: "Program",body: [{type: "ExpressionStatement",expression: {type: "BinaryExpression",left: {type: "Literal",value: 1,raw: "1"},operator: "+",right: {type: "Literal",value: 2,raw: "2"}}}], }

實踐

前面我們已經介紹了解釋器的工作原理,接下來我們來動動手松松筋骨吧,實現一個 Mini Js Interpreter~

實踐準備

  • Acorn.js
A tiny, fast JavaScript parser, written completely in JavaScript. 一個完全使用 javascript 實現的,小型且快速的 javascript 解析器

本次實踐我們將使用 acorn.js ,它會幫我們進行詞法分析,語法解析并轉換為抽象語法樹。

Webpack/Rollup/Babel(@babel/parser) 等第三方庫也是使用 acorn.js 作為自己 Parser 的基礎庫。(站在巨人的肩膀上啊!)

  • The Estree Spec

最開始 Mozilla JS Parser API 是 Mozilla 工程師在 Firefox 中創建的 SpiderMonkey 引擎輸出 JavaScript AST 的規范文檔,文檔所描述的格式被用作操作 JAvaScript 源代碼的通用語言。

隨著 JavaScript 的發展,更多新的語法被加入,為了幫助發展這種格式以跟上 JavaScript 語言的發展。The ESTree Spec 就誕生了,作為參與構建和使用這些工具的人員的社區標準。

acorn.js parse 返回值符合 ESTree spec 描述的 AST 對象,這里我們使用@types/estree 做類型定義。

  • Jest

號稱令人愉快的 JavaScript 測試...我們使用它來進行單元測試.

  • Rollup

Rollup 是一個 JavaScript 模塊打包器,我們使用它來打包,以 UMD 規范對外暴露模塊。

項目初始化

// visitor.ts 創建一個Visitor類,并提供一個方法操作ES節點。 import * as ESTree from "estree"; class Visitor {visitNode(node: ESTree.Node) {// ...} } export default Visitor; // interpreter.ts 創建一個Interpreter類,用于運行ES節點樹。 // 創建一個Visitor實例,并使用該實例來運行ESTree節點 import Visitor from "./visitor"; import * as ESTree from "estree"; class Interpreter {private visitor: Visitor;constructor(visitor: Visitor) {this.visitor = visitor;}interpret(node: ESTree.Node) {this.visitor.visitNode(node);} } export default Interpreter; // vm.ts 對外暴露run方法,并使用acorn code->ast后,交給Interpreter實例進行解釋。 const acorn = require("acorn"); import Visitor from "./visitor"; import Interpreter from "./interpreter";const jsInterpreter = new Interpreter(new Visitor());export function run(code: string) {const root = acorn.parse(code, {ecmaVersion: 8,sourceType: "script",});return jsInterpreter.interpret(root); }

實踐第 1 彈: 1+1= ?

我們這節來實現 1+1 加法的解釋。首先我們通過AST explorer,看看 1+1 這段代碼轉換后的 AST 結構。

我們可以看到這段代碼中存在 4 種節點類型,下面我們簡單的介紹一下它們:

Program

根節點,即代表一整顆抽象語法樹,body 屬性是一個數組,包含了多個 Statement 節點。

interface Program {type: "Program";sourceType: "script" | "module";body: Array<Directive | Statement | ModuleDeclaration>;comments?: Array<Comment>; }

ExpressionStatement

表達式語句節點,expression 屬性指向一個表達式節點對象

interface ExpressionStatement {type: "ExpressionStatement";expression: Expression; }

BinaryExpression

二元運算表達式節點,left 和 right 表示運算符左右的兩個表達式,operator 表示一個二元運算符。 本節實現的重點,簡單理解,我們只要拿到 operator 操作符的類型并實現,然后對 left,right 值進行求值即可。

interface BinaryExpression {type: "BinaryExpression";operator: BinaryOperator;left: Expression;right: Expression; }

Literal

字面量,這里不是指 [] 或者 {} 這些,而是本身語義就代表了一個值的字面量,如 1,“hello”, true 這些,還有正則表達式,如 /d?/。

type Literal = SimpleLiteral | RegExpLiteral;interface SimpleLiteral {type: "Literal";value: string | boolean | number | null;raw?: string; }interface RegExpLiteral {type: "Literal";value?: RegExp | null;regex: {pattern: string;flags: string;};raw?: string; }

廢話少說,開擼!!!

// standard/es5.ts 實現以上節點方法import Scope from "../scope"; import * as ESTree from "estree"; import { AstPath } from "../types/index";const es5 = {// 根節點的處理很簡單,我們只要對它的body屬性進行遍歷,然后訪問該節點即可。Program(node: ESTree.Program) {node.body.forEach((bodyNode) => this.visitNode(bodyNode));},// 表達式語句節點的處理,同樣訪問expression 屬性即可。ExpressionStatement(node: ESTree.ExpressionStatement>) {return this.visitNode(node.expression);},// 字面量節點處理直接求值,這里對正則表達式類型進行了特殊處理,其他類型直接返回value值即可。Literal(node: ESTree.Literal>) {if ((<ESTree.RegExpLiteral>node).regex) {const { pattern, flags } = (<ESTree.RegExpLiteral>node).regex;return new RegExp(pattern, flags);} else return node.value;},// 二元運算表達式節點處理// 對left/node兩個節點(Literal)進行求值,然后實現operator類型運算,返回結果。BinaryExpression(node: ESTree.BinaryExpression>) {const leftNode = this.visitNode(node.left);const operator = node.operator;const rightNode = this.visitNode(node.right);return {"+": (l, r) => l + r,"-": (l, r) => l - r,"*": (l, r) => l * r,"/": (l, r) => l / r,"%": (l, r) => l % r,"<": (l, r) => l < r,">": (l, r) => l > r,"<=": (l, r) => l <= r,">=": (l, r) => l >= r,"==": (l, r) => l == r,"===": (l, r) => l === r,"!=": (l, r) => l != r,"!==": (l, r) => l !== r,}[operator](leftNode, rightNode);}, }; export default es5; // visitor.ts import Scope from "./scope"; import * as ESTree from "estree"; import es5 from "./standard/es5";const VISITOR = {...es5, }; class Visitor {// 實現訪問節點方法,通過節點類型訪問對應的節點方法visitNode(node: ESTree.Node) {return {visitNode: this.visitNode,...VISITOR,}[node.type](node);} } export default Visitor;

就這樣,普通的二元運算就搞定啦!!!

實踐第 2 彈: 怎么找到變量?

Javascript 的作用域與作用域鏈的概念想必大家都很熟悉了,這里就不再啰嗦了~

是的,我們需要通過實現作用域來訪問變量,實現作用域鏈來搜尋標識符。

在這之前,我們先實現 Variable 類,實現變量的存取方法。

// variable.ts export enum Kind {var = "var",let = "let",const = "const", } export type KindType = "var" | "let" | "const"; export class Variable {private _value: any;constructor(public kind: Kind, val: any) {this._value = val;}get value() {return this._value;}set value(val: any) {this._value = val;} } import { Variable, Kind, KindType } from "./variable";class Scope {// 父作用域private parent: Scope | null;// 當前作用域private targetScope: { [key: string]: any };constructor(public readonly type, parent?: Scope) {this.parent = parent || null;this.targetScope = new Map();}// 是否已定義private hasDefinition(rawName: string): boolean {return Boolean(this.search(rawName));}// var類型變量定義public defineVar(rawName: string, value: any) {let scope: Scope = this;// 如果不是全局作用域且不是函數作用域,找到全局作用域,存儲變量// 這里就是我們常說的Hoisting (變量提升)while (scope.parent && scope.type !== "function") {scope = scope.parent;}// 存儲變量scope.targetScope.set(rawName, new Variable(Kind.var, value));}// let類型變量定義public defineLet(rawName: string, value: any) {this.targetScope.set(rawName, new Variable(Kind.let, value));}// const類型變量定義public defineConst(rawName: string, value: any) {this.targetScope.set(rawName, new Variable(Kind.const, value));}// 作用域鏈實現,向上查找標識符public search(rawName: string): Variable | null {if (this.targetScope.get(rawName)) {return this.targetScope.get(rawName);} else if (this.parent) {return this.parent.search(rawName);} else {return null;}}// 變量聲明方法,變量已定義則拋出語法錯誤異常public declare(kind: Kind | KindType, rawName: string, value: any) {if (this.hasDefinition(rawName)) {console.error(`Uncaught SyntaxError: Identifier '${rawName}' has already been declared`);return true;}return {[Kind.var]: () => this.defineVar(rawName, value),[Kind.let]: () => this.defineLet(rawName, value),[Kind.const]: () => this.defineConst(rawName, value),}[kind]();} }export default Scope;

以上就是變量對象,作用域及作用域鏈的基礎實現了,接下來我們就可以定義及訪問變量了。

實踐第 3 彈: var age = 18

從語法樹中我們可以看到三個陌生的節點類型,來看看它們分別代表什么意思:

VariableDeclaration

變量聲明,kind 屬性表示是什么類型的聲明,因為 ES6 引入了 const/let。 declarations 表示聲明的多個描述,因為我們可以這樣:let a = 1, b = 2;。

interface VariableDeclaration {type: "VariableDeclaration";declarations: Array<VariableDeclarator>;kind: "var" | "let" | "const"; }

VariableDeclarator

變量聲明的描述,id 表示變量名稱節點,init 表示初始值的表達式,可以為 null。

interface VariableDeclarator {type: "VariableDeclarator";id: Pattern;init?: Expression | null; }

Identifier

顧名思義,標識符節點,我們寫 JS 時定義的變量名,函數名,屬性名,都歸為標識符。

interface Identifier {type: "Identifier";name: string; }

了解了對應節點的含義后,我們來進行實現:

// standard/es5.ts 實現以上節點方法import Scope from "../scope"; import * as ESTree from "estree";type AstPath<T> = {node: T;scope: Scope; };const es5 = {// ...// 這里我們定義了astPath,新增了scope作用域參數VariableDeclaration(astPath: AstPath<ESTree.VariableDeclaration>) {const { node, scope } = astPath;const { declarations, kind } = node;// 上面提到,生聲明可能存在多個描述(let a = 1, b = 2;),所以我們這里對它進行遍歷:// 這里遍歷出來的每個item是VariableDeclarator節點declarations.forEach((declar) => {const { id, init } = <ESTree.VariableDeclarator>declar;// 變量名稱節點,這里拿到的是ageconst key = (<ESTree.Identifier>id).name;// 判斷變量是否進行了初始化 ? 查找init節點值(Literal類型直接返回值:18) : 置為undefined;const value = init ? this.visitNode(init, scope) : undefined;// 根據不同的kind(var/const/let)聲明進行定義,即var age = 18scope.declare(kind, key, value);});},// 標識符節點,我們只要通過訪問作用域,訪問該值即可。Identifier(astPath: AstPath<ESTree.Identifier>) {const { node, scope } = astPath;const name = node.name;// walk identifier// 這個例子中查找的是age變量const variable = scope.search(name);// 返回的是定義的變量對象(age)的值,即18if (variable) return variable.value;}, }; export default es5;

實踐第 4 彈: module.exports = 6

我們先來看看 module.exports = 6 對應的 AST。

從語法樹中我們又看到兩個陌生的節點類型,來看看它們分別代表什么意思:

AssignmentExpression

賦值表達式節點,operator 屬性表示一個賦值運算符,left 和 right 是賦值運算符左右的表達式。

interface AssignmentExpression {type: "AssignmentExpression";operator: AssignmentOperator;left: Pattern | MemberExpression;right: Expression; }

MemberExpression

成員表達式節點,即表示引用對象成員的語句,object 是引用對象的表達式節點,property 是表示屬性名稱,computed 如果為 false,是表示 . 來引用成員,property 應該為一個 Identifier 節點,如果 computed 屬性為 true,則是 [] 來進行引用,即 property 是一個 Expression 節點,名稱是表達式的結果值。

interface MemberExpression {type: "MemberExpression";object: Expression | Super;property: Expression;computed: boolean;optional: boolean; }

我們先來定義 module.exports 變量。

import Scope from "./scope"; import Visitor from "./visitor"; import * as ESTree from "estree"; class Interpreter {private scope: Scope;private visitor: Visitor;constructor(visitor: Visitor) {this.visitor = visitor;}interpret(node: ESTree.Node) {this.createScope();this.visitor.visitNode(node, this.scope);return this.exportResult();}createScope() {// 創建全局作用域this.scope = new Scope("root");// 定義module.exportsconst $exports = {};const $module = { exports: $exports };this.scope.defineConst("module", $module);this.scope.defineVar("exports", $exports);}// 模擬commonjs,對外暴露結果exportResult() {// 查找module變量const moduleExport = this.scope.search("module");// 返回module.exports值return moduleExport ? moduleExport.value.exports : null;} } export default Interpreter;

ok,下面我們來實現以上節點函數~

// standard/es5.ts 實現以上節點方法import Scope from "../scope"; import * as ESTree from "estree";type AstPath<T> = {node: T;scope: Scope; };const es5 = {// ...// 這里我們定義了astPath,新增了scope作用域參數MemberExpression(astPath: AstPath<ESTree.MemberExpression>) {const { node, scope } = astPath;const { object, property, computed } = node;// property 是表示屬性名稱,computed 如果為 false,property 應該為一個 Identifier 節點,如果 computed 屬性為 true,即 property 是一個 Expression 節點// 這里我們拿到的是exports這個key值,即屬性名稱const prop = computed? this.visitNode(property, scope): (<ESTree.Identifier>property).name;// object 表示對象,這里為module,對module進行節點訪問const obj = this.visitNode(object, scope);// 訪問module.exports值return obj[prop];},// 賦值表達式節點(astPath: AstPath<ESTree.>) {const { node, scope } = astPath;const { left, operator, right } = node;let assignVar;// LHS 處理if (left.type === "Identifier") {// 標識符類型 直接查找const value = scope.search(left.name);assignVar = value;} else if (left.type === "MemberExpression") {// 成員表達式類型,處理方式跟上面差不多,不同的是這邊需要自定義一個變量對象的實現const { object, property, computed } = left;const obj = this.visitNode(object, scope);const key = computed? this.visitNode(property, scope): (<ESTree.Identifier>property).name;assignVar = {get value() {return obj[key];},set value(v) {obj[key] = v;},};}// RHS// 不同操作符處理,查詢到right節點值,對left節點進行賦值。return {"=": (v) => {assignVar.value = v;return v;},"+=": (v) => {const value = assignVar.value;assignVar.value = v + value;return assignVar.value;},"-=": (v) => {const value = assignVar.value;assignVar.value = value - v;return assignVar.value;},"*=": (v) => {const value = assignVar.value;assignVar.value = v * value;return assignVar.value;},"/=": (v) => {const value = assignVar.value;assignVar.value = value / v;return assignVar.value;},"%=": (v) => {const value = assignVar.value;assignVar.value = value % v;return assignVar.value;},}[operator](this.visitNode(right, scope));}, }; export default es5;

ok,實現完畢,是時候驗證一波了,上 jest 大法。

// __test__/es5.test.tsimport { run } from "../src/vm"; describe("giao-js es5", () => {test("assign", () => {expect(run(`module.exports = 6;`)).toBe(6);}); }

實踐第 5 彈: for 循環

var result = 0; for (var i = 0; i < 5; i++) {result += 2; } module.exports = result;

到這一彈大家都發現了,不同的語法其實對應的就是不同的樹節點,我們只要實現對應的節點函數即可.我們先來看看這幾個陌生節點的含義.

ForStatement

for 循環語句節點,屬性 init/test/update 分別表示了 for 語句括號中的三個表達式,初始化值,循環判斷條件,每次循環執行的變量更新語句(init 可以是變量聲明或者表達式)。 這三個屬性都可以為 null,即 for(;;){}。
body 屬性用以表示要循環執行的語句。

interface ForStatement {type: "ForStatement";init?: VariableDeclaration | Expression | null;test?: Expression | null;update?: Expression | null;body: Statement; }

UpdateExpression

update 運算表達式節點,即 ++/--,和一元運算符類似,只是 operator 指向的節點對象類型不同,這里是 update 運算符。

interface UpdateExpression {type: "UpdateExpression";operator: UpdateOperator;argument: Expression;prefix: boolean; }

BlockStatement

塊語句節點,舉個例子:if (...) { // 這里是塊語句的內容 },塊里邊可以包含多個其他的語句,所以有一個 body 屬性,是一個數組,表示了塊里邊的多個語句。

interface BlockStatement {0;type: "BlockStatement";body: Array<Statement>;innerComments?: Array<Comment>; }

廢話少說,盤它!!!

// standard/es5.ts 實現以上節點方法import Scope from "../scope"; import * as ESTree from "estree";type AstPath<T> = {node: T;scope: Scope; };const es5 = {// ...// for 循環語句節點ForStatement(astPath: AstPath<ESTree.ForStatement>) {const { node, scope } = astPath;const { init, test, update, body } = node;// 這里需要注意的是需要模擬創建一個塊級作用域// 前面Scope類實現,var聲明在塊作用域中會被提升,const/let不會const forScope = new Scope("block", scope);for (// 初始化值// VariableDeclarationinit ? this.visitNode(init, forScope) : null;// 循環判斷條件(BinaryExpression)// 二元運算表達式,之前已實現,這里不再細說test ? this.visitNode(test, forScope) : true;// 變量更新語句(UpdateExpression)update ? this.visitNode(update, forScope) : null) {// BlockStatementthis.visitNode(body, forScope);}},// update 運算表達式節點// update 運算表達式節點,即 ++/--,和一元運算符類似,只是 operator 指向的節點對象類型不同,這里是 update 運算符。UpdateExpression(astPath: AstPath<ESTree.UpdateExpression>) {const { node, scope } = astPath;// update 運算符,值為 ++ 或 --,配合 update 表達式節點的 prefix 屬性來表示前后。const { prefix, argument, operator } = node;let updateVar;// 這里需要考慮參數類型還有一種情況是成員表達式節點// 例: for (var query={count:0}; query.count < 8; query.count++)// LHS查找if (argument.type === "Identifier") {// 標識符類型 直接查找const value = scope.search(argument.name);updateVar = value;} else if (argument.type === "MemberExpression") {// 成員表達式的實現在前面實現過,這里不再細說,一樣的套路~const { object, property, computed } = argument;const obj = this.visitNode(object, scope);const key = computed? this.visitNode(property, scope): (<ESTree.Identifier>property).name;updateVar = {get value() {return obj[key];},set value(v) {obj[key] = v;},};}return {"++": (v) => {const result = v.value;v.value = result + 1;// preifx? ++i: i++;return prefix ? v.value : result;},"--": (v) => {const result = v.value;v.value = result - 1;// preifx? --i: i--;return prefix ? v.value : result;},}[operator](updateVar);},// 塊語句節點// 塊語句的實現很簡單,模擬創建一個塊作用域,然后遍歷body屬性進行訪問即可。BlockStatement(astPath: AstPath<ESTree.BlockStatement>) {const { node, scope } = astPath;const blockScope = new Scope("block", scope);const { body } = node;body.forEach((bodyNode) => {this.visitNode(bodyNode, blockScope);});}, }; export default es5;

上 jest 大法驗證一哈~

test("test for loop", () => {expect(run(`var result = 0;for (var i = 0; i < 5; i++) {result += 2;}module.exports = result;`)).toBe(10); });

你以為這樣就結束了嗎? 有沒有想到還有什么情況沒處理? for 循環的中斷語句呢?

var result = 0; for (var i = 0; i < 5; i++) {result += 2;break; // break,continue,return } module.exports = result;

感興趣的小伙伴可以自己動手試試,或者戳源碼地址

結語

giao-js目前只實現了幾個語法,本文只是提供一個思路。

有興趣的同學可以查看完整代碼。

覺得有幫助到你的話,點個 star 支持下作者 ?? ~

參考

bramblex/jsjs

使用 Acorn 來解析 JavaScript

Build a JS Interpreter in JavaScript Using Acorn as a Parser

總結

以上是生活随笔為你收集整理的js ...运算符_「 giao-js 」用js写一个js解释器的全部內容,希望文章能夠幫你解決所遇到的問題。

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

中文字幕观看av | 亚洲午夜小视频 | 中文在线免费观看 | 国产精品男女啪啪 | 黄色成人在线网站 | 久久99精品国产麻豆婷婷 | 久久黄色小说视频 | 精品v亚洲v欧美v高清v | 日日夜夜国产 | 天天干,天天射,天天操,天天摸 | 国产午夜精品一区二区三区欧美 | 亚洲一区不卡视频 | 久草在线视频在线 | 国产精品99蜜臀久久不卡二区 | 黄色一区二区在线观看 | 亚洲精品视频在线观看视频 | 亚洲专区一二三 | 91视视频在线直接观看在线看网页在线看 | 国产91对白在线 | 日本韩国欧美在线观看 | 日韩色一区二区三区 | 在线a人v观看视频 | 国产无套精品久久久久久 | 99综合电影在线视频 | 久久免费视频在线观看 | 亚洲午夜久久久影院 | 在线观看色网站 | 成年人在线观看 | 欧美激情视频一区二区三区 | 日韩三级久久 | 国产精品永久免费观看 | 免费看av片网站 | 亚洲视频1 | 操操操综合 | 国产伦精品一区二区三区四区视频 | 亚洲 成人 欧美 | 国产成人精品免费在线观看 | av网站免费线看精品 | 96久久| 久久男女视频 | 九九在线国产视频 | 久久人人爽人人人人片 | 中文伊人| 黄网站免费看 | 精品视频免费观看 | www.xxx.性狂虐 | 在线国产欧美 | 五月婷婷综合在线视频 | 久久综合狠狠综合久久激情 | 婷婷激情网站 | 亚洲人成免费网站 | 91日韩在线播放 | 久久不色 | 成人av动漫在线 | 久久精品99国产精品日本 | 中文字幕精品www乱入免费视频 | 国产精品亚州 | 国产精品久久久久影院日本 | 免费黄色a网站 | 香蕉视频免费在线播放 | 黄a在线观看 | 00av视频| 国产人成精品一区二区三 | 精品一区二区免费视频 | 日韩在线欧美在线 | 日韩精品一区二区三区丰满 | 国产自产高清不卡 | 欧美一级性生活 | 视频一区二区免费 | 久久人人爽人人爽人人 | 国产视频色 | 国产剧情一区二区 | 欧美一区二区三区在线视频观看 | 久久公开免费视频 | 日本在线观看黄色 | 国产精品毛片一区二区在线 | 国产午夜精品理论片在线 | 有码中文字幕在线观看 | 成 人 a v天堂 | 五月婷婷激情五月 | 九九视频热| 日韩精品一区电影 | 日韩免| 日韩精品一区二区在线视频 | 国产亚洲免费的视频看 | 久久综合九色综合欧美狠狠 | 久久精品欧美一区二区三区麻豆 | 亚洲综合导航 | 国产在线视频一区二区 | 中文av在线免费观看 | 成人免费在线播放 | 国产中文在线观看 | 日韩大片免费在线观看 | 亚州精品天堂中文字幕 | 日韩av片无码一区二区不卡电影 | 深爱激情婷婷网 | 中文字幕在线观看视频免费 | 久久久在线观看 | 久久综合精品国产一区二区三区 | 绯色av一区| 成人播放器 | 欧美99热 | 欧美特一级 | 久久精品视频2 | 精品久久国产 | 99精品欧美一区二区三区 | 亚洲欧美日韩在线一区二区 | 在线一二三四区 | 国产在线视频一区二区 | 中文av在线免费观看 | 久久激情视频 | 99精品国产aⅴ | 日本精品视频一区 | 99久精品 | 色综合久久久久网 | 日韩三级精品 | 一区二区高清在线 | www夜夜| 久久综合九色综合欧美就去吻 | 午夜美女视频 | 在线韩国电影免费观影完整版 | 国产小视频你懂的在线 | 国产 字幕 制服 中文 在线 | 日韩精品影视 | 激情欧美xxxx | 久久综合九色综合网站 | 天天干天天操天天干 | 日韩资源视频 | 精品国产理论片 | 久久久色 | 国产五月婷 | 91人人揉日日捏人人看 | 奇米网在线观看 | 五月天综合 | 奇米影视在线99精品 | 亚洲小视频在线观看 | 97超碰在线资源 | 国产精品美女视频网站 | 日韩欧美视频一区二区 | 欧洲亚洲国产视频 | 国产高清无av久久 | 黄色成年 | 国产精品久久嫩一区二区免费 | 欧洲成人免费 | 在线观看爱爱视频 | 免费看一级黄色 | 最新国产福利 | 久久成人一区 | 亚洲国产精品日韩 | 精品免费在线视频 | 国产精品美女免费视频 | 亚洲最新合集 | 国产一级电影 | 欧美黄在线 | 中文字幕乱偷在线 | 99这里有精品 | 免费观看全黄做爰大片国产 | 免费在线观看av网址 | www.91国产| 免费在线电影网址大全 | 亚洲狠狠丁香婷婷综合久久久 | 九九国产精品视频 | 国产午夜精品一区二区三区四区 | 亚洲精品国精品久久99热一 | 激情五月综合 | 亚洲伊人天堂 | 成年人在线观看视频免费 | www亚洲国产| 国产午夜一区 | 五月天电影免费在线观看一区 | 欧美日韩高清免费 | aaa毛片视频 | 亚洲视频99 | 成人91视频| 久久久久久国产精品久久 | 久久dvd | 992tv在线观看网站 | 日本一区二区不卡高清 | 五月开心激情 | 成人三级av | 狠狠狠狠狠色综合 | 国产精品第三页 | 日韩激情精品 | 国产传媒一区在线 | 丝袜美腿一区 | 丰满少妇对白在线偷拍 | 亚洲欧美色婷婷 | 久久久久久久久亚洲精品 | 天天曰夜夜操 | 丝袜av一区 | 美女在线免费观看视频 | 精品一区在线 | 国产资源网 | 国产高清永久免费 | 成人在线观看你懂的 | 亚洲免费av观看 | 色偷偷88888欧美精品久久久 | av中文字幕免费在线观看 | 久久国产一二区 | 国产精品18久久久久久不卡孕妇 | 国产一性一爱一乱一交 | 国产精品久久久久久久免费 | 亚洲免费在线播放视频 | 黄色成人毛片 | 国内精品久久久 | 国内视频在线 | 国产一级片视频 | 高清不卡毛片 | 国产精品18久久久久久久久久久久 | 中文字幕在线观看完整版 | 久久色在线观看 | 日韩精品中文字幕有码 | 在线国产能看的 | 欧美美女视频在线观看 | 美女视频黄免费的 | 国产黄在线播放 | 黄色免费观看视频 | 美女露久久 | 久久av免费观看 | 日韩 在线a | 中文字幕观看av | 免费在线观看国产精品 | 成人一区二区三区在线 | 一级特黄av | 少妇性色午夜淫片aaaze | 色资源在线 | 国产欧美精品一区二区三区四区 | 国产精品porn | 91精品久| 亚洲精品在线一区二区 | www亚洲视频 | 亚洲第一区在线播放 | 91在线蜜桃臀 | 国产精品毛片久久久久久久久久99999999 | 欧美精品乱码久久久久久 | 亚洲黄色免费 | 亚洲精品午夜一区人人爽 | 黄色a级片在线观看 | 四虎影视精品永久在线观看 | 99在线热播精品免费99热 | 久久精品视频在线 | 中文电影网| 亚色视频在线观看 | 久久久久久久久爱 | www.久艹| 黄色一级在线视频 | 91精品国产福利 | 91成版人在线观看入口 | 男女拍拍免费视频 | 亚洲精品在线观看免费 | 精品欧美乱码久久久久久 | 国产美女在线免费观看 | 在线小视频你懂的 | 中文字幕免费一区二区 | 在线a人片免费观看视频 | 成年人免费观看在线视频 | 亚洲精品观看 | av福利在线导航 | 五月婷婷香蕉 | 91最新在线视频 | 久久男人视频 | 美女视频又黄又免费 | 日韩在线国产精品 | 精品亚洲免费视频 | 国产精品婷婷午夜在线观看 | 超碰公开97 | 久久久久国产一区二区三区 | 国产91国语对白在线 | 国产精品九九视频 | 免费看成年人 | www五月婷婷 | 精品在线免费视频 | 久久er99热精品一区二区 | 色综合色综合色综合 | 亚洲精品www久久久 www国产精品com | 久久伊人操 | 伊人视频 | 男女日麻批 | 精品一区 在线 | 中文字幕在线免费看线人 | 在线视频你懂得 | 国产v亚洲v| 亚洲免费视频在线观看 | 日韩视频免费在线观看 | 国产99一区视频免费 | av手机在线播放 | 欧美淫视频 | 91香蕉视频720p| 国产69精品久久99不卡的观看体验 | 国产精品免费看 | av色图天堂网 | 精品天堂av | 一区二区三区在线免费播放 | av在线播放快速免费阴 | 久久久一本精品99久久精品66 | 在线观看视频你懂的 | 中文字幕资源网 | 岛国一区在线 | 国产麻豆果冻传媒在线观看 | 日韩成人免费在线 | 亚洲国产精品传媒在线观看 | 中文字幕一区二 | 日本黄色免费大片 | 日本女人的性生活视频 | 玖玖玖在线观看 | 福利一区在线视频 | 久久成人免费电影 | 天天射天天做 | 国产五月天婷婷 | 国产又粗又猛又色又黄视频 | 日韩大片在线看 | 美女视频黄,久久 | 日韩理论视频 | 少妇性xxx| 美女精品| 福利视频| 干狠狠| 国产美女视频免费 | 九九视频免费观看视频精品 | 国产成人精品一区二区在线观看 | 人人澡超碰碰97碰碰碰软件 | 亚洲天天草| 欧美精品999| 国产精品毛片完整版 | 韩日av在线| 亚洲狠狠丁香婷婷综合久久久 | 精品国产一区二区三区噜噜噜 | 久久一精品 | 国产高清在线一区 | 成人资源网 | 免费在线电影网址大全 | 9999在线视频 | www.69xx| 99精品黄色片免费大全 | 国产一区二区免费 | 色婷婷99 | 国产精品一区免费看8c0m | 亚州国产精品 | 久久视频在线看 | 国产视频午夜 | 国产视频资源在线观看 | 337p西西人体大胆瓣开下部 | 99精品视频免费看 | 国内精品美女在线观看 | 91中文在线| 在线中文视频 | 婷婷伊人综合亚洲综合网 | 国产成人精品一区二区三区免费 | 天天操天天干天天插 | 狠狠五月婷婷 | 99视频在线 | 在线亚洲精品 | 国产高清视频在线观看 | 免费久久片 | 国产精品久久99综合免费观看尤物 | 欧美精品v国产精品 | 九九激情视频 | 国内精自线一二区永久 | 日韩欧美一级二级 | 国产成人三级一区二区在线观看一 | 丁香狠狠 | 在线小视频国产 | 久久99精品久久久久久三级 | 国产裸体视频bbbbb | 午夜av不卡| 中文字幕在线观看视频一区二区三区 | www视频在线观看 | 久久激情电影 | 亚洲免费在线观看视频 | 亚洲欧美在线观看视频 | a级成人毛片 | 国产在线播放一区 | 一区在线电影 | 天天人人| 天天综合人人 | 在线看片一区 | 亚洲狠狠婷婷 | 亚洲va欧美 | 五月婷婷av在线 | 青青草视频精品 | 日本一区二区高清不卡 | 免费成人在线观看 | 日韩高清片 | 国产999视频在线观看 | 国产高清视频免费观看 | 日韩成人精品一区二区三区 | 一级免费av| 特级西西444www高清大视频 | 97超碰在线免费 | 伊人狠狠| 最近最新mv字幕免费观看 | 久久综合之合合综合久久 | 久草免费在线观看视频 | 久久免费资源 | 天天久久夜夜 | 久久综合久久综合这里只有精品 | 免费在线观看成人 | 免费日韩精品 | 日韩av免费一区 | 在线看日韩 | 久久电影国产免费久久电影 | 日韩电影一区二区在线 | 在线观看黄色 | 国内精品在线观看视频 | 国产女人18毛片水真多18精品 | 婷婷久月 | 一性一交视频 | 中文字幕2021| 999国内精品永久免费视频 | 久久影院亚洲 | 91污污视频在线观看 | 精品久久久久久久久中文字幕 | 日本久久不卡视频 | 欧美日韩免费网站 | 国产馆在线播放 | 国产精品成人一区二区 | 在线国产专区 | 操天天操 | 午夜黄网 | 国产理论影院 | 亚洲码国产日韩欧美高潮在线播放 | 久久99九九99精品 | 国产精品一区二区久久久久 | 久草在线观看视频免费 | 国产探花视频在线播放 | 成年人免费观看国产 | 国色天香永久免费 | 久草久草视频 | 97激情影院 | 超碰人人超 | 日韩欧美视频在线 | 国产欧美精品在线观看 | 99r精品视频在线观看 | 91久久丝袜国产露脸动漫 | 伊人av综合 | 深爱激情五月网 | 成年人黄色免费看 | 香蕉在线观看 | 美女视频久久黄 | 在线观看911视频 | 91插插插免费视频 | 免费在线国产精品 | 国产午夜视频在线观看 | 伊人永久 | 日日夜夜人人精品 | 香蕉影院在线观看 | 欧美日韩一区久久 | 国产精品久久久久久久久久免费 | 成人免费一区二区三区在线观看 | 欧美日韩高清不卡 | 成人黄色国产 | 亚洲精品合集 | 亚洲欧洲xxxx | 欧美日韩中文字幕视频 | 亚洲免费在线 | 精品国产1区2区 | 超碰在线亚洲 | 日本久久久亚洲精品 | 碰超在线 | 波多野结衣在线播放一区 | 成人91在线 | 精品一区电影 | 久久亚洲综合色 | 国产亚洲精品久久久久久大师 | 日日夜夜精品视频天天综合网 | 亚洲国产欧洲综合997久久, | 欧美性高跟鞋xxxxhd | 黄色亚洲精品 | 国产精品麻豆99久久久久久 | 国产精品18久久久久久久 | 在线视频 亚洲 | 久久久久成人精品免费播放动漫 | 亚洲乱码精品久久久久 | 久久99国产精品免费网站 | 欧美一区免费在线观看 | 久久综合五月天 | 在线观看www.| 欧美激情在线看 | www.超碰| 日韩av一区二区在线播放 | 欧美韩国在线 | 2021国产视频| 亚洲综合视频在线 | www激情com | 麻豆精品国产传媒 | 日韩中文字幕视频在线 | 日韩在线 | 色婷婷狠狠五月综合天色拍 | 在线免费av观看 | 国产美女视频一区 | 久久久久欠精品国产毛片国产毛生 | 国产老太婆免费交性大片 | 91精品国产九九九久久久亚洲 | 久久伦理 | 黄色在线观看污 | 国产精品黄网站在线观看 | 久久久久久久久久电影 | 五月天六月婷 | 在线精品视频免费观看 | 亚洲区精品 | 久久精品人人做人人综合老师 | 久久久久久蜜桃一区二区 | 午夜精品久久久久久中宇69 | 久久色视频 | 国产黄色精品在线 | 欧美成人999 | 最新动作电影 | 一级a性色生活片久久毛片波多野 | 久久99久久99精品免观看软件 | 久久精品国产精品亚洲 | 97香蕉久久国产在线观看 | 欧美片网站yy| 一级a毛片高清视频 | 色综合天天综合 | 亚洲另类人人澡 | 国产在线视频导航 | 久99久在线视频 | 精品影院一区二区久久久 | 久久成人精品电影 | 天天操天天吃 | 日日操网站| 日夜夜精品视频 | 91亚洲网| 精品一区二区在线观看 | 中文字幕免费成人 | 一区二区三区电影 | 一区二区欧美在线观看 | 日韩黄色在线观看 | 欧美激情综合五月色丁香小说 | 国产免费激情久久 | 少妇bbbb搡bbbb桶 | 中文字幕精品一区 | 亚洲成人免费在线观看 | 国产尤物在线观看 | 亚洲天天在线日亚洲洲精 | 99高清视频有精品视频 | 中文字幕亚洲精品在线观看 | 黄色网在线免费观看 | av免费在线观 | 中文字幕av电影下载 | 2018亚洲男人天堂 | 国产淫a| 人人澡人人草 | 91成人精品视频 | 亚洲国产精品成人精品 | 国产色影院 | 亚洲一区视频在线播放 | 亚洲高清91 | 在线看污网站 | 欧美日韩国产二区 | 亚洲国产成人精品电影在线观看 | 午夜精品一区二区三区在线视频 | 成人av在线影院 | 天天操夜夜操国产精品 | 97香蕉久久超级碰碰高清版 | 精品国产区 | 午夜视频久久久 | 亚洲理论在线 | 一区三区视频在线观看 | 91精品免费在线 | 人人插人人爱 | 69国产盗摄一区二区三区五区 | 婷婷中文字幕在线观看 | 国产一级视屏 | 久久亚洲精品国产亚洲老地址 | 精品一区二区电影 | 欧美另类巨大 | 91久久偷偷做嫩草影院 | 色婷婷狠狠干 | 激情综合网五月婷婷 | 五月天婷婷在线视频 | 在线婷婷 | 中文字幕在线观看的网站 | 国产一区二区三区在线免费观看 | 国产精品成人在线 | 91精品视频网站 | 国产精品亚洲精品 | 日韩大片在线观看 | www.天天射 | 亚洲高清在线 | 91精品在线视频观看 | 婷婷六月天综合 | 亚洲精品婷婷 | 制服丝袜成人在线 | 黄色影院在线播放 | 成年人免费观看国产 | 丁香婷婷综合色啪 | 亚洲综合日韩在线 | av福利资源 | 色综合久久久久综合体桃花网 | 伊人狠狠操 | 欧美日韩国语 | 激情在线五月天 | 国产伦理久久精品久久久久_ | 香蕉视频网址 | 中文超碰字幕 | 99久久精品免费看国产四区 | 尤物一区二区三区 | 中文字幕免费高清av | 国产成人综合精品 | 久久久 精品| 黄色大片视频网站 | 亚洲日本va午夜在线影院 | 国产精品99久久久久久久久 | 91精品国产高清自在线观看 | 国产九九精品视频 | 亚洲 在线 | 久久免费电影网 | 欧美一二三区在线播放 | 9992tv成人免费看片 | 欧美色插 | 日韩精品 在线视频 | 99超碰在线观看 | 亚洲精品1234区 | 国产在线不卡一区 | 色姑娘综合 | 超级碰碰碰视频 | 九九亚洲视频 | 久久久久久久久久久久久久免费看 | 麻豆国产露脸在线观看 | 亚洲国产精品电影 | 精品视频久久久久久 | 在线 高清 中文字幕 | 超碰av在线 | 婷婷黄色片 | 天天操比 | 欧美日韩一区二区三区免费视频 | 91人人澡人人爽人人精品 | 天天摸天天操天天爽 | 99免费看片 | 成年人国产在线观看 | 91精品国产成人 | 一区二区三区韩国免费中文网站 | 久久久久亚洲精品 | 超碰国产在线 | 永久免费毛片在线观看 | 久久久综合香蕉尹人综合网 | 欧美日韩一区二区三区在线免费观看 | 亚洲色图激情文学 | 97精品在线| 成人va视频 | 日本免费久久高清视频 | 91麻豆国产福利在线观看 | 亚洲人成人在线 | 国产免费视频一区二区裸体 | 特级西西444www大精品视频免费看 | 久日视频 | 精品久久一区二区三区 | 香蕉视频在线网站 | 中文字幕亚洲国产 | 五月婷婷在线视频 | 91影视成人 | 久久日本视频 | 九色视频网 | 国产精品日韩欧美一区二区 | av中文字幕剧情 | 免费男女羞羞的视频网站中文字幕 | 国产 亚洲 欧美 在线 | 国产免费观看久久黄 | 一区二区三区日韩视频在线观看 | 中文字幕久久网 | 在线免费黄色片 | av午夜电影 | 天堂av中文字幕 | 一区二区三区在线不卡 | 国产在线日本 | 日韩午夜在线观看 | 婷婷综合成人 | 午夜美女福利 | 国产福利91精品张津瑜 | 久久精品视频一 | 日韩在线视频在线观看 | 日韩精品久久久 | 国产 日韩 在线 亚洲 字幕 中文 | 日韩视频在线不卡 | 国产精品精品 | av久久在线 | 在线播放日韩 | 欧美在线一级片 | 国产日韩在线播放 | 国产成人免费网站 | 99精品免费在线观看 | 国产精品久久久久毛片大屁完整版 | 在线看v片 | 这里只有精彩视频 | 久久人人爽人人爽人人片av免费 | 激情五月婷婷激情 | 在线免费看黄网站 | 在线免费观看国产视频 | 国产成人精品福利 | 日韩毛片久久久 | 久久久久久黄 | 久久久久国产精品一区 | 婷婷精品在线视频 | 综合五月 | 国产亚洲精品久久19p | 日本不卡一区二区 | 波多野结衣视频一区二区 | 国产成人三级一区二区在线观看一 | 色在线网站 | 精品国产日本 | 韩国一区二区三区在线观看 | 亚洲综合成人婷婷小说 | 99久久精品久久久久久动态片 | 99精品国产免费久久 | 日韩欧美一区二区三区视频 | 日韩免费看的电影 | 国产精品高清免费在线观看 | 精品在线播放视频 | 国产一区在线看 | 日韩理论视频 | 天天操天天干天天玩 | 97国产情侣爱久久免费观看 | 蜜臀一区二区三区精品免费视频 | 成年人黄色免费看 | 91精品婷婷国产综合久久蝌蚪 | 久久激情五月丁香伊人 | 国产尤物在线 | 成人精品电影 | 狠狠操影视 | 亚洲黄色免费电影 | 欧美91精品久久久久国产性生爱 | 99精品在线免费在线观看 | 美女免费黄视频网站 | 中文字幕黄色 | 超碰在线官网 | 亚洲成人在线免费 | 久久精品99精品国产香蕉 | 久久久久久久久久久久影院 | 欧美日本高清视频 | 99精品在线看 | 国产69久久精品成人看 | 日韩一区二区免费播放 | 中文日韩在线 | 欧美日韩精品在线 | 免费福利视频网站 | 一区二区三区国产欧美 | 在线成人国产 | 在线小视频你懂得 | 国产精品18久久久久久久网站 | 高清不卡毛片 | 日韩中文在线播放 | 小草av在线播放 | 亚洲无吗天堂 | 天天天插 | 在线免费高清一区二区三区 | 国产精品高潮在线观看 | 在线国产中文字幕 | 九色视频网站 | www四虎影院 | 日韩大陆欧美高清视频区 | 中国一级片在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美日韩视频在线播放 | 91成人免费在线视频 | 亚洲综合小说电影qvod | 国产乱对白刺激视频在线观看女王 | 日本在线观看中文字幕无线观看 | 国产精品成人一区二区三区 | 中文字幕一区二区三区四区视频 | 日本久久精品 | 激情欧美一区二区三区 | 亚洲最大在线视频 | 久草网在线观看 | 国产一级精品绿帽视频 | 久久久精品在线观看 | 中文亚洲欧美日韩 | 在线视频app | 麻豆一级视频 | 午夜精品视频免费在线观看 | 久久久在线视频 | 亚洲专区中文字幕 | 中国一级特黄毛片大片久久 | 99国产精品一区二区 | 久久成人免费 | 99久久日韩精品免费热麻豆美女 | 久久激情视频 | 99视频一区二区 | 中文字幕观看在线 | 97人人模人人爽人人喊网 | 亚洲日韩欧美一区二区在线 | 久久国产精品一区二区三区 | 久久99精品久久久久久清纯直播 | 国产v亚洲v| 999抗病毒口服液 | 日韩啪啪小视频 | 涩涩资源网 | 精品久久久久久久久久久久久久久久久久 | 国产精品精品国产 | 久久久久久久久久亚洲精品 | 中文字幕免费一区 | 国产色拍| 久久精品99国产精品日本 | 国产午夜在线观看 | 日韩一区二区三 | 五月婷婷色丁香 | 中文字幕视频 | 五月婷婷在线视频 | 色婷丁香 | 欧美精品免费在线观看 | 91手机视频 | 午夜av在线 | 夜夜操天天干 | 91久久一区二区 | 日韩三级视频在线观看 | 五月婷婷丁香综合 | 国产在线91精品 | 欧美精品在线观看免费 | 黄色一级在线视频 | 国产视频97 | 五月开心色 | 丁香婷婷在线观看 | 成人欧美一区二区三区黑人麻豆 | 国产一级视频在线 | 国产一区二区网址 | 激情婷婷av | 天天操夜夜看 | 久久国产成人午夜av影院潦草 | 看片一区二区三区 | 久久精品电影 | 国产免码va在线观看免费 | 黄色a视频免费 | 中文字幕在线乱 | 国产亚洲成人网 | 亚州国产视频 | 天天综合在线观看 | 成人av电影在线 | 精品黄色在线 | 亚洲一区二区三区miaa149 | av中文字幕电影 | 久久官网 | 三级动图 | 日日爽夜夜爽 | 亚洲国产精品va在线看黑人 | 69国产精品视频免费观看 | 久久er99热精品一区二区三区 | 欧美日韩在线视频一区二区 | 免费看国产精品 | 久久久精品二区 | 欧美日韩久久不卡 | 亚洲va欧美va | 久久精品一区二区三区中文字幕 | 欧美精品一区在线 | 日本一区二区三区视频在线播放 | 97超碰人人模人人人爽人人爱 | 9992tv成人免费看片 | 狠狠色丁香婷婷综合久久片 | 免费看黄电影 | 伊人天天| 色偷偷88888欧美精品久久久 | 久久综合婷婷 | 久久久久久国产精品 | 欧美日韩亚洲在线观看 | 在线观看黄色的网站 | 91精品啪啪| 69视频在线播放 | 成人在线视频论坛 | 亚洲成人影音 | 国产免费黄视频在线观看 | 日韩欧在线| 久久精品国亚洲 | 在线看欧美 | 又黄又刺激视频 | 国产小视频91 | 亚洲精品资源 | 日日干,天天干 | 成人小视频在线免费观看 | 91精品久久久久久粉嫩 | 成人午夜性影院 | 午夜91视频 | 欧美国产日韩一区二区三区 | 九九热精 | 久久久人人爽 | 久久精品精品 | 色av资源网| 91精品一区二区三区久久久久久 | 又爽又黄在线观看 | 成人永久免费 | 在线免费黄色片 | 中国一级片在线观看 | 一级免费av| 亚洲在线观看av | 免费av在线 | 久久午夜电影院 | 欧美日韩不卡一区 | 91在线免费视频观看 | 久久经典国产视频 | 免费看的视频 | 不卡在线一区 | 国产尤物视频在线 | 日本三级不卡视频 | 精一区二区 | 久草在线官网 | 久草在线观看视频免费 | 亚洲精品97 | 成人网在线免费视频 | 日韩视频1区 | 免费在线激情电影 | 在线 欧美 日韩 | 婷婷综合伊人 | 久草免费在线视频观看 | 在线天堂v | www.av在线播放 | 成人免费一区二区三区在线观看 | 伊人亚洲精品 | 久久免费黄色网址 | 天天夜夜操| www操操 | 中文字幕中文中文字幕 | 97国产情侣爱久久免费观看 | 久久久久久久18 | 视频在线在亚洲 | 狠狠激情中文字幕 | 久久久五月天 | 在线播放国产一区二区三区 | 美女天天操 | 欧美亚洲成人免费 | 999精品| 亚洲精品乱码久久久一二三 | 91精品国产福利 | 三级黄色大片在线观看 | 日韩av男人的天堂 | 久久久久中文 | 波多野结衣在线视频免费观看 | 成人a在线观看高清电影 | 激情影音 | 搡bbbb搡bbb视频 | 特级西西444www高清大视频 | 国产精品男女视频 | 亚洲免费精品视频 | 中文字幕观看视频 | 天天色天天色天天色 | 激情综合五月婷婷 | 欧美韩日在线 | 日韩在线免费播放 | 五月宗合网 | 日韩在线观看你懂得 | 黄色一集片 | 五月花丁香婷婷 | 成人免费观看完整版电影 | 日韩欧美在线观看一区二区三区 | 国产美女在线免费观看 | 国产一区二区不卡视频 | 黄色av成人在线 | 97成人在线观看 | 久香蕉| 婷婷久久婷婷 | 国产精品亚州 | 亚洲综合色站 | 中文在线资源 | 国产精品人人做人人爽人人添 | 欧美小视频在线观看 | 国产精品视频永久免费播放 | 国产剧情一区二区 | 99久久精品免费看国产免费软件 | 9992tv成人免费看片 | 在线免费91 | 免费在线播放av电影 | 国产资源网站 | 日韩精品视频免费专区在线播放 | 午夜影视av| 免费a v观看| 一区二区高清在线 | 国产亚洲欧美在线视频 | 国产一区二区精品在线 | 欧美色久 | 国产欧美综合视频 | 国产精品久久久久久久免费观看 | 久久伊人八月婷婷综合激情 | 亚洲最新av网站 | 91综合在线| 日韩资源在线 | 9在线观看免费高清完整版 玖玖爱免费视频 | 欧美小视频在线观看 | 日韩av快播电影网 | 91香蕉视频黄色 | 欧美成人免费在线 | 欧美韩日精品 | www.com在线观看 | 天天摸夜夜操 | 久久精品首页 | 精品国产一区二区三区噜噜噜 | 色网站免费在线观看 | 亚洲成av人片在线观看无 | 天天射天天操天天 | 美女网站在线观看 | 亚洲精品视频免费观看 | 久久精品国产精品亚洲精品 | 日本黄色大片儿 | www.日本色 | 日韩中文字幕免费电影 | 亚洲3级 | 久久久午夜视频 | 午夜精选视频 | 中文av字幕在线观看 | 国产一区二区久久久久 | 日韩电影中文字幕在线观看 | 国产精品久久久久久久免费大片 |