亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

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

編譯原理課設(shè)利器:GDUT PL0編譯器實(shí)驗(yàn)包全解析 簡介面向編譯原理課程學(xué)習(xí)者的完整課內(nèi)實(shí)驗(yàn)與課程設(shè)計(jì)資料由廣東工業(yè)大學(xué)學(xué)生在學(xué)習(xí)過程中整理系統(tǒng)覆蓋詞法分析、語法分析、語義分析及代碼生成四大編譯器核心階段并以PL0教學(xué)語言為實(shí)例串起整個(gè)實(shí)驗(yàn)環(huán)節(jié)適合本科階段復(fù)習(xí)、課程設(shè)計(jì)參考或自學(xué)實(shí)踐。資源共131個(gè)文件主要包含PL0源程序、C與Java工程源碼、編譯生成的class/exe產(chǎn)物、分析過程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é)、遇到的問題與解決思路配合源碼和可視化圖表可讓學(xué)習(xí)者直觀理解編譯器構(gòu)造流程掌握PL0解釋器或編譯器的搭建方法是完成課程實(shí)驗(yàn)、撰寫課程設(shè)計(jì)報(bào)告或進(jìn)行相關(guān)復(fù)習(xí)的高價(jià)值參考資料。1. 編譯原理課設(shè)就該拿 PL0 開刀這份 GDUT 實(shí)驗(yàn)包到底裝了什么編譯原理這門課最勸退的不是文法而是你永遠(yuǎn)不知道自己的編譯器離“能跑”還有多遠(yuǎn)。PL0 是 Pascal 之父 Wirth 設(shè)計(jì)的教學(xué)語言去掉一切工程復(fù)雜度幾十行 EBNF 文法就能描述全貌卻把詞法分析、語法分析、語義分析、代碼生成、解釋執(zhí)行這條編譯器流水線完整走了一遍。廣東工業(yè)大學(xué)GDUT這套課內(nèi)實(shí)驗(yàn)和課程設(shè)計(jì)資源正是拿一個(gè)可運(yùn)行的 PL0 編譯器當(dāng)載體把整個(gè)編譯流程拆成能動(dòng)手、能驗(yàn)收、能寫進(jìn)報(bào)告的分階段任務(wù)。對(duì)正在趕編譯原理實(shí)驗(yàn)的在校生來說它是現(xiàn)成的實(shí)現(xiàn)參照對(duì)自學(xué)編譯器構(gòu)造的開發(fā)者來說它是能真正跑起來的最小完整范例。最值錢的不只是代碼而是報(bào)告里記錄的那套“從設(shè)計(jì)到排錯(cuò)”的全過程。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)階段的工程快照。也就是說這份資源不是孤零零的一份源碼而是一組按實(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 重寫了一遍完整編譯器。做課設(shè)時(shí)最怕的就是拿到手不知道從哪看起。我的習(xí)慣是先列文件清單再到每個(gè)文件里看它干了什么。這一步能幫你快速判斷這套資源的實(shí)現(xiàn)路線C 版本適合拿來對(duì)照詞法分析的原理Java 版本適合拿來跑通全流程實(shí)驗(yàn)報(bào)告負(fù)責(zé)把兩套代碼串成一條完整的故事線。2.2 七個(gè)核心 class 的職責(zé)邊界一句話說清每個(gè)類管什么PL0.class、Scanner.class、Parser.class、Interpreter.class、Table.class、Symbol.class、Fct.class這七個(gè)類的命名非常規(guī)整基本就是經(jīng)典編譯器教科書的分層結(jié)構(gòu)。我整理了一下class 文件職責(zé)對(duì)應(yīng)編譯階段Scanner.class詞法分析把字符流切成 token 流詞法分析Parser.class語法分析按文法規(guī)約 token同時(shí)驅(qū)動(dòng)語義動(dòng)作語法分析Table.class符號(hào)表管理常量、變量、過程定義語義分析Symbol.class單個(gè)符號(hào)項(xiàng)記錄名字、類型、地址語義分析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ì)幾十年來一直被編譯原理教材沿用因?yàn)樗闹噶詈唵蔚接檬止ぞ湍芙忉寛?zhí)行但又足夠覆蓋變量、表達(dá)式、條件跳轉(zhuǎn)、過程調(diào)用這些核心語言特性。想驗(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è)圖片文件是詞法分析和語法分析過程的可視化輸出一般是用圖形方式展示 token 識(shí)別結(jié)果或者語法樹的構(gòu)造過程。這類截圖在實(shí)驗(yàn)報(bào)告里的分量比代碼本身還重——老師看報(bào)告時(shí)第一眼掃的就是你有沒有真正跑出結(jié)果圖比代碼直觀得多。PL0_Exp、PL0_Des、PL0_Raw 這三個(gè)文件從命名上看分別是 PL0 的表達(dá)式處理、聲明處理和原始語法定義。它們對(duì)應(yīng)了課程設(shè)計(jì)里“語義分析”這一塊的工作內(nèi)容。README.md 則是整份實(shí)驗(yàn)報(bào)告的外殼不只是說明文檔里面有每一步的實(shí)現(xiàn)細(xì)節(jié)、遇到的問題和解決方式這份“踩坑實(shí)錄”才是整套資源里最值得先讀的東西。3. 詞法分析實(shí)驗(yàn)復(fù)現(xiàn)把源程序字符流切成 token核心代碼與驗(yàn)收方法3.1 詞法分析器該輸出什么PL0 的五類 token 與處理邊界詞法分析器的輸入是一串字符輸出是一串 tokenPL0 的 token 分五類關(guān)鍵字、標(biāo)識(shí)符、無符號(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í)符必須以字母開頭后面可以跟字母或數(shù)字但如果出現(xiàn)1abc這種數(shù)字后直接接字母的寫法必須在詞法階段報(bào)錯(cuò)不能把1和abc拆成兩個(gè) token 放過去第二:、、這類雙字符運(yùn)算符必須做“最大匹配”也就是一次識(shí)別兩個(gè)字符不能把拆成和否則語法分析階段會(huì)徹底亂套。3.2 用 C 實(shí)現(xiàn)一個(gè)精簡 Scanner直接可編譯的核心代碼answer.cpp 是這份資源里詞法分析的 C 實(shí)現(xiàn)參考我按 PL0 標(biāo)準(zhǔn)寫了一版同樣思路的精簡 Scanner可以直接編譯運(yùn)行// pl0_scanner.cpp —— PL0 詞法分析器精簡實(shí)現(xiàn) // 編譯: g pl0_scanner.cpp -o pl0_scanner #include cctype #include cstring #include string #include iostream // 關(guān)鍵字表詞法分析器必須先把保留字和普通標(biāo)識(shí)符區(qū)分開 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 位置開始切一個(gè) tokenpos 是引用參數(shù)會(huì)持續(xù)推進(jìn) std::string nextToken(const std::string src, size_t pos) { // 跳過空白和換行PL0 標(biāo)準(zhǔn)語法沒有注釋符號(hào) while (pos src.size() isspace(src[pos])) pos; if (pos src.size()) return ; // 返回空串表示 EOF // 標(biāo)識(shí)符或關(guān)鍵字以字母開頭后續(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 ); } // 無符號(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ì)被拆開 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í)符必須以字母開頭不能用下劃線開頭連續(xù)數(shù)字用isdigit逐字符拼出整數(shù)但沒有做溢出檢查實(shí)驗(yàn)里一般不管這個(gè)雙字符運(yùn)算符判斷必須在單字符之前這是最大匹配原則的直接應(yīng)用。如果調(diào)換順序:會(huì)被拆成:和兩個(gè) token后續(xù)語法分析全都白做。3.3 運(yùn)行驗(yàn)證與邊界用例怎么確認(rèn) token 序列不漏不重寫完 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è)說明某個(gè)分支的pos推進(jìn)有問題這是詞法實(shí)驗(yàn)最常見的錯(cuò)誤來源。再測(cè)兩組特殊情況IF x y THEN x : 1用來驗(yàn)證沒有被拆開VAR 1x;用來驗(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)樗抢蠋熥類劭鄯值男〖?xì)節(jié)。4. 語法與語義分析從 token 流到中間指令再到解釋執(zhí)行4.1 PL0 的 EBNF 文法與遞歸下降設(shè)計(jì)的映射關(guān)系詞法分析只負(fù)責(zé)切 token真正的“讀懂程序結(jié)構(gòu)”是語法分析的事。PL0 的完整文法用 EBNF 寫出來也就十幾行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é)符寫一個(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 三件套分工語義分析階段要處理兩件事一是檢查變量有沒有聲明、類型對(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)表是每層過程一張表通過層差level和地址addr來定位變量。下面是一個(gè)簡化但結(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過程 int level; // 所在過程層差 int addr; // 在本層符號(hào)表中的位置 int value; // 常量值變量和過程不用 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返回的是地址槽位語法分析拿到這個(gè)地址后會(huì)交給代碼生成階段寫入 P-code。4.3 P-code 指令集與 Interpreter 的執(zhí)行模型PL0 的中間代碼不用三元式也不用四元式而是一套基于棧的 P-code 指令。每條指令三個(gè)字段指令碼、層差、操作數(shù)。核心指令就這幾條指令含義作用LIT 0, 常量加載常量把常量壓入棧頂LOD 層差, 地址加載變量按層差和地址取變量值壓棧STO 層差, 地址存儲(chǔ)變量把棧頂值寫入變量地址INT 0, 大小分配空間為局部變量在棧上開辟空間JMP 0, 地址無條件跳轉(zhuǎn)讓程序計(jì)數(shù)器跳到目標(biāo)位置JPC 0, 地址條件跳轉(zhuǎn)棧頂為假時(shí)跳轉(zhuǎn)CAL 層差, 地址調(diào)用過程保存返回地址并跳轉(zhuǎn)OPR 0, 運(yùn)算號(hào)運(yùn)行運(yùn)算彈出棧頂元素做加減乘除或比較Interpreter 的核心就是個(gè) while 循環(huán)加 switch逐條讀指令、逐條執(zhí)行。這里給一版 Java 簡化實(shí)現(xiàn)// InterpreterLoop.java —— P-code 解釋執(zhí)行主循環(huán)結(jié)構(gòu)簡化版 public class InterpreterLoop { // 棧式虛擬機(jī)stack[top] 是棧頂top 從 0 開始遞增 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 的簡化入口運(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)算具體指令分配見實(shí)驗(yàn)報(bào)告 } }這里的base(level)是最關(guān)鍵也最容易寫錯(cuò)的地方。真實(shí) PL0 在棧上維護(hù)了靜態(tài)鏈SL和動(dòng)態(tài)鏈DLbase(level)需要沿著靜態(tài)鏈向上找 level 層才能拿到對(duì)應(yīng)過程的棧起始地址。很多初版代碼在這里直接返回 0導(dǎo)致嵌套過程一調(diào)用就棧錯(cuò)亂。這也是為什么上課總強(qiáng)調(diào)“先畫棧幀布局圖再寫解釋器”。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ò)展不要一上來就寫全部文法。5. 實(shí)驗(yàn)報(bào)告與踩坑記錄這些雷我替你先踩了5.1 實(shí)驗(yàn)報(bào)告的組織方式別寫成使用說明書GDUT 的實(shí)驗(yàn)報(bào)告一般要求包含實(shí)驗(yàn)?zāi)康?、算法設(shè)計(jì)、關(guān)鍵代碼、測(cè)試截圖和問題分析。很多同學(xué)把報(bào)告寫成了代碼注釋的搬運(yùn)工這是最吃虧的。老師真正想看的是兩樣?xùn)|西一是你對(duì)“為什么這樣設(shè)計(jì)”的說明比如為什么選遞歸下降而不是 LR、符號(hào)表為什么要分層二是你遇到的具體問題和排查過程這部分才是報(bào)告里最有說服力的原創(chuàng)內(nèi)容。我的建議是報(bào)告結(jié)構(gòu)固定為五段式文法設(shè)計(jì)用 EBNF 描述你的語言、算法流程圖狀態(tài)轉(zhuǎn)換圖或遞歸下降函數(shù)調(diào)用關(guān)系、核心代碼只選取詞法難點(diǎn)和語義動(dòng)作掛接點(diǎn)、測(cè)試用例至少三組包含一組錯(cuò)誤輸入的報(bào)錯(cuò)截圖、問題記錄每個(gè)問題按現(xiàn)象、原因、解決三段寫。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?,F(xiàn)象是java Parser命令拋出版本不支持異常或者提示類文件版本錯(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直接過濾出版本號(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這類輸入沒有在詞法階段報(bào)錯(cuò)?,F(xiàn)象是詞法分析器把1abc拆成 NUMBER(1) 和 IDENT(abc)語法分析居然通過了運(yùn)行結(jié)果錯(cuò)誤。原因是數(shù)字識(shí)別分支只認(rèn)數(shù)字沒有檢查數(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) ); }這段多出來的判斷能讓非法輸入在一開始就被攔下而不是跑到語法階段產(chǎn)生一串看不懂的錯(cuò)誤。第三個(gè)坑變量未聲明卻通過了語法分析。現(xiàn)象是BEGIN x : 1 END;這種程序沒在 VAR 段聲明 x語法分析沒報(bào)錯(cuò)運(yùn)行時(shí)棧操作亂套。原因是語法分析只檢查了文法結(jié)構(gòu)沒在語義動(dòng)作里查符號(hào)表。解決方法是 Parser 在處理ident : expression之前先調(diào)用Table.find(ident)查不到就輸出“未聲明標(biāo)識(shí)符”并中止編譯這一步也叫語義分析的基礎(chǔ)檢查是扣分重災(zāi)區(qū)。第四個(gè)坑嵌套過程里同名變量互相覆蓋。現(xiàn)象是 procedure A 聲明了 var xprocedure B 也聲明了 var xB 里改 x 之后回到 A 里發(fā)現(xiàn) x 也被改了。原因是符號(hào)表只做了一層沒有按過程分層維護(hù)作用域。解決方法是每進(jìn)入一個(gè) block 新建一層符號(hào)表查變量時(shí)從當(dāng)前層往上逐層找當(dāng)前層沒有就找上一層找不到才報(bào)未聲明。這就是 4.2 里Table需要擴(kuò)展成多層鏈表的原因只靠一個(gè)LinkedHashMap支撐不了嵌套過程。第五個(gè)坑zip 解壓后 class 文件打不開運(yùn)行直接崩潰?,F(xiàn)象是解壓后某個(gè) class 文件用 javap 都反編譯不了提示zip END header not found或者 EOFException。原因有兩種可能zip 包是偽加密加密標(biāo)志位被置位但文件內(nèi)容并沒真正加密一部分解壓工具會(huì)誤報(bào)或者壓縮包本身不完整某個(gè)文件在傳輸中斷裂。解決方法是先判斷偽加密用 7-Zip 打開 zip 包如果能看到文件列表且能正常預(yù)覽內(nèi)容但解壓時(shí)報(bào)錯(cuò)基本就是偽加密。這種情況下用工具修復(fù)加密標(biāo)志位或者換用能忽略偽加密的解壓工具重新解壓。如果確認(rèn)是文件損壞檢查壓縮包里的文件大小和 README 記錄是否一致對(duì)不上就重新下載。這個(gè)問題的排查順序是先看壓縮包 CRC再單文件校驗(yàn)最后才考慮是不是偽加密。5.3 一條普適的排錯(cuò)路徑從報(bào)錯(cuò)現(xiàn)象反推階段編譯器是一個(gè)多階段流水線出問題時(shí)先不要亂猜按階段定位能省一半時(shí)間。token 流錯(cuò)了是詞法階段問題token 對(duì)但語法樹構(gòu)造失敗是語法階段問題語法通過但運(yùn)行時(shí)棧亂是符號(hào)表或指令生成問題指令序列對(duì)著呢但結(jié)果錯(cuò)是運(yùn)算實(shí)現(xiàn)問題?,F(xiàn)象排查階段首選檢查點(diǎn)token 輸出不對(duì)詞法分析雙字符運(yùn)算符分支、數(shù)字邊界出現(xiàn) “expected …”語法分析遞歸下降函數(shù)是否漏調(diào)用advance()運(yùn)行時(shí)報(bào)棧越界語義分析變量是否登記符號(hào)表、層差計(jì)算編譯通過但結(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)版本連乘除都沒有。加乘除很簡單難點(diǎn)不在詞法——*和/本來就是單字符運(yùn)算符——而在語法函數(shù)里運(yùn)算符的保存時(shí)機(jī)。我第一次寫時(shí)直接這樣寫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)算符存下來再前進(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é)就是遞歸下降分析里最常見的隱性 bug 來源。你在這份資源的報(bào)告里大概率也能看到類似的記錄。6.2 擴(kuò)展二給符號(hào)表加數(shù)組類型練習(xí)地址計(jì)算PL0 只有簡單變量加數(shù)組是不錯(cuò)的加分項(xiàng)。需要在Symbol里增加上下界字段在factor和賦值語句里解析下標(biāo)表達(dá)式代碼生成時(shí)把下標(biāo)換算成偏移量。數(shù)組的坑在下標(biāo)越界運(yùn)行時(shí)要生成一條檢查指令下標(biāo)超出范圍就報(bào)錯(cuò)終止。這個(gè)擴(kuò)展能把符號(hào)表、語義檢查、代碼生成三個(gè)階段串起來練一遍。6.3 擴(kuò)展三用 Graphviz 導(dǎo)出語法樹答辯現(xiàn)場(chǎng)生成圖在 Parser 里收集語法樹節(jié)點(diǎn)輸出成 DOT 格式文件再用 Graphviz 生成 PNG。答辯時(shí)當(dāng)場(chǎng)跑一遍比 PPT 里的截圖更有說服力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的語法樹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ì)兒吃過最大的虧是把語義分析和代碼生成混在一個(gè)超大 switch 里寫調(diào)試一個(gè)錯(cuò)誤要翻幾百行代碼。從那以后我每次做編譯器實(shí)驗(yàn)都強(qiáng)制先把 Fct 指令集、Symbol 結(jié)構(gòu)和符號(hào)表接口定義好再動(dòng)手寫 Parser——接口穩(wěn)定了后面所有階段只是填實(shí)現(xiàn)細(xì)節(jié)。這套 GDUT 資源的報(bào)告里恰好也有類似的分階段設(shè)計(jì)記錄建議你先讀 README 再動(dòng)代碼。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲欧洲久久天堂| 九九九九热| 在线观看av区| 97色网| 超碰97网址| 69精品久久久久中文字幕| 亚洲欧洲综合| 伊人久久亚洲色欲综合网站 | 国产偷仑| 亚洲。日韩。欧美| 午夜黄色免费在线观看| 日本国产亚洲一区在线观看| 久久中文字幕人妻熟av女蜜柚| 嗯嗯啊中文字幕| 久久久久婷婷| www黄片免费看com| 99久久久久久久久| 国产无码高清操逼视频| 大香蕉线| 国产夫妻性生活视频| 欧美制服另类丝袜| 九色97| 午夜福利视频在线一区| 五月丁香六月综合缴清无码| 91亚州| 2019亚洲男人天堂| 亚州春色| 天美一二三在线观看Av| 久久久久ab| 久久极品一区二区| 91neishe| 96精品在线| 中文字幕在线观看视频www| 五十路三级片| 亚洲中文日韩欧美大香蕉视频| 超碰95| 欧美一区二区| 国产美女高潮视频| 久超碰这里只有精品| 青青国产在线拍揄自揄拍| 亚欧精品久久久久久久久久久| 日韩久久.一级黄色片| 日韩熟女操逼| 色yeye成人免费视频| www.亚洲黄色| 蜜乳Av成人片网站| 精品性爱一区二区| 色婷婷视频| 91 刺激在线| 曰韩精品九九无码| 大香蕉在线86| 素人无码中文字幕| 亚洲同性aV综合| 视频在线观看青青99国产| 夜夜 中文视频rt| 91欧美另类| 青青草手机在线免费观看| 免费的av网| 日本一片一区| 舔舔啊| 大香蕉日亚洲日本亚大 | 日韩激情啪啪| 少妇超碰在线| 亚洲少妇诱惑| 丰满丝袜少妇AV| 亚洲自拍欧美色综合| 青青欧洲黑| 999九九九九国产动| 午夜九九| 可免费观看的av毛片中日美韩| 亚洲色天| 操比国产| 亚洲人成网www| 91在线美女| 欧美内射少妇| 亚洲欧美综合图片| 尤物视频视频官网| 国产AV高清AV无码| 强上我不卡卡| 人人九九精| 亚洲高清欧美总合| 影音先锋乱伦资源| 国产农村一一级特黄毛片| 大香蕉色十月| 在线 欧美 亚洲| 97视频网站| AV无码久久久精品| 第四色色综合91| 中文字幕诱惑制服人妻丝袜美丝袜美| 亚洲aV无码成人在线观看| 精品久久在线区一区| 九一精品牛牛一区二区| 玖玖综合视频| 午夜福利激情在线视频| 日本中文字幕在线视频| 啊啊啊啊啊啊好湿好爽视频| 天操天操夜操夜月月年年操操 | 2024黄色视频| 久久五月丁香| 爱爱久久| 免费的黄片有限公司| 91久热| 91新在线欧美| 最新av网站在线观看| 国产精品三级视频网站| 96国产污污污丝袜| 在线αⅴ| 少妇毛片久久| 午夜小电影在线插入淫高潮| 日韩99999色| 亚州精品人妻一二三区| 久久老子无码午夜伦不卡| 九九拍拍精品视频在线播放| 91精片| 日本精品第一视频在'| 好好的日:com久久九九| 成人线上超碰| 操少妇很爽av| 東南亚性呦成人伦理资源在线视频| 日韩精品一区二区日韩| 日本日日色视频| 精产品久久| 思思热免费视频观看| 日本啊啊啊啊啊视频| 97操| 欧美天天谢综合网| 欧美爱爱97| 丁香六月激情| 美女91在线| 大香蕉综合网| 欧美亚洲首页| 91 国产丝袜在线放观看| 久久久啊啊啊| 天美传媒av 在线| 97ai亚洲| 国产成人亚洲精品自产在线| 综合欧美亚洲| 一区二区三区色综合| 欧美色图片91| 99亚洲国产精品色一区二区三区| 成人色女网| 中文字幕第9页萱萱影音先锋| 六月丁香啪啪| 97亚洲精品| 青青草视频久久久久| 欧美人与动性人交a| 综合国产97| 三级特黄60分钟播放| 60秒免费小视频| 亚洲 日本 国产 综合| 国产二区三区粉嫩在线| 大屁股xxxxx| 91五十路| 久久精品视| 久热超碰| 乱伦熟妇一区二区| 麻豆区久久久久亚| 色天堂综合| 欧美强奸乱| 97亚洲中文| 亚洲熟女乱色| 爽 好舒服 无码刺激久久| 久久九九97| 亚洲综合码| 日韩人妻中文视频| 97超碰精品| 欧美天堂亚洲电影院一区在线播放| 亚洲人码13| 天天色播亚洲综合网站| 中文字幕三四区| 美女干逼2| 91超碰人人操| 亚洲成a人在线观看久| 九久9精品| 亚洲精品欧洲精品| 97色婷婷| 国内毛片国产专区二| 俞拍久久国应视频| 精品无人区麻豆乱码1区2区图片| 亚洲中文字幕乱码无码一区二区| 日本一区二区成人在线| 日韩免费福利在线观看| 亚洲加勒比| 91草草草| 日韩av三四区| 水野优香在线观看| 2024人人操人人摸| 久久人人舔人人爽舔人人av片| 亚洲男人天堂手机版| 国模91| 久久綜合很很很| 99综合网| 黑丝91视频| 久久小视频| 国产福利av精彩对白| 日韩精品在线放| 啊啊啊啊网站| 91原创在线观看| 成人免费在线网站| 久久成人午夜精品影院| 亚洲成人日韩小说| 内射小黄片| 天天伊人| 夜夜躁狠狠躁日日躁av| 97鸡把在线视频| 亚洲天堂一区二区| 久久久久久人| 性欧美999| 9997se| 超碰97在线中文| 久久97资源 网| 欧美一二三区四五区| 久9久| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 天天操天天舔| 色噜噜国产在线| 精品久久久久久亚洲| 九九Av| 日本色色网| 中文字幕一区日韩精| 一级啊性爱在线视频| 亚洲中文国际强奸字幕| 97亚洲欧美| 草B在线| 乱伦日本色图AⅤ| 亚洲色图欧美色图日韩色图| 高清国产精品无码| 久久久久国产精品喷潮免费观看臀| 热久久国产| 一区,二区,三区视频| 久久久久久久久久久久黄色 | 高清无码人妻久久久一区二区三区aⅴ| 亚洲蜜臀精品视频久久| 久久在肏| 中文字幕天堂在线| 思思热久久成人| 亚欧高清在线| 99热综合在线| av线电影| 久久岛国| 日韩人妻一二三区视频| 热九九精品| 亚洲天天艹| 亚洲永久AV无码精品秋霞| 自拍视频大全亚洲专媒视频/一区二区三区 | 蜜臀久久99精品久久久久免费观| 99re在线视频国产| 欧美激情视频一区二区| 中字幕人妻一区二区三区| 熟女精品va中文字幕| www.色五月| 夜夜操天天肏| 三及片网站| 日本熟女不卡视频| 大香蕉五月天婷婷| 人人操人人摸人人看人人插| 国产在线视视频有精品| 日本天天人人狠狠在线日美女 | 九草在线大香蕉| 欧美久久人体| 亚洲无线码欧洲精品区别| 天天做日日爱夜夜爽| 97天天爽| 加勒比99999| 国产日韩在线播放av| 天天插天天射| 熟妇一区,二区,三区。| 激情无码日韩| 大香蕉综合| 熟女少妇一区二区三区| 日韩欧美午夜视频在线| 欧美狠狠弄| 欧美综合色| 曰韩操B| 97超碰碰碰| 久久亚洲日韩国产欧| 国产精品一二三区18| 久久99精品视频| 动漫片子网站3黄| 东京热,男人的天堂| 北约熟女超碰| 搞中出视频在线观看| 欧美 亚洲 第一页 | 中文字幕日产av人| 国产高清自拍| 激情一区二区三区在线观看| 日日操夜夜操天天操免费观看麻豆| 乱伦av麻豆| 啊啊啊啊啊好大好舒服想要| 国产视频人人网| 麻豆天美电影一区二区| 神马精品视频| 91一区二匹| 920日本午夜免费| 欧美性色欧美| 久久婷婷亚洲| 精品无码少妇| 另类小说五月天| 欧美日综合| 五月丁香婷婷色| 青青青在线高清视频在线一二三四区| 97色婷| 天天操福利视频综合网站| 网页导航五月天免费一二三区 | 亚洲精品国产精品成人| 物尤视频一区二区| 人人摸人人干人人拍97| 九九九九九九免费视频| 亚洲色五月| 97爱亚洲| 夜色97| 日韩成人大片一区二区| 国产一级高清免费观看| 日韩丝袜人妻AV| 人人人干干人人干| 97日视频| 骚逼高潮久久精品| 国产v亚洲v日韩v欧美v片另类| 骚货人妻偷情自拍在线视频| 尤物av网站免费在线播放| 手机不卡视频不卡在线一二三区| 精品久久无码午夜福利| 爱丝福利| 啊啊啊啊啊啊啊国| 久久综合国产精品国产| 東南亚性呦成人伦理资源在线视频| 午夜天堂啪啪| 尤物黄色在线观看网站| 亚洲天天操| 久久欲| AV色五月| 国内黄色精品| 色色色色网站| 影音先锋日本乱伦| 亚洲综合在线91| 欧美 亚洲 制服 精品| 香伊人在线| 丝袜美腿91| 青青草吊丝| 探花一区在线| 中文字幕一区二区免费在线| 这里只有精品97| 97看操| AA丁香综合激情| 国产 日韩 欧美高清| 天美av在线| 97色视频在线| 熟妇女人妻呻吟久久AV| 久久香蕉国产线看观看猫咪av| 午夜爽爽爽| 视频二区熟女人妻| 一区二区三区四区姦女| 五月天婷婷基地| 青椒国产97在线熟女| 国产亲戚伦亲在线| 欧州色图区| 青娱乐淫乱1314| 亚拍在线| 日韩少妇丰满亚洲| 五月丁香婷婷综合| 91三级理论片播放器| 东京热男人天堂| 干日本人少妇午夜寂寞影院| 91亚洲人| 94色色电影网| 91精品91久久久中77777| 啊啊啊啊啊啊啊网址在线观看| 男人的天堂亚洲| 91黑人无码激情在线| 人人看人人插| 人人看人人插| 亚洲欧美在线观看无码| 69XX一中文字幕人妻91| 天美91| 亚州性色| 久久香蕉国产线看观看亚洲女人 | 激情图片亚洲色图| 大香蕉十区| 亚洲中文制服诱惑| 91超碰人人| 天天干天天干天天干| 久久久亚洲高清不打码| 91足交| 久久久久亚洲?V片无码V| 中日韩免费看男女操逼大全| 日本综合色图| 国产强奸乱伦无码视频| 国语av狠狠色丁香婷婷综合激情| 国产路线专区| 亚欧高清| 乱伦一区二区三区‘| 欧美性生活男人的天堂| 国产精品久久久久无码Av网曝门| 99e久久国产精品| 亚洲精品白浆高清久久久久久| 国产精品一二三免费网站| 盗摄 精品 另类 一区| 女同性恋久久| 可以免费观看的av| 熟女丝袜视频| 国产专区路线| 人妻黑丝袜电影| 99只有精品| 啊啊啊久久久视频 | 视频国产欧美在线播放| 18禁无码永久免费无限制| 丰满美女一级毛片在线播放| 波多野结衣一级视频| 污污汅18禁网站在线永久免费观看| 2017人人操,人人摸| 国内偷自视频区视频综合| 丰满高潮18xxxx| 国产精品久久久三级无码| 欧美丰满熟妇XXXX性ppX人交| 日韩成人大片在线观看| 97人肏| 美女的肌被草喷水视频| 日韩综合第八区国产精品| 天堂性色| 日本黄色大片一级视频免费麻豆| 18禁超污无遮挡无码免费网| www.91色综合| 国产少妇高潮| 久久超碰com| 老外又粗又长一晚做五次| 久草国产在线视频| 国产av白丝| 男人精品天堂一区| 火箭成精品视频884必出精品| 九九九精品成人免费视频小说| 日本一区视频在线观看| 操操碰| 黄总AV色图| 久热香蕉精品在线视频| 九九热精品| 亚精品无码毛片一区二区三区| 国产丝袜啪啪| 日韩不卡av一二三| 2026国产精品视频| 人人操人人肉久久精品| 精品九九九九九九九| 少妇精品久久久八区九区| 蜜桃久久一区二区| 中文字幕乱码人妻一区二区三区,99精品| 亚洲色人妻综合| 亚洲精品黑丝| 亚洲精品国产专区在线观看| 国产精品久久久视频| 亚洲的天堂网| 成人性爱视频在线看| 久久大香蕉| 美国三级日本三级久久99| 日韩三级伊人| 爱射综合| 天天干人妻视频| 亚洲激情综合另类| 久久av一级av少妇av高潮| 高凊专区人人操| 综合网少妇| 免费簧片在线观看| 欧亚成人在线视频| 日韩中文字幕国产| 看黑丝美女操逼青青网站| 国产精品久久泡妞网站| 99热这里只有精品地址 | 蜜臀99久久精品久久久久| 日韩不卡av一二三| 少妇特黄一区二区三区| 亚洲色图日韩精品| 一区三区啪啪| 欧美综合传媒| 日本亚洲熟女视频| 一卡二卡三卡| 亚洲宅男天堂| 欧美亚洲图片| 岛国小电影| 亚洲国产丝袜熟女av| 五月丁香成人网| 国产9l 大屁股| 69超碰综合| 熟女人妻精品一区二区视频| 人人操人人色网| 人人妻人人狠人人| 婷婷人妻激情| 国产精品91一样| 白丝一区| 97精品视频网站| 约操熟妇| 97伊人超碰| 啊啊啊好爽快点啊啊啊嗯嗯| 丝袜美腿av女优在线| 久久麻豆一区二区| 高清国产无码av| 男人的天堂日本东京热| 九九色图| 亚洲 小说 欧美 激情 另类| 91精产一区二区三区| 蜜乳av首页| 91综合站| 亚洲成人色情五月天丁香花| 日本在线视频导航| 狠狠超| 情色av电影| 狠狠色狠狠色狠狠五月| 欧美色图片欧美色图| 成人在线日韩| 大香蕉视频一二三区| 亚洲AV在线资源| 黄色工厂这里只有精品| 东北黄色电影| 精品性爱一二三区| 国产精品女aA片爽爽视频| 啊啊啊啊二区好大| 精品人妻美妇91job| 日本影视久久免费| 欧美人妻一区二区| 看黑丝美女操逼青青网站| 亚洲综合中文字幕有码| 亚洲无线观看久久| 国产综合久| 少妇三P| 精品久久一区二区三区四区五区| 亚洲免费成人在线高清无码视频| 理论久久婷婷网8| 歐美性天天| 99精品无码| 无套内射人妻在线播放| 91精品91久久久久77777俄罗斯老妇姓x| 亚洲欧洲无码97久久精品| 性爱综合网| 激情综合二| 日产操逼| 九九九九九九九九九国产精品 | 东北女人的毛片| 欧美极度丰满熟妇hd| 亚洲啪啪综合?v一区综合精品区| 射丝袜大香蕉| 96免费视频在线| 长长久久曰曰夜夜成人网| 在线综合色| 日韩中文字幕国产| 中文字幕一区二区视频在线观看| 床戏久久久av一区二区麻豆| 久久精品视| 强奸抽插av| 欧美大的香蕉有线电视视频| 97久久精品不卡| 久久少妇人妻| 色婷婷淫色网| 黑人精品久久97| 亚洲视频,小说| 大香蕉伊人网WWWn0n| 好吊妞转入那个网| 25国产精品免费观看| 秋霞视频一区二区| 六月婷婷综合| 五月天婷婷色| 欧美78p| 欧美日韩性感| 极品白嫩福利在线| 91九九九馒头| 蜜桃久久久久久久| 欧美美女在线高潮999| 欧美18禁91| 美女91在线观看| 九九热在线精品视频| 欧美精品久久| 老熟女阿 国产91| 中国和日本人色哪个不下载能放| 60秒不遮不挡| 国产成人91一区二区三区| 日本孕妇一区二区视频操逼免费看| 欧美色亚洲| 欧美性爱第一页久久| WWW操逼| 小视频玖玖| 亚洲无码久久久久久久| 噜噜噜狠狠色综合| 久久久久中出| 老女人老91妇女老热女| 99日视频在线免费| 女人综合网| 综合国产影视三级| 综合欧美日本三级| 青青11操操操操操操操操| 成人日韩中文字幕| 综合色久欲| 亚洲成人贴图| 干干干天天| www.久久爱| 国产一区二区三区不卡手机在线| 色眯眯av| 97在线免费观看视频| 操操吧亚洲乱伦视频| 99人人干| n1038 一二三区| 在线岛国新天堂8| 日韩精品一区二区日韩| 五月婷婷综合激情| 99re3这里只有精品| 九区国产| 蜜臀AV午夜精品久| 日本成人电影资源网| 黄色av一区二区在线| 女色视频社区| 综合97久久| 欧美一二三| 久久精视频美日韩在线视频| 一区二区激情国产熟女| 亚洲乱熟女一区二区三区大香蕉| 久久久亚洲精品电影免费看| 97欧美色综合| 先锋影音av先锋一区| 老司机深夜影院18未满| 精品久久久中文字幕不| 久久人人爽av亚洲精品天堂桃色| 91殴美| 无码人妻丰满热妇又大又粗| 天天色悠悠激情| 黄站在线免费观看| 国内精品嫩模A∨私拍小视频| 韩国一级做A片免费的| 久久a久久| 亚洲精品乱码久久久久久蜜桃麻豆| 国产精品久久久啊| 免费综合亚洲中文| 亚洲精品1区| 久久久久久97| 九九AV| 久久精品视频一区三区小泽玛利亚| 伊香蕉综合久久久久久久噜噜噜| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 午夜精品久久一区二区| 国内精品久久久久影院亚洲| 天美精品一区二区三区四区在线观看| 一本色道熟妇| 婷婷丁香成人| 人妻无码一区二区三区久久99| 午夜操逼不卡| 国产精品制服丝袜中文字幕日韩一区二区三区 | 欧美日韩亚洲电影| 在线人成亚洲视频免费观看| 色性欧美| 国产欧美另类久久久精品课程| 亚洲一区二区三区播放在线| 密臀AV在线| 国产无码精品久久久久久| 好吊妞转入那个网| 理论久久婷婷网8| 爱做久久久久久| 97久久天天综合色天天综合色电影| 日日不卡av| 人妻少妇久久久| 老熟妇一区二区三区啪啪| 日韩综合色图| 69精品少妇一区二区三区蜜桃| 国产AB视频| 97人人模人人爽人人| 麻豆区99999| 亚洲中字幕日本一区二区三区| 91蜜臀在线久久久久| 9丨久久九九九| 丁香六月婷婷综合| 精品蜜乳AV免费观看| 精品超碰国产| 91网九色蝌蚪操熟女| 久草精品国产蜜臀| 小视频玖玖| 国产精品电影推荐| 国产乱码久久久| 精品欧美不卡在线播放| 青青国产精品在线| 亚洲无码 国产无码| 色噜噜人妻av 中文字幕| 天天日天天干少妇日| 女人天堂AV五区在线| 毛片一区二区| 久啪| 国产亚洲精品玖玖玖在线观看| 人妻另类| 91人妻人人妻| 天操天操夜操夜月月年年操操| 亚洲天堂第一页| 翔田千里无码中出中文字幕| 亚洲欧洲第二视频在线观看色图| 久久‘黄片视频| 97精品一区| 日韩女优中文字幕| a一区二区三区乱码在线| 久久9精品网站| 人妻久久久久久久久久久久久久久| 国产精品人妻无码久久久互動交流| 久久本道| 午夜一区二区三区国产| 99久在线精品99re8蜜桃| 欧美专区在线| 一区三区啪啪| 成年无码动漫av片无尽在线| 亚洲自拍欧美色综合| 337p大胆噜噜噜噜噜91Av| 新亚洲无码| 精品无码产区一区二| 97最新在线播放视频| 久久天堂| 日韩中文9| 亚洲男人的天堂一区二区| 久久黄色性爱视频| 国产精品com| 九久久精品| 久久精品72| 精品久久久亚洲AV成人网站| 日本高清视频xxxx| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 日韩无码久久熟女一级片| 色人久久| 最新岛国大片| 国产精品福利资源在线尤物| 91熟女视频网| 很很很很操| 美女人妻色网站| 久草五月| 亚洲精美粉嫩嫩泬在线观看| 人人弄人人摸| 丝袜 中出 制服 人妻 美腿 中文字幕| 久久久专区| 91久久久久久久久久久| 五月天偷拍| 国产又大又硬又长又粗| 成人蜜乳小视频网站| 玖玖爱影院| 青青草影视蜜久久| 欧洲站一级二级三级h| 亚洲一区二区三区麻豆传媒| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 天天操天天日青青草超碰av| 高清不卡国产| 丰满翘臀美女影院视频| 99自拍视频在线| 日本日皮视频逼| 影音先锋视频在线| 2019久久久久久久久福利| av黄图片在线观看| 日韩在线国产字幕| 欧美97色| 蜜臀久久99精品久久久电影| 激情欧美97| 欧美精品97| 国产免费小视频| 91第一页| 97欧美视频| 中国AAAAAA黄色片| 熟妇综合一区二区三区| 乱伦一二三| 精品人妻一区二区三区四区石在线| 综合久久97| 亚洲国产成人精品女人久久久| 97超碰欧美手机| 人妻夜夜爽天天爽三区麻豆AV网站| 变态综合色| 久操精品| 欧美高清18A片| 美女尤物人人操| 国产AV精久久| 99久久九九| 人妻少妇久久久| 超碰97资源大奶| 操操操操操操| 97视频免费在线| 精品国产乱码久久久影院| 97美日韩视频| 超碰91在线| 大学生口爆吞精| 99精品欧美一区二区三区桃色| 欧美日韩国产中文精品字幕自在自线| 欧美日韩香蕉| 尹人大香蕉视频在线| 国语人妻精彩刺激| 亚州色国| 欧美图片校园春色| 久久专区| 成全在线观看免费观看| 综合欧美日本三级| 日韩人体偷拍| 伊人少妇久久久| 国产日韩怡红院| 欧美的性爱网站免费| AV不卡在线| 久久日韩毛| 日本大香蕉| 992视频一区| 人人操人人干xxx| 精品成人av一区二区三区在线| 免费观看欧美日韩操逼视频| 蜜臀99999| 久久久久九九九九九| 亚洲色图欧美一区二区不卡| 欧美精品日韩久久久九| 发朗少妇买婬全视频中文| 夜夜高潮夜夜爽高清视频一| 丰满少妇精品一区二区| 超碰在线人人射| 大香蕉综合在线| 夜夜高潮夜夜爽| 亚洲 欧美 第一页 | av凤凰久久久| 四虎影库国产精品免费| 中文字幕无码不卡啪啪| 91在线免费精品视频| 性爱av网站| 色玖玖| 后入式五六区| 人人妻人人玩人人澡人人爽| 国产呦精品一区二区三区下载| 99热导航| 91熟女视频网| 精品人妻中文字幕4399| 欧美九九99久久精品| 后入综合久久| 国产亚洲精品美女久久久m| 97超碰色五月| 91欧美色| 黄片不用下载在线观看| 黄色十八禁| 国产精品剧情| 丝袜 亚洲 偷拍| 色在线69堂| 久久区| 无码高清专| 一区二区视频你懂的| 亚洲精品白浆高清久久久久久| 六月激情网| 网友自拍第1页| 日韩成人大片在线观看| 后入式五六区| 风流老熟女一区二区三区l| oumeizonghese,www| 麻豆久久精品亚洲精品88| 色色热| 懂色AV网| 婷婷五月天成人网| 97在线观看视频| 精品成人av一区二区三区在线| 亚洲老司机123专区| 脫衣舞一区二区三区| 青娱乐大香蕉| 色婷婷视频| 国产精品第二页| 口爆吞精在线观看| 天天躁夜夜躁狠狠躁AV| 亚洲成人久久一区二区| 福利天天都操| www.av在线观看| 97欧美资源| 伊人久久艹| 成人久久久| 91啪9色| 成人一级性爱| 亚洲欧美日韩电影网站一区 | 中文字幕97| 五月天色电影| 岛国色情视频在线观看| 99热大香蕉伊在线| 竹菊影视国产一区二区| 九热久| 91狠狠综合久久久久久| 中国农村熟妇毛片视频| 91色爽欧美| 欧美人妻久久精品二区三区| 色亚洲欧美| 日韩精品99999| 免费观看性欧美一级| 国产av热热色| 激情五月天婷婷| 97综合久久| 学生妹天天看| 久99热| 成人av福利在线观看| 久9久| 亚洲黄网在哪免费看| 亚洲色人| 国产盗摄美女如厕大神作品在线观看 | 人妻精品视频一区二区| 伦在线97| 吻戏激情性巴克| 日韩综合无码色欲vv| 久久久草草精品| 国产婷婷一区| 播播亚洲小说亚洲| 九九九热| 欧美天堂亚洲电影院一区在线播放| 天天操综合网| 亚洲电影中字一区二区| 亚洲综合夜色| 中文伊人大香蕉视频| 人妻啪| 91伊人| 日韩欧美天天爽爽爽天天爽爽| 亚洲91少妇| 久久精品毛片免费不卡| 亚洲中文字幕在现观看| 中文精品少妇天堂| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 国产亚州高清国产拍精| 乱伦一二三| 伊人网在线点播| 久久精品人妻一区二区| 欧美日不卡| 中文字幕一区二区三区视频播放| 秋霞怕怕片| 特污精品女优骚货黄色视频在线免费观看| 色91综合网| 天天透伊人| 一本久道久久综合狠狠爱| 国产一区二区三区白丝| 亚洲欧美人妻| 国产精品日日摸天天碰| 蜜桃视频啊啊啊啊| 天天享受天天看| 丁香五月天婷婷姐| 志村玲子视频一区二区| 国产女人操逼视频| 久久久久久日韩| 草草草视频在线免费看| 伊人网高清| 亚洲男人天堂2| 伦理日韩国产久久| 精吧天堂| 99精品伊人| 国产精品色哟哟| 亚洲有薄码区日本系列中文字幕| 色婷婷电影网| 天堂8在线新版官网| 日韩av一级黄片| 国产三区免费在线观看| 俄罗斯一区二区视频在线观看| PMv在线观看| 精品一级毛片在线观看| 男人天堂网址| 婷婷五月天色网| 欧美天天影院| 久操免费电影| 67914在线兔费成人视频| 99国产精品自在自在| 亚洲欧洲久久天堂| 少妇人妻激情四射| 91女优在线观看 | 天天看高清麻豆| 老熟妇一区二区三区啪啪| 久久久久一本一区二区青青蜜月| 黑人中出21连凳花野真衣| 天天干天天日天天射黄色| 欧美亚洲第1页| 啊啊啊不要好爽日韩无码一区| 超碰 另类 欧美| 欧美97视频| 大香蕉琪琪日本女优不卡| 97精品国产手机| 久操操| 91伊人久久在线| 偷窥自拍亚洲| 精品传媒在线一区| 日本操逼aaaaa| 秋霞色色影院| 国产精品久久久久久照片| japan日本高清乱xxxx| 亚洲五码一区二区三区| 99综合| 九九热九九热| 九七毛片九九毛片| 97超碰9| 久草加勒比一区在线| 黄片qw| 美国aaaaa一级黄片| 99色色网| 欧美视频激情久久久久久| 99国内熟女露脸视频| 亚洲Av诱惑| 国产强奸乱伦欧美| 在线视频免费播放一区| 日韩有码一区三区| 亚洲AO在线| 91精品国| 亚洲精品久久久久毛片A片拉屎 | 国产激情综合| 亚洲网自拍| 青青草在线视频美女| 天久久久噜噜噜久久国产精品爽爽| 91人精品妻入口| 成人性爱全视频观看| 天天透伊人| 亚洲天堂少妇| 人妻少妇久久中文字幕一区二区 麻豆 | 丰满精品人妻少妇久久字幕| 久湿久久| 日本操逼视频在线| 久久东京伊人一本到鬼色| 国产超碰| 97精品国产精品免费观看| 亚洲图片视频小说| 欧美综合娱乐久久| 久热久一区二区三区| 天天影视网色欲色香| 一级二级三级黑人无码| 亚洲精品国产精品乱码不99| 99啪啪| 欧美日韩中文视频播放| 国产自产自拍| 97硬碰| 女生久久网| 亚洲欧美一区二区三区一猛片| 亚洲高清视频在线观看| 有码专区最新中文字幕有码| 国产精品999zyz| 91丝袜激情在线| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 欧美综合色图片| 精品毛片av一区二区| 国产视频三区四区| 亚洲熟妇白浆无码AV| 男人天堂黄片| 五月天久久婷婷亚洲 | 亚洲天堂资源在线| 一级黄色视频网| 99.色网| 搡老女人老91二区| 亚洲日本韩国在线| 久久精品亚洲东京热色播| 密臀成人视频久久久| 尤物网址| 18岁禁 茉莉成人久久| 欧美日韩在线视频网站| 亚州精人品大香蕉| 久热精品在线| 欧美性生活综合| 亚洲色图 91| 亚洲成人久久一区二区| 久久AV色| 久久黄色性爱视频| 久久这里| 成人性爱美曰韩| 天美传媒AV国产在线| 370p日韩欧美亚洲精品| 神马久久久久久久久久| 亚洲AV成人精品网站在AV| 国产日韩精品一区二区三区| 青娱乐淫乱1314| 天美国产精品| 色综合国产在线观看| 精品精品精品| 亚洲av噜噜噜噜噜噜| 熟女在线视频| 国产精品视频内谢女人| 国产有码一区| 久久久久久亚洲中文| 欧美精品 - 91爱爱| 欧美日韩不卡a片| 日本国产二线女色| 免费黄色A片| 亚洲天堂加勒比| 日韩AV一区二区三区三州三州| WWW.操逼.COM| 美腿丝袜偷拍亚洲欧美| 91青青在线| 国产夜夜艹| 操逼1区| 少好三P| 一区二区三区在线资源| 国产主播福利| 91老熟女老女人国产老太| 亚欧高清在线| 国产一区在线播放| 日韩99999色| 美女极品一区二区三区| 日日躁天天躁狠狠躁| AA丁香综合激情| 日韩激情无码影院| 亚洲丰满很很操| 国产 码在线成人网站| A 天堂| 久久久久人| 长长久久88视频| 亚洲精品性爱片| 粉嫩av一区二区三区天美传媒| 亚码激情| 国产男人又猛又粗又爽| 亚州一区二区| 日韩国产十八禁| 九九av| 亚洲αv一区二区三区| 国产丁香精品露脸视频| 97香蕉人人乳| 久色网| 日本潮催一卡操| 亚洲一区二区中文字幕| 九九热超碰97亚洲最新香蕉| 亚洲欧美日韩精品久| aaa亚无码专区| 美女天天干| 精品人妻夜夜草| 99操逼| 久久久久亚洲?V片无码V| 综合欧美色图| 久久久久国产| 毛片视频白嫩| 18禁超污无遮挡无码免费网| 亚洲一区二区三区在线激情| 久肏视频字幕| 久久精品老司| 欧美天天拍| 婷婷五月天影院| 亚洲黄色视频在线观看视频| 国产丝袜啪啪| 天堂精品| 日韩av女优在线免费一区| av片在线观看免费播放| 性爱视频无打码在线观看| 毛片久久| 中韩中文字幕在线观看| 韩国国产欧美情侣视频在线| 超碰 另类 欧美| 久久女婷| 女人高潮抽搐喷水视频网站| 青椒国产97在线熟女| 九七超碰| 好色综合| 九久精品| 欧美色图另类图片| 岛国999| 久久国产对白激情浪潮| 婷婷综合网| 久久久久国产精品喷潮免费观看臀 | 97欧美视频| 午夜美女诱惑电源网| 98超碰日本| 久啪| 色天堂综合| 婷婷五月花| 性爱av在线免费观看| 思思热在线视频免费| 日韩欧美大片免费高清啪啪| 国产精品午夜AV完会免费 | 91w欧美| 加勒比综合88| 久久久久久九| 超碰免费97| 99re免费| 波多野结衣之双飞调教在线播放 | 日韩亚洲美女一区久久| 麻豆国产尤物AV| 69精品少妇一区二区三区蜜桃| 亚欧中文字幕在线视频| 日本黄色精品| 亚洲在钱| 国产激情在线| 欧美写真视频一区| 亚洲精品国产拍免费91在线| 中国和日本人色哪个不下载能放| 91性网| 四虎精品永久在线播放| 久久久96|