狠狠综合久久久久综合网址-a毛片网站-欧美啊v在线观看-中文字幕久久熟女人妻av免费-无码av一区二区三区不卡-亚洲综合av色婷婷五月蜜臀-夜夜操天天摸-a级在线免费观看-三上悠亚91-国产丰满乱子伦无码专区-视频一区中文字幕-黑人大战欲求不满人妻-精品亚洲国产成人蜜臀av-男人你懂得-97超碰人人爽-五月丁香六月综合缴情在线

代做EECE 6083、c/c++設計程序代寫

時間:2024-04-11  來源:  作者: 我要糾錯



EECE 6083/5183 Compiler Project
1 Compiler Project
The class project is to build a simple recursive decent (LL(1)) compiler by hand (not using compiler
construction tools such as flex or antlr). You can use any imperative block structured programming language that supports recursion and for which I can install a standard debian package to
test your solution on my computer. Examples of languages that students have used for this class
include: c, c++, go, rust, java, and python. If you are not certain that your desired programming language is ok, please check with me. While you can use a wide selection of languages, you
cannot use any language features for constructing compiler subsystems (regular expression parsers,
etc). That said, I encourage you to use some of the more complex builtin data structures of these
languages such as hash tables. Again, if you have questions about what you can and cannot do,
please ask.
In addition to sending me your compiler source and build environment that I can run on my
Linux workstation (you are responsible for ensuring that it will build on a standard Linux box; if
you build it on some exotic system like Haiku, we can discuss a demo on that platform), you must
also turn in a one page report documenting your compiler. It should document your software, its
structure, the build process, and the language features that are correctly implemented as well as
those elements of the compiler that are not completed. Finally, the report should also highlight
any unique features you have implemented in the system.
I have organized the compiler project into 5 development phases with deadlines scattered
throughout the course semester period. While these deadline are soft, I will use your history
of early/late to assign plus/minus graduations to your final grade. I encourage you to attempt to
complete these phases early.
January 2, 2024 – 12 : 28 1
EECE 6083/5183 Compiler Project
2 Lexical Analysis: The Scanner
2.1 Tokens
Lexical analysis involves converting strings in the input language to tokens. Here is a representative
example of the object type for tokens.
// a globally visible enumeration (needed by both the lexer and by the parser
enum tokenType = {PLUS, MINUS, IF_RW, LOOP_RW, END_RW, L_PAREN, R_PAREN,
L_BRACKET, R_BRACKET, ... , NUMBER, IDENTIFIER}
class token
tokenType: tt
tokenMark: tm
end class
The token mark can be a complex data type that records secondary information about the token.
For many token types (e.g., PLUS) there is no token mark data required, the token type value fully
characterizes the token. For other token types, (e.g., IDENTIFIER) the token mark will contain
additional information to characterize the token; initially this will mostly be to hold an identifier
string, but later it may well contain information about complex types such as functions/procedures
and their argument list signature/return type, etc. In some systems, a compiler might combine
arithmetic operators, relational operators, multiplier operators, etc into a common token type and
use the token mark to record the specific member of that token class that is being represented.
2.2 Supporting functions/objects
There are some key support functions that can make building the compiler much easier; especially if
you encapsulate them with a strong API that permits the restructuring/extension of the underlying
implementation. I will organize these support functions into 3 parts: (i) input processing, (ii)
warning and error reporting, and (iii) symbol table management and reserved word setup. Below I
will present suggestions for each of these components. You are not required to setup your solution
this way, these are simply my recommendations to you. I will document each of these in an
object-oriented basis, you are not required to setup/use an object-oriented language, this is just a
convenient way for me to present the ideas.
2.2.1 Input Processing
I recommend that you create an object to manage your input file setup and location recording
(what line in the file is currently being processed). This might be a bit much for this project, but
it helps encapsulate stuff related to the input file being processed. It is a good plan to build it this
way as if you ever move to a more complicated language where multiple files are processed while
processing the designated input file, it is easy to have a stack of file points/line count variables to
record where the system is in processing the various files required.
January 2, 2024 – 12 : 28 2
EECE 6083/5183 Compiler Project
In general the lineCnt variable will be used to record which line in the input file the scanner
is currently working on. In this project, this value is used primarily to help generate meaningful
error messages.
class inFile
private:
file: filePtr = null // the input file
string: fileName
int: lineCnt = 0 // the line count; initialized to zero
public:
bool: attachFile(string) // open the named file
char: getChar() // get the next character
void: ungetChar(char) // push character back to the input file string
void: incLineCnt()
void: getLineCnt()
end class
2.2.2 Warning and Error Reporting
The main program should have an object for reporting errors and warnings. Ideally these functions
will output error messages using a standard format (e.g., https://gcc.gnu.org/onlinedocs/
gcc-3.3.6/gnat_ug_unx/Output-and-Error-Message-Control.html that supporting tools such
as emacs can use to, for example, automatically position your text editor/IDE to the correct file
and line number corresponding to the warning/error. The API for this is fairly simple.
class reporting
private:
bool: errorStatus = False // true if the compiler has discovered an error
public
void reportError(char *message)
void reportWarning(char *message)
bool getErrorStatus()
end class
While a compiler attempts to continue in the presence of both errors and warnings, an error
condition will generally cause the compiler to proceed only with the parse and type checking phases;
code optimization and generation should not occur when errors are encountered in the parsing of
the input program. In general the reportError function will set the private variable errorStatus
to True.
2.2.3 Symbol Table Management/Reserved Words
Most compilers will use a hash table(s) of the symbols seen in the input file; this is called the
symbol table. These symbols would be identifiers and functions. This is also a convenient place to
January 2, 2024 – 12 : 28 3
EECE 6083/5183 Compiler Project
drop entries for the reserved words in the language (such as if, loop, end, and so on). The symbol
table will be revised and extended as you build latter parts of the compiler, so it is imperative that
you keep access to it setup through and API so that its actual implementation is easily modified
later. The hashLook function will look into the symbol table and return the token for the string
argument. If this the first time an entry to the symbol table occurs for this string, then a new
entry is created with a default token definition (generally IDENTIFIER).
class symbolTable
private:
hashTable<token>: symTab
public:
token: hashLook(string) // lookup the string in the hash table
void: setToken(string) // change the token values for this symbol
end class
In general the lexer will lookup every candidate identifier string in the symbol table and return
the token stored in the symbol table for that string. Thus, to make life easy, a good idea is to preseed the symbol table with the reserved word strings and setup the tokens for each so that instead
of returning the token IDENTIFIER, the correct token for that reserved word is returned. Thus,
before you start processing the file, you will build a simple look to iterate through the reserved
word strings in order to initialize the symbol table with the reserved word tokens.
Constants
So the question sometimes comes up, how do we treat strings and numerical values in the lexical
analysis phase. There is no single uniform answer to this. You can treat them: (i) directly as
tokens, (ii), register them in the symbol table, or, (iii) build a separate string/numeric table(s)1
to
store the token representation of the item. If we assume that the lexer match string for the token is
stored as an ASCII string in the variable tokenString, then examples of the lexer return code for
each of these options can be outlined as (showing both for a STRING token and for an INTEGER
token):
(i) return new token(STRING, tokenString)
return new token(INTEGER, atoi(tokenString))
(ii) tok = symbolTable.hashLook(tokenString)
if (tok.tt != STRING) { tok.tt = STRING }
return tok
tok = symbolTable.hashLook(tokenString)
1Either a single common constantTable for both, or having two separate tables, one for strings and one for numerics
is possible.
January 2, 2024 – 12 : 28 4
EECE 6083/5183 Compiler Project
if (tok.tt != INTEGER) { tok.tt = INTEGER }
// optionally we might also build/add the integer value to the token
return tok
(iii) return new token(STRING, constantTable.hashLook(tokenString))
return new token(INTEGER, constantTable.hashLook(tokenString))
Of course there are many variations on this coding example. The option of using the symbol table
or a separate constant table is a good way to compress the final storage map. That is, if you store
them in the symbol table, then (at each scope) common constants will be represented as one item
that has to be mapped into memory during the code generation phase. If instead, you store all
constants in constant table(s) that transcend all scopes, you can potentially reduce the storage map
size even further.
2.3 The Scanner
I recommend that you build a scanner object with the principle API call scan() that returns the
next token in the input file. Normally your parser will call the scan() function to get the next
token to determine the next course of action for the parser. When the file has advanced to the end
of the file, you should have an end-of-file (EOF) token that can be returned to the parser.
For purposes of this step of your compiler, I recommend that you build a main program that
initializes the symbol table and iteratively calls scan() until the end-of-file is reached.
The scanner must skip white-space, newlines, tabs, and comments; comments are start with the
string ”//” and continue to the next newline character. It should count newlines to aid the error
reporting functions.
Illegal characters should be treated as white-space separators and reported as errors. These errors should not stop the parser or semantic analysis phases, but they should prevent code generation
from occurring.
The tokens your scanner should recognize are the tokens found in the project language specification.
I would also recommend defining character classes to streamline your scanner definition. In
short, what this means is you should define an array indexed by the input character that maps an
ASCII character into a character class. For example mapping all the digits [0-9] into the digit
character class, letters [a-zA-Z] into the letter character class, and so on (of course you have to
define the character classes in some enumeration type. I will go over this more in class for you.
I am leaving the remainder of this section in place; it is from an earlier version of
this document that may or may not be helpful to you.
While the scanner can be constructed to recognize reserved words and identifiers separately,
I strongly recommend that you fold them together as a common case in your scanner and seed
the symbol table with the reserved words and their corresponding token type. More precisely, I
recommend that you incorporate a rudimentary symbol table into your initial scanner implementation. While the data types of the symbol table entries are likely to expand as you build additional
capabilities into your compiler, initially you can have the symbol table entries record the token
January 2, 2024 – 12 : 28 5
EECE 6083/5183 Compiler Project
type and have a pointer to the string for the identifier/reserved word. For example, each element
in your symbol table could have the following structure:
sym_table_entry : record
token_type : TOKEN_TYPES;
token_string : *char;
end record
where TOKEN TYPES is the enumeration type of all your token types.
Operationally, I would build the symbol table so that new entries are created with the token type
field initialized to IDENTIFIER. You can then seed the symbol table (during the scanner initialization step described above) with reserved words in the scanner’s initialize method. The easiest
way to do this is to setup an array of reserved word and their token type. Then walk through the
array to do a hash look up with each reserved word string and change the token type field to the
specified token type. We will go over this in class.
January 2, 2024 – 12 : 28 6
EECE 6083/5183 Compiler Project
3 The Parser
Build a recursive decent parser that looks only at the immediate next token to control the parse.
That is, build an LL(1) parser from the project programming language specification given elsewhere
in these webpages. If you really would prefer to build a LALR parser that is possible, but please
discuss it with me first.
The parser should have at least one resync point to try to recover from a parsing error.
January 2, 2024 – 12 : 28 7
EECE 6083/5183 Compiler Project
4 Type Checking
Incorporate type checking into the parser and perform type checking while the statements are
parsed. Your principle concern is with scoping and type matching. At least for expressions and
statements, your parsing rules will now have to be expanded to return the type result for the
construct just parsed. The upper rules will use that type information to assert type checks at its
level.
A full symbol table complete with scoping data must be constructed. You must be able to
define a scope and remove a scope as the parse is made. You can achieve scoping by having nested
symbol tables or by chaining together the entries in the symbol table and placing scope entry points
that can be used to control how symbols are removed when your parser leaves a scope.
January 2, 2024 – 12 : 28 8
EECE 6083/5183 Compiler Project
5 Code Generation
You have two options for code generation. The first (and recommended) option is to use the LLVM
back-end optimizer and code generator. In this case your code generation phase would really be a
translator to the LLVM intermediate form (either the memory resident IR or the llvm assembly).
The second option is to generate a file containing a restricted C program space as documented
below.
5.1 Generating C
Basically the generated file should have declarations for your memory space, register space and a
flat C (no subroutines) with goto’s used to branch around the generated C file.
Your generated C must follow the style of a load/store architecture. You may assume a register
file sized to your largest need and a generic 2-address instruction format. You do not have to
worry about register allocation and you should not carryover register/variable use from expression
to expression. Thus a program with two expressions:
c := a + b;
d := a + c + b;
would generate something like:
// c := a + b;
R[1] = MM[44]; // assumes variable a is at MM location 44
R[2] = MM[56]; // assumes variable b is at MM location 56
R[3] = R[1] + R[2];
MM[32] = R[3]; // assumes variable c is at MM location 32
// d := a + c + b;
R[1] = MM[44];
R[2] = MM[32];
R[3] = R[1] + R[2];
R[4] = MM[56];
R[5] = R[3] + R[4];
MM[144] = R[5]; // assumes variable d is at MM location 144
You can also use indirection off the registers to define memory locations to load into registers.
For example your code generator can generate something like this:
R[1] = MM[R[0]+4];
You can statically allocate/assign some of the registers for specific stack operation (pointers).
The stack must be built in your memory space.
For conditional branching (goto) you can use an if statement with a then clause but not with
an else clause. Furthermore the condition must be evaluated to true/false (0/1) prior to the if
statement so that the condition in the if statement is limited to a simple comparison to true/false.
Thus for conditional branching only this form of an if statement is permitted:
January 2, 2024 – 12 : 28 9
EECE 6083/5183 Compiler Project
if (R[2] = true) then goto label;
The code generator is to output a restricted form of C that looks much like a 3-address load/store
architecture. You can assume an unbounded set of registers, a 64M bytes of memory space containing space for static memory and stack memory. Your machine code should look something like
(I forget C syntax, so you may have to translate this to real C):
Reg[3] = MM[Reg[SP]];
Reg[SP] = Reg[SP] { 2;
Reg[4] = MM[12]; // assume a static
// variable at
// location 12
Reg[5] = Reg[3] + Reg[4]
MM[12] = Reg[5];
You must use simple C: assignment statements, goto statements, and if statements. No procedures, switch statements, etc.
You must evaluate the conditional expressions in “if statements” and simply reference the result
(stored in a register) in the if statement of your generated C code.
Basically you should generate C code that looks like a simple 3-address assembly language.
5.2 Generating LLVM Assembly
See other lecture notes on LLVM.
5.3 Activation Records
See other lecture notes on Code Generation and Figure 1.
January 2, 2024 – 12 : 28 10
EECE 6083/5183 Compiler Project
FP
SP
return address
arg 2
local var 1
local var 2
arg 1
return value ptr
old SP
old FP
old FP
old SP
FP: frame pointer
SP: stack pointer Activation record k+1 Activation record k
prev
next
prev
next
Activation record k Activation record k+1
Curr activation record
Figure 1: The call chain of activation records; stack model on left and heap model on right
January 2, 2024 – 12 : 28 11
EECE 6083/5183 Compiler Project
6 Runtime
If you are using the LLVM infrastructure, you can use the libc supported gets, puts, atoi, etc
functions as your runtime system. This means that you will not end up writing the runtime library
other than adapting the code generator to interface to the libc standard.
For the runtime environment, you should enter the runtime function names and type signatures
into your symbol table prior to starting the parse of the input files. To code generate for these
functions, you can either special case them and use C function calls or you can have a static
(handwritten) C program with predefined labels (on the hand written code C code that calls your
library functions) that you generated code can goto. This second option sounds more difficult but
is probably much easier to implement as it’s not a special case in your code generator.
There are several (globally visible) predefined procedures provided by the runtime support
environment, namely the functions described in the project language description.
January 2, 2024 – 12 : 28 12

請加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp






 

標簽:

掃一掃在手機打開當前頁
  • 上一篇:代寫COP4600 File Systems編程代做
  • 下一篇:代寫股票公式 代寫通達信指標 代做公式
  • 無相關信息
    昆明生活資訊

    昆明圖文信息
    蝴蝶泉(4A)-大理旅游
    蝴蝶泉(4A)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國家級風景名勝區
    昆明西山國家級風景名勝區
    昆明旅游索道攻略
    昆明旅游索道攻略
  • NBA直播 短信驗證碼平臺 幣安官網下載 歐冠直播 WPS下載

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 kmw.cc Inc. All Rights Reserved. 昆明網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    主站蜘蛛池模板: 呦女精品 | 久久精彩视频 | 最近最经典中文mv字幕 | 亚洲九九九 | 五月婷婷色综合 | 亚洲字幕av一区二区三区四区 | 爽妇综合网| 中国肥胖女人真人毛片 | 鲁丝一区二区三区 | 狠狠干伊人 | 中文字幕在线观看精品 | 人人射人人干 | 日少妇视频 | 91免费看黄| 欧美 日韩 国产 成人 在线 91 | 欧美激情精品久久久久 | 日韩高清不卡 | 在线免费一级片 | av黄色小说 | 中文字幕一区二区在线视频 | 麻豆高清免费国产一区 | 国产suv精品一区二区 | 国内精品一区二区 | av毛片精品 | 国产日韩欧美精品在线 | 91午夜影院| 午夜精品福利在线观看 | 欧美日韩成人在线观看 | 成年人免费在线观看网站 | 不卡av免费 | 一级黄色淫片 | 黑白配高清国语在线观看 | 夜夜躁狠狠躁日日 | 欧美三级图片 | 亚洲激情一区二区三区 | 六月色婷婷 | 激情拍拍| 欧美无遮挡高潮床戏 | 欧美干干干 | 午夜精品三级久久久有码 | 青草精品视频 | 日韩成人一级片 | 国产一级在线看 | 亚洲国产欧美视频 | 偷拍视频一区 | 九月婷婷丁香 | 嫩嫩av| 国产精品久久久久久久久久久久久久久 | 亚洲一区欧美 | 成年人在线网站 | 久久久久久国产精品 | 99午夜视频 | 国产精品福利久久久 | 亚洲精品久久久9婷婷中文字幕 | 伊人7| 狠狠躁18三区二区一区 | 琪琪射 | 夫妻黄色片 | 亚洲特黄视频 | 毛片全黄 | 在线免费观看黄色片 | 久久中文字幕在线 | 国产白嫩受无套呻吟 | 国产视频一区在线播放 | www.日本在线观看 | 久草免费在线 | 亚洲精品视频91 | 牛牛澡牛牛爽一区二区 | 国产午夜久久 | 亚洲不卡网 | 热99精品 | 日韩一级黄色大片 | 成人美女免费网站视频 | 日韩精品视频免费播放 | 亚洲第一色网 | 日本视频网站在线观看 | 粉嫩绯色av一区二区在线观看 | 国产黄色美女视频 | 久热伊人| 秋霞黄色网 | 欧美性做爰毛片 | 久久精品女人毛片国产 | 99热这里有 | 日韩视频专区 | 免费一二区 | 亚洲欧美日韩一区二区 | 久久精品波多野结衣 | 免费国产一区二区 | 日日干,夜夜操 | 中文字幕伊人 | www.欧美日韩 | 欧美日韩 一区二区三区 | 国产精品99久久久久久久久久久久 | 黄色一级视频免费观看 | 嫩草影院在线免费观看 | 成年人黄色片网站 | 91极品国产 | 亚洲视频网址 | 91日本精品 | 国产重口老太伦 | av网站不卡 | 亚洲成人精品在线播放 | 白白色在线观看 | 日韩视频欧美视频 | jav中文字幕 | 亚洲国产一区二区精品 | 亚洲高清日本 | 国产精品自拍一区 | 中文成人在线 | 久久久久综合网 | 一本一道波多野结衣一区二区 | 日韩精品123 | 最近好看的2019中文在线一页 | 亚洲人精品| 国内视频自拍 | 香蕉网伊| 中文字字幕在线中文 | 成人免费一区二区三区在线观看 | 国产精品毛片一区二区 | 真实亲伦对白清晰在线播放 | 久久久婷婷 | 夜夜嗨一区二区 | 视频黄色免费 | 国产精品久久久久久久久久久新郎 | 久久99久久99| 成人自拍网站 | 久久精品在线免费观看 | 91成人在线观看喷潮 | 尤物视频免费在线观看 | 视频在线观看视频 | 啪视频在线观看 | 成人短视频在线观看 | 999插插插 | 欧美午夜精品久久久久久浪潮 | 最新福利在线 | 亚洲乱妇 | 看黄色一级视频 | 成人香蕉视频在线观看 | 日韩av第一页 | 黄色三级带 | 青青国产精品 | 欧美成人免费网站 | 亚洲精品乱码久久久久久蜜桃不爽 | 国产成人精品视频 | 亚洲欧洲在线视频 | 国产视频欧美视频 | 国产精品高清网站 | 一区二区亚洲视频 | 九月丁香婷婷 | 波多野结衣爱爱 | 国产在线xxx| 黑人巨大人精品欧美三区 | 国产在线观看h | 亚洲国产97| 久久久久久久免费 | 天天干天天草 | 国语一区二区 | 毛片黄片免费看 | 国产毛片基地 | 中文在线永久免费观看 | 亚洲欧美日韩成人在线 | 国产精品久久久久久久久久久久冷 | 四虎影院永久 | 久久久夜| 欧美一性一乱一交一视频 | 99热热99 | 精品处破女学生 | 无遮挡毛片 | 99视频免费看 | 中文在线a∨在线 | 四虎三级 | 亚洲欧美日韩国产精品一区午夜 | 亚洲v日韩v综合v精品v | 爱如潮水3免费观看日本高清 | 亚洲最大福利视频 | 欧美乱子伦| 亚洲欧美在线观看 | 精品少妇一区二区视频在线观看 | 免费黄色小视频在线观看 | 另类亚洲激情 | 情涩快播 | 午夜性刺激免费视频 | 日本丰满少妇 | 韩日av在线 | 一本久久综合亚洲鲁鲁五月天 | 天堂资源网 | 在线a网| 成年免费在线 | 超碰青青操| 97超级碰碰碰 | 成人一区av | 黄色肉肉视频 | 黄色日皮网站 | 自拍第一区| 黄色片视频免费在线观看 | 欧美视频第二页 | 灌满闺乖女h高h调教尿h | 这里只有精品免费视频 | 好男人在线视频 | 久久av.com | 亚洲欧美在线另类 | 日韩毛片在线播放 | 成人亚洲 | 新超碰97| 中国老太婆性做爰 | 日韩3p| 亚洲妇女体内精汇编 | 成年人免费视频网站 | 横恋母在线观看 | 清纯唯美亚洲综合 | 99夜色| 日韩欧美一级片 | 欧美成人黑人xx视频免费观看 | 国产精品二区一区二区aⅴ污介绍 | 女人天堂网站 | 日本大乳美女 | 亚洲成人精品一区二区三区 | 天天干网站 | 黄色片上床 | 丰满少妇一区二区三区专区 | 看免费一级片 | 性生交生活影碟片 | 日本特黄一级大片 | 色就是色欧美色图 | 伊人网站在线观看 | 久久久五月天 | 最新视频–x99av | 天天干夜夜爽 | 日韩精品一卡二卡 | 亚洲成人精品av | 国产精品一二三 | 性欢交69精品久久久 | 久操视频精品 | 久久久高潮 | 久久久久久久国产视频 | 欧美成人激情视频 | 一区二区三高清 | 国产国产国产 | 蜜乳av 懂色av 粉嫩av | 日韩精品在线免费视频 | 爱爱色图 | 欧美一级网站 | 国产一级免费视频 | 欧美不卡一区二区 | 久久精品伊人 | 九九小视频 | 日本人极品人妖高潮 | 中文亚洲欧美 | 久久中文网 | 日本特级a一片免费观看 | 一级精品视频 | 处破大全欧美破苞二十三 | 热99视频| 性做久久久久久久 | 天天综合网久久综合网 | 影音先锋亚洲天堂 | 亚洲欧美视频在线播放 | 久久精品视频国产 | 黄色三级视屏 | 中文字幕第一页在线播放 | 婷婷视频| 亚洲欧美日韩精品久久久 | 中文字字幕 | 最近中文字幕免费在线观看 | 成年人av网站 | 伊人网在线免费观看 | 波多野结衣一区在线 | 夜色视频网| a天堂中文在线观看 | 香蕉视频免费在线看 | 国产乱码精品一区二三区蜜臂 | 日韩视频免费 | 韩国av片永久免费 | 日日夜夜精品免费 | 大片av| 国产日韩欧美综合 | eeuss一区| 婷婷丁香色 | 午夜在线观看免费 | 九九热国产视频 | 国产一区精品在线 | 国产淫语对白 | 亚洲黄色片视频 | 久久久久久久久久久一区二区 | 国产调教 | 森泽佳奈中文字幕 | 男女超碰| 日韩最新在线 | 九九视频在线观看 | 国产91区 | 久久久久久网站 | 亚洲一区二区三区国产精华液 | 久久综合久久综合久久综合 | 黄色1级网站 | 激情欧美在线 | 中文字幕自拍 | 天天视频色 | 亚洲午夜视频在线观看 | 欧美视频性 | 亚洲午夜久久久久 | 国产成人精品一区二区三区 | 日本一区二区视频在线 | 久久免费少妇做爰 | 欧日韩av | 日韩美一区二区三区 | 国产免费福利在线观看 | 激情综 | 欧美成人精品在线观看 | 一级黄色aa | 中文字幕在线第一页 | 蜜桃色一区二区三区 | 国产伊人久久久 | 亚洲精品一区二区在线观看 | 国产精品一区二区6 | 精品国产99久久久久久宅男i | 久久久久久久久久久网 | 国产麻豆一级片 | 性欧美亚洲xxxx乳在线观看 | 尹人综合在线 | 亚洲男人第一av网站 | 九九九色| 六月婷婷色 | 91毛片网 | 亚洲成人777777| 国产亚洲欧美精品久久久久久 | 香蕉视频免费在线看 | 亚洲成人一区二区三区 | 午夜爱| 国产情侣91 | 国产成人免费在线观看 | 欧美图片一区二区 | 久久久久久久国产精品美女 | 91福利片| 奇米狠狠干| 婷婷色站 | 18疯狂做爰流白浆xxxⅹ高潮 | 99re7| 337p粉嫩大胆噜噜噜噜一区二区 | 深夜福利久久 | 波多野结衣一区二区三区在线观看 | 男人的天堂影院 | 波多野结衣一区二区三区在线观看 | 久草热在线 | 成人天堂资源www在线 | 欧美国产日韩综合 | 久操免费在线视频 | 日韩国产精品一区 | www.日本在线| 亚洲国产黄色av | 欧美日本一区 | 福利视频不卡 | 欧美精品免费在线 | 99久久成人| 国产视频a区 | 午夜有码 | 国产精品第二十页 | 国产精品美女久久久久av爽 | 成人综合色站 | 日本一区二区免费视频 | 麻豆高清免费国产一区 | 亚洲精品福利在线 | 夜夜嗨av禁果av粉嫩avhd | 成人性生交大片免费看 | 日批网址 | 国产日韩欧美日韩大片 | 人妻毛片 | 中文字幕一区二区三区精华液 | 永久免费看成人av的动态图 | 亚洲经典av | 一区二区三区视频在线 | 成人av免费在线播放 | 久久久性高潮 | 国产成人免费观看视频 | 欧美大喷水吹潮合集在线观看 | 亚洲无吗在线 | 国产精品自产拍高潮在线观看 | av网站在线免费 | 国产亚洲激情 | 亚洲深夜在线 | 国产在线免费视频 | 久久精品亚洲国产奇米99 | 国产精品久久久久久久久久久不卡 | 国产做爰全过程免费视频 | 午夜精品一区二区三区在线播放 | 欧美精品在线观看视频 | 亚洲欧美自拍一区 | 91视频网| 亚洲永久在线 | 最近2019中文字幕大全第二页 | 日韩色黄大片 | 亚洲aav| 夜夜偷影视 | aaa一区二区| 91免费黄| 国产精品a成v人在线播放 | 国产精品欧美久久久久天天影视 | 日日日日操 | 97caoav| 国产乱偷 | 亚洲黄色小说网 | 午夜视频在线观看视频 | 国内成人自拍视频 | 亚洲一区二区在线看 | 国产毛片精品 | 国产精品一区二区三区免费观看 | 青青草毛片 | 午夜激情在线播放 | 小草毛片 | 亚欧在线| 日韩视频区| 成人综合久久 | 夜夜av| 国产中文字幕亚洲 | 色婷婷导航 | 日韩av专区 | 99精品毛片 | 成人高清视频免费观看 | 国产一区二区免费看 | 字幕网av| 另类综合在线 | 日本大尺度吃奶做爰久久久绯色 | 在线观看黄网站 | 日韩中文字幕在线看 | 在线播放www | 国产寡妇一级农村野外战 | 欧美视频一级 | 国产精品日韩 | 波多野结衣之双调教hd | 免费看黄色小视频 | 青青草华人在线 | 91色区| 中文字幕理伦片免费看 | 国偷自产视频一区二区久 | 成人国产网站 | 青娱乐91| 色哟哟免费视频 | 欧美香蕉在线 | 中文 欧美 日韩 | 欧美在线播放一区二区 | 国产精品第6页 | 日韩不卡一区二区 | 天天干夜夜撸 | 天天插天天色 | 极品美女销魂一区二区三区 | 国产乱国产乱 | 日韩精品三区 | 亚洲二区av | 99在线精品视频免费观看软件 | 日韩黄色一区 | 国产午夜视频 | 日本九九热 | 天天草夜夜操 | 天天干狠狠干 | 特级淫片裸体免费看冫 | 久久一区二区视频 | 天堂在线资源网 | 国产精品久久久亚洲 | 亚洲欧美一级 | 日一区二区 | 精品国产免费久久久久久婷婷 | 亚洲成人一二三 | 日韩一道本 | 色偷偷影院 | 欧美在线资源 | 色婷婷av一区 | 亚洲女同tvhd | 久久免费精彩视频 | 精品国产乱码久久久久久1区2区 | 天堂影视在线观看 | 成人毛片一区二区三区 | 亚洲xxxxxx| 高清一区二区三区四区 | 91成人天堂久久成人 | 人人草av | 亚洲天堂首页 | 午夜性爽视频 | 成人免费观看在线视频 | 黄色片视频免费 | 中文字幕精品在线观看 | 国产精品一级二级三级 | 亚洲视频在线免费观看 | 中文字幕一区三区 | 青青草激情视频 | 91欧美激情一区二区三区 | 欧美一区二区三区四区视频 | 日本a在线播放 | 一级毛片儿 | 日韩精品成人在线 | 日日夜夜中文字幕 | 久久免费小视频 | 亚洲视频在线看 | 成人免费小视频 | 极品在线视频 | 免费不卡毛片 | 香蕉视频最新网址 | 国产精品福利一区二区 | 天堂在线一区二区 | 成人高清视频在线观看 | 国产黑丝av | 99re这里都是精品 | 先锋影音一区二区 | 嫩操影院 | 日韩激情啪啪 | 国产成人精品网 | 中文字幕欧美在线 | 超碰按摩 | 亚洲 欧美 日韩 综合 | 亚洲第一视频网站 | 国产午夜精品一区二区 | 天堂视频在线 | 91丨porny丨首页 | 91免费在线看 | 午夜激情网站 | 黄色aa视频 | 日韩精品欧美 | 秋霞免费av| 精品一区二区三区精华液 | 奇米影视一区 | 在线观看免费毛片视频 | 亚洲第一天堂 | 国产欧美久久久精品免费 | 免费日韩精品 | 国产一级aa大片毛片 | 久久精品久久久精品美女 | 伊人55yiren综合开心 | 中文字幕+乱码+中文字幕一区 | 亚洲精品久久久久久久久久 | 欧美午夜激情视频 | 久久国产精品影视 | 欧美亚洲天堂网 | 亚洲第四页 | 亚洲麻豆av| 香蕉色综合 | 国产欧美精品一区二区色综合 | 日韩成人av在线播放 | 丰满少妇乱子伦精品看片 | 国产乱子视频 | 国产精品suv一区二区 | 夜夜夜综合 | 最近2019中文字幕大全第二页 | 久久99影院 | 欧美午夜影院 | av综合一区| 亚洲第一页在线观看 | 久久中文综合 | 四虎午夜 | 日韩免费| 免费看黄色大片 | 亚洲字幕网 | 毛片999 | 高清av一区 | 国产一区二区三区视频网站 | 成人国产片女人爽到高潮 | 亚洲自拍偷拍另类 | 黄色一级片黄色一级片 | 亚洲五码在线 | 欧美日韩精品在线观看 | 国产麻豆交换夫妇 | 久久精品欧美日韩精品 | 日日夜夜撸啊撸 | www.五月.com | 成年人久久 | 性欧美一区 | 99在线精品视频免费观看软件 | www.成人在线观看 | 欧美理论在线观看 | 日本免费精品视频 | 国产网红av| 另类欧美亚洲 | 国产小视频在线免费观看 | 男女做网站 | 亚洲女优视频 | 欧美日韩精品中文字幕 | 国产精品美女一区二区 | 日韩成人av在线 | 欧洲一区二区三区四区 | 伊人七七 | 在线国产播放 | 久久国产精品亚州精品毛片 | 污片在线看| 亚洲天天综合网 | 日韩最新av | www.色综合 | 色射色| 青娱乐毛片 | 国产精品一区二区在线 | xxxx在线播放 | 日韩在线不卡 | 国产精品黄色网 | 日韩欧美视频在线免费观看 | 日韩精品亚洲一区 | 亚洲黄色在线播放 | 在线三区 | 久久久网 | 成人91网站 | 成人片在线免费看 | av噜噜噜 | 天天色综网 | 国产成人精品一区二区色戒 | 国产69精品麻豆 | 中国毛片在线观看 | 国产精品密蕾丝袜 | 91偷拍视频 | 好看的中文字幕第一页 | 九九福利| 天天色综合影视 | 国产精品入口66mio | xxx色| 97干干干 | 久久一区二区精品 | 日韩欧美一区二区在线观看 | 一级黄色片子免费看 | 99久久视频 | 国产一卡二卡在线 | 久久免费精品国产 | av嫩草 | 亚州激情 | 色吧av| 蜜臀麻豆 | 中文字幕首页 | 日韩精品一| 欧美91视频 | 国产a毛片 | 麻豆视频在线观看免费网站黄 | 欧美视频在线观看一区二区三区 | av资源在线播放 | 国产九九九 | 男女网站视频 | 三级黄色免费 | 丁香六月色| 亚洲精品国产精品国自产 | 岛国av免费看 | 国产欧美日韩成人 | 欧美一区免费看 | 国产美女精品久久 | 成人勉费视频 | 欧美在线a | 亚洲自拍偷拍综合 | 污视频在线观看免费 | 久久精品国产欧美亚洲人人爽 | 玩偶姐姐在线看 | 日日夜精品 | 欧美在线视频观看 | av在线不卡观看 | 三级黄色短视频 | 91久久爱 | 影音先锋久久资源 | 一区二区三区手机在线观看 | 亚洲天堂手机在线 | 永久黄网站色视频免费 | 91免费视频网址 | 亚洲砖区区免费 | 在线看片国产 | 成人免费视频一区 | 羞羞的铁拳在线观看 | 双性皇帝高h喷汁呻吟 | 日本va欧美va欧美va精品 | 自拍偷拍福利视频 | 久久久免费 | 日韩午夜网站 | 2024自拍偷拍 | 人人干人人搞 | 欧美黄色一区二区 | 成人免费av在线 | 精品在线一区二区三区 | 国产精品日韩高清 | 特级a毛片 | 丁香综合在线 | 天天草天天| 精品视频91| 操操操综合| 国产日产久久高清欧美一区 | 九九精品久久 | 久草黄色| 激情五月婷婷综合 | 国产精品9| 国产精久久久 | 日韩精品极品视频 | 久久久久久久久久久久久大色天下 | 欧美视频一区二区在线观看 | 自拍偷拍国内 | 日本黄色片. | 奇米成人网 | 中文天堂在线资源 | 黄色一及片 | 456亚洲影视| 午夜在线网址 | 特一级黄色大片 | 销魂奶水汁系列小说 | 天天躁日日躁狠狠躁免费麻豆 | 六月丁香婷婷网 | 性生活香蕉视频 | 精品国产乱码一区二区三区a | 丰满少妇乱子伦精品看片 | 91国产丝袜播放在线 | 在线看片a | 一级做a爱片 | 台湾swag在线播放 | 国产尻逼| 探花视频在线版播放免费观看 | 国产精品初高中害羞小美女文 | 精品国偷自产在线视频 | 人人做人人爽 | 91在线影院 | 亚洲综合视频在线播放 | 最新日韩精品 | 视频精品一区 | 一区二区视频免费在线观看 | 吃奶在线观看 | 黄色av影院 | 性欧美在线观看 | 2024日韩中文字幕 | 老司机午夜影院 | 91亚洲国产成人精品性色 | 人成网站在线观看 | 性生活视频在线播放 | 日本成人片网站 | 亚洲伦乱 | 一本色道久久88综合日韩精品 | 黄色香蕉网 | 亚洲a在线观看 | 久久精品三级 | 爱射综合 | 天天爱夜夜操 | 97视频免费 | 亚洲激情综合在线 | 红桃视频国产 | www.色综合.com | 天天看夜夜操 | 亚洲人免费视频 | 五月婷婷亚洲综合 | 一区二区三区毛片 | 国产理论在线观看 | 国内精品小视频 | 欧美成人精品欧美一级乱黄 | 国产精品久久久亚洲 | 天堂综合网久久 | 久久免费精品国产 | 国产91精品一区二区 | 曰批视频在线观看 | 国产在线观看xxx | 一本一道波多野结衣一区二区 | 婷婷国产在线 | 日韩欧美视频在线播放 | 色婷婷小说 | 白浆在线播放 | 久久免费看少妇高潮a | 亚洲黄色中文字幕 | 国产性一乱一性一伧一色 | 国产精品97 | 久久99久久99精品免观看粉嫩 | 日韩精品免费看 | 天天上天天干 | 刘亦菲久久免费一区二区 | 婷婷导航| 国产一区二区不卡在线 | 在线免费看黄色片 | 欧美福利社| 国产主播一区二区 | 毛片成人| av直接看| 亚洲欧美综合精品久久成人 | 亚洲九九精品 | 国产亚洲精品久久久久久 | xxxx.国产| 欧美性网站| 九九久久精品 | 成人xvideos免费视频 | 国产女人高潮大叫毛片 | 咪咪av| 一区二区三区视频网站 | 一级片999 | 日韩久久综合 | 亚洲成年人在线 | 艹久久 | 太久av| 亚洲福利网址 | 麻豆爱爱视频 | 久久久久国产精品免费 | 欧美日韩国产成人在线 | 狠狠干在线视频 | 国产精品久久久久久久久免费看 | 国产乱论 | 91精品小视频 | 麻豆伊甸园 | 国内自拍视频网站 | 伊人久久大香线蕉综合网站 | 天堂资源网 | 欧美人与禽猛交乱配视频 | 黄色av日韩 | 91成人在线观看喷潮 | 撸啊撸av | 国产aⅴ爽av久久久久成人 | 色xxxxxx| 91手机视频| 日韩欧美在线视频 | 中文字幕一区二区三区视频 | av观看网站| 乱亲女h秽乱长久久久 | 日本xxxxxxxxx | 成人网免费视频m3u8 | 有码视频在线观看 | 国产精选久久久 | 亚洲精品久久久蜜桃网 | 日本欧美精品 | 91成人网页 | 女人叫床很黄很污句子 | 久久久久久国产视频 | youjizz.com中国 | 国产精品天堂 | 国产成人亚洲欧洲在线 | 亚洲麻豆精品 | 91成人免费在线观看视频 | 伊人99 | 国产顶级毛片 | 成人爱爱视频 | 国产传媒在线观看 | 久久精品一本 | 五十路毛片 | 亚洲区偷拍 | 超碰精品在线观看 | 伊人影院在线播放 | a久久久久 | 超碰在线最新 | 天天干天天操天天射 | 久久影院中文字幕 | 三级国产在线 | 色图插插插 | 国产福利91精品 | 精品久久久亚洲 | 天天色小说 | 国产在线视频网址 | 男人的av | 国产色噜噜噜在线观看精品 | 欧美乱人伦| 六月丁香激情综合 | 北条麻妃一区二区三区在线观看 | 亚州精品视频 | 污视频在线观看网址 | 91免费看片播放器 | 在线欧美一区 | 少妇久久久久 | 成年人在线免费 | 国产精品 日韩 | 日批视频在线 | 国产伦精品一区二区三区在线观看 | 亚洲一线视频 | 精品初高中害羞小 | 五月天看片 | 456成人网 | 男女啪啪在线观看 | 成人久久久精品国产乱码一区二区 | 久久高潮视频 | 日啪 | 精品一区二区三区不卡 | 在线看片不卡 | 天天色av | 中文字幕视频二区 | 无码少妇一区二区三区 | 午夜小影院 | 成人免费毛片足控 | 在线小视频国产 | 亚洲精品乱码久久久久久9色 | 日韩免费高清视频网站 | 午夜久久网 | 最新视频–x99av | 日皮在线观看 | 亚洲日本精品视频 | 成人97| 久久久久国产精品一区二区三区 | 欧美性猛交乱大交3 | 亚洲一级片免费看 | 野花视频免费在线观看 | 天天躁日日躁狠狠躁伊人 | 91老司机在线 | 青草视频污 | www性| 麻豆一区二区三区四区 | 91av成人| 亚洲aⅴ乱码精品成人区 | 色秀视频在线观看 | 欧美日韩1区2区 | 天堂网视频在线 | 亚洲精品一区二区三区四区 | 黄色一级免费观看 | 伊人久操视频 | 日韩性生活视频 | 国产老女人乱淫免费可以 | 天天操天天爽天天干 | 欧美另类天堂 | 国产成人一区二区三区免费看 | 男女日批免费视频 | 北条麻妃青青久久 | 性生活视频播放 | 永久免费看片在线播放 | 亚洲国产成人一区二区精品区 | 国产精品一区免费 | 成人做爰黄 | 天堂av网址 | 亚洲图片欧美在线看 | 亚洲香蕉av在线一区二区三区 | 老色鬼网站| 欧美日韩国产二区 | 97人人干 | 亚洲一区久| 欧美激情一区在线 | 97人人爽人人爽人人爽 | 国产中文在线视频 | 嫩草伊人| 日韩免费专区 | 一区在线免费 | 黄色av日韩| 九九在线精品 | 日本综合视频 | 一区二区三区日韩精品 | av成人 | 四虎视频国产精品免费入口 | www超碰 | 俄罗斯美女一级爱片 | 亚洲综合网av | www.国产精品视频 | 夜夜躁恨恨躁爱躁 | 中文字幕高清一区 | 欧美,日韩,国产精品免费观看 | 日本成人在线免费 | 久色在线 | a天堂在线资源 | 国产精品久久久久久久裸模 | 西西大胆午夜视频 | 亚洲福利社区 | 色偷偷人人澡人人爽人人模 | 全部免费毛片在线播放一个 | 久久一二 | 伊人影院在线视频 | 国产乱淫视频 | 性欧美亚洲xxxx乳在线观看 | 天天干人人| 黑人巨大精品欧美久久 | 中文字幕99页 | 国产区视频在线观看 | 日韩欧美日本 | 精品在线视频一区 | 国产视频欧美 | 中国精品久久 | 久久精品国产大片免费观看 | 亚洲日日日 | 91成年影院 | 视频黄色免费 | 日本成人免费 | 九九热精品视频在线观看 | 亚洲视频一区二区在线观看 | 精品蜜桃一区二区三区 | 欧美福利社 | 一级二级在线观看 | 激情另类综合 | 欧洲亚洲天堂 | 亚洲精品激情视频 | 波多野一区二区 | 国产aaa视频 | 一区二区三区视频免费观看 | 字幕专区码中文欧美在线 | 国内毛片毛片毛片毛片 | 国产精品区二区三区日本 | 亚洲欧洲自拍偷拍 | 久久综合久色欧美综合狠狠 | 看国产毛片 | 日本免费黄色网址 | 在线亚洲综合 | 亚洲人免费视频 | 亚洲欧美日韩激情 | 亚洲va欧美va国产综合久久 | 亚洲小说图片区 | 91国在线啪 | 色老头综合| 亚洲精品免费观看 | 韩国精品视频一区 | 91久久久久久久久 | 操操操日日日 | 国产一级片免费视频 | 男人的天堂欧美 | 伊人国产精品 | 成人va视频 | 国产美女久久 | 亚洲国产精品自拍视频 | 国产在线aaa | 特级西西444www高清大胆免费看 | aaa黄色片| 国产午夜精品久久久久久久 | 五月天综合激情网 | 91视频在线观看网 | 天天拍天天射 | 欧美性生交大片免费看 | 99精品一区二区 | 亚洲国产成人精品久久久国产成人一区 | 成人欧美一区二区三区黑人免费 | 成人av免费在线 | 97视频人人| 天天色成人网 | 青青草精品视频 |