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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Golang 词法分析器浅析

發(fā)布時間:2024/7/23 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Golang 词法分析器浅析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

???? 淺析 Go 語言的詞法分析器

章節(jié)目錄

  • 簡介
  • Token
  • Scanner
  • 例子
  • 作者能力有限, 如果您在閱讀過程中發(fā)現(xiàn)任何錯誤, 還請您務(wù)必聯(lián)系本人,指出錯誤, 避免后來讀者再學(xué)習(xí)錯誤的知識.謝謝!

    簡介##

    在本文我們將簡單的走讀 Go 語言的詞法分析器實現(xiàn)(go/scanner/scanner.go).

    本文基于 Go 1.11.4.

    對于 Scanner 的作用, 就像 Java 中的 StringTokenizer 類型, 負(fù)責(zé)將一個輸入字符串按照特定的分隔符劃分為一個個獨(dú)立的單元. 不同的地方在于, 詞法分析器在劃分單元時依照的是 Go 語言的規(guī)范, 而不是指定的分隔符.

    那么為什么要將源代碼進(jìn)行劃分呢? 說來話長, 建議閱讀編譯原理相關(guān)書籍-.

    在寫下本文之前, 本人有幸剛剛閱讀了 Writing an interpreter in go , 感謝該書作者, 這本書對于我寫下這篇文章有很多的幫助, 在這兒分享給大家.

    Token##

    維基百科中對詞法分析描述如下:

    詞法分析(英語:lexical analysis)是計算機(jī)科學(xué)中將字符序列轉(zhuǎn)換為標(biāo)記(token)序列的過程。進(jìn)行詞法分析的程序或者函數(shù)叫作詞法分析器(lexical analyzer,簡稱lexer),也叫掃描器(scanner)。詞法分析器一般以函數(shù)的形式存在,供語法分析器調(diào)用。

    對于編譯原理有了解的讀者肯定深知, 詞法分析是編譯的第一步. 它的主要作用就是將源代碼(這里就是我們編寫的 Go 語言源文件)進(jìn)行掃描, 將源代碼解析為一個個的詞法單元. 而詞法單元就對應(yīng)于我們源代碼中的變量,函數(shù),關(guān)鍵字等.

    舉個例子, 當(dāng)我們使用 Go 語言編程時, 寫下如下代碼:

    var a bool = false

    通過詞法解析器的解析, 我們將會得到如下 Token:

    var // Go 語言關(guān)鍵字 a // 變量 bool // Go語言內(nèi)置類型, 也屬于關(guān)鍵字 = // 賦值關(guān)鍵字 false // 常量關(guān)鍵字

    正如你所看到的那樣, 我們在解析過程中不僅僅解析出了不同的程序組件, 而且每個組件都有特定的類型標(biāo)記, 這些信息將被語法分析器使用. 比如可以用來檢測語法錯誤.

    好了, 本人知識有限,概述到此結(jié)束, 我們來看一下 token.go 的實現(xiàn)(該文件位于 Go 源碼目錄 go/token/token.go).

    為了減少篇幅, 這里省略了部分代碼.

    type Token int// 所有 Go 語言支持的 Token 類型列表 const (// 該類型的 Token 標(biāo)識源文件中存在詞法錯誤, 詞法分析無法成功的解析源文件.// 也就是說我們編寫了不符合 Go 語言語法的源代碼ILLEGAL Token = iota// 該類型的 Token 表示源文件已經(jīng)被遍歷完成// 在遇到這種類型的 Token 時, 表示著詞法分析的完成EOF COMMENT // 這個 Token 不必多說, 標(biāo)識源代碼中的注釋literal_beg// IDENT 標(biāo)識一個標(biāo)識符, 比如方法名稱, 類型名稱, 變量名稱等. // 常量, 關(guān)鍵字都不屬于這個類型IDENT // mainINT // 12345FLOAT // 123.45IMAG // 123.45iCHAR // 'a'STRING // "abc"literal_endoperator_beg// Operators and delimitersADD // +SUB // -MUL // *QUO // /REM // %// AND, OR, +=, -=, &=, ^= 等省略ARROW // <-// 這里省略了各種括號對應(yīng)的 Token 類型定義operator_endkeyword_beg// 以下聲明 Go 語言關(guān)鍵字 Token 類型, 這里省略了絕大部分FUNCGOGOTOIFIMPORTSELECTSTRUCTSWITCHTYPEVARkeyword_end )// tokens map 的用處在于將詞法分析過程中解析出來的單詞或者詞組 // 與上面剛剛定義的 Token 類型對應(yīng)起來 // 比如, 當(dāng)詞法分析器從源代碼中解析出一個單詞 func 時, 他將創(chuàng)建一個 Token, // 而該 Token 的類型將是 FUNC. 這一項就存在于下面這個 tokens map 中. // 值得一提的時, 這個 map 中包含了幾項 Token 類型, 這些類型僅僅在用來 // 輔助詞法分析器, 程序中并不會出現(xiàn)這樣的詞法單元.這幾個類型: // ILLEFAL: 用來標(biāo)識不符合 Go 語言語法的詞法單元出現(xiàn)在源程序中 // EOF: 用來標(biāo)識源程序解析完畢 var tokens = [...]string{ILLEGAL: "ILLEGAL",EOF: "EOF",COMMENT: "COMMENT",FUNC: "func",GO: "go",GOTO: "goto",IF: "if",IMPORT: "import",SELECT: "select",STRUCT: "struct",SWITCH: "switch",TYPE: "type",VAR: "var", }// 該方法返回 Token 的字符串表示形式 func (tok Token) String() string {s := ""if 0 <= tok && tok < Token(len(tokens)) {s = tokens[tok]}if s == "" {s = "token(" + strconv.Itoa(int(tok)) + ")"}return s }const (LowestPrec = 0 // non-operatorsUnaryPrec = 6HighestPrec = 7 )// 獲取當(dāng)前 Token 的優(yōu)先級 // 對于非操作符的 Token, 它的優(yōu)先級最低, 為 LowestPrec. // 舉個例子說明以下. 比如我們在解析如下代碼: a := b + c * d // 我們會得到七個 Token. 分別對應(yīng) a, :=, b, +, c, *, d // 在語法分析中, 當(dāng)我們要評估 a 在執(zhí)行完該語句時,它的值是多少, // 我們就需要知道每個操作符 Token (:=, +, *) 的優(yōu)先級, 以決定哪個操作將被優(yōu)先執(zhí)行, // 哪個操作實在另一個操作執(zhí)行完之后執(zhí)行. func (op Token) Precedence() int {switch op {case LOR:return 1case LAND:return 2case EQL, NEQ, LSS, LEQ, GTR, GEQ:return 3case ADD, SUB, OR, XOR:return 4case MUL, QUO, REM, SHL, SHR, AND, AND_NOT:return 5}return LowestPrec }var keywords map[string]Tokenfunc init() {keywords = make(map[string]Token)for i := keyword_beg + 1; i < keyword_end; i++ {keywords[tokens[i]] = i} }// 該方法用來判別一個解析出來的 Identifier 到底是一個 Identifier 還是一個關(guān)鍵字. // 關(guān)鍵字 map 在上一步已經(jīng)被初始化了. func Lookup(ident string) Token {if tok, is_keyword := keywords[ident]; is_keyword {return tok}return IDENT }// 下面幾個方法很好理解, 不在贅述func (tok Token) IsLiteral() bool { return literal_beg < tok && tok < literal_end }func (tok Token) IsOperator() bool { return operator_beg < tok && tok < operator_end }func (tok Token) IsKeyword() bool { return keyword_beg < tok && tok < keyword_end }

    Scanner##

    了解了 Token 之后, 我們就可以來看看 Scanner 的實現(xiàn)了.

    就如簡述中所述, 詞法分析器的作用是將源程序分解為一個個 Token, 以便于語法分析器使用. 它的輸入肯定就是源程序了, 輸出自然是一個 Token 的集合.

    詞法分析器僅能檢測出很少部分的程序錯誤, 比如 if 語句后未使用花括號’{’, 非法的操作符’…’ 等. 對于類型或變量重定義, 函數(shù)調(diào)用參數(shù)個數(shù)不正確等錯誤都需要在編譯器后續(xù)過程中才能發(fā)現(xiàn).

    這里我們先簡述一下詞法分析器的工作原理, 這樣將有助于學(xué)習(xí)源碼.
    詞法分析器往往是一個一個字符的讀取輸入的代碼, 通過當(dāng)前讀取到的字符, 搭配一個解析詞法的狀態(tài)機(jī)來決定當(dāng)前讀取到的 Token 的類型.有時, 一個字符并不能提供足夠的信息來做出這種判斷, 此時就需要預(yù)先讀取下一個或多個字符來輔助詞法分析器做出判斷.
    正如 <> 中所說的一樣, 它的工作原理與 JSON 解析器或者 XML 解析器的工作原理大體上是一致的, 只是得到的結(jié)果略有不同而已.
    而這里提到的解析詞法的狀態(tài)機(jī)就是我們將要學(xué)習(xí)的核心了.

    下來我們就來看看 scanner.go 源代碼.
    和上一小節(jié)相同, 我們只留下程序的主干部分, 細(xì)枝末節(jié)的代碼我們將省略掉以換取相對的清晰整潔.
    我們同時也根據(jù)需要調(diào)整了方法或者變量的聲明位置.

    type Scanner struct {file *token.File // source file handledir string // directory portion of file.Name()src []byte // 輸入字節(jié)數(shù)組// 詞法分析器使用的核心變量ch rune // 記錄當(dāng)前字符offset int // 記錄當(dāng)前讀取到了輸入字節(jié)的位置rdOffset int // reading offset (position after current character)lineOffset int // 記錄當(dāng)前讀取到的字符在輸入字節(jié)的哪一行// 這里我們省略了記錄錯誤信息的相關(guān)變量或者方法, 我們不關(guān)注它 }// 初始化詞法分析器 // 正如你所看到的, 這里并沒有很多值得關(guān)注的地方 // 唯一值得一看的就是 next 方法 func (s *Scanner) Init(file *token.File, src []byte, err ErrorHandler, mode Mode) {// Explicitly initialize all fields since a scanner may be reused.if file.Size() != len(src) {panic(fmt.Sprintf("file size (%d) does not match src len (%d)", file.Size(), len(src)))}s.file = files.dir, _ = filepath.Split(file.Name())s.src = srcs.err = errs.mode = modes.ch = ' 's.offset = 0s.rdOffset = 0s.lineOffset = 0s.insertSemi = falses.ErrorCount = 0s.next()if s.ch == bom {s.next() // ignore BOM at file beginning} }// 讀取下一個字符. // 詞法分析器實質(zhì)上就一個狀態(tài)機(jī), 而該狀態(tài)機(jī)總是需要以當(dāng)前字符作為輸入. // 這個方法的作用就是讀取輸入字節(jié)中下一個字符. // 因為 Go 支持 Unicode 編碼格式的源程序, // 所以我們將會看到這個方法讀取的是下一個字符, 而不是下一個字節(jié). // 這個方法并沒有返回值, 而是更新了 Scanner 類型中的相關(guān)變量(ch, offset等) func (s *Scanner) next() {// 如果當(dāng)前還未讀取到輸入字節(jié)的結(jié)束位置, 則讀取下一個字符到 ch, // 并更新 offset, rdOffset, lineOffset, if s.rdOffset < len(s.src) {s.offset = s.rdOffsetif s.ch == '\n' {s.lineOffset = s.offsets.file.AddLine(s.offset)}r, w := rune(s.src[s.rdOffset]), 1switch {case r == 0:s.error(s.offset, "illegal character NUL")case r >= utf8.RuneSelf:// not ASCIIr, w = utf8.DecodeRune(s.src[s.rdOffset:])if r == utf8.RuneError && w == 1 {s.error(s.offset, "illegal UTF-8 encoding")} else if r == bom && s.offset > 0 {s.error(s.offset, "illegal byte order mark")}}s.rdOffset += ws.ch = r} else {s.offset = len(s.src)if s.ch == '\n' {s.lineOffset = s.offsets.file.AddLine(s.offset)}s.ch = -1 // 當(dāng)讀取到源程序的結(jié)束位置時, 將 ch 標(biāo)記為 -1, 這代表了 EOF.} }// Scan 方法就是詞法分析器的核心實現(xiàn)了, 正如上面所說, 它是一個狀態(tài)機(jī).// 從它的返回值我們可以看到, 對于 Scan 的每一次調(diào)用, 該方法將會返回一個 Token// 如果返回的 Token 是 literal (token.IDENT, token.INT, token.FLOAT, // token.IMAG, token.CHAR, token.STRING), 或者 Token.COMMENT, // 該方法的返回值 lit 將會包含該 Token 的值. // 這里需要注意的是, 返回值 Token 僅僅代表了當(dāng)前解析出來的 Token 的類型, 并未包含 // Token 的值. 一些 Token 的類型就代表了它的值. 比如 '{', '+'等, // 而另外一些 Token 需要額外的返回值表示它的值. 比如當(dāng)讀取到的 Token 是 INT 時, // 我們就需要使用返回值 lit 來取得讀取到的到底是 0 還是 1000 或者其他的合法整數(shù)值.// 如果當(dāng)前讀取到的 Token 是 ILLEGAL, 那么返回值 lit 將會是未能成功解析的字符// 這里返回值 pos 可以暫時忽略func (s *Scanner) Scan() (pos token.Pos, tok token.Token, lit string) { scanAgain:// 很容易理解, 我們總是習(xí)慣于在代碼中插入空格空行等對于編譯器來說沒有意義的字符, // 這里使用 skipWhitespace 方法過濾掉.s.skipWhitespace() pos = s.file.Pos(s.offset)// 判斷當(dāng)前 token 的類型, 根據(jù)當(dāng)前字符 ch.switch ch := s.ch; {// 如果當(dāng)前讀取到的是一個字母.(a-z, A-Z或者utf8編碼的字母), // 我們就將他解析為標(biāo)識符(Identifier) token// 當(dāng)然這個標(biāo)識符可能是一個關(guān)鍵字,因此使用 token.Lookup // 來判斷當(dāng)前標(biāo)識符是否是關(guān)鍵字case isLetter(ch): lit = s.scanIdentifier()if len(lit) > 1 { // 關(guān)鍵字的長度都大于1, 因此小于1的情況下, 必然是標(biāo)識符tok = token.Lookup(lit)} else {tok = token.IDENT}// 如果當(dāng)前讀取到的是一個數(shù)字, 那就將他解析為數(shù)字, 具體是 INT, FLOAT // 在scanNumber方法中進(jìn)行判斷, 我們回過頭來再來看該方法case '0' <= ch && ch <= '9':tok, lit = s.scanNumber(false)default:s.next() // 將 s.ch 更新為下一個字符, 我們將依賴于下一個判斷當(dāng)前 token 類型switch ch { // 此處的 ch 是 s.ch 的前一個字符case -1:tok = token.EOFcase '\n': return pos, token.SEMICOLON, "\n"case '"': // 當(dāng)前 token 是 string. 形式如 "abc..."tok = token.STRINGlit = s.scanString()case '\'': // 當(dāng)前 token 是 char. 形式如 'a'tok = token.CHARlit = s.scanRune()case '`': // 當(dāng)前 token 是 raw string. 形式如 `abc...`tok = token.STRINGlit = s.scanRawString()case ':': // 遇到 ':', 具體token 類型將和下一個字符有關(guān). // 如果下一個字符是 '=', 那么當(dāng)前 token 將是 ":=", 否則就是簡單的 ':'tok = s.switch2(token.COLON, token.DEFINE)case '.':// 當(dāng)前 ch 是 '.', 且 s.ch 是數(shù)字, 那么我們目前所處的// token 的格式為 "*.1"形式, 只能是小數(shù).if '0' <= s.ch && s.ch <= '9' {tok, lit = s.scanNumber(true)} else if s.ch == '.' { // 如果當(dāng)前 ch 是 '.', 且 s.ch 也是 '.', 那么我們當(dāng)前 token 的格式為 ".."// 因此當(dāng)前 token 應(yīng)為 "...". 否則為非法 token(但是這里并沒有處理這種情況).s.next()if s.ch == '.' {s.next()tok = token.ELLIPSIS}} else { // 如果不是 小數(shù),':', ':=', 也不是 '...', 那么我們認(rèn)為它是 '.'.// 比如 foo.Prop 中的點(diǎn)tok = token.PERIOD}case ',':tok = token.COMMAcase ';':tok = token.SEMICOLONlit = ";"case '(':tok = token.LPARENcase ')':tok = token.RPARENcase '[':tok = token.LBRACKcase ']':tok = token.RBRACKcase '{':tok = token.LBRACEcase '}':tok = token.RBRACEcase '+':// 如果當(dāng)前 ch 是 '+', 那么所有可能結(jié)果是 '+', '+=', '++'. // 具體 token 類型仍然取決于 s.ch 的值tok = s.switch3(token.ADD, token.ADD_ASSIGN, '+', token.INC)case '-':tok = s.switch3(token.SUB, token.SUB_ASSIGN, '-', token.DEC)case '*':tok = s.switch2(token.MUL, token.MUL_ASSIGN)case '/':// 如果當(dāng)前 ch 是 '/', 且 s.ch 是 '/' 或者 '*', 當(dāng)前 token 是注釋.if s.ch == '/' || s.ch == '*' {comment := s.scanComment()tok = token.COMMENTlit = comment} else {// 如果不是注釋, 那么可能結(jié)果為除法操作符或者'/='.tok = s.switch2(token.QUO, token.QUO_ASSIGN)}case '%':// 可能結(jié)果為取模操作符或者 '%=' 操作符.tok = s.switch2(token.REM, token.REM_ASSIGN)case '^': tok = s.switch2(token.XOR, token.XOR_ASSIGN)case '<':if s.ch == '-' {s.next()tok = token.ARROW} else {tok = s.switch4(token.LSS, token.LEQ, '<', token.SHL, token.SHL_ASSIGN)}case '>':tok = s.switch4(token.GTR, token.GEQ, '>', token.SHR, token.SHR_ASSIGN)case '=':tok = s.switch2(token.ASSIGN, token.EQL)case '!':tok = s.switch2(token.NOT, token.NEQ)case '&':if s.ch == '^' {s.next()tok = s.switch2(token.AND_NOT, token.AND_NOT_ASSIGN)} else {tok = s.switch3(token.AND, token.AND_ASSIGN, '&', token.LAND)}case '|':tok = s.switch3(token.OR, token.OR_ASSIGN, '|', token.LOR)default:// next reports unexpected BOMs - don't repeatif ch != bom {s.error(s.file.Offset(pos), fmt.Sprintf("illegal character %#U", ch))}tok = token.ILLEGALlit = string(ch)}}return }func (s *Scanner) scanComment() string {// initial '/' already consumed; s.ch == '/' || s.ch == '*'offs := s.offset - 1 // position of initial '/'next := -1 // position immediately following the comment; < 0 means invalid commentnumCR := 0if s.ch == '/' {//-style comment// (the final '\n' is not considered part of the comment)s.next()for s.ch != '\n' && s.ch >= 0 {if s.ch == '\r' {numCR++}s.next()}// if we are at '\n', the position following the comment is afterwardsnext = s.offsetif s.ch == '\n' {next++}goto exit}/*-style comment */s.next()for s.ch >= 0 {ch := s.chif ch == '\r' {numCR++}s.next()if ch == '*' && s.ch == '/' {s.next()next = s.offsetgoto exit}}s.error(offs, "comment not terminated")exit:lit := s.src[offs:s.offset]// On Windows, a (//-comment) line may end in "\r\n".// Remove the final '\r' before analyzing the text for// line directives (matching the compiler). Remove any// other '\r' afterwards (matching the pre-existing be-// havior of the scanner).if numCR > 0 && len(lit) >= 2 && lit[1] == '/' && lit[len(lit)-1] == '\r' {lit = lit[:len(lit)-1]numCR--}// interpret line directives// (//line directives must start at the beginning of the current line)if next >= 0 /* implies valid comment */ && (lit[1] == '*' || offs == s.lineOffset) && bytes.HasPrefix(lit[2:], prefix) {s.updateLineInfo(next, offs, lit)}if numCR > 0 {lit = stripCR(lit, lit[1] == '*')}return string(lit) }func isLetter(ch rune) bool {return 'a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z' || ch == '_' || ch >= utf8.RuneSelf && unicode.IsLetter(ch) }func isDigit(ch rune) bool {return '0' <= ch && ch <= '9' || ch >= utf8.RuneSelf && unicode.IsDigit(ch) }// 讀取一個標(biāo)識符. // 標(biāo)識符的合法表示為以字符開頭可以包含數(shù)字的字符串 func (s *Scanner) scanIdentifier() string {offs := s.offsetfor isLetter(s.ch) || isDigit(s.ch) {s.next()}return string(s.src[offs:s.offset]) }func digitVal(ch rune) int {switch {case '0' <= ch && ch <= '9':return int(ch - '0')case 'a' <= ch && ch <= 'f':return int(ch - 'a' + 10)case 'A' <= ch && ch <= 'F':return int(ch - 'A' + 10)}return 16 // larger than any legal digit val }// 讀取一個字符串 // 這里的字符串是雙引號格式的. 對于``形式的字符串由scanRawString()方法解析 func (s *Scanner) scanString() string {// '"' opening already consumedoffs := s.offset - 1for {ch := s.chif ch == '\n' || ch < 0 {s.error(offs, "string literal not terminated")break}s.next()if ch == '"' {break}if ch == '\\' {s.scanEscape('"')}}return string(s.src[offs:s.offset]) }func (s *Scanner) scanRawString() string {// '`' opening already consumedoffs := s.offset - 1hasCR := falsefor {ch := s.chif ch < 0 {s.error(offs, "raw string literal not terminated")break}s.next()if ch == '`' {break}if ch == '\r' {hasCR = true}}lit := s.src[offs:s.offset]if hasCR {lit = stripCR(lit, false)}return string(lit) }func (s *Scanner) skipWhitespace() {for s.ch == ' ' || s.ch == '\t' || s.ch == '\n' && !s.insertSemi || s.ch == '\r' {s.next()} }

    例子##

    上面我們已經(jīng)簡單的了解了整個解析器的工作原理, 下面我們來跑幾個測試來驗證一下.

    測試用例位于 go/scanner/scanner_test.go

    輸入輸出對照表:

    輸入Token 類型Token 值
    /* a comment */COMMENT/* a comment */
    // a commentCOMMENT// a comment
    foobarIDENTfoobar
    01234567INT01234567
    0xcafebabeINT0xcafebabe
    3.14159265FLOAT3.14159265
    2.71828e-1000FLOAT2.71828e-1000
    ‘a(chǎn)’CHARa
    `foobar`STRING`foobar`
    +ADDEMPTY
    /QUOEMPTY
    %=REM_ASSIGNEMPTY
    ,COMMAEMPTY
    {LBRACKEMPTY
    breakBREAKbreak
    caseCASEcase
    fallthroughFALLTHROUGHEMPTY

    省略部分測試用例

    END!

    總結(jié)

    以上是生活随笔為你收集整理的Golang 词法分析器浅析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    天天操天天干天天玩 | 国产综合在线视频 | 成人动漫精品一区二区 | 亚洲精品乱码久久 | 在线播放日韩av | 夜夜骑日日操 | 99在线播放 | 激情丁香综合 | 九九九视频精品 | 精品国产99国产精品 | 欧美日比视频 | 国产精品私人影院 | 在线亚洲欧美视频 | 99这里都是精品 | 手机在线黄色网址 | 四虎成人免费影院 | 欧美成人免费在线 | 免费亚洲黄色 | 91精品久久香蕉国产线看观看 | av大全在线观看 | 免费h漫在线观看 | 久久成人视屏 | 日韩电影精品一区 | 成年人免费看av | 91成人在线视频 | 亚洲精品国产精品乱码不99热 | 波多野结衣亚洲一区二区 | 日韩精品一区二区不卡 | 97在线观看免费高清完整版在线观看 | 久久国产剧场电影 | 深爱开心激情网 | 免费观看av | 中文字幕一区二区三区在线视频 | 中文字幕乱码在线播放 | 深爱开心激情 | 波多野结衣一区 | 日韩大陆欧美高清视频区 | 97人人视频 | av成人在线播放 | 夜夜干天天操 | 国产精品99久久久 | 91日本在线播放 | 成人黄色在线视频 | 九九热在线视频免费观看 | 国产a国产| 久久一精品 | 欧美日韩国产网站 | 国产日韩中文在线 | 久久久国产精华液 | 中文字幕视频播放 | 狠狠狠色丁香婷婷综合久久88 | 国产日韩精品在线观看 | 久久a免费视频 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 国产精品一区二区三区在线免费观看 | 日韩黄色免费看 | 超碰免费在线公开 | 亚洲精品国产精品国自产观看 | av不卡免费在线观看 | 97夜夜澡人人爽人人免费 | av中文字幕网 | 国产午夜在线 | 在线国产99 | 国产一卡在线 | 中文字幕国内精品 | 99久久99久久综合 | 免费十分钟 | 天天爽天天做 | 99久久久久成人国产免费 | 成人免费大片黄在线播放 | 夜夜骑日日操 | 奇米四色影狠狠爱7777 | 黄毛片在线观看 | 91黄在线看 | 国产日韩欧美在线观看视频 | av三区在线 | 国产99久久精品一区二区300 | 日韩免费av在线 | 久久人人艹 | 久久久久久久毛片 | 美女视频久久 | 久久午夜剧场 | 久久视频在线免费观看 | 狠狠色香婷婷久久亚洲精品 | 国产在线精 | 99视频在线观看视频 | 天天操夜夜拍 | 婷婷丁香视频 | 久久久麻豆精品一区二区 | 国产精品你懂的在线观看 | 久久躁日日躁aaaaxxxx | 欧美日韩三区二区 | 亚洲精品午夜国产va久久成人 | 久久精品一级片 | 456免费视频 | 亚洲精品黄网站 | 青草视频在线免费 | 波多野结衣久久资源 | 国产成人精品av | 国产99爱| 免费看黄色91 | 黄网站色欧美视频 | 亚洲精品国内 | 最近的中文字幕大全免费版 | 91精品一区二区三区久久久久久 | 色偷偷男人的天堂av | 91成年人视频 | 天天操天天干天天操天天干 | 日韩在线免费观看视频 | 久久免费99 | 伊人久久精品久久亚洲一区 | 国产一区电影在线观看 | 欧美成人理伦片 | 成人在线视频论坛 | 亚洲精品视频在线观看免费视频 | 中文在线字幕免费观看 | 国产精品正在播放 | 欧美激情综合五月 | 国产高清网站 | av电影中文字幕在线观看 | 国产超碰在线 | 亚洲第一色 | 亚洲爱爱视频 | 在线午夜电影神马影院 | 亚洲第一av在线 | 国产福利av在线 | 国产伦理久久 | 国产成人一区二区三区久久精品 | 国产精品免费在线 | 精品国产成人av在线免 | 国产视频一二三 | 97精品国产97久久久久久免费 | 国产欧美最新羞羞视频在线观看 | 国产精品免费一区二区三区在线观看 | 久久精品99国产国产精 | 97免费| 久久精品国产精品亚洲精品 | 久久免费av电影 | 天天爱天天操天天爽 | 国产一级黄大片 | 最近日本韩国中文字幕 | 欧美一级视频免费看 | 日本不卡一区二区三区在线观看 | 玖玖视频免费在线 | 免费在线色电影 | 精品极品在线 | 久久99久久99精品免观看粉嫩 | 久保带人 | av福利网址导航大全 | 99热999| 亚洲一级片在线观看 | 欧美色插 | 在线观看国产一区 | 国产福利在线不卡 | 91精品久久久久久粉嫩 | 九九热在线视频免费观看 | av手机在线播放 | 在线电影 一区 | 射久久久 | 四虎免费在线观看视频 | 怡红院成人在线 | 日日夜夜精品视频天天综合网 | 免费aa大片 | 三级av中文字幕 | 日韩高清在线一区二区 | 天天操天天操 | 日韩精品一卡 | 免费观看国产成人 | 97精品久久 | 黄色日批网站 | 69精品久久| 午夜丁香视频在线观看 | 日韩电影在线视频 | 一区二区三区播放 | 97精品国产97久久久久久免费 | 91在线看免费 | av青草 | 蜜臀久久99精品久久久酒店新书 | 色吧av色av | 色综合久久88 | 久久久精品国产一区二区 | 亚洲国产wwwccc36天堂 | 日韩黄色在线电影 | 奇米影视777影音先锋 | 日韩精品久久久久久久电影竹菊 | 色久五月 | 免费日韩三级 | www.91av在线| 日日日日日 | 国产性天天综合网 | 91在线日韩| 亚洲va综合va国产va中文 | 精品一区二区电影 | 超碰公开在线观看 | 精品国偷自产国产一区 | 色婷婷99| 日韩在线不卡av | 国产精品久久在线观看 | 久久久久久久久久亚洲精品 | 五月亚洲 | avwww在线观看 | 色婷婷综合成人av | 最新av在线网站 | 嫩草伊人久久精品少妇av | 999久久久欧美日韩黑人 | 99国产免费网址 | 韩日精品在线 | 日韩欧美99 | 免费看一级特黄a大片 | 欧美性春潮 | 天堂av免费观看 | 99精品偷拍视频一区二区三区 | 久久久精品国产免费观看同学 | 丁香五婷 | 久久国产精品影视 | 国产精品久久久久久久久久久久久 | 日黄网站 | av电影中文字幕在线观看 | 亚洲精品国产综合久久 | 草久在线视频 | 成人a视频 | 日日干日日色 | 国产一区二区免费看 | 日韩在线免费看 | 久久久综合| 欧美亚洲一级片 | 亚洲国产午夜视频 | 婷婷天天色 | 久草干 | 片黄色毛片黄色毛片 | 久久亚洲欧美 | 美女视频黄的免费的 | 成人av av在线 | 免费看国产精品 | 久久精品久久精品久久 | 色吊丝av中文字幕 | 一区二区三区免费在线观看 | 国产亚洲情侣一区二区无 | 精品一区二区三区久久久 | 欧美a免费| 在线观看黄色国产 | 五月香视频在线观看 | av在线激情| 日韩精品中文字幕在线不卡尤物 | 欧美成人精品在线 | 亚洲午夜精品久久久久久久久久久久 | 天天干,天天射,天天操,天天摸 | 亚洲精品合集 | 欧美性护士 | 99视频在线精品 | 成人播放器 | 93久久精品日日躁夜夜躁欧美 | 亚洲精品国产精品国自产观看 | 天天综合导航 | 又粗又长又大又爽又黄少妇毛片 | 国产手机视频 | 日韩欧美精品一区二区 | 亚洲国产中文字幕在线观看 | 日日夜夜操av | 深夜免费福利 | 狠狠躁夜夜a产精品视频 | 伊人久久在线观看 | 天天插天天狠天天透 | 国产成人亚洲在线观看 | 国产成人精品久久二区二区 | 中文字幕av免费 | 狠狠操天天射 | 狠狠躁日日躁夜夜躁av | 欧美日韩亚洲在线观看 | 99c视频高清免费观看 | 不卡av在线 | 天天干天天操天天搞 | 丁香婷婷色综合亚洲电影 | 天天翘av | 福利视频网站 | 国模一区二区三区四区 | 涩五月婷婷 | 日韩免费av在线 | 亚洲精品在线播放视频 | 国产美女网站视频 | 午夜av免费在线观看 | 色综合天天综合 | 日韩欧美国产视频 | av在线播放亚洲 | 久久久www成人免费精品张筱雨 | 亚洲伦理一区二区 | 日韩av影视在线观看 | 狠狠操导航 | 欧美a视频在线观看 | 韩日成人av | 欧美婷婷色 | 日韩激情网 | 久久香蕉影视 | 在线国产日本 | 亚洲天堂免费视频 | 天天色天天| 一区二区视频在线看 | 亚洲精品网址在线观看 | 久久高清 | 六月激情网 | 亚洲一级黄色片 | 亚洲精品2区 | 国产亚洲精品精品精品 | 亚洲精品免费视频 | 亚洲在线日韩 | 欧美一级激情 | www.91国产 | 99这里有精品 | 天天做综合网 | 国产亚洲欧美在线视频 | 国产精品麻豆果冻传媒在线播放 | 亚洲爱爱视频 | 91视频传媒 | 视频一区二区三区视频 | freejavvideo日本免费 | 99产精品成人啪免费网站 | 日韩.com| 成人av亚洲 | 27xxoo无遮挡动态视频 | 九九久久久久久久久激情 | 人人干人人搞 | 午夜骚影| 天天操天天干天天玩 | 久热av在线 | 婷婷色在线资源 | 麻豆91小视频 | 九九九九热精品免费视频点播观看 | 又黄又刺激视频 | 97视频亚洲 | 日日干av | 国产在线a | 国产精品网红直播 | 国产中文在线字幕 | 国产在线观看你懂的 | www.com.黄| 色婷婷五| 午夜精品一二三区 | 久久国产电影院 | 18pao国产成视频永久免费 | 欧美a视频在线观看 | 精品国产免费一区二区三区五区 | 免费国产一区二区视频 | 婷婷婷国产在线视频 | 四虎在线永久免费观看 | 日韩欧美99 | 国产精品久久久久久久午夜 | av视屏在线 | 日韩电影在线一区二区 | 手机看片中文字幕 | 国产色爽 | 奇米777777| 香蕉免费 | 色网站在线免费 | 五月综合婷 | 午夜国产福利在线观看 | 日韩aⅴ视频 | 97在线超碰 | 91在线视频网址 | 美女久久网站 | 婷婷av综合 | 国内精品国产三级国产aⅴ久 | 久久久免费精品国产一区二区 | 欧美一二三区播放 | 91看片在线观看 | 九九在线视频 | 国产精品久久一区二区三区, | 成人免费在线播放 | 国产精品系列在线观看 | 亚洲国产福利视频 | 欧美韩日视频 | 九九免费精品视频 | 天天添夜夜操 | 一区二区中文字幕在线 | 免费影视大全推荐 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 亚洲无吗天堂 | 久久久久久国产精品美女 | 成年人免费观看在线视频 | 亚洲人成网站精品片在线观看 | 九九九热精品免费视频观看网站 | 日韩理论片 | 91精品国产自产在线观看 | 久久精品这里热有精品 | 欧美久久久久久久 | av电影一区| 色橹橹欧美在线观看视频高清 | 欧美黄色成人 | 亚洲综合色丁香婷婷六月图片 | 成人性生爱a∨ | 国产精品久久久久久久久久 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 永久免费精品视频网站 | 久久视频精品在线观看 | 一区二区三区在线看 | 成人在线播放av | 中国一区二区视频 | 亚洲精品网页 | 成人aⅴ视频 | 国产乱对白刺激视频不卡 | 亚洲一区二区视频在线播放 | 视频一区在线免费观看 | 国产黄色在线看 | 成人小视频在线 | 69视频网站| 中国一级片在线 | 黄网站免费久久 | 91一区在线观看 | 麻豆精品视频 | 日日夜夜综合网 | 亚洲午夜剧场 | 国产一区二区三区视频在线 | 99精品视频中文字幕 | 99色婷婷 | 免费v片 | 中文字幕电影网 | 一区二区三区在线观看中文字幕 | 欧美日产一区 | 日本韩国精品在线 | 在线精品播放 | 成人sm另类专区 | 精品久久久久免费极品大片 | 国产资源在线视频 | 亚洲成人av一区 | 久久精品一区二区三区视频 | 日日爽天天爽 | 国产麻豆精品免费视频 | 国产福利精品一区二区 | 91福利区一区二区三区 | 精品亚洲成人 | 免费视频在线观看网站 | 天天爽天天射 | 久久久久国产一区二区三区四区 | 美女露久久 | 成年人av在线播放 | 亚洲永久精品一区 | 97碰在线视频 | 欧美日韩国产伦理 | 免费日韩在线 | 成人黄色在线视频 | 日韩中文字幕在线观看 | 婷婷看片| 超碰国产在线观看 | 97看片 | 国产精品女主播一区二区三区 | 伊人日日干 | 中文字幕色在线 | 99精品国产福利在线观看免费 | 国产美女精品视频 | 天天干,天天射,天天操,天天摸 | 国产99久久久国产精品免费二区 | 日日夜夜精品 | 日日摸日日碰 | 三级午夜片 | 黄色1级毛片 | 97国产精品亚洲精品 | 91亚洲国产成人久久精品网站 | 国产婷婷久久 | 一二三区在线 | 黄色的视频网站 | 日日操天天操夜夜操 | 国产一区二区久久久久 | 免费一级片在线 | 2019中文| 99视频精品 | 亚洲黄色一级大片 | 婷婷久月| 国产五十路毛片 | 婷婷色在线 | 99久久99精品| 日本在线观看中文字幕无线观看 | 成年人电影免费在线观看 | 日韩精品你懂的 | 亚洲精品黄色 | 欧美最猛性xxx | av丝袜在线| 久热精品国产 | 久草在线观看 | 国产一区二区三区免费观看视频 | 欧美视频在线观看免费网址 | 婷婷丁香狠狠爱 | 久久久人人爽 | 亚洲男男gⅴgay双龙 | 日韩免费视频线观看 | 激情深爱五月 | 国产在线成人 | 国产人成看黄久久久久久久久 | 亚洲精品久久激情国产片 | 日日精品 | 中文字幕在线观看一区二区 | 婷婷色综合网 | 狠狠色狠狠色终合网 | 天天色天天射天天操 | 狠狠综合网| 在线免费视频 你懂得 | 日日干天天爽 | 色婷婷97| 亚洲二区精品 | 久久99国产精品自在自在app | 欧美日本啪啪无遮挡网站 | 在线观看免费91 | 在线视频99 | 免费观看xxxx9999片 | 波多野结衣在线视频免费观看 | 人人爽人人看 | 91麻豆福利 | 亚洲乱码中文字幕综合 | 婷婷六月激情 | 日韩在线观看免费 | 国产一区二区中文字幕 | av黄色成人 | 91黄色小网站 | 天天射天天操天天色 | 婷婷激情综合五月天 | 久久免费视屏 | 天天操夜夜拍 | 91成人免费观看视频 | 日韩乱码中文字幕 | 国产亚洲一级高清 | 在线视频福利 | 国产色道| 国产精品手机看片 | 极品中文字幕 | 精品视频亚洲 | 91最新在线| 人人干网 | www.久久99| 久久精品毛片基地 | 欧洲一区二区三区精品 | 国产视频在线观看一区二区 | 97品白浆高清久久久久久 | 日韩在线播放欧美字幕 | 久久精品中文字幕 | 亚洲久草在线视频 | 欧美日韩亚洲在线观看 | 天堂av最新网址 | sesese图片| 久爱综合 | av一级久久 | 97在线免费视频观看 | 亚洲成人av在线 | 国产精品99精品 | 999ZYZ玖玖资源站永久 | 一本一道久久a久久精品 | 国产精品毛片一区二区 | 久久国产精品一区二区三区四区 | 久久精品3 | 久久午夜影院 | 久久er99热精品一区二区三区 | 欧美精品三级 | 成人国产电影在线观看 | 99热在线观看免费 | 国产最顶级的黄色片在线免费观看 | 国产精品白浆视频 | 国产成人久久精品77777综合 | 最新久久免费视频 | 久久久官网 | 国产精品毛片 | 99精品视频在线看 | 亚洲精品视频在线播放 | 天堂麻豆 | 在线观看亚洲a | 国产精品视频最多的网站 | 91香蕉视频黄 | 国产精品日韩在线观看 | 五月天电影免费在线观看一区 | 国产综合小视频 | 最新成人在线 | 国产精品9999久久久久仙踪林 | 久久综合九色综合欧美就去吻 | 久久精品视频中文字幕 | 国产精品都在这里 | 色婷婷狠狠 | 亚洲五月激情 | 国产专区在线 | av电影在线免费 | av资源中文字幕 | 99理论片 | 综合久色 | 亚洲国产日韩av | 97在线观 | www.香蕉 | 日韩一区二区免费在线观看 | av大全在线看 | 精品国产精品久久一区免费式 | 91精品在线免费观看 | 国产精品久久久久久久久久久久午 | 国产成人精品一区二区在线观看 | 超碰在线98| www日韩| 丝袜护士aⅴ在线白丝护士 天天综合精品 | 人人讲| 91精品专区 | 99re8这里有精品热视频免费 | 在线影视 一区 二区 三区 | avlulu久久精品 | 天天操天天操一操 | 国内精品久久久久久久久久久久 | 久草视频在线观 | 色九九在线| 亚洲极色 | 午夜国产一区二区 | 久久96国产精品久久99软件 | 日韩电影一区二区三区在线观看 | 久草视频视频在线播放 | 一级黄色片在线 | 黄网站色| 久草精品视频在线观看 | 亚洲精品在线免费观看视频 | 国产 日韩 欧美 自拍 | 精品免费一区二区三区 | 狠狠狠狠狠狠狠狠干 | 日韩激情小视频 | 天天操夜操 | 久久男人视频 | 久久久久久久久爱 | 天堂av网站 | 亚洲精品看片 | 激情av一区二区 | 亚州av一区| 国产1区2| 99热免费在线 | 午夜精品一区二区三区在线观看 | 天天操夜夜拍 | 国产xx在线 | 亚洲狠狠操| 久久久久婷| 中文在线a在线 | www.av免费 | www.av中文字幕.com | 中文字幕日本特黄aa毛片 | 欧美日韩国产综合一区二区 | 欧美精品乱码久久久久久 | 亚洲免费成人 | 奇米网在线观看 | 日日夜夜添 | 综合精品久久久 | 一级精品视频在线观看宜春院 | 精品成人国产 | 久久久精品福利视频 | 日韩a在线观看 | 国产成人精品一区二区三区在线观看 | 夜夜骑日日 | 国产午夜精品久久 | 在线免费观看黄网站 | 日本久久免费视频 | 伊人婷婷久久 | 激情综合网五月婷婷 | 日韩在线视频一区二区三区 | 欧美午夜a | 久久人91精品久久久久久不卡 | 国产精品久久久久久久久搜平片 | 日韩电影在线观看一区二区 | 麻豆手机在线 | 国产热re99久久6国产精品 | 在线中文字幕观看 | 蜜臀久久99精品久久久酒店新书 | 日韩福利在线观看 | 亚洲精品国产第一综合99久久 | 国产一级大片免费看 | 国产精品国产三级在线专区 | 美女在线免费视频 | 人人盈棋牌 | 亚洲视频每日更新 | 日本少妇久久久 | 亚洲精品视频国产 | 国产精品欧美日韩在线观看 | 欧美视屏一区二区 | 国产中文字幕久久 | 欧美日韩激情视频8区 | 99精品视频免费在线观看 | 最近中文字幕免费av | 色妞色视频一区二区三区四区 | 在线精品观看 | 日本精品视频在线播放 | 黄色av电影 | 00av视频 | 日本二区三区在线 | 亚洲h在线播放在线观看h | 国产成人精品999在线观看 | 日韩专区 在线 | 91精品啪在线观看国产线免费 | 福利片视频区 | 久久久麻豆视频 | 亚洲三级黄色 | 三级免费黄色 | 欧美日韩国产一区二区三区在线观看 | 亚洲精品美女在线观看播放 | 久久激五月天综合精品 | 久久超级碰视频 | 人人操日日干 | 久久精品国亚洲 | 最近中文字幕在线 | 日韩电影中文字幕在线观看 | 三级动图 | 日韩精品在线免费观看 | av午夜电影 | 日本激情动作片免费看 | 亚洲精品理论 | 精品国产一区二区三区久久久蜜月 | 亚洲网站在线看 | 日韩在线免费小视频 | 免费的黄色av | 欧美超碰在线 | 在线免费观看视频一区二区三区 | 精品久久久久国产免费第一页 | 久久在线视频精品 | 亚洲香蕉在线观看 | 欧洲av不卡 | www.伊人网.com | 五月天网页 | 色窝资源| 成人免费一区二区三区在线观看 | 国产精品久久久久久久久软件 | 成人免费色 | 亚洲精品美女久久17c | 极品久久久久久久 | 91完整版观看| 麻豆视频免费入口 | 91麻豆精品国产91久久久久久 | 国产中文字幕在线播放 | 在线成人欧美 | 五月天婷婷狠狠 | 成人a级大片 | av高清一区二区三区 | av一级久久| 91成人免费在线视频 | 精壮的侍卫呻吟h | 操碰av | 亚洲综合激情五月 | 日韩电影一区二区在线观看 | 最新免费av在线 | 99精品国产一区二区三区不卡 | 日韩精品专区 | 国产香蕉97碰碰碰视频在线观看 | 97中文字幕| 999成人网 | 亚洲精品久久久久久久不卡四虎 | 久久社区视频 | 亚洲乱码久久 | 婷五月天激情 | 久久久免费高清视频 | 99精品视频免费观看视频 | 欧美一区免费观看 | 操久在线 | 久久久久久久网站 | 天天操操| 国产精品嫩草55av | 激情一区二区三区欧美 | 国产在线91精品 | 欧美日韩一区二区三区在线观看视频 | 久久综合久久久久88 | 国产精品一区二区在线播放 | 精品国产成人 | 少妇性bbb搡bbb爽爽爽欧美 | 亚洲国产精彩中文乱码av | 在线观看的黄色 | 黄色av电影网 | 亚洲人片在线观看 | 女人高潮一级片 | 久久99视频精品 | 黄色软件在线看 | 日韩黄色在线观看 | 天堂久色 | 欧美国产精品一区二区 | 免费观看www小视频的软件 | 91精品免费看 | 99久久99热这里只有精品 | 亚洲小视频在线 | 天天天天综合 | 久久在线免费观看视频 | 波多野结衣在线观看一区二区三区 | 青草视频在线 | 欧美国产日韩激情 | 就操操久久 | 超碰电影在线观看 | 黄色电影在线免费观看 | 91久久精品日日躁夜夜躁国产 | 四虎最新入口 | 操处女逼| 99成人免费视频 | 在线观看亚洲国产 | 99视频免费播放 | 伊人五月 | 91麻豆精品91久久久久同性 | 久久久影院官网 | 久久精品79国产精品 | 亚洲久在线| 2024av在线播放 | 日本精品中文字幕 | 99精品电影 | 中文字幕91 | 国产精品99久久久久久宅男 | 国产精品美女久久久久久久久久久 | 激情六月婷婷久久 | 免费观看午夜视频 | 国产成人精品在线 | 婷婷在线网站 | 久久精品站 | 久久免费国产 | 久久精品国产精品亚洲 | 亚洲高清视频在线观看免费 | 一区免费观看 | 中文字幕在线看视频国产中文版 | 播五月婷婷 | 久久69av| 久久午夜影视 | 涩涩成人在线 | 色婷婷天天干 | 成年人免费看的视频 | 天天干天天干天天干 | 日韩理论电影在线观看 | 色五月成人 | 免费观看9x视频网站在线观看 | 久久久国产一区二区 | 国产一区国产二区在线观看 | 日本黄色免费观看 | 亚洲激情视频在线 | 亚洲欧美精品一区 | 国产第一页精品 | 国产精品久久在线观看 | 在线中文字母电影观看 | 97超视频免费观看 | 久久99久久99精品免观看软件 | 日韩动态视频 | 91在线看片| 亚洲人成在线电影 | 精品国产一区二区三区四区vr | 91天天操| 精品国产乱码一区二区三区在线 | 亚洲欧美国产精品 | 久久人91精品久久久久久不卡 | 日韩三级在线观看 | 欧美色伊人 | 麻豆传媒在线视频 | 久久精品网站视频 | 麻豆传媒一区二区 | 99精品国产一区二区三区不卡 | 久久久久影视 | 伊人手机在线 | 69久久99精品久久久久婷婷 | 亚洲人成人99网站 | 国产黄色片网站 | 在线播放 日韩专区 | 干干夜夜 | 热99久久精品 | 亚洲第一中文字幕 | 国产亚洲精品久久久久久久久久 | 在线观看福利网站 | 97视频在线观看网址 | 国产香蕉视频在线播放 | 黄色一级性片 | 国产第一页福利影院 | 亚洲播放一区 | 欧美精品国产精品 | 国产手机在线精品 | 久久精彩 | 亚洲 欧美变态 另类 综合 | 欧美国产日韩一区二区三区 | aⅴ视频在线 | 天天操天天操天天操天天操 | 综合久久网站 | 日韩黄色av网站 | 国产黄色在线看 | av超碰在线 | 精品欧美乱码久久久久久 | 九九热视频在线免费观看 | 日韩 国产 | 久久久久99999 | 欧美美女视频在线观看 | 亚洲国产小视频在线观看 | 国产在线一线 | 亚洲综合色激情五月 | 国产日韩欧美在线播放 | 狠狠色狠狠色终合网 | 日韩中文字幕国产精品 | 国产91精品一区二区绿帽 | 亚洲精品午夜久久久久久久 | 免费视频色 | 久久久天堂 | 精品人人人人 | 在线日韩av | 亚洲成av人电影 | jizz18欧美18| 久久久精品 | 97视频人人澡人人爽 | av在线超碰 | 免费日韩一区二区三区 | 日韩免费久久 | 在线免费观看国产黄色 | 日韩精品一区二区三区在线播放 | 久99精品 | 69精品视频在线观看 | 免费网站在线 | 国产精品成人久久久久久久 | 最新日韩在线 | 91丨九色丨蝌蚪丨对白 | 在线观看视频亚洲 | 免费看黄视频 | 日韩一区精品 | 欧美最新另类人妖 | 亚洲一区二区麻豆 | 成年人看片网站 | 免费视频成人 | 香蕉视频在线观看免费 | 成人app在线播放 | a资源在线 | 毛片播放网站 | 国产在线更新 | 五月天最新网址 | a级片久久久| 国产午夜精品久久久久久久久久 | 欧美午夜一区二区福利视频 | 国产精品福利在线播放 | 啪啪小视频网站 | 最近久乱中文字幕 | 在线国产视频观看 | 91亚洲在线观看 | 午夜999 | 国产精品麻豆99久久久久久 | 精品国产欧美一区二区 | 五月激情亚洲 | 波多野结衣视频一区 | 欧美激情视频一区二区三区免费 | 亚洲成人国产精品 | 日韩大片在线观看 | 91字幕 | 日韩在线国产精品 | 国产男女无遮挡猛进猛出在线观看 | 国产精品9999久久久久仙踪林 | 日韩高清片 | 97超碰人人澡 | 国产精品免费成人 | 日韩精品免费在线视频 | 国产精品剧情在线亚洲 | 久久精品影片 | 97人人模人人爽人人喊网 | 97视频久久久 | av一级片网站 | 久久久久高清 | 成人av电影在线观看 | 久久精品一二三 | 精品女同一区二区三区在线观看 | 国产第一福利 | 人人爽人人爽人人片av | 美女网站一区 | 免费福利小视频 | 久久草精品 | 亚洲欧洲中文日韩久久av乱码 | 日韩91av | 丁香视频五月 | 久久久精品视频网站 | 午夜精品一区二区三区视频免费看 | 国产精品视频免费在线观看 | 久久国产精品久久久久 | 天天操天天干天天插 | 国产美女免费观看 | 日韩精品一区二区电影 | 中文字幕电影高清在线观看 | 久久激情综合 | 玖玖精品在线 | 欧美精品天堂 | 日韩精品无码一区二区三区 | 国产高清 不卡 | 中日韩欧美精彩视频 | 欧美日韩调教 | 亚洲精品久久久久中文字幕m男 | 草久在线观看视频 | 精品久久久久免费极品大片 | 亚洲欧美视频在线观看 | 色多多在线观看 | 国产专区免费 | 在线视频一二区 | 在线导航福利 | 日韩一区二区三区视频在线 | 九热精品| 亚洲永久精品在线 | 成人av动漫在线 | 开心激情五月网 | 久久不卡日韩美女 | 日本xxxx.com| 99国产精品久久久久老师 | 91福利视频免费 | 91成人在线视频观看 | 蜜臀av夜夜澡人人爽人人 | 色香蕉在线视频 | av三级av| 久久一区二区三区国产精品 | 久久久免费精品国产一区二区 | 天天干夜夜擦 | 久久黄色影院 | 91精品国自产在线 | 成人免费视频网址 | 久久久久99精品国产片 | 国产黄a三级三级三级三级三级 | 久久精品久久久久电影 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 久久久久久久久久久久久国产精品 | 人人超碰97|