久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

編譯原理課設(shè)利器:GDUT PL0編譯器實(shí)驗(yàn)包全解析

編譯原理課設(shè)利器:GDUT PL0編譯器實(shí)驗(yàn)包全解析 簡(jiǎn)介面向編譯原理課程學(xué)習(xí)者的完整課內(nèi)實(shí)驗(yàn)與課程設(shè)計(jì)資料由廣東工業(yè)大學(xué)學(xué)生在學(xué)習(xí)過(guò)程中整理系統(tǒng)覆蓋詞法分析、語(yǔ)法分析、語(yǔ)義分析及代碼生成四大編譯器核心階段并以PL0教學(xué)語(yǔ)言為實(shí)例串起整個(gè)實(shí)驗(yàn)環(huán)節(jié)適合本科階段復(fù)習(xí)、課程設(shè)計(jì)參考或自學(xué)實(shí)踐。資源共131個(gè)文件主要包含PL0源程序、C與Java工程源碼、編譯生成的class/exe產(chǎn)物、分析過(guò)程png截圖以及實(shí)驗(yàn)報(bào)告md筆記整體僅3.01MB目錄結(jié)構(gòu)清晰便于按需查找。目前已有500人學(xué)習(xí)下載。實(shí)驗(yàn)報(bào)告中詳細(xì)記錄了每一步實(shí)現(xiàn)細(xì)節(jié)、遇到的問(wèn)題與解決思路配合源碼和可視化圖表可讓學(xué)習(xí)者直觀理解編譯器構(gòu)造流程掌握PL0解釋器或編譯器的搭建方法是完成課程實(shí)驗(yàn)、撰寫(xiě)課程設(shè)計(jì)報(bào)告或進(jìn)行相關(guān)復(fù)習(xí)的高價(jià)值參考資料。1. 編譯原理課設(shè)就該拿 PL0 開(kāi)刀這份 GDUT 實(shí)驗(yàn)包到底裝了什么編譯原理這門課最勸退的不是文法而是你永遠(yuǎn)不知道自己的編譯器離“能跑”還有多遠(yuǎn)。PL0 是 Pascal 之父 Wirth 設(shè)計(jì)的教學(xué)語(yǔ)言去掉一切工程復(fù)雜度幾十行 EBNF 文法就能描述全貌卻把詞法分析、語(yǔ)法分析、語(yǔ)義分析、代碼生成、解釋執(zhí)行這條編譯器流水線完整走了一遍。廣東工業(yè)大學(xué)GDUT這套課內(nèi)實(shí)驗(yàn)和課程設(shè)計(jì)資源正是拿一個(gè)可運(yùn)行的 PL0 編譯器當(dāng)載體把整個(gè)編譯流程拆成能動(dòng)手、能驗(yàn)收、能寫(xiě)進(jìn)報(bào)告的分階段任務(wù)。對(duì)正在趕編譯原理實(shí)驗(yàn)的在校生來(lái)說(shuō)它是現(xiàn)成的實(shí)現(xiàn)參照對(duì)自學(xué)編譯器構(gòu)造的開(kāi)發(fā)者來(lái)說(shuō)它是能真正跑起來(lái)的最小完整范例。最值錢的不只是代碼而是報(bào)告里記錄的那套“從設(shè)計(jì)到排錯(cuò)”的全過(guò)程。2. 先看清家底從 PL0.bpr 到 7 個(gè) class讀文件清單就是讀架構(gòu)2.1 PL0.bpr 重復(fù)出現(xiàn)Borland 工程文件背后的多實(shí)現(xiàn)版本PL0.bpr 是 Borland C Builder 的工程文件壓縮包里出現(xiàn)三次對(duì)應(yīng)三個(gè)不同實(shí)驗(yàn)階段的工程快照。也就是說(shuō)這份資源不是孤零零的一份源碼而是一組按實(shí)驗(yàn)進(jìn)度不斷迭代的版本。結(jié)合 answer.cpp 的存在可以推斷第一個(gè)實(shí)驗(yàn)用 C 完成了詞法分析器的答案實(shí)現(xiàn)而 Parser.class、Scanner.class、Interpreter.class 這組 Java 編譯產(chǎn)物又在告訴你課程設(shè)計(jì)的最終形態(tài)大概率是用 Java 重寫(xiě)了一遍完整編譯器。做課設(shè)時(shí)最怕的就是拿到手不知道從哪看起。我的習(xí)慣是先列文件清單再到每個(gè)文件里看它干了什么。這一步能幫你快速判斷這套資源的實(shí)現(xiàn)路線C 版本適合拿來(lái)對(duì)照詞法分析的原理Java 版本適合拿來(lái)跑通全流程實(shí)驗(yàn)報(bào)告負(fù)責(zé)把兩套代碼串成一條完整的故事線。2.2 七個(gè)核心 class 的職責(zé)邊界一句話說(shuō)清每個(gè)類管什么PL0.class、Scanner.class、Parser.class、Interpreter.class、Table.class、Symbol.class、Fct.class這七個(gè)類的命名非常規(guī)整基本就是經(jīng)典編譯器教科書(shū)的分層結(jié)構(gòu)。我整理了一下class 文件職責(zé)對(duì)應(yīng)編譯階段Scanner.class詞法分析把字符流切成 token 流詞法分析Parser.class語(yǔ)法分析按文法規(guī)約 token同時(shí)驅(qū)動(dòng)語(yǔ)義動(dòng)作語(yǔ)法分析Table.class符號(hào)表管理常量、變量、過(guò)程定義語(yǔ)義分析Symbol.class單個(gè)符號(hào)項(xiàng)記錄名字、類型、地址語(yǔ)義分析Fct.class指令類型枚舉對(duì)應(yīng) P-code 中間指令代碼生成Interpreter.class按指令碼逐條執(zhí)行的解釋器目標(biāo)執(zhí)行PL0.class主入口讀取源文件并串聯(lián)各階段驅(qū)動(dòng)注意 Fct.class 的存在幾乎可以斷定它采用了經(jīng)典 PL0 的 P-code 指令集也就是 LIT、LOD、STO、CAL、INT、JMP、JPC、OPR 這一套棧式指令。這套設(shè)計(jì)幾十年來(lái)一直被編譯原理教材沿用因?yàn)樗闹噶詈?jiǎn)單到用手工就能解釋執(zhí)行但又足夠覆蓋變量、表達(dá)式、條件跳轉(zhuǎn)、過(guò)程調(diào)用這些核心語(yǔ)言特性。想驗(yàn)證我的判斷不必去看源碼直接反編譯 class 文件就行。JDK 自帶的 javap 就是干這個(gè)的javap -c -p Parser.class | head -60這個(gè)命令的作用是反匯編 Parser.class輸出每個(gè)方法的字節(jié)碼指令。-c表示輸出方法體里的字節(jié)碼-p表示包含私有成員head -60只截取前 60 行避免刷屏。跑完之后你會(huì)看到 Parser 內(nèi)部持有 Scanner 實(shí)例的字段引用以及調(diào)用 Table 和 Fct 的操作碼這就等于把整個(gè)編譯器的主干關(guān)系摸了一遍。2.3 可視化文件和實(shí)驗(yàn)報(bào)告答辯時(shí)最值錢的素材CBC00.png、CBC.png、qt00.png 這三個(gè)圖片文件是詞法分析和語(yǔ)法分析過(guò)程的可視化輸出一般是用圖形方式展示 token 識(shí)別結(jié)果或者語(yǔ)法樹(shù)的構(gòu)造過(guò)程。這類截圖在實(shí)驗(yàn)報(bào)告里的分量比代碼本身還重——老師看報(bào)告時(shí)第一眼掃的就是你有沒(méi)有真正跑出結(jié)果圖比代碼直觀得多。PL0_Exp、PL0_Des、PL0_Raw 這三個(gè)文件從命名上看分別是 PL0 的表達(dá)式處理、聲明處理和原始語(yǔ)法定義。它們對(duì)應(yīng)了課程設(shè)計(jì)里“語(yǔ)義分析”這一塊的工作內(nèi)容。README.md 則是整份實(shí)驗(yàn)報(bào)告的外殼不只是說(shuō)明文檔里面有每一步的實(shí)現(xiàn)細(xì)節(jié)、遇到的問(wèn)題和解決方式這份“踩坑實(shí)錄”才是整套資源里最值得先讀的東西。3. 詞法分析實(shí)驗(yàn)復(fù)現(xiàn)把源程序字符流切成 token核心代碼與驗(yàn)收方法3.1 詞法分析器該輸出什么PL0 的五類 token 與處理邊界詞法分析器的輸入是一串字符輸出是一串 tokenPL0 的 token 分五類關(guān)鍵字、標(biāo)識(shí)符、無(wú)符號(hào)整數(shù)、運(yùn)算符和界符。關(guān)鍵字包括 BEGIN、END、IF、THEN、WHILE、DO、CONST、VAR、CALL、PROCEDURE、READ、WRITE、ODD 這些保留字運(yùn)算符包括 - * / # : ( ) , ; .其中#在 PL0 里表示“不等于”。這里有兩個(gè)容易踩的邊界第一標(biāo)識(shí)符必須以字母開(kāi)頭后面可以跟字母或數(shù)字但如果出現(xiàn)1abc這種數(shù)字后直接接字母的寫(xiě)法必須在詞法階段報(bào)錯(cuò)不能把1和abc拆成兩個(gè) token 放過(guò)去第二:、、這類雙字符運(yùn)算符必須做“最大匹配”也就是一次識(shí)別兩個(gè)字符不能把拆成和否則語(yǔ)法分析階段會(huì)徹底亂套。3.2 用 C 實(shí)現(xiàn)一個(gè)精簡(jiǎn) Scanner直接可編譯的核心代碼answer.cpp 是這份資源里詞法分析的 C 實(shí)現(xiàn)參考我按 PL0 標(biāo)準(zhǔn)寫(xiě)了一版同樣思路的精簡(jiǎn) Scanner可以直接編譯運(yùn)行// pl0_scanner.cpp —— PL0 詞法分析器精簡(jiǎn)實(shí)現(xiàn) // 編譯: g pl0_scanner.cpp -o pl0_scanner #include cctype #include cstring #include string #include iostream // 關(guān)鍵字表詞法分析器必須先把保留字和普通標(biāo)識(shí)符區(qū)分開(kāi) const char *keywords[] { BEGIN, END, IF, THEN, WHILE, DO, CONST, VAR, CALL, PROCEDURE, READ, WRITE, ODD }; // 判斷標(biāo)識(shí)符是否為關(guān)鍵字直接查表 bool isKeyword(const std::string word) { for (size_t i 0; i sizeof(keywords) / sizeof(keywords[0]); i) { if (word keywords[i]) return true; } return false; } // 從 src 的 pos 位置開(kāi)始切一個(gè) tokenpos 是引用參數(shù)會(huì)持續(xù)推進(jìn) std::string nextToken(const std::string src, size_t pos) { // 跳過(guò)空白和換行PL0 標(biāo)準(zhǔn)語(yǔ)法沒(méi)有注釋符號(hào) while (pos src.size() isspace(src[pos])) pos; if (pos src.size()) return ; // 返回空串表示 EOF // 標(biāo)識(shí)符或關(guān)鍵字以字母開(kāi)頭后續(xù)允許字母、數(shù)字、下劃線 if (isalpha(src[pos])) { size_t start pos; while (pos src.size() (isalnum(src[pos]) || src[pos] _)) pos; std::string word src.substr(start, pos - start); return isKeyword(word) ? word : IDENT( word ); } // 無(wú)符號(hào)整數(shù)連續(xù)數(shù)字PL0 只支持整數(shù)不支持浮點(diǎn) if (isdigit(src[pos])) { size_t start pos; while (pos src.size() isdigit(src[pos])) pos; return NUMBER( src.substr(start, pos - start) ); } // 雙字符運(yùn)算符必須放在單字符判斷之前否則 會(huì)被拆開(kāi) if (pos 1 src.size() src[pos] : src[pos 1] ) { pos 2; return :; } if (pos 1 src.size() src[pos] src[pos 1] ) { pos 2; return ; } if (pos 1 src.size() src[pos] src[pos 1] ) { pos 2; return ; } // 單字符運(yùn)算符和界符直接返回當(dāng)前字符 return std::string(1, src[pos]); } int main() { std::string src VAR x, y; BEGIN x : y 2 END.; size_t pos 0, cnt 0; while (true) { std::string tok nextToken(src, pos); if (tok.empty()) break; std::cout cnt : tok \n; } return 0; }代碼里的關(guān)鍵邏輯是這三處isalpha(src[pos])判斷標(biāo)識(shí)符起始條件因?yàn)?PL0 規(guī)定標(biāo)識(shí)符必須以字母開(kāi)頭不能用下劃線開(kāi)頭連續(xù)數(shù)字用isdigit逐字符拼出整數(shù)但沒(méi)有做溢出檢查實(shí)驗(yàn)里一般不管這個(gè)雙字符運(yùn)算符判斷必須在單字符之前這是最大匹配原則的直接應(yīng)用。如果調(diào)換順序:會(huì)被拆成:和兩個(gè) token后續(xù)語(yǔ)法分析全都白做。3.3 運(yùn)行驗(yàn)證與邊界用例怎么確認(rèn) token 序列不漏不重寫(xiě)完 Scanner 別急著往下走先把驗(yàn)收用例設(shè)計(jì)好。我一般會(huì)準(zhǔn)備幾組邊界輸入VAR x, y; BEGIN x : y 2 END.這是標(biāo)準(zhǔn)程序期望輸出依次是VAR、IDENT(x)、,、IDENT(y)、;、BEGIN、IDENT(x)、:、IDENT(y)、、NUMBER(2)、END、.一共 13 個(gè) token。如果輸出里多出或漏掉一個(gè)說(shuō)明某個(gè)分支的pos推進(jìn)有問(wèn)題這是詞法實(shí)驗(yàn)最常見(jiàn)的錯(cuò)誤來(lái)源。再測(cè)兩組特殊情況IF x y THEN x : 1用來(lái)驗(yàn)證沒(méi)有被拆開(kāi)VAR 1x;用來(lái)驗(yàn)證數(shù)字后直接接標(biāo)識(shí)符的情況。對(duì)第二種上面這版代碼會(huì)把1輸出成 NUMBER把x輸出成 IDENT這在標(biāo)準(zhǔn) PL0 里是詞法錯(cuò)誤理想情況應(yīng)當(dāng)在isdigit分支里追加檢查讀完數(shù)字后若當(dāng)前字符是字母直接報(bào)告非法 token 并中止。這一步建議你自己加上因?yàn)樗抢蠋熥類?ài)扣分的小細(xì)節(jié)。4. 語(yǔ)法與語(yǔ)義分析從 token 流到中間指令再到解釋執(zhí)行4.1 PL0 的 EBNF 文法與遞歸下降設(shè)計(jì)的映射關(guān)系詞法分析只負(fù)責(zé)切 token真正的“讀懂程序結(jié)構(gòu)”是語(yǔ)法分析的事。PL0 的完整文法用 EBNF 寫(xiě)出來(lái)也就十幾行program block . . block [ CONST ident number {, ident number} ] [ VAR ident {, ident} ] { PROCEDURE ident ; block ; } statement . statement ident : expression | CALL ident | BEGIN statement {; statement} END | IF condition THEN statement | WHILE condition DO statement | READ ident | WRITE expression . condition ODD expression | expression (|#||||) expression . expression [|-] term {(|-) term} . term factor {(*|/) factor} . factor ident | number | ( expression ) .遞歸下降分析的做法就是給每個(gè)非終結(jié)符寫(xiě)一個(gè)同名函數(shù)函數(shù)體里按產(chǎn)生式右側(cè)的順序逐項(xiàng)消費(fèi) token。這個(gè)方案相比自底向上的 LR 分析代碼量小得多而且出錯(cuò)時(shí)可以直接打印出“在第幾行缺了什么”這是教學(xué)編譯器幾乎都選遞歸下降的根本原因。你在這份資源的 Parser.class 里反編譯看到的就是一組按 expression、term、factor 嵌套設(shè)計(jì)的函數(shù)。4.2 符號(hào)表與指令集設(shè)計(jì)Table/Symbol/Fct 三件套分工語(yǔ)義分析階段要處理兩件事一是檢查變量有沒(méi)有聲明、類型對(duì)不對(duì)二是為代碼生成準(zhǔn)備地址信息。這份資源里的 Table.class 負(fù)責(zé)維護(hù)符號(hào)表Symbol.class 定義單個(gè)符號(hào)項(xiàng)Fct.class 枚舉中間指令。經(jīng)典的 PL0 符號(hào)表是每層過(guò)程一張表通過(guò)層差level和地址addr來(lái)定位變量。下面是一個(gè)簡(jiǎn)化但結(jié)構(gòu)完整的 Java 實(shí)現(xiàn)// Symbol.java —— 符號(hào)項(xiàng)定義 public class Symbol { String name; // 符號(hào)名 int kind; // 0常量, 1變量, 2過(guò)程 int level; // 所在過(guò)程層差 int addr; // 在本層符號(hào)表中的位置 int value; // 常量值變量和過(guò)程不用 public Symbol(String name, int kind, int level, int addr, int value) { this.name name; this.kind kind; this.level level; this.addr addr; this.value value; } }// Table.java —— 單層符號(hào)表負(fù)責(zé)登記和查找 import java.util.LinkedHashMap; import java.util.Map; public class Table { private MapString, Symbol symbols new LinkedHashMap(); private int nextAddr; // 下一個(gè)可分配的符號(hào)表地址槽 // 向表中登記一個(gè)符號(hào)重復(fù)定義返回 -1 public int enter(String name, int kind, int level, int value) { if (symbols.containsKey(name)) { System.err.println(錯(cuò)誤符號(hào) name 重復(fù)定義); return -1; } Symbol s new Symbol(name, kind, level, nextAddr, value); symbols.put(name, s); return s.addr; } // 在當(dāng)前層查找符號(hào) public Symbol find(String name) { return symbols.get(name); } }這段代碼里的LinkedHashMap保證符號(hào)按聲明順序排列方便生成報(bào)告時(shí)展示符號(hào)表內(nèi)容。enter返回的是地址槽位語(yǔ)法分析拿到這個(gè)地址后會(huì)交給代碼生成階段寫(xiě)入 P-code。4.3 P-code 指令集與 Interpreter 的執(zhí)行模型PL0 的中間代碼不用三元式也不用四元式而是一套基于棧的 P-code 指令。每條指令三個(gè)字段指令碼、層差、操作數(shù)。核心指令就這幾條指令含義作用LIT 0, 常量加載常量把常量壓入棧頂LOD 層差, 地址加載變量按層差和地址取變量值壓棧STO 層差, 地址存儲(chǔ)變量把棧頂值寫(xiě)入變量地址INT 0, 大小分配空間為局部變量在棧上開(kāi)辟空間JMP 0, 地址無(wú)條件跳轉(zhuǎn)讓程序計(jì)數(shù)器跳到目標(biāo)位置JPC 0, 地址條件跳轉(zhuǎn)棧頂為假時(shí)跳轉(zhuǎn)CAL 層差, 地址調(diào)用過(guò)程保存返回地址并跳轉(zhuǎn)OPR 0, 運(yùn)算號(hào)運(yùn)行運(yùn)算彈出棧頂元素做加減乘除或比較Interpreter 的核心就是個(gè) while 循環(huán)加 switch逐條讀指令、逐條執(zhí)行。這里給一版 Java 簡(jiǎn)化實(shí)現(xiàn)// InterpreterLoop.java —— P-code 解釋執(zhí)行主循環(huán)結(jié)構(gòu)簡(jiǎn)化版 public class InterpreterLoop { // 棧式虛擬機(jī)stack[top] 是棧頂top 從 0 開(kāi)始遞增 private int[] stack new int[1000]; private int top 0; // code 數(shù)組模擬代碼區(qū)每行是 {指令碼, 層差, 操作數(shù)} public void execute(int[][] code) { int pc 0; while (pc code.length) { int fct code[pc][0]; int level code[pc][1]; int addr code[pc][2]; pc; // 先取指令再自增防止跳轉(zhuǎn)指令覆蓋當(dāng)前指令 switch (fct) { case 0: // LIT stack[top] addr; break; case 1: // LOD // 這里用 base(level) 找層差對(duì)應(yīng)的?;刂?stack[top] stack[base(level) addr]; break; case 2: // STO stack[base(level) addr] stack[--top]; break; case 5: // JMP pc addr; break; case 6: // JPC if (stack[--top] 0) pc addr; break; case 9: // OPR 的簡(jiǎn)化入口運(yùn)算號(hào)在 addr 里 runOp(addr); break; } } } private int base(int level) { // 完整版需要維護(hù) display 寄存器數(shù)組這里返回 0 只是占位 return 0; } private void runOp(int op) { // 按 op 區(qū)分 - * / 比較等運(yùn)算具體指令分配見(jiàn)實(shí)驗(yàn)報(bào)告 } }這里的base(level)是最關(guān)鍵也最容易寫(xiě)錯(cuò)的地方。真實(shí) PL0 在棧上維護(hù)了靜態(tài)鏈SL和動(dòng)態(tài)鏈DLbase(level)需要沿著靜態(tài)鏈向上找 level 層才能拿到對(duì)應(yīng)過(guò)程的棧起始地址。很多初版代碼在這里直接返回 0導(dǎo)致嵌套過(guò)程一調(diào)用就棧錯(cuò)亂。這也是為什么上課總強(qiáng)調(diào)“先畫(huà)棧幀布局圖再寫(xiě)解釋器”。4.4 實(shí)驗(yàn)驗(yàn)證走一遍完整編譯流程完成了 Scanner、Parser、Table、Interpreter 之后用一個(gè)最小的 PL0 程序驗(yàn)證全流程VAR x; BEGIN x : 1; WRITE x END.這一行程序的編譯產(chǎn)物應(yīng)該是INT分配一個(gè)變量槽LIT 1壓入常量STO存入 xLOD讀回 xWRITE對(duì)應(yīng)的指令輸出棧頂值。我在本地跑通這五步之后才敢往文法里加 IF 和 WHILE。建議你也用同樣的順序逐步擴(kuò)展不要一上來(lái)就寫(xiě)全部文法。5. 實(shí)驗(yàn)報(bào)告與踩坑記錄這些雷我替你先踩了5.1 實(shí)驗(yàn)報(bào)告的組織方式別寫(xiě)成使用說(shuō)明書(shū)GDUT 的實(shí)驗(yàn)報(bào)告一般要求包含實(shí)驗(yàn)?zāi)康?、算法設(shè)計(jì)、關(guān)鍵代碼、測(cè)試截圖和問(wèn)題分析。很多同學(xué)把報(bào)告寫(xiě)成了代碼注釋的搬運(yùn)工這是最吃虧的。老師真正想看的是兩樣?xùn)|西一是你對(duì)“為什么這樣設(shè)計(jì)”的說(shuō)明比如為什么選遞歸下降而不是 LR、符號(hào)表為什么要分層二是你遇到的具體問(wèn)題和排查過(guò)程這部分才是報(bào)告里最有說(shuō)服力的原創(chuàng)內(nèi)容。我的建議是報(bào)告結(jié)構(gòu)固定為五段式文法設(shè)計(jì)用 EBNF 描述你的語(yǔ)言、算法流程圖狀態(tài)轉(zhuǎn)換圖或遞歸下降函數(shù)調(diào)用關(guān)系、核心代碼只選取詞法難點(diǎn)和語(yǔ)義動(dòng)作掛接點(diǎn)、測(cè)試用例至少三組包含一組錯(cuò)誤輸入的報(bào)錯(cuò)截圖、問(wèn)題記錄每個(gè)問(wèn)題按現(xiàn)象、原因、解決三段寫(xiě)。CBC00.png、CBC.png 這些可視化圖片放在“測(cè)試用例”一節(jié)作為運(yùn)行結(jié)果的直接證據(jù)。5.2 五個(gè)高頻翻車現(xiàn)場(chǎng)現(xiàn)象、原因、解決三步定位第一個(gè)坑運(yùn)行 Parser.class 直接報(bào) UnsupportedClassVersionError。現(xiàn)象是java Parser命令拋出版本不支持異?;蛘咛崾绢愇募姹惧e(cuò)誤。原因是編譯這個(gè) class 的 JDK 版本和當(dāng)前運(yùn)行環(huán)境的 JDK 版本不匹配class 文件頭部的 major version 對(duì)應(yīng)不同的 JDK 發(fā)行版。解決方法是先反編譯看版本號(hào)再?zèng)Q定安裝哪個(gè)版本。javap -verbose Parser.class | grep major versionjavap -verbose會(huì)輸出 class 文件的完整元信息grep major version直接過(guò)濾出版本號(hào)。major 52 對(duì)應(yīng) JDK 855 對(duì)應(yīng) JDK 1161 對(duì)應(yīng) JDK 17??吹桨姹咎?hào)之后裝對(duì)應(yīng)版本的 JDK或者直接用當(dāng)前 JDK 重新編譯源碼哪個(gè)方便用哪個(gè)。第二個(gè)坑1abc這類輸入沒(méi)有在詞法階段報(bào)錯(cuò)?,F(xiàn)象是詞法分析器把1abc拆成 NUMBER(1) 和 IDENT(abc)語(yǔ)法分析居然通過(guò)了運(yùn)行結(jié)果錯(cuò)誤。原因是數(shù)字識(shí)別分支只認(rèn)數(shù)字沒(méi)有檢查數(shù)字結(jié)束后緊跟著的字符是不是字母。解決方法是讀數(shù)字后加一個(gè)判斷if (isdigit(src[pos])) { size_t start pos; while (pos src.size() isdigit(src[pos])) pos; if (pos src.size() isalpha(src[pos])) { std::cerr 詞法錯(cuò)誤: 數(shù)字后不能直接跟字母\n; return ; } return NUMBER( src.substr(start, pos - start) ); }這段多出來(lái)的判斷能讓非法輸入在一開(kāi)始就被攔下而不是跑到語(yǔ)法階段產(chǎn)生一串看不懂的錯(cuò)誤。第三個(gè)坑變量未聲明卻通過(guò)了語(yǔ)法分析?,F(xiàn)象是BEGIN x : 1 END;這種程序沒(méi)在 VAR 段聲明 x語(yǔ)法分析沒(méi)報(bào)錯(cuò)運(yùn)行時(shí)棧操作亂套。原因是語(yǔ)法分析只檢查了文法結(jié)構(gòu)沒(méi)在語(yǔ)義動(dòng)作里查符號(hào)表。解決方法是 Parser 在處理ident : expression之前先調(diào)用Table.find(ident)查不到就輸出“未聲明標(biāo)識(shí)符”并中止編譯這一步也叫語(yǔ)義分析的基礎(chǔ)檢查是扣分重災(zāi)區(qū)。第四個(gè)坑嵌套過(guò)程里同名變量互相覆蓋?,F(xiàn)象是 procedure A 聲明了 var xprocedure B 也聲明了 var xB 里改 x 之后回到 A 里發(fā)現(xiàn) x 也被改了。原因是符號(hào)表只做了一層沒(méi)有按過(guò)程分層維護(hù)作用域。解決方法是每進(jìn)入一個(gè) block 新建一層符號(hào)表查變量時(shí)從當(dāng)前層往上逐層找當(dāng)前層沒(méi)有就找上一層找不到才報(bào)未聲明。這就是 4.2 里Table需要擴(kuò)展成多層鏈表的原因只靠一個(gè)LinkedHashMap支撐不了嵌套過(guò)程。第五個(gè)坑zip 解壓后 class 文件打不開(kāi)運(yùn)行直接崩潰。現(xiàn)象是解壓后某個(gè) class 文件用 javap 都反編譯不了提示zip END header not found或者 EOFException。原因有兩種可能zip 包是偽加密加密標(biāo)志位被置位但文件內(nèi)容并沒(méi)真正加密一部分解壓工具會(huì)誤報(bào)或者壓縮包本身不完整某個(gè)文件在傳輸中斷裂。解決方法是先判斷偽加密用 7-Zip 打開(kāi) zip 包如果能看到文件列表且能正常預(yù)覽內(nèi)容但解壓時(shí)報(bào)錯(cuò)基本就是偽加密。這種情況下用工具修復(fù)加密標(biāo)志位或者換用能忽略偽加密的解壓工具重新解壓。如果確認(rèn)是文件損壞檢查壓縮包里的文件大小和 README 記錄是否一致對(duì)不上就重新下載。這個(gè)問(wèn)題的排查順序是先看壓縮包 CRC再單文件校驗(yàn)最后才考慮是不是偽加密。5.3 一條普適的排錯(cuò)路徑從報(bào)錯(cuò)現(xiàn)象反推階段編譯器是一個(gè)多階段流水線出問(wèn)題時(shí)先不要亂猜按階段定位能省一半時(shí)間。token 流錯(cuò)了是詞法階段問(wèn)題token 對(duì)但語(yǔ)法樹(shù)構(gòu)造失敗是語(yǔ)法階段問(wèn)題語(yǔ)法通過(guò)但運(yùn)行時(shí)棧亂是符號(hào)表或指令生成問(wèn)題指令序列對(duì)著呢但結(jié)果錯(cuò)是運(yùn)算實(shí)現(xiàn)問(wèn)題?,F(xiàn)象排查階段首選檢查點(diǎn)token 輸出不對(duì)詞法分析雙字符運(yùn)算符分支、數(shù)字邊界出現(xiàn) “expected …”語(yǔ)法分析遞歸下降函數(shù)是否漏調(diào)用advance()運(yùn)行時(shí)報(bào)棧越界語(yǔ)義分析變量是否登記符號(hào)表、層差計(jì)算編譯通過(guò)但結(jié)果錯(cuò)代碼生成OPR 運(yùn)算號(hào)映射是否正確6. 課后擴(kuò)展給 PL0 加三樣?xùn)|西讓答辯老師眼前一亮6.1 擴(kuò)展一給 term 加乘除運(yùn)算練習(xí)優(yōu)先級(jí)掛接標(biāo)準(zhǔn) PL0 的term只處理乘和除有的實(shí)驗(yàn)版本連乘除都沒(méi)有。加乘除很簡(jiǎn)單難點(diǎn)不在詞法——*和/本來(lái)就是單字符運(yùn)算符——而在語(yǔ)法函數(shù)里運(yùn)算符的保存時(shí)機(jī)。我第一次寫(xiě)時(shí)直接這樣寫(xiě)void term() { factor(); while (tok MUL || tok DIV) { advance(); factor(); emit(tok MUL ? Fct.OPR_MUL : Fct.OPR_DIV); } }這段代碼有個(gè)隱藏 bugadvance()已經(jīng)把tok更新成下一個(gè) token 了emit里的tok MUL判斷用的根本不是剛才讀到的運(yùn)算符指令生成必然錯(cuò)位。正確做法是先把運(yùn)算符存下來(lái)再前進(jìn)void term() { factor(); while (tok MUL || tok DIV) { int op tok; // 關(guān)鍵先保存當(dāng)前運(yùn)算符 advance(); // 再讀下一個(gè) token factor(); emit(op MUL ? Fct.OPR_MUL : Fct.OPR_DIV); } }這種“先存后取”的細(xì)節(jié)就是遞歸下降分析里最常見(jiàn)的隱性 bug 來(lái)源。你在這份資源的報(bào)告里大概率也能看到類似的記錄。6.2 擴(kuò)展二給符號(hào)表加數(shù)組類型練習(xí)地址計(jì)算PL0 只有簡(jiǎn)單變量加數(shù)組是不錯(cuò)的加分項(xiàng)。需要在Symbol里增加上下界字段在factor和賦值語(yǔ)句里解析下標(biāo)表達(dá)式代碼生成時(shí)把下標(biāo)換算成偏移量。數(shù)組的坑在下標(biāo)越界運(yùn)行時(shí)要生成一條檢查指令下標(biāo)超出范圍就報(bào)錯(cuò)終止。這個(gè)擴(kuò)展能把符號(hào)表、語(yǔ)義檢查、代碼生成三個(gè)階段串起來(lái)練一遍。6.3 擴(kuò)展三用 Graphviz 導(dǎo)出語(yǔ)法樹(shù)答辯現(xiàn)場(chǎng)生成圖在 Parser 里收集語(yǔ)法樹(shù)節(jié)點(diǎn)輸出成 DOT 格式文件再用 Graphviz 生成 PNG。答辯時(shí)當(dāng)場(chǎng)跑一遍比 PPT 里的截圖更有說(shuō)服力digraph ast { node0 [label:]; node1 [labelx]; node2 [label]; node3 [labely]; node4 [label2]; node0 - node1; node0 - node2; node2 - node3; node2 - node4; }這個(gè) DOT 文件對(duì)應(yīng)x : y 2的語(yǔ)法樹(shù)digraph聲明有向圖每個(gè)node定義一個(gè)點(diǎn)-定義父子關(guān)系。實(shí)戰(zhàn)時(shí)把這個(gè)思想延伸到完整 PL0在 Parser 的每個(gè)子函數(shù)里創(chuàng)建新節(jié)點(diǎn)并把子節(jié)點(diǎn)掛上去最后統(tǒng)一輸出。我做課設(shè)那會(huì)兒吃過(guò)最大的虧是把語(yǔ)義分析和代碼生成混在一個(gè)超大 switch 里寫(xiě)調(diào)試一個(gè)錯(cuò)誤要翻幾百行代碼。從那以后我每次做編譯器實(shí)驗(yàn)都強(qiáng)制先把 Fct 指令集、Symbol 結(jié)構(gòu)和符號(hào)表接口定義好再動(dòng)手寫(xiě) Parser——接口穩(wěn)定了后面所有階段只是填實(shí)現(xiàn)細(xì)節(jié)。這套 GDUT 資源的報(bào)告里恰好也有類似的分階段設(shè)計(jì)記錄建議你先讀 README 再動(dòng)代碼。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久久噜噜噜久久久| av天天在线观看| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 欧美se亚洲| 久久精品国产精品一区| 中文字幕av一区二区三区人妻少妇 | 91碰碰碰| 亚洲黄片免费在线播放| 精品人妻一区二区三区蜜桃视频| 99在线免费视频| 中文操逼字幕| 欧洲一区二区三区四区在线观看| 77777亚洲蜜臀精品久久综合蜜臀| 99999精品| 久草草一二三四区久久| 欧亚综合一卡二卡中文字幕| 欧美精品日韩久久久九| 舔人妻中文免费视频| 国模一区二区三区| 你想操日本小逼吗| www.91视频网| 欧美日韩精品久久久久东北老熟妇| 欧美激情中文字幕另类小说| 国产精品丝袜在线| 另类图片五月| 强奸乱伦αv片| a亚洲欧美色欲| 久久影视二区三区行押| 伊人影院在线理论播放 | 亚洲九九九| 性色av大全| 久久久久96| 性生活无遮挡纯毛片在线看| 天色综合网| 欧美大香蕉专区网| 成人一道本免费视频| 亚洲在钱| 粉嫩AV一区夜夜嗨| 婷婷国产精品九区| 超碰激情808| 色爱综合网| 日韩在线一区高清在线| 污色区网站| 91热| 91狠狠综合久久| 日韩图区| 免费亚洲国产精品久久一区| 色五月激情AV在线| 狠狠干综合| 久操网无码在线| 亚洲阿v天堂在线| 激情黄色五月天| 成 人 影视 一区 二区 三区 四区 | 伊人精品久久网站| 東南亚性呦成人伦理资源在线视频| 加勒比人妻综合| 首页亚洲国产高跟丝袜诱惑视频 | 美女极品一区二区三区| 蜜乳AV网址| 亚川综合视频| 操逼国产免费| 国产一级高跟丝袜| www.夜夜| 影音综合网| 中文字幕五区| 国产91精品久久久久久久网曝门| 97超级欧美| 综合亚洲情色| 伊人网在线视频| 欧美少妇第一页| 日韩国产品视频中文字| 91偷拍欧美亚洲| 高潮内射在线| 天天躁狠狠躁av| 亚洲天堂日本| 精品无人区麻豆乱码1区2区图片 | 一道本东京热加勒比一区二区三区 | 人人贴人人摸| 啪一啪免费视频| 伊人女女资源在线观看| 丁香五月婷婷基地| 亚洲91av| 蜜臀在线网站| 操一操摸一摸| 中文字幕一区电影在线观看| 九九久久99| 青青网三级视频| 999岛国大片| 综合网欧美在线| 久久久艹艹艹| 亚洲码和欧洲精品激情系列| 日韩三级在线观看网站| 久久久久久AV无码免费网站| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 超碰人妻久久人妻中文97| 97se综合网| av东京热男人的天堂| 久久人体一区二区| 亚州男人天堂| 免费的很黄很污的全部视频| 狠狠中文字幕| 精品性爱| 嗯嗯啊啊啊好爽| 国产精品一区二区手机看片| 亚洲一区二区性爱电影| 快点操死我| 9997se| 亚洲97精品| 国产精品婬乱一级毛片彝族| 中文字暮97| 人妻天天爽| 亚洲高清欧美总合| www.色操逼| 欧洲乱码视频| 中文字幕诱惑制服人妻丝袜美丝袜美| 2020中文字幕在线观看| 乱伦AVxx| 青青草伊人久久| 超碰吊日色| 凹凸视频在线观看伊人| 东北女人的毛片| 综合少妇网| 久操凹凸视频| 91精品成人| 日本幼女18+| 国内偷拍精品一区二区| www.99热| 亚洲情色 自拍| 亚洲av影院在线观看| 熟妇亚洲一区二区三区| 亚洲综合20p| 色噜噜人妻丝袜a∨先锋影| 97欧美精品综合| 欧美日韩精品久久久久久久久东北老熟妇| 综合色色网| 久草精品一区| 久久精品中文字幕观看| 成熟熟女国产精品一区二区| 成人五级久久| 亚洲狼狼干综合1| 91在线免费精品视频| 思思热在线视频精品| 91色射| 久久精品店| 男人 天堂 日 亚洲| 无码不卡亚洲成?人片| 9999久久久久| 亚洲av资源| 啊v视频在线观看| 欧美A√综合网| 日本在线观看网址| 日韩AV电影网站| 91日韩| 人人喜人人妻| 日日操丁香五月天| 国产嫩草精品A88AV| 大香蕉手机视频| 黑人免费福利视频| 麻豆乱码久久精| 欧美性爱免费短视频| 日韩精品人妻中文字幕有码午| 欧美激情综合| 精品无人区麻豆乱码久久久| 免费作爱一级视频| 南澳成人一级片在线播放| 日本女人操逼| 久久色网| 欧美大的香蕉有线电视视频| 欧美亚洲玖玖玖| 99e久久国产精品| 69视频入口| 亚洲AV无码乱码在线观看性色| 97超碰资源网| 牛牛aV| 暴力av在线| 91久久久久免| 久思思热视频在线观看| nuu12国产麻豆精品| 国产女人成人精品视频| 91av一区二区在线观看| 欧美成97爱| 亚洲熟女综合| 欧美超碰9798| 日韩一区二区高清在线观看的| 亚洲双插| 日本999精品视频| 麻豆久久一区二区三区| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 又大又黄国产| 日韩精品 视频一区二区| 欧美激情黑人| 狠狠2050在线观看| 色av中文字| 三男一女不戴套的A片| 91欧美巨乳| 国产97亚洲| 成人网欧美风情| av凤凰久久久| 亚洲色图殴美色图激情乱伦| 不卡av在线中文字幕| 性爱视频啪啪啪啪| 人人超碰在线观看黄| 青青草中文-久久青草精品一区二区三| 99热在线观看| 伊人色综合欧美| 中文字幕片| 澳门特级毛片免费观看| 色波多| 久久风骚城市| 风骚少妇视频中文字幕| 2019AV天堂| 极品五月天噜噜| 思思热影视| 欧美高清色| 综合少妇网| 中文有码9| 欧美伦乱爱| 97操97色| a人欧美综合天堂麻豆| 伊人AAA| 欧美一级做a爰片免费视频| 91老女人| 久久国产熟女影院| 欧美狠狠弄| 中文字幕成人| 日韩av女优在线免费一区| 日韩去日本高清在| 防屏蔽在线视频| 亚洲国产欧美中文永久| 亚洲九月丁香| 天天色综合天天操| 综合五月婷婷| 色99视频| 大香蕉在线视频15| 91婷婷| av黄图片在线观看| 精品国产一区探花在线观看| 2024黄色视频| 久久久久成人亚洲国产| 国产精品爽爽va在线观看98| 99色在线观看| 富二代亚洲精品99| 午夜无码熟妇丰满人妻| 久久久日本电影| 亚欧毛片基地国产毛片基地| 久久久久国产精品片区无码直播| 北京专精特新企业招聘信息| jiujiujiujingpin| 人妻少妇精品| 国产高清成人mv在线观看| 成人午夜视频免费播放| 91色图片| 超碰97人妻自拍| 夜夜草天天| 国产精品久久久鸭无码的功能| 97超级久久| 男人天堂网址| 中文激情网| 亚洲综合性感在线| 91天天综合在线观看| 天天澡天天狠天天天做| 久久久国产成人一区二区三区在线 | 人人妻人人爽 97人人看碰人免费公开视频| 欧美性爱无码一区二区三区| 玖玖综合.com| 99后入| 天美91| 99久久久久久久久| 亚洲欧美性生活| 亚洲密乳AV| 天天综合在线4| 四虎免费看黄| 91精品人妻一品二品三品| www亚洲免费| 久久XX| 粉嫩久久久久| 91欧美网| 乱欲一区二区| 男生女生啊啊啊啊| 97在线免费视频| 日本午夜福利影院| 男人天堂最新手机版在线青青草| 熟女五十路一区二区三| 天天α片| AV在线性爱| 99久久无色码| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 天天综合欧美综合| 久久加勒比| 国产成人综合网| 色五月AV在线| 中文字幕 人妻不满 在线视频| 国产人妻精品一区二区三区秋霞| 亚洲三区视频| 天天综合网AV91| 91丨九色丨国产丨人妻在线| 亚洲免费精品一区| 欧美性爱中文字幕无线码| 国产精品乱人伊人网| 中文字幕123| 欧美精品 - 91爱爱| 精品人妻一二三| 九九九九久久久| 午夜精品久久久久久久久久久久久| 伦理片秋霞免费影院| 久久 久久国内精品亚洲| 91在线视频免费播放| 日韩欧美中文字| 丰满岳乱妇一区二区三区| oumeizonghese,www| 久久性爱视频免费看| 桃色六月天| 欧美日韩午夜精品一区二区三区| 日韩天天本| 岛国大片在线观看网站入口| 大香蕉在线SuP| 欧美做爰无码A片视频| 97在线视频观看免费| 色五月av| 最近2018中文字幕在线高清第一页| 91网18| 很黄很色的视频在线观看| 日韩一级二级三级免费看完整版国语版| 性影在线视频| 欧洲精品二区| 丝袜性亚洲| a级成人毛片免费视频高清| www.久久超碰| 中文字幕天天天天天| 国产精品视频麻豆入口| 一区二区影视| 一区二区三区成人| 性色一线| 久久肏大逼| 欧美极品| 色五月激情AV在线| 啊啊啊用力在线观看| 欧美性爱第一区| 超碰97综合网| 青娱乐手机日韩在线视频| 中文字幕欧美日本乱码一线二线| 欧美制服网站美腿丝袜| 色噜噜精品一区二区三| 99国产精品| 四虎免费视频| 大肉棒导航| 欧美1727免费观看视频| 亚洲国产奇米影视久久| 91在线免费精品视频| 欧美高潮| 天操老女人| 人妻少妇视频在线播放| 顶级丝袜熟女一区二区三区| 欧美性爱第一页久久| 丰满熟妇大乳做爰| 91久久久久久久| 久久久久久久久久久久久久9999| 操逼操操操91| 亚洲少妇综合在线播放| 精品人妻免费观看| 久久久久国产精品久久久| 97超碰色中文字幕| 色九九九综合| 四虎免费看黄| 91在线限制级| 天天干2019| 婷婷综合久久| 国产精品久久久鸭无码的功能| 成人a级高清视频在线观看| 欧美超碰97| 欧美—性—交—色| 97久久久久久久久久| 亚洲男人的天堂在线看| 久久亚州高清| 亚州色图狠狠干| 99.色网| 国产高清1234区| 高清无码网址| 嗯嗯嗯好爽| 久操热| 破苞ⅩXXX性无码动漫无码| 日本东京热大香蕉a片| 天天射网| 91天天综合网,天天综合网| 蜜色网色哟哟| 操人妻逼91| 亚洲天堂第一页| xxx亚洲午夜天堂| 草b在线 | 亚洲高潮影院| 蜜臀久久久99久久久久 | 混色激情av| 天天日天天插| 精品久久久中文字幕不| 国产精品自产拍在线观看社区| 亚洲欧美在线观看2021 | 欧美αv.com| 91色人妻| 成人免费在线网站| 国模精品一区二区三区苹果色戒 | 亚洲五码一区二区三区| 免费看久久久性性| 97九色人妻| 啪啪91| 肥臀熟女福利视频一区二区| 久久久97| 欧美亚洲尤物久久| AA丁香综合激情| 国产乱码久久| 91精品国久久久久久无码| 综合91网| 亚洲高清91| 人妻天堂综合网| 91视频观看网站| 人妻免费观看| 人妻少妇精品视频一区二区三区| 日本精品中文字幕视频| 8050午夜少妇无码| 97国伦国色| 日韩中文9| 91欧美综合| 伦激情人妻另类人妻| 97精品第3页| 久久国产乱子伦精品免费女,网站| 久久九色| 成人亚欧免费视频| 99999精品视频| 亚洲系列欧美| 欧亚无码视频| 色情婷婷| 神马久久啊啊| 久久久999| 秋霞曰韩R级| 9久久9综合| 亚洲图片偷拍欧美| 欧美性生活男人的天堂| 好吊妞转入那个网| 久久视频,这里只有精品| 丝袜美腿av女优在线| 国产一级内射无挡观看| 麻豆国产尤物AV| 欧美亚洲厕所精品偷拍91| 亚洲色图片区| 八人操人人摸人人看| 超91综合网| 五月天亚洲网| 亚洲国产一区二区入口| 午夜久久一区二区无码中出| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 91操熟女视频| 日韩乱伦影音先锋| 大香蕉淫人| AV和黑人在线播放| 骚逼一区二区| 妇女性内射冈站HDWWWCOM| 天天干天天爽| 黄色工厂这里只有精品| 精品一二三区久久AAA片| 在线亚洲精品久久久| 女人天堂av在线播放| 免费看日产一区二区三区| 亚洲av青草久久一区二区| 亚洲天堂五月天国产| 伊人天堂在线| 久9久9久9久9久9久9| 久久伊人最新网址视频| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 日本东京热大香蕉a片| 亚洲av青草久久一区二区| 伊人91| 天天操妹子| 超碰九色| www.男人的天堂| 久久大香蕉| 国产精品乱码久久久| www.色婷婷.com| 草草草视频| 六月丁香五月婷婷| 亚洲国产精品成人久久蜜臀| 色妺妺在线视频| 97精品国产| 亚洲成人一二三区| 无码高清国产AV| 乱码人妻一区二区三区| 亚洲,欧美,春色,另类| 国产成人欧美一区二区三区的国产| 色综合中文字幕不卡| 国产精品内射婷婷一级二| 熟女啪啪视频| 3571色综合一区二区二区| 亚州欧美另类| 精品无码一区二区| 天天操夜夜嗨| 91操熟女视频 | 成人精品在线| 国产品精品自在在线午夜免费| 嗯嗯,啊啊,国产精品| 久久精品国产亚洲妲己影视| 物业黑人 AV一区| 久久久国产成人一区二区三区在线| 校园春色 亚洲| 91欧美高清| 操逼天美3区| 曰本特级特黄特色黄色A级网站高清在线免费看| 日本污ww视频网站| 亚洲最新Av| 狠狠干妹子| 伊人综合色网| 亚洲二区精品在线观看| 啊啊啊啊啊啊好多水| 性性久久| 亚洲色图超碰在线| 久久一级无码精品毛片6| 老熟乱一区二区三区四区| 91在线美女| www国产天美久久久| 性色亚洲| 67914在线兔费成人视频| 伊人久久亚洲中文字幕| 人人插人人搞人人操| 亚洲国产美女久久久久| 亚洲激情深爱文学小说网站| 麻豆福利视频导航| 青青草日韩无码| 亚洲国产精品无码AV在线| 97 色综合| 亚洲美女黄色| 天堂精品小草| 欧美色三级片91| 亚洲操人| 婷婷五月天激情网| 日韩图区 偷拍| 久久永久无码人妻视频| 日本高清视频在线观看黄已三辽| 日韩在线97| 精品妇女一区二区三区| 91站街按摩店老熟女熟女| 噜噜噜在线视频| 视频一区二区免费在线| 九久精品| 中文字幕成人乱码熟女精品国50| 久久影视二区三区行押| 亚洲黄a三级三级三级看三级| 东北女人av| 日韩小电影| 久久成人精品| 尤物视频偷拍免费| 肉丝无码中文高清| 少妇99| 天天看高清麻豆| 超碰97玖玖爱| 天天综合网入口~91| 国产怡红院| 欧洲无码一区二区| 精品91摸| 九X超碰| 蜜臀AV成人精品蜜臀AV久久| 久久视网78| 性色高清在线| 色色综合97| 最新精品久久蜜桃 | 亚洲伊人成综合成人网| 亚洲天堂资源网| 91精品国产一区三一| 日韩BBN| 久久精品噜噜噜成人看免欧美大片| 中字一区| 欧美色图片色哟哟| 久久久四区| 国产熟女精品一区二区| 国产精品九九九| 2020久久免费视频| 370p日韩欧美亚洲精品| 黄色电影观看久久9| 在线综合色| 日本护士高潮| 成人五月香网在线| 射欧美综合| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 亚洲欧美日韩中文播放| 99无码狠狠久久| 午夜国产乱伦视频| 偷拍自拍在线视频观看| 久久婷婷五月天| 按摩中文字幕| 校园春色中文字幕AV| 女人天堂网| 精品人妻一区二区三区四区不卡在| 久久国产在线一区二区| 亚洲1区2区三区高清中文字幕| 亚洲成人性爱在线观看| 国产免费一区二区三区最新不卡| 亚洲三级网址久久最新| 美女网站黄页| 欧美国产精品久久九九| 377p欧洲日本亚洲大胆| 久热伊人| 国产美女口爆吞精| 黑人性欧美| 蜜乳成人AV| 91一起操| 欧美 牲| 亚洲狠| 国产 亚洲 丝袜 制服| 天天操夜夜操| 青青草无码视频| 97免费在线观看| 国产精品一级特黄aaa大片在线观看| 中文字幕在线高清男人的天堂| 啊啊啊com| 91狠狠狠| 欧美一级久久久久久久大片动画| 人人乐大香蕉| 骚鸭AV| 99国产精品视频尤物| 粉嫩国产精品久久粉嫩| 久久久精| 丰满人妻无码一区二区三区| 蜜桃中文字日产乱幕4区| 亚洲美腿丝袜香蕉影视欧美成人| 人妻献身系列第54部| 天天操女人| 久久激情五月| 香蕉国产精品麻豆亚洲欧美日韩| 97美日韩视频| 蜜乳AV一区二区三区四| 精品人成视频在线观看| 国人欧美精品一区二区| 久久精品72| 男人的天堂网页| 欧美日韩性爱视屏免费看了| 成人一区二区三区四区| 综合伊人激情| 澳门成人网站久国产日韩| 欧洲视频在线| 99视频精品| 丰满少妇精品一区二区| 亚洲一区二区中文字幕| 色九九综合AV| 欧美不卡二区| 色阁阁AV综合网| 欧美日韩国产三级黄色| 极品后入免费视频| 正在播放国产精品一区| 婷婷情色五月天| 亚洲欧美国产va在线播放频| 久草久热| 日韩激情电影中文字幕| 区一在线观看| 精品久久久久久无码| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 精品乱码久久久久| 中文字幕国产| 乱码人妻一区二区三区| 另类 日韩 熟女| 久欲AV| 久久香蕉国产线看观看猫咪av | 天天日B夜夜干B时时操B| 98超碰日本| 操操逼视频| 800zy一区二区| 久久久久久亚洲Av无码| 久久久久ab| 一区二区视频在线播放| 精品人妻一区二区蜜桃视频| 人人操av| 日韩欧美福利视频看看| 麻豆 亚洲 97| 丁香五月激情综合国产| 91岛国动作片| 97色色色综合网站| 精品在线观看视频在线| 五月天日日操夜夜操| 2010男人的天堂| 日本人妻伦在线中文字幕| 亚州色图欧美| 色婷婷香蕉| 亚洲成a人v欧美综合天堂下载| 久久久av爱| 精品黑人一区二区| 亚州91| 久久99精品九九久久久婷婷| www.色操逼| 狠狠操狠狠操操| 中文字幕文字幕无码一区二区三区电影99 | 五月色网| 老熟女乱伦一区| 91爱欧美| 九九视品黄色| 久久肏大逼| 欧美精品成人一区二区在线观看 | 国产欧美日韩精品中文| 婷婷五月天丁香| 小说区 图片区色 综合区| 91九九九吃| 国产黄a三级三级三级av在线看| 国产一级特黄大片处女| 国产精品乱码久久久| 亚州色国| 99热免费| 99性视频| 顶级丝袜熟女一区二区三区| 91天天| 大香蕉性欧美| 美性中文综合网| 小草精彩毛片| www色婷婷| 中文字幕乱在线伦视频中文字幕乱码在线 | 国产人妻精品一区二区三区秋霞| 欧亚洲精品有视频| 日韩国产中文字幕| 国产精品干干干| 立川理惠被中出无码| 伊人欧美大香蕉视频| 蜜臀久久久国产| 精品大久久| 天天日日夜夜| 欧美一区二区亚洲天堂| 亚洲成人av电影在线| w w w.久久精品| 亚洲色阁| 91人妻熟女| 欧中美三级一区二区三区| 大香蕉色欲AV| 久久草视频污视频| 美欧老女人97| 亚洲精品天天影视综合网 | 天堂亚洲精品| 骚妻少妇精品性色无码四色A V| 欧美97日韩精品| 亚洲av热热色| 久偷拍| 天天综合网在线| 91大神电影天堂| 久久久久久中文字幕中文字幕最新| 国产精品老师| 国产精品久久久三级无码| 艹少妇网站| 围产精品一区二区三区视频播放| 亚洲第一精品在线视频 | 日韩精品一区二区高清| 亚洲 暴爽 AV人人爽日日碰| 亚洲影视综合| 极品销魂美女一区二区| 久久精品一区二区| 日本一级特级毛片视频| 国产精品不卡av免费在线观看| 东京热毛片177b2viP| 欧美美女视频| 国产精品剧情| 国产亚洲福利第一页丝袜| 搡老熟女免费视频| 91丨九色丨国产丨人妻在线| 性色生活片久久毛片婬片免费放女人一级毛片| 久久透逼视频| 久久av成人无码免费| 久草免费在线一区二区| 丁香色五月 97干| 熟妇熟女视频一区二区三区| 欧美日韩夜夜| 久草精品国产蜜臀| 成人天天爽| 性欧美91| 欧美人与动性人交a| 成人无码电影在线观看网| 五十路三级片| 色色操| 78p欧美| 亚洲性猛| 91成人无码| 国产操逼视频在线观看| 五月丁香社区婷婷日韩欧美精品影院| 操91| 日韩三级在线观看mp4| 久久噜| 老熟女网站| 免费αⅴ在线观看| 五月丁香色综合| 久插综合| 精品久久97| 夜夜操美女| 天天色综合天天操| 宅男午夜在线视频| 久久久精品视频欧州站| 九九九久久久| 国产偷拍自拍在线视频| 91麻豆天美国产欧美日| 91N综合在线| 狠狠爱大香蕉| 欧美性爱三区二区| 麻豆黄色五月天| 情色五月天就去干| 内射夫妻三片| 72av视频| 日韩av不卡在线看| 丝袜美腿欧美| 国产AV天美传媒一区二区三区 | 91黑丝在线| 91动漫操逼视频| 涩爱AV在线| 校园春色AV天堂| 在线观看成人性爱免费小视频| 92福利社视频| 综合大香蕉美。| 国产隔壁老王影院在线| 久久草草欧美精品| 美女爽爽爽刺痛洞洞| 亚洲熟伦熟妇AV无码春色| 第一高清av中文字幕| 亚州久久9| 欧美中出| 精品一区二区三区蜜桃臀赵总 | 久久大香蕉手机高清| 草B在线| 免费观看的黄色的网站| 久久97资源 网| www.av家庭乱伦| 久久熟妇五十路一区| 久草精品国产蜜臀| 天天综合网~91| 婷婷亚洲五月***久久| 久久久专区| 人人操人人舒服| 黄页大片在线观看| 蜜臀久久久99久久久久 | 麻豆人妻精品一区二区| 日本97久久| 午夜偷拍久久熟女| 成人片视频| 黄色电影在线播放综合网站| 九九热超碰97亚洲最新香蕉 | 久久精品亚洲成a人天堂| 四虎视频在线观看| 三级日韩一区二区三区| 女人妻一区| 超碰成人人人爽人人爽| 先锋精品av色鲁| 青青操国产夫妻| 综合久| 熟妇人妻精品一区二区| 色97综合中文字幕| 操逼逼福利视频| 国产精品高朝久久久久久久| 国产精品婬乱一级毛片彝族| 亚洲欧美日韩中文久久自慰| 无码聚合| 欧美丝袜中文字幕07在线| 91碰碰碰| 91情色| 欧亚久久偷拍视频| 久久精品日韩| 欧美一品道| 立川理惠无码一区二区| 日本一卡二区在线| 大香樵伊人网| www.av家庭乱伦| 日韩激情视频| 黑人无码一区二区| 亚洲情色 欧美| 麻豆AV一区二区| 樱花蜜乳av| 97精品视频在线| 日韩人妻资源在线看| 色图综合网| 五十路二区在线 | 91久热| 又大又白奶子| 国产精品露脸在线观看| 加勒比五月天| 思思热在线视频精品| 国产福利一区二| 中文字幕乱偷人妻久久艾草网| 无遮挡猛进视频免费无限观看| 天天久久| 中文字幕综合人妻| 久久综合婷婷| 国产精品麻豆成人av| 丰满人妻一区| 1024久久高清视频| 国产人妖视频一区在线观看| 欧美丝袜中文字幕07在线| 好爽,再快点啊哈嗯嗯嗯嗯| 黄色AAAAA欧美| 熟女熟妇一区二区三四区| 人妻美腿丝袜制服诱惑综合天堂-| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 国产成人无码啪| 亚州性色| 天天综合麻豆视频| 综合网,亚洲,欧美| 亚洲性爱无码乱伦av| 国产综合色精品在线观看| 最新9久久久9免费视频| 久久免费老司机精品| 国产三级日产三级韩国三级| 欧美日韩夜夜| 亚洲精品xxx| 男人久久天堂| 天天搞欧美| 国厂麻豆77q4| 91青视频| 天天天天干| 日本一级二级三级网站| 国产精品黑人一区二区三区| 日韩精品 欧美激情| 九九九九一级| 国精综合一二三区影视| 久久国产精品一级二级三级| 久久久久国产一区二| 亚洲图片色图欧美另类| 亚洲图片欧美色| 男人的天堂kva| 97AV在线免费观看| 啊嗯好大视频在线观看| 69精品少妇一区二区三区蜜桃| 午夜福利精品| 国产成人无码a| 亚洲本色精品一区二区久久| sewuyueav| 五月天精品| 天天干1区2区在线| 亚洲国产丝袜在线观看| 麻豆一区二区三区精品| 人人色人人射人人妻| 日本三级韩国三级99| 日韩性爱网址| 性爱1区| 人人射人人操人人摸| 久久国产性爱| 一本大道不卡一二三区| 最新av网站在线观看| 欧美日韩国产成人高清| 久久一二三四| 国产真实子伦对白| 操逼操2| 欧美片第一页| 波多野结衣之双飞调教在线播放 | 综合另类| 欧美v日韩v亚洲v最新在线| 欧美偷拍| 五十路熟女人妻一区二区在线观看| 97色操| 麻豆av一区二区| 99热伊人| 极品销魂美女一区二区 | 欧洲免费一区二| 宅男午夜在线视频| 啊啊好多水| 色男人色天堂东京热| 日本中文字幕一区| 福利五区| 欧美色另类| 2021国产成人精品久久| 在线观看亚洲成人精品| {男男暴菊gay无套网站| 国产精品干干干| 黄色一级视| 五月色综合| 欧美18禁91| 亚洲日韩欧美一区二区| www.成人无码| 白丝av| 新久久AV| 九色婷婷| 久艹日日日| 欧美A片中文字幕| 亚洲一欧洲中文字幕在线| 性色av婷婷久久一区二区点复制| 五月色综合| 极品内射| 久久久久久99999国产精品| 97欧美综合| 久久首页| www久| 欧美性区| 另类老少妇| 九七超碰| 思思热影视| 欧美|91色综合| 午夜毛片高清免费不卡| 日日骚一区二区三区| 台湾一区国产高清在线| 在线无码操| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 大香蕉黄色一级片免费看| 亚洲国产高清福利视频| 欧美 亚洲 制服 精品| 97一区二压| 2017天天插| 操逼www.| 日韩偷拍色图| 欧美精品欧美精品系列| 欧洲性爱无码区| 国产成人在线观看综合| 丝袜性亚洲| 99999国产| 手机在线中文字幕国产| 日韩精品99999| 9999久久久久| 亚州熟女乱伦| 婷婷色色五月天| 超碰97欧美日韩| 丝袜人妻av一区二区| 国产三级电影免费观看| 美女91在线观看| …亚洲黄色厕厕女女在线播…| 国产 亚洲 丝袜 制服| 日韩紧密久久| 99999亚洲| 粉嫩在线一区二区懂色| 国产精品网站免费| 神马久久午夜| 激情四射五月天| 亚洲日本天堂| 少妇一区二区三区高速| 超碰爽人妻熟女Av| 600国产精品视频| 破苞ⅩXXX性无码动漫无码| 麻豆伊人网| 狠狠操,使劲操| 久久婷婷国产一区二区色| 国产精品一区在线播放| 日韩人妻免费精品| 亚洲日韩欧美一区二区| 国产二区视频在线观看电影| 精品福利视频| 91天天看| 116美女午夜| 亚洲综合999| 国内91熟女人妻丝袜天天精品视频在线| 欧美成人精品一区二区男人蜜臀| 色妇91| 国产人妖的免费的视频| 99啪啪| 秋霞一级A片黄色视频| 青青色综合| 超碰免费人妻人人| 久九干| 国产家庭乱伦表演| 夜夜狼人妻| 在线人成亚洲视频免费观看| 一区麻豆 高清中文字幕| 日韩熟女无码| 超碰 av 女人天堂| 亚洲激情综合另类男同| 亚洲诱惑| 欧美人妻精品一区二区| 亚洲精品黑丝| 中文字幕av乱伦| 九九热精品视频六| 一区二区三区精品黑丝白丝酒店对鸡 | 97干在线| 欧美综合色站| 日韩人妻制服丝袜av| 午夜精品人妻二区三区| 国产懂色精品国产av| 综合亚洲网| 国产精品一区二区三区在线密挑| 无码人妻一区二区三区免费九色| 大香蕉手机在线视频| 亚洲欧洲无码bt精品合集| 日韩美女高潮喷水视频| 操逼片中文| 精品久久97| 麻豆区99999| 99精品欧美一区二区三区桃色| 一区二区不卡免费| 天天色粽合合合合合合合| 亚洲精品久久久久毛片A片拉屎| 亚洲AV乱码专区国产噜噜亚洲| 国产精品爱欲| 伊人久大| 99r九九| 3028国产精品| 亚洲Av诱惑| 青青久操| 翔田千里av一区二区三区| 丝袜美腿亚洲| 国产精彩女在线观看视频| 99热啪啪| 人人操人人操人人人操| 人妻蜜桃臀| 在线视频一区二区传媒| 五月天黄色激情视频| 97日韩欧美| 91女优在线观看 | 五月天久久婷婷亚洲 | 97中文热色| 麻豆影音天美视频| 99久久婷婷国产综合| yw尤物av无码点击进入麻豆| 国产精品久久久久久久久久二区三区| 欧美日不卡| 色嗨嗨在线| 国产捆绑一区| 久啪视频| 嫩草影院永久在线制服丝袜| 色五月婷婷网| 久久久亚洲欧美综合| 男人午夜天堂| 日本熟妇自慰性高潮一区二区三区| 日韩97视频!在线| 国产无套粉嫩白浆在| 国产av激情无码久久天堂| 欧美性高潮| 色妇91| 午夜欧美J进J出白浆流出久久久| 国产精品成人无码av| 国产亚洲精品久久久久小 | A 天堂| 性欧美| 欧美日韩亚洲五月天婷婷| 亚洲有薄码区日本系列中文字幕| 激情综合网五月婷婷五月天| 欧美性xxxxx狂欢| 97人人夜| 麻豆a'v电影| 97操在线| 久久天天躁日日躁狠狠躁| 91视频国品一二三区| 妺妺跟我一起洗澡没忍住| 午夜视频好爽啊| 韩国免费播放一级毛片| 天天爱天天操| 91日韩网站| 超碰偷拍| 五月天人妻综合| 91男同| 婷婷五月天无码| 亚州久久9| 插老姨肥穴| 婷婷激情一区二区三区俺也去| 95精品在线| 好淫网一二三视区| 亚洲色图激情小说| 大香蕉人妻久久| 中国一级操逼视频| 88xx成人精品视频| 在线视频97| 女人综合网| 欧美懂色综合网| 999精品久久久久久久| 欧美性夜| 国产精品视频在线观看| 超碰97COm中文| 日韩小电影| 一区二区不卡视| 9999久久久| 亚洲欧美综合| 国产1024在线播放| 人人么人人操| 久久双插| 国产野战露脸在线播放| 啪啪免费| 国产三区免费在线观看| 欧亚性爱视频免费看| 我爱大香蕉| 天天综合色| 91女人的网站| 中 文字幕一区二区三四 五 区日 日 骚|