免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

SNL編譯器課設(shè)源碼解析:從詞法分析到語(yǔ)義檢查的完整實(shí)現(xiàn)

SNL編譯器課設(shè)源碼解析:從詞法分析到語(yǔ)義檢查的完整實(shí)現(xiàn) 簡(jiǎn)介吉林大學(xué)計(jì)算機(jī)學(xué)院2022年編譯原理課程設(shè)計(jì)項(xiàng)目是一份基于C實(shí)現(xiàn)的SNL語(yǔ)言編譯器完整方案面向需要完成同類課程設(shè)計(jì)或系統(tǒng)學(xué)習(xí)詞法分析、語(yǔ)法分析、語(yǔ)義分析的本科生。項(xiàng)目采用LL(1)分析法構(gòu)建語(yǔ)法解析配合詞法分析器、語(yǔ)義分析器與符號(hào)表管理代碼模塊劃分清晰且由作者獨(dú)立完成、相似性低適合直接借鑒或二次拓展。壓縮包共91個(gè)文件以cpp、h源文件為主體涵蓋詞法分析、LL(1)語(yǔ)法分析、語(yǔ)義分析等關(guān)鍵模塊另含obj、exe、pdb等編譯產(chǎn)物、Visual Studio工程文件以及多組txt測(cè)試用例與錯(cuò)誤測(cè)試文本壓縮包整體142.28MB。內(nèi)容還涉及DS文法定義、保留字表、Token輸出與語(yǔ)義檢查用例工程配置完整便于構(gòu)建運(yùn)行和對(duì)照學(xué)習(xí)。已有1374人學(xué)習(xí)該資源對(duì)于希望獲得高分課程設(shè)計(jì)范例、深入理解編譯原理各階段實(shí)現(xiàn)的讀者具有較高的參考價(jià)值。1. SNL 語(yǔ)言編譯器課設(shè)源碼包為什么一個(gè)能拿滿績(jī)的參考值這個(gè)價(jià)某高校的編譯原理課程設(shè)計(jì)要求手寫(xiě)一個(gè) SNL 語(yǔ)言編譯器詞法、語(yǔ)法、語(yǔ)義三個(gè)階段全部真實(shí)跑通。SNL 是類 Pascal 的教學(xué)語(yǔ)言規(guī)模不大但保留字、算術(shù)表達(dá)式、函數(shù)調(diào)用、作用域和類型檢查一個(gè)不少。網(wǎng)上能翻到的參考要么是表達(dá)式計(jì)算器級(jí)別要么是公開(kāi)倉(cāng)庫(kù)里流傳爛大街的模板相似性高到不敢交。這份源碼包是 2022 年的完整交付C 編寫(xiě)從 config 下的 reserved_words.txt 到 LexAnalyzer.cpp再到 LL1.cpp、ParseLL1.cpp、SemAnalyzer.cpp 和 symtable.h整條鏈路全在還自帶 lex_error_test、sem_error_test、sem_correct_test 三組測(cè)試樣本。它適合正在寫(xiě)課設(shè)找不到語(yǔ)法樹(shù)接語(yǔ)義思路的人也適合已經(jīng)寫(xiě)完詞法、卡在 LL(1) 遞歸下降的人。下面我按自己復(fù)現(xiàn)的順序把文件、參數(shù)和坑一個(gè)個(gè)過(guò)一遍。2. 從 main.cpp 到 SemAnalyzer先盤(pán)清源碼包的數(shù)據(jù)流2.1 文件清單哪些是核心代碼哪些是 Visual Studio 編譯殘留解壓后是一個(gè)標(biāo)準(zhǔn)的 Visual Studio 工程Project2.sln 可以直接雙擊打開(kāi)。先把根目錄文件分個(gè)類避免一頭扎進(jìn) Debug 目錄里看那些 obj 和 pdb。文件/目錄定位說(shuō)明main.cpp程序入口串聯(lián)詞法、語(yǔ)法、語(yǔ)義三個(gè)階段讀源文件并輸出結(jié)果config / reserved_words.txt詞法配置保留字表LexAnalyzer 運(yùn)行時(shí)加載LexAnalyzer.h / LexAnalyzer.cpp詞法分析器產(chǎn)出 Token 流輸出到 tokens.txt / new_tokens.txtLL1.h / LL1.cppLL(1) 集合與沖突檢測(cè)計(jì)算 First/Follow 或維護(hù)預(yù)測(cè)邏輯ParseLL1.h / ParseLL1.cpp語(yǔ)法分析器遞歸下降主程序按文法產(chǎn)生式構(gòu)建語(yǔ)法樹(shù)ds_grammer.h文法定義產(chǎn)生式、終結(jié)符/非終結(jié)符編號(hào)TreeNode.h / TreeNode.cpp語(yǔ)法樹(shù)節(jié)點(diǎn)孩子兄弟鏈表供語(yǔ)義分析遍歷Kind2Str.h / Kind2Str.cpp可讀化輸出把節(jié)點(diǎn)枚舉轉(zhuǎn)成字符串調(diào)試輸出靠它SemAnalyzer.h / SemAnalyzer.cpp語(yǔ)義分析器符號(hào)表查詢、類型檢查、作用域管理symtable.h / symtable.cpp符號(hào)表記錄變量/函數(shù)的名字、類型、層級(jí)、偏移量test1.txt ~ test8.txt輸入樣本混合覆蓋詞法、語(yǔ)法、語(yǔ)義的正確與錯(cuò)誤用例lex_error_test / sem_error_test / sem_correct_test分類測(cè)試集分別用于驗(yàn)收詞法錯(cuò)誤、語(yǔ)義錯(cuò)誤和完全正確程序Debug 目錄下的 vc142.pdb、Project2.pdb、.obj、.tlog 全是 Visual Studio 的編譯殘留不影響理解邏輯。Project2.vcxproj.user 是用戶級(jí)配置換機(jī)器后建議直接刪掉讓 VS 重新生成。從 main.cpp 往下看標(biāo)準(zhǔn)數(shù)據(jù)流是讀入源文件 → LexAnalyzer 產(chǎn)出 Token 流 → ParseLL1 按文法組織語(yǔ)法樹(shù) → SemAnalyzer 遍歷語(yǔ)法樹(shù)并查符號(hào)表 → 最后把結(jié)果打印到 rc.txt 或 outout.txt。tokens.txt 和 new_tokens.txt 同時(shí)存在說(shuō)明詞法階段至少有兩種輸出模式常見(jiàn)的是普通 Token 流和帶行號(hào)位置的 Token 流。調(diào)試詞法錯(cuò)誤時(shí)這兩個(gè)文件能直接告訴你錯(cuò)誤發(fā)生在哪一行。2.2 詞法分析reserved_words.txt 與 LexAnalyzer.cpp 怎么配合很多人的詞法分析是把關(guān)鍵字硬編碼在幾十個(gè) if-else 里這份資源把保留字單獨(dú)放在 reserved_words.txt代碼里用映射表查類型。下面這個(gè)加載函數(shù)是這類實(shí)現(xiàn)的標(biāo)準(zhǔn)骨架和你最后在 cpp 里看到的結(jié)構(gòu)基本一致void LoadReservedWords(const std::string path, std::unordered_mapstd::string, int kw) { std::ifstream in(path); std::string word; int kind 0; while (in word) { // 文件每行格式保留字 類型編號(hào)例如if 1 else 2 while 3 // 這里把字符串和編號(hào)分別讀進(jìn) word 和 kind in kw[word]; } }這段代碼的邏輯說(shuō)明先用ifstream打開(kāi)保留字文件然后以空白為分隔符連續(xù)讀。第一次in word拿到保留字本身第二次in kw[word]讀入后面的整數(shù)并直接作為映射值。unordered_map的選擇有講究詞法分析階段每個(gè)標(biāo)識(shí)符都要查一次表哈希查找能保證均攤 O(1)不會(huì)成為瓶頸。這樣組織的好處一是新增一個(gè)保留字只需要改 txt不需要?jiǎng)哟a二是不容易出現(xiàn)滿屏魔法數(shù)字查重時(shí)的代碼觀感也干凈很多。LexAnalyzer 里識(shí)別標(biāo)識(shí)符的邏輯就是逐字符拼遇到字母開(kāi)頭就持續(xù)收集字母和數(shù)字拼完先查這個(gè)unordered_map查得到就是保留字查不到就是普通標(biāo)識(shí)符。Token 本身一般是struct Token { int type; std::string value; int line_no; };type 枚舉定義在 macro.h 或 LexAnalyzer.h 里。注意 reserved_words.txt 的編碼必須和源文件一致。最常見(jiàn)的坑是 UTF-8 帶 BOM導(dǎo)致第一個(gè)關(guān)鍵字額外多出一個(gè)不可見(jiàn)字符后面避坑章會(huì)專門(mén)講。2.3 語(yǔ)法樹(shù)TreeNode 的孩子兄弟鏈表與 Kind2Str 的可讀化輸出一段程序光有 Token 流不夠語(yǔ)義分析要在一個(gè)能表達(dá)嵌套結(jié)構(gòu)的樹(shù)上跑。TreeNode.cpp 用的是孩子兄弟表示法節(jié)點(diǎn)骨架長(zhǎng)這樣struct TreeNode { int kind; // 節(jié)點(diǎn)類型對(duì)應(yīng) Kind2Str 里的枚舉名 TreeNode* child; // 第一個(gè)子節(jié)點(diǎn) TreeNode* sibling; // 右兄弟節(jié)點(diǎn) std::string value; // 標(biāo)識(shí)符名或字面量 int line_no; // 來(lái)源行號(hào)語(yǔ)義報(bào)錯(cuò)全靠它 };為什么不用子節(jié)點(diǎn)數(shù)組因?yàn)?SNL 文法里 if 語(yǔ)句的子節(jié)點(diǎn)個(gè)數(shù)不固定有 else 是三個(gè)子節(jié)點(diǎn)沒(méi)有 else 是兩個(gè)用孩子兄弟鏈表可以動(dòng)態(tài)掛節(jié)點(diǎn)遍歷函數(shù)統(tǒng)一走child和sibling兩條指針即可。Kind2Str.cpp 就是把 kind 整數(shù)映射成字符串比如某個(gè)節(jié)點(diǎn) kind 是 101打印出來(lái)是AddExpr比對(duì)輸出文件時(shí)一目了然。打印語(yǔ)法樹(shù)的遞歸函數(shù)一般長(zhǎng)這樣void PrintTree(TreeNode* node, int depth) { while (node ! nullptr) { // 縮進(jìn)表示層級(jí)Kind2Str 負(fù)責(zé)把枚舉轉(zhuǎn)成可讀名 std::cout std::string(depth * 2, ) Kind2Str(node-kind) node-value std::endl; PrintTree(node-child, depth 1); node node-sibling; } }depth是當(dāng)前樹(shù)深度每次遞歸子節(jié)點(diǎn)時(shí)加一sibling在同一層橫向遍歷。main.cpp 遍歷語(yǔ)法樹(shù)后輸出到 rc.txt 或 outout.txt對(duì)照輸出文件就能驗(yàn)證遞歸下降函數(shù)的調(diào)用順序是否正確。3. 語(yǔ)法分析LL(1) 遞歸下降如何組織文法與預(yù)測(cè)3.1 為什么選 LL(1) 而不是 LR課設(shè)文法規(guī)模決定的取舍從文件命名能看出設(shè)計(jì)意圖LL1.h/cpp 帶著預(yù)測(cè)分析的味道ParseLL1.cpp 是實(shí)際的遞歸下降入口。SNL 這種課程語(yǔ)言文法一般就四五十條產(chǎn)生式用 LL(1) 手工寫(xiě)一組遞歸下降函數(shù)完全可控。LR 系雖然能處理更多文法但要引入自動(dòng)生成工具課設(shè)老師更希望你解釋清楚預(yù)測(cè)邏輯所以 LL(1) 是這類資源的主流選擇。LL1.cpp 通常負(fù)責(zé)計(jì)算 First/Follow 集合或者在建表過(guò)程中發(fā)現(xiàn)沖突時(shí)給出提示ParseLL1.cpp 按非終結(jié)符寫(xiě)函數(shù)一個(gè)非終結(jié)符對(duì)應(yīng)一個(gè) C 函數(shù)。ds_grammer.h 里的產(chǎn)生式就是這些函數(shù)的直接來(lái)源比如expr → term { (|-) term }對(duì)應(yīng)的就是下面這樣的函數(shù)。3.2 四則運(yùn)算表達(dá)式的遞歸下降一個(gè)可直接抄的結(jié)構(gòu)算術(shù)表達(dá)式是最典型的一層。下面的代碼是遞歸下降實(shí)現(xiàn)里必然會(huì)出現(xiàn)的結(jié)構(gòu)你會(huì)在 ParseLL1.cpp 里看到它的變體TreeNode* ParseExpr() { TreeNode* left ParseTerm(); // 先解析優(yōu)先級(jí)更高的項(xiàng) while (cur_token TOKEN_PLUS || cur_token TOKEN_MINUS) { TokenKind op cur_token; // 保存當(dāng)前運(yùn)算符 Match(cur_token); // 吃掉當(dāng)前運(yùn)算符 TreeNode* right ParseTerm(); // 解析右側(cè)操作數(shù) TreeNode* parent CreateNode(KIND_BIN_EXPR); parent-child left; // 左操作數(shù)掛到 child left-sibling right; // 右操作數(shù)掛到 sibling parent-value TokenToText(op); // 記錄運(yùn)算符文本 left parent; // 新節(jié)點(diǎn)作為左側(cè)繼續(xù)循環(huán) } return left; }邏輯說(shuō)明ParseExpr先調(diào)ParseTerm因?yàn)槌顺齼?yōu)先級(jí)高于加減這步是文法層級(jí)決定的。while循環(huán)處理同優(yōu)先級(jí)運(yùn)算符的左結(jié)合每次構(gòu)造一個(gè)KIND_BIN_EXPR父節(jié)點(diǎn)把已有的left掛在child新解析出來(lái)的right掛在sibling。因?yàn)?TreeNode 是孩子兄弟結(jié)構(gòu)左操作數(shù)右操作數(shù)實(shí)際上是一條鏈而不是兩個(gè)獨(dú)立指針。這個(gè)循環(huán)不會(huì)產(chǎn)生左遞歸因?yàn)樗盐姆ɡ锏淖筮f歸改寫(xiě)成了迭代。參數(shù)說(shuō)明cur_token是全局當(dāng)前 TokenMatch斷言當(dāng)前 Token 類型等于參數(shù)并推進(jìn)到下一個(gè)。每個(gè)非終結(jié)符函數(shù)都必須在入口處至少調(diào)一次Match或NextToken否則可能死循環(huán)。3.3 if-else 懸空與同步恢復(fù)語(yǔ)法錯(cuò)誤后還能繼續(xù)往下跑if 語(yǔ)句是另一個(gè)高頻踩坑點(diǎn)。LL(1) 遞歸下降處理 else 懸空靠的是前看一個(gè) TokenTreeNode* ParseIfStmt() { Match(TOKEN_IF); TreeNode* cond ParseExpr(); // 條件表達(dá)式 Match(TOKEN_THEN); TreeNode* thenStmt ParseStmt(); // 必選分支 TreeNode* elseStmt nullptr; if (cur_token TOKEN_ELSE) { // 前看一個(gè) Token 決定分支 Advance(); elseStmt ParseStmt(); // 可選分支 } Match(TOKEN_END); return BuildIfNode(cond, thenStmt, elseStmt); }邏輯說(shuō)明解析完 then 分支后并不急著消費(fèi)TOKEN_ELSE而是看當(dāng)前 Token 是不是 else。是則額外解析一個(gè)語(yǔ)句不是則直接匹配END。這樣嵌套的 if-else 會(huì)自動(dòng)就近配對(duì)不會(huì)出現(xiàn)懸空 else。注意這里ParseStmt的調(diào)用位置決定了遞歸深度遇到復(fù)雜嵌套時(shí)要確認(rèn)每個(gè)函數(shù)都在推進(jìn) Token。語(yǔ)法錯(cuò)誤不能一遇到就停否則一個(gè)錯(cuò)誤只報(bào)一行后面全被屏蔽。常見(jiàn)做法是同步恢復(fù)Match失敗時(shí)從出錯(cuò)位置跳過(guò) Token直到遇到分號(hào)、END、ELSE這類同步記號(hào)再重新嘗試。test1.txt、test2.txt 這類輸入里故意放了幾處缺分號(hào)或括號(hào)不匹配輸出能看出行號(hào)能報(bào)到哪里這就是同步恢復(fù)在起作用。調(diào)試時(shí)重點(diǎn)看 ParseLL1.cpp 里所有return false或主動(dòng)Abort的地方錯(cuò)誤信息通常會(huì)標(biāo)unexpected token at line N。4. 語(yǔ)義分析與符號(hào)表symtable 與 SemAnalyzer 如何完成作用域檢查4.1 符號(hào)表設(shè)計(jì)層級(jí)、類型、偏移量怎么填語(yǔ)義分析的核心是符號(hào)表和類型檢查。symtable.h 里的符號(hào)條目通常包含名字、類型、層級(jí)和偏移量。作用域是一個(gè)棧全局在最底層進(jìn)入函數(shù)壓一層進(jìn)入內(nèi)層塊再壓一層。SNL 里同名變量能不能重復(fù)聲明就看棧頂那一層有沒(méi)有同名條目。一個(gè)可用的符號(hào)表?xiàng)l目結(jié)構(gòu)長(zhǎng)這樣struct Symbol { std::string name; // 變量名或函數(shù)名 int type; // 0int, 1boolean, 2array int level; // 0 是全局1 是第一個(gè)函數(shù)級(jí) int offset; // 局部變量在棧幀里的偏移或數(shù)組長(zhǎng)度 bool is_param; // 是形參就在函數(shù)入口登記 };符號(hào)表按層分組常見(jiàn)做法是std::vectorstd::vectorSymbol scopes。聲明變量時(shí)push_back到scopes[current_level]退出代碼塊時(shí)把整層pop_back。level字段不是必須的因?yàn)閺膕copes的下標(biāo)能推出來(lái)但保留它能讓調(diào)試信息更友好。4.2 聲明檢查和類型檢查落地一邊遍歷語(yǔ)法樹(shù)一邊查表語(yǔ)義分析從語(yǔ)法樹(shù)根節(jié)點(diǎn)開(kāi)始遞歸下降和語(yǔ)法分析不同它不再消費(fèi) Token而是消費(fèi) TreeNode。賦值語(yǔ)句的類型檢查是一個(gè)典型例子void CheckAssign(TreeNode* node) { Symbol* left FindSymbol(node-child-value); // 左值查符號(hào)表 if (left nullptr) { SemError(variable %s not declared, node-child-value.c_str()); // 未聲明變量 return; } int rightType ExprType(node-child-sibling); // 遞歸求右式類型 if (left-type ! rightType) { SemError(type mismatch at line %d, node-line_no); } }邏輯說(shuō)明FindSymbol從最內(nèi)層作用域向外層查因?yàn)閮?nèi)層同名變量會(huì)遮蔽外層。這和聲明重復(fù)檢查正好相反聲明查重只看當(dāng)前層類型檢查要看所有可見(jiàn)層。這兩個(gè)方向很容易搞反我的習(xí)慣是先讀懂函數(shù)名Find和CheckDecl分開(kāi)寫(xiě)不要把兩個(gè)語(yǔ)義混進(jìn)一個(gè)函數(shù)。數(shù)組下標(biāo)檢查是另一個(gè)加分點(diǎn)取 array 類型的長(zhǎng)度比較下標(biāo)表達(dá)式是否越界。課設(shè)不要求運(yùn)行時(shí)求值但下標(biāo)是常量時(shí)可以當(dāng)場(chǎng)報(bào)越界這類實(shí)現(xiàn)會(huì)明顯提升代碼完成度。4.3 三組測(cè)試樣本為什么錯(cuò)誤測(cè)試和正確測(cè)試同樣重要資源里的測(cè)試文件夾分三個(gè)這是最容易忽視的財(cái)富。lex_error_test 里是詞法錯(cuò)誤樣本比如非法字符、未閉合注釋sem_error_test 是能過(guò)語(yǔ)法但過(guò)不了語(yǔ)義的樣本比如未聲明變量、類型不匹配sem_correct_test 是應(yīng)該完全通過(guò)的合法程序。拿到源碼后最好按順序跑判斷標(biāo)準(zhǔn)很明確正確樣本輸出不能有錯(cuò)誤標(biāo)記錯(cuò)誤樣本每個(gè)都要在正確的行號(hào)上報(bào)錯(cuò)。如果你發(fā)現(xiàn)某個(gè)詞法錯(cuò)誤樣本被語(yǔ)法分析攔截了說(shuō)明詞法階段對(duì)非法字符沒(méi)有攔截干凈如果某個(gè)語(yǔ)義錯(cuò)誤樣本到最后都沒(méi)有報(bào)錯(cuò)說(shuō)明 SemAnalyzer 的某個(gè)檢查分支根本沒(méi)被走到。三組樣本一起跑能驗(yàn)證編譯器不只是好路徑上不崩潰。5. 常見(jiàn)問(wèn)題排查拿這份資源跑通時(shí)最容易翻車(chē)的五個(gè)點(diǎn)5.1 現(xiàn)象編譯成功但 Debug 目錄里沒(méi)有新生成的 Project2.exe按下 F7 編譯成功運(yùn)行卻發(fā)現(xiàn)跑的是舊 exe或者 Debug 目錄下根本沒(méi)有 exe。這個(gè)情況我遇到過(guò)不止一次。原因是工程被復(fù)制后.vcxproj 里的輸出目錄還指向原作者機(jī)器的絕對(duì)路徑比如D:\someone\Debug你編譯到別人目錄去了。解決方式很直接右鍵 Project2 屬性 → 常規(guī) → 輸出目錄改成$(SolutionDir)Debug\目標(biāo)文件名改成Project2.exe然后重新生成。改完后看輸出窗口的編譯日志確認(rèn)傳到的是你當(dāng)前工程的 Debug 目錄。5.2 現(xiàn)象源碼里明明有 if、while詞法分析卻全部識(shí)別成標(biāo)識(shí)符代碼里讀保留字表時(shí)第一個(gè)關(guān)鍵字永遠(yuǎn)匹配不上后面幾個(gè)正常。原因是 reserved_words.txt 用了 UTF-8 帶 BOM 編碼BOM 頭在文件開(kāi)頭加了一個(gè)不可見(jiàn)字符導(dǎo)致第一個(gè)單詞讀出來(lái)是\xEF\xBB\xBFif和代碼里的if字符串不同。另一個(gè)常見(jiàn)變體是 Windows 行尾的\r沒(méi)去掉行末單詞多一個(gè)回車(chē)符。解決方式是用 Visual Studio 的文件 → 高級(jí)保存選項(xiàng)把 reserved_words.txt 改成 UTF-8 無(wú) BOM同時(shí)養(yǎng)成習(xí)慣讀入每個(gè)單詞后做一次裁剪去掉非打印字符。從那以后我每次加載外部配置文件都會(huì)先打印一條調(diào)試信息看看第一個(gè)鍵到底是什么。5.3 現(xiàn)象語(yǔ)法分析跑到一半棧溢出或者直接死循環(huán)遞歸下降最常見(jiàn)的死循環(huán)來(lái)自左遞歸文法。比如你照著教科書(shū)寫(xiě)expr → expr term函數(shù)里第一句又調(diào)ParseExpr自己Token 還沒(méi)消費(fèi)就無(wú)限遞歸下去棧很快爆掉。解決方式是把左遞歸改寫(xiě)成迭代ParseExpr里先ParseTerm再用 while 循環(huán)吃掉和-這樣每個(gè)循環(huán)都會(huì)消耗一個(gè) Token永遠(yuǎn)不會(huì)原地打轉(zhuǎn)。另外還有一種隱蔽情況某個(gè)非終結(jié)符函數(shù)里漏了Match連續(xù)調(diào)用同一個(gè)函數(shù)兩次卻沒(méi)有推進(jìn)cur_token。排查技巧很簡(jiǎn)單在每個(gè)非終結(jié)符函數(shù)入口加一行斷點(diǎn)觀察cur_token的 type 有沒(méi)有變化沒(méi)變化的函數(shù)就是兇手。5.4 現(xiàn)象語(yǔ)義分析把內(nèi)層作用域的同名變量誤判成重復(fù)聲明內(nèi)層聲明了一個(gè)與外層同名的變量編譯器直接報(bào)重復(fù)聲明。原因是符號(hào)表沒(méi)有真正實(shí)現(xiàn)作用域棧進(jìn)函數(shù)前沒(méi)壓新層所有名字都堆在同一個(gè)全局表里。解決方式是把scopes.push_back({})放到函數(shù)入口退出前scopes.pop_back()。聲明查重只遍歷scopes.back()也就是當(dāng)前層查找符號(hào)則從back()往 0 方向遍歷。如果把這兩個(gè)方向?qū)懛淳蜁?huì)出現(xiàn)外層變量找不到、內(nèi)層同名變量全報(bào)錯(cuò)的情況。調(diào)試時(shí)可以在符號(hào)表每次 push/pop 時(shí)打印當(dāng)前作用域大小一眼就能看出棧有沒(méi)有正常退層。5.5 現(xiàn)象用新版 Visual Studio 打開(kāi)工程提示 v142 工具集未安裝Debug 目錄里的 vc142.pdb 已經(jīng)暴露了工程生成環(huán)境v142 是 Visual Studio 2019 的工具集。如果你用 VS2022 直接打開(kāi)會(huì)提示找不到 v142 生成工具編譯直接失敗。解決方式有三個(gè)任選其一裝 VS2019 的生成工具在項(xiàng)目屬性 → 常規(guī) → 平臺(tái)工具集里改成 v143也就是 VS2022 自帶工具集或者直接改 .vcxproj 文件里的PlatformToolsetv142/PlatformToolset為v143再重新加載工程。順手檢查一下 Windows SDK 版本如果機(jī)器上只有新 SDK把屬性里的 SDK 版本改成已安裝的那個(gè)別讓它自動(dòng)選擇錯(cuò)誤的版本。6. 最后一關(guān)用三組測(cè)試樣本把自己的交付變成證據(jù)分享一個(gè)能讓編譯器課設(shè)少走彎路的驗(yàn)收習(xí)慣。拿到這份資源后我先把 main.cpp 里默認(rèn)讀取的文件名改成從命令行參數(shù)讀取然后寫(xiě)一個(gè)腳本把三組測(cè)試樣本全部跑一遍而不是在 IDE 里手動(dòng)一個(gè)個(gè)改文件名。這個(gè)改動(dòng)很小收益卻很直接它可以自動(dòng)跑完幾十個(gè)樣本并用文件對(duì)比工具檢查輸出。# 以 test5.txt 為輸入把結(jié)果寫(xiě)到 out5.txt Project2.exe test5.txt out5.txt # 用 fc 對(duì)比實(shí)際輸出與期望輸出 fc out5.txt expected5.txt跑完后的檢查清單我每次都會(huì)過(guò)一遍lex_error_test 里的每個(gè)樣本是否都在詞法階段報(bào)錯(cuò)sem_error_test 里的未聲明變量和類型不匹配是否都有正確的行號(hào)sem_correct_test 里的合法程序是否一次通過(guò)且輸出語(yǔ)法樹(shù)結(jié)構(gòu)完整。如果某個(gè)樣本的錯(cuò)誤出現(xiàn)在錯(cuò)誤的階段比如詞法錯(cuò)誤被語(yǔ)法分析彈出那說(shuō)明詞法階段的攔截不夠優(yōu)先回 LexAnalyzer 找原因而不是在 ParseLL1 里打補(bǔ)丁。一開(kāi)始我只盯著正確樣本跑覺(jué)得能跑通就等于完成。后來(lái)某次調(diào)試一個(gè)數(shù)組下標(biāo)越界正確樣本全都正常語(yǔ)義錯(cuò)誤樣本卻一個(gè)都沒(méi)攔住我才意識(shí)到反面測(cè)試才是判斷編譯器脆不脆的關(guān)鍵。從那以后我每拆一份編譯器源碼都會(huì)先看它的錯(cuò)誤測(cè)試樣本有沒(méi)有被歸類好沒(méi)有的話自己補(bǔ)。這個(gè)習(xí)慣幫我避開(kāi)了很多正例全過(guò)、反例全崩的假完成。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
丁香五月婷婷动漫| 丁香狠狠色婷婷| 色婷婷五月综合激情中文字幕| 欧美三级黄色片久久| 99ri在线视频| 久久99热这里只有精品| 激情婷婷色小说| 超碰人人在线观看| 噼里啪啦在线观看免费完整版视频| 色丁香五月天射婷婷爱婷婷| 丁香五月婷婷大香蕉| www.minyis.com【JT】实力收量可预付QQ2101460746| 日日天天操| 色综啪啪啪啪啪啪| 99久久99综合| 久久久18| 日韩成人AV在线| 日日操夜夜爽天天天| 婷香狠狠爱五月| 国产67194| 五月婷婷丁香综合| 日日做天天操夜夜爽| 手机旧版看人妻1025| www.婷婷六月天| 98永久精品| 九九亚洲小视频| 国産精品| 婷婷五月色综合| 亚洲成人AV电影在线| 操日视频| 另类视频五月天| WWW丁香五月| 在线观看av网站| 日B日潘金莲BB| 色啪网| 天天插综合网| 99热精品在线观看| 99热成人在线观看| 天天日日爽| 人妻射精AV| 殴美日韩成人| 踪合专区啪啪| 人妻视频在线| 人妖色AV色综合| 亚洲字幕AV一区二区三区四区| 亭亭五月天成人| 草榴视频网| 亚洲12p| 五月丁香五月综合欧美| 五月婷婷色播| 黄桃AV无码免费一区二区三区| 人人舔人人| 色婷婷亚洲| 激情图片99| 久久五月天激情婷婷| 激婷网| 99精品偷自拍| 国外亚洲成AV人片在线观看| 免费无码毛片一区二区A片| 色婷婷小说网| 久久精品99国产精品日本| 五月丁香六月婷婷国产视频| 99热在线观看免费精品| 色五月婷婷大香蕉| 99re久久| 九月婷婷| 99在线资源视频| 草草夜夜操| 成人做爰A片免费看网站找不到了 噼里啪啦在线观看免费完整版视频 | 一级性感黄色内射视频| 欧洲亚洲免费视频9| 一起草aV| AV成人在线播放| 日本久久极品| 97干欧美| 激情五月婷婷欧美极品| 五月丁香激情婷婷| 超碰人人干| 9999三级片| 任你爽精品免费视频6| 影音先锋91| 日本天堂免费99| 色婷婷久久综合久色综| 久久六月天| 日韩另类| 色五月色情| 五月亭亭色| 日hao1区| 超碰三级秋霞| 五月天婷婷人妻| 激情五月,色播五月| 丁香六月婷婷五月婷婷| 激情五月婷婷六月丁香| 激情综合网五月激情| 丁香色五月 97干| 日产精品一线二线三线芒果| 91人人妻人人操| 成人色图情色成人网 www.5b5b5bcom 五月天| 天天爽天天操| 婷婷色情五月| 美女天天久久| 丁香五月天激情综合| 综合XX网| 99精品偷自拍| 青青草色在线视频观看| 激情网开心网| 超碰在线观看99| 久久99久久99久久99人受| 亚洲精品一区中文字幕乱码| 夜夜大香蕉婷婷丁香| 色色婷婷五月| 亚洲综合色丁香五月天| 丁香五月天婷婷激情| Av大香蕉| 99久久久精品| 久久网站观看免费欧洲国产| 色婷婷丁香五月| 69精品人人人人| 懂色av粉嫩av蜜臀av| 狠狠情色| 99re这里只有精品视频了| 天天舔天天摸视频| 91超级碰| 99热99这里有免费的精品| 婷婷国产成人| 99视频综合| 超碰在线超碰| 综合五月网| 天天插天天干| 超碰电影在线播放| 开心五月深爱五月婷| 免费精品99| 极品少妇XXXX精品少妇偷拍| 91avse| 九九久久综合网站| 色噜噜狠狠色综无码久久合欧美| 亚洲正能量欧美| 任你爽免费视频| 色了色综合| 日本欧美在线| JlZZJlZZ8JlZZ亚洲熟女| 久婷| 婷婷丁香激情综合色情| 久久网婷婷| 久热这里只有精品在线观看| 色5月婷婷| 超碰A V在线| 色色色色色日韩午夜激情 | 激情小说婷婷| 久久婷婷网| 婷婷综合视频| 久99久视频| 大香蕉人妻| 天天综合五月| 久久人妻www| 亚洲第一精品网站| 超碰在线视屏| 中国丰满熟女A片免费观| 少妇真实被内射视频三四区| 无码人妻一区二区一牛影视| 中文字幕,综合,91| 亚洲精品无码久久| 婷婷在线午夜| 色偷偷综合| 激情久久肏屄视频| 最近中文字幕大全免费版在线| 丁香婷婷基地| 人妻体体内射精一区二区| 午夜天堂一区人妻| 九九精品少妇| 激情五月综合色| 国产欧美日韩一区二区三区| 丁香五月婷婷在线| 色综合色综合网| 国外亚洲成AV人片在线观看| 久久影视婷婷五月| 久久永久网址| 丁香五月天啪啪a日本| 色在线99| 黄色片久久| 婷婷丁香综合在线| 九九热视频精品2| 26uuu亚洲欧美另类| 亚洲99热| 亚洲超碰在线| 天天色中文字幕女优AV| 色综合久久44| 精品无码99| 婷婷娌伦网| 五月丁香五月综合欧美| 香蕉婷婷| 国产性爱一级| 三级大香蕉网| 狠狠干狠狠色| 色婷大香蕉| 影音先锋一区| 婷婷五月四狠狠| Va另类视频| 99网99热| 91se精品国产| 五月婷婷激情综合在线| 五月天亭亭俺也| 九九伊人网| 国产午夜成人免费看片无遮挡| 97在线99| 精品五月视频婷婷在线观看| 婷婷综合激情| 情欲禁地| 区区久久妻| 婷婷 月 丁香| 91日韩在线| 97luluse| 99在线精品视频观看免费下载| 亚洲欧洲99| 天天插天天插天天插天天插| 国产黄色在线| 五月丁香激情片| 玖玖资源站蜜臀| 久久婷五月天| 在线观看免费狠狠色丁香香综合| 99re这里只有精品9| 欧美日韩AAAA| 秋霞AV吧| 天天狠狠插| 欧美综合五月丁香六月婷| 两性婷婷丁香五月| 五月婷婷狠天天色综合| 国产熟女一区二区三区五月婷| 久久HD| 黑人无码一区| 裸体美女丁香五月天。| 五月婷婷很很色| 久久黄A片| 99爱视频| 冬月かえでAV无码播放| 丁香美女主播视频在线观看| 久久综合久色欧美综合狠狠| www.sd-xiangsu.cpm| 99热青青草| 高清av在线国产| 午夜爱爱爱成人| 久久综合中文| 九九aV| 天天综合网在线| 五月天丁香婷婷网| 高清免费在线视频| 开心五月婷婷激情网| 99re久久| 9久久久久久久久久久| 精品人妻久久久久| 日韩有码一区| 亚洲情欲| 国产在线网址1| 天天操夜夜玩!| 色五月激情网| 五月婷免费视频久久久| 激情99| 婷婷丁香五月亚洲欧美| 天天婷婷综合亚洲亚洲| 毛v一区二区视频| 99视频网| www久久久久久| 五月婷婷免费看| 日韩乱轮AV| 99干视频| 久久99视频| 日本久久人| 色婷婷五月天小说网| 亚洲国产精品SUV| 蜜臀A∨在线水帘洞| 婷婷五月情| 成人看片网站| 丁香五月影院| 亚洲综合五月天综合| 99视频内射三四| 人人爽在线视频综合网| 国产毛片精品一区二区色欲黄A片| 日日干夜夜干| 狠狠爱夜夜| 人人播| 九九综合图片网| 色情婷婷五月天| 久青草大香蕉| www.黄色片-久久成人国产精品在线播放-999AV| 色噜久| 色色99| 91熟妇大香蕉| 青青草原伊人网| www.日本91| 婷婷五月激情欧美| 丁香六月色香蕉视频| 狠狠干狠狠干| 99热这里只有精品 搜| 97涩婷婷婷婷基地| 五月丁香六月婷婷网站| 97婷婷狠狠久久综合9色| 曰日爽日日操| 五月停停色色丁香| 天天做天天爱| 丁香六月婷婷综合啪啪| 亚洲偷| 99er精品视频| 五月婷婷五月天| 丁香五月中文字幕| 久久婷婷五月综合激情国产| 亚洲欧美国产A片免费观看| 97碰人人操| 久99久视频| 色五月激情综合网| 五月天六月婷婷电影| 色婷婷丁香五月| 在线天堂9| 九九热AV| 五月丁香六月婷婷综合网站| 久久激情视频| 婷婷综合仓库中文| 色五月婷婷av| 涩涩五| 欧美123区免| 9l视频自拍九色9l视频自拍九色9l社区| 大香蕉色婷婷伊人在线| 精品99视频| aaaaa黄色| 日本久久99| 精品色色色| 色综合大香蕉| 久久性爱网| 久色五月丁香视频| 另类图片五月天婷婷| 狠狠综合久久综合| 久久久久9999| 丁香六月婷婷| 久久精品性爱视频,| www.色多多婷| 天天日,天天插| 色播丁香婷婷五月激情| 婷婷中文字幕网| 五月丁香婷婷综合| 精品人妻伦一二三区久| 伊人六月丁香婷婷| 色婷婷www| 操91| 美女精品一级不卡视频| 伊人大香五月天| 色色国产| 五月婷婷丁香五月亚洲色| 亚洲欧美国产A片免费观看| 亚洲国产99| 婷婷丁香五月高清| 玖玖婷婷精品| 中文字幕在线视频播放| 日本人妻A片成人免费看片| 婷婷五月天激情文学| 另类的婷婷| 91热久| 婷婷俺去也| 激情开心五月婷婷| 99综合免费视频| 九九99偷拍视频| 激情深爱五月天| 狠狠草在线观看| 狠狠干总合| 婷婷五月综合色拍| 久久久国产精品黄毛片| 亚洲国产99| 婷婷五月天电影网| 五月丁香婷婷激情澎湃四射| 天天日人人| 91热在线| 欧美三日本三级少妇三99| 婷婷激情久久| 思思久久99热只有频精品66| 播播网色播播| 婷婷综合在线| 久久人妻乱| 五月婷婷久久网| 影音先锋按摩| 激情性爱网站| 日韩三级视频一区二区| 五月丁香色婷婷| 天天日夜夜草进麻麻的子宫| 色播丁香五月婷婷操:屄| 九九狠狠干| 五月天激情黄色网址| 99久久99综合| 午夜69成人做爰视频| 久色视频| 99热自拍| 婷婷性色| 婷婷婷婷色| 99在线观看精彩视频| 婷婷色五月丁香六月欧美啪| 96精品久久久久久久久| 久久婷婷色综合| CAOBIBI| 久久9情免费| 99精品国产乱码久久久人妻| 极品人妻VIDEOSSS人妻| 99综合久久| 日本三级中国三级99| 中文av网| 亚洲婷婷基地| 成人在线网址| www久久久| 国产97色在线| 婷婷精品| 狠狠狠狠狠狠| 色婷婷在线视频| 亚洲五月婷婷| 99国产精品久久久久久久久久久| 5月婷婷激情在线| 久久这里只| 狠婷婷五月| 激情丁香五月婷婷啪啪| 5月婷婷6月六月丁香| 99热成人在线观看| 五月婷婷亚洲| 午夜爱爱网站| 久久婷婷五月| 婷婷五月天久久| 1024国产| 91九九| 天天日天天色| 国产精品A成V人在线播放| av国产精品| 日韩在线观看网址| 婷婷五月激情视频网| 婷婷丁香综合| 99久久9| 久久久久久久久18久久| 久久久五月天婷婷成人网| 丁香操逼| 91精品无码久久久久久五月天| 久色大香蕉| 国产精品岛国片在线观看免费| 99热热热99精品丁香| 国产偷人爽久久久久久老妇APP| av狠狠操| 99久久婷婷国产综合| 色色亚洲视频| www.91热久久| 国产亚洲av片| 肏屄色播伊人97婷婷| 天天爱天天做天天日| 99久久国产宗和精品1上映| 色婷婷色情| 五月婷婷五月丁香综合| 狠狠五月丁香色婷| 激情六月天婷婷| 在线播放成人网站| 成人无码免费一区二区中文| 九九人人看| 色婷婷久久久| 丁香五月激情六月综合| 婷婷五月天网| 性做久久久久久久免费看| 久热A片| 综合一区二区三区| 婷婷久久大香蕉| 日韩一66精品| 婷婷五月天国产在线播放| 超碰激情网| 另类少妇人与禽zOZZ0性伦| 玖玖99婷婷| 久久91久久91色欲精品| 丁香香五月激情免费视频| 五月精品免费XXX| 色玖玖综合| 99无码精品| 97狠狠碰| 99久久超级| WWW久| 激情五月图| 婷婷五月天在线观看第二页| 婷婷色婷婷| 噢美99| 午夜婷婷久久 | 一起草Av| 91人妻视频| 色爱综合网| 亚洲网视屏| 影音先锋高清无码资源网| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 免费亚洲婷婷| 国产小精品| 丁香密臀AV激情网| 亚洲欧洲色色| 亚洲婷婷五月天| 欧洲色区| 日本一道久久| 五月开心色| 天天操夜夜操| 人人澡玖玖一| 五月天色丁香| 超碰亚洲欧美| 精品在线| 亚洲婷婷91丁香| 国产FREESEXVIDEOS性中国| 99热色婷婷| 亚洲婷婷丁香五月视频| AA丁香综合激情| 99热在线中出| 九九精品这里只有| 色播六月| 中文字幕成| 丁香色播五月天| 97香蕉碰碰人妻国产欧美| 色色综合网。| 99ri6在线视频| 青青草原爱爱网| 99热99思午夜精品| 狠狠色婷婷777| 玖色色综合| 亚洲婷婷激情888精品久| 五月天伊人网| 99爽视频| 激情丁香五月天图片| 亚洲日韩一页精品发布| 色婷婷色五月另类综合| 久9免费视频| 五月婷婷激情在线| 草婷婷在线| 9久久精品| 婷婷五月综合在线| 五月停停999| 久综合4| 欧韩性爱| 丁香五月AV| 91婷婷在线| 五月丁香婷婷网在线在线| 天天日日| 丁香六月天堂| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 91精品啪| 久久精品小视频| 色婷婷电影网| 99'无码| 亚洲免费婷婷| www.久久综合| 九色91视频| 丁香玖玖| 涩综合网| 91精品婷婷国产综合久久| 色情久久久| 婷香五月激情视频| 网色99| 8区视频在线| 色婷婷香蕉在线| 婷婷六月激情丁香| 五月天色色无码| 777精品成人a v久久| 国产成人片| 天堂婷婷五月在线| 国产亚洲精品AAAA片APP| 婷婷啪啪| 婷婷五月天色色| 日韩砖区| 伊人婷婷大香蕉在线| 开心五月婷婷在线| 91av无码| 丁香久久综合| 色婷婷狠狠久久综合五月 | 日本一级| 亚洲久热| 青柠影视免费高清电视剧| 五月婷婷色综图片| 五月丁香六月激情| 中文AV网站| 婷婷五月丁香超碰| 欧美久热| 成人va在线观看视频| 婷婷五月天福利| 天天操夜夜玩!| 欧美五月婷婷综合| 天天色色婷婷| 丁香综合日产精品久久| 99热99热在线| 婷婷五月天影院| 丁香激情网| 久热久色| 婷婷五月丁香基| 99re思思热久久| 99热亚洲精品| 这里只有精品视频在线| 丁香五月欧美激情| 色99热| 丁香六月综合激情| www.热99热| 色色五月天com| 天干夜夜操| 激情六月丁香| 婷婷五月天丁香花| 色婷五月天激情| 综合玖玖偷拍| 日本色婷婷| 99热99re6国产在线播放| 久久九精品| 狠狠色成人影片| 激情丁香五月综合| 亚洲中文字幕网| 激情伊人六| 人妻在线网站| 97干在线视频| 开心婷婷丁香五月| 97久久超碰| 99热网精品| 九九无码| 欧美日综合| 天堂伊人干| 丁香婷婷色色| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 男女啪啪做爰高潮无遮挡| 丁香五月天激情网| 在线观看视频1区| 91狠狠综合网| 99热欧| 超碰国产一区| 性色五月天| 婷婷亚洲天堂| 97人人操人| 99热这里只有精| 五月天亚洲最大成人| 一起肏在线视频| 五月丁香| 欧美大香蕉视频| 五月婷婷无码专区| 操人91| 99ree6| 丁香婷婷网| 激情五月天之五月婷婷| 国产1区2区3区| 色婷婷很很十八禁| 五月丁香啪啪啪| 思思热在线观看| 狠狠色婷婷7| 色吧网综合| 激情六月天| 五月丁香在线婷婷美女| 五月丁香激情综合啪| 五月婷婷啪啪网| 婷婷丁香五月天在线| 99精品人人| 丁香av网| 亚洲色无码A片一区二区麻豆| 综合一本道| 日本www五月婷婷| 久久久久久久久久久44| 99激情| 五月天激情啪啪| 99热99这里只有精品| 涩综合在线 | 国产精品天天狠天天看| 婷婷五月激情图片| 激情五月丁香婷婷| 99热精品10| 大香蕉五月天婷婷| 久热超碰91| 五月婷婷精品视频| 亚洲第一成人无码A片| 开心婷婷五月天激情网| 色婷婷五月网| 伊人婷婷大香蕉| 激情五月婷婷啪啪| 玖玖热99| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 日韩在线观看亚洲| 国产偷人妻精品一区| 五月天婷婷xxx| 91色五月| yellow视频在线观看91| 98永久精品| 五月香蕉网| 依人大香蕉在钱1| 久九男女天堂| 五月丁久久| 色婷婷www| 亚洲中文字幕网| 99在线69| 欧美激情综合| 丁香六月色婷婷综合| 久久精99| 精品热九九| 五月丁香综合精品欧美| 免費观看aV在线网址| 亚洲精品一区中文字幕乱码| 国产精品第一国产精品| 风流少妇A片一区二区蜜桃| 色吧五月| 天天综合在线网| 五月天婷婷在线播放免费| 欧美成人网婷婷综合在线| 色婷婷久久综合久色| 性五月激情| 色婷激情网| 色色色色色日韩午夜激情| 西西4r午夜剧场| 亚洲av综合在线| 狠狠色婷| 无码一级片| 亚洲操B视频| 五月天婷综合| 久久精品日| 97色综合| 欧美色碰| 无码一级片| 天天日日| 人人干av| 能直接看的av网站| 中文字幕永久在线| 九九久久精品| 激情六月天| 国产精品天天狠天天看| 亚洲传媒在线观看| 婷婷五月激情综合啪啪| 婷婷免费无马| 婷香五月网在线| 激情五月综合六月丁香婷婷狠狠干| 最新日韩久热免费视频看看| 九色91视频| 综合五月草 | 亚洲av骚货| 色色COm| 99视频这里有精品| 久久98| 色综合色色色| 激婷网| 亚洲精品成人片在线播| 国产亚洲99久久精品| 国产亚洲精品AAAAAAA片| 一级内射毛片| av在线中文| 台湾综合丁香五月蜜桃| 99精品22| 丁香婷婷啪啪| 久久综合九九| 不卡的AV网站| 丁香婷婷综合激情五月色| 精品婷婷五| 开心五月丁香婷婷| 色香久久| 99国产精品久久久久久久久久久| 丁香五月色网| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 偷偷狠狠久久婷婷五月天| 久久婷婷五月综合色播| 色婷婷五月天天天天天| 这里只有精品69| 任我肏| 影音先锋91网站在线观看| 丁香五月婷婷天堂大香蕉| 五月丁香激情综合啪啪| 高清激情av在线观看| 五区毛片七区毛片| 99久久9| 99re视频在线精品| 天天久久66xxx| 狠狠做五月婷婷| 激情六月色| 激情开心五月天| 丁香五月天婷婷91| 五月婷婷视频啪啪美女| 婷婷激情六月视频| 偷偷与邻居做爰完整视频| 久久婷婷激情四射五月天| 91精品婷婷国产综合| 激情伊人五月婷婷久久| 日本一级一片免费视频| 婷婷伊人五月天| 亚洲成人免费在线| 五月开心色| 婷婷五月天丁香| 任你搞在线观看视频| 亚洲第一色色色色| 99色 色| 超碰人人色| 丁香六月| 色婷婷五月天小说| 情色五月天网站| 色婷婷五月综合| 丁香五月婷婷亚洲另类| 国产26uuu视频| 婷婷六月综合激情| 99久在线精品| 婷婷五月天性爱视频| 亚洲午夜AV| 五月丁香六月欧美综合网站| 亚洲蜜桃精久久久久久久久久久久| 四季8848精品成人免费网站| 99精品综合在线| 久久6这里只有精品| 99热综合网| 99在线观看精品视频| 啪啪色区| 五月天久久丁香| 色吧综合网| 激情五月综合网最新| 激情黄色小说五月天| 婷婷五月丁香五月| 婷婷五月天综合网| 久久性爱视频| 90色免费视频| 激情五月天之五月婷婷| 婷婷婷婷婷婷婷婷| 亚洲无码性爱| 色九九九九| 天天做天天摸| 色色色色色色综合网| 深夜婷婷五月丁香| 伊人五月综合网| 国产在线网址1| 色婷婷国色天香综合| 色婷婷亚洲| 91综合在线视频| 五月色综合网| 粉嫩AV久久一区二区三区| 影音先锋91| 婷婷色综合| 99热国产婷婷| 亚洲激情综合| 国产99久| 丁六月激情| 午夜69成人做爰视频| 丁香婷婷五月天色综合| 久婷婷婷| 色噜久| 99无码视频| 婷婷色色欧美| 少妇性按摩无码中文A片| 九九99精品视品| 久色网五月| WWW色五月| 狠狠色婷婷六月激情网| 久久99大| 婷婷五月天激情五月天深爱五月天| 98色花堂98t.R| 久久精品夜色噜噜亚洲a∨| 亚艹艹| 日本nghangse中文字幕| 丁香五月六月综合激情| 日本在线99| 日韩在线9| 精品五月花| 99热最新| 97极品在线| 丁香综合网| 超级碰碰91| 综合啪啪| 中文资源在线a| 91超级碰碰碰| 丁香六月天婷婷在线| 天天干天天干天天干天天干天| 9|在线观看视频| 99久久极情精品一区| 超碰国产在线观看| 欧美在线97| 久久免费精品小视频| 超碰在线中文字幕| 操97在线观看| 婷婷丁香色五月久久88| 成人午夜在线视频| 九九婷婷综合| 在线观看五月婷婷网| 疯狂做受XXXX高潮A片动画| 另类小说五月天综合网| 久久综合香蕉国产国产蜜臀AV| 婷婷五月丁香六月| 91狠狠综合久久| 激情五月婷婷欧美极品 | 亚洲XX网| 日本精品99网站| 超碰在线视屏| 中文字幕欧美日韩VA免费视频| 色很很96| 色五月av| 色五月综合激情| 国产免费一区二区三区三州老师F1F1.CC| 婷婷六月五月天综合| 99在线看视频| 九九在线热九九在线热99热| 五月综合色播播丁香婷婷| 伊人综合婷婷| 日韩另类| 婷婷色情五月| 综合久久影院| 少妇高潮呻吟A片免费看软件| 99rewww| 99视频热99| 五月婷婷深深爱| 色婷婷狠狠爱| 九九爱激情| 无码99| 激情五月图| 色玖玖网| 九九热欧美| 色婷婷AV五月天| 日本操片| 综合激情五月丁香| 五月综合激情视频| 碰碰操91| 色色婷| 六月婷婷俺也去| 99资源人人| 五月天激情久久| 五月社区婷婷激情| 91九色超碰| 婷婷色在线视频| 插少妇综合网| 九九热大香蕉| 欧美色激情四射| 影音先锋偷偷色男人站| 婷婷国产日本欧美| 色色色色色日韩午夜激情 | 91婷婷色| 在线视频区| 伊人久久五月天| 免费五月婷婷网| 婷婷四月 成人 狠狠干| 婷婷五月丁香成人网| 99热这里只有精品青草| 色在线视频网2025| 超碰免费人人| 9 大屁股在线视频精品| 日本三级大片| 91久久五月天| 色五月婷婷婷婷| 超碰在线91| 久久婷婷五月天丁香| 丁香六月啪| 色99网| 久久五月婷婷开心网| 天天色凹凸| 免费观看18视频网站| 丁香九月综合激情| 五月丁香做爱视频| 五月婷婷亚洲天堂97色婷婷| 五月婷婷丁香在线视频| 婷婷丁香视频在线观看免费| 亚洲三A| 99欧美| 五月丁香六月色| 五月丁激情| 欧美操人| 99热99精品| 91在线观看www| 中字幕视频在线永久在线观看免费 | 六月婷欧美| 亚洲日韩久久婷婷伊人| 五月婷婷综合视频| 色婷五月天| 欧美成人精品A片免费一区99| 一本久道综合99| 婷婷六久久| 国产成人精品一区二三区熟女在线| 五月天综合图片| 怡红院院久久| 99热热九九| 99热在线爱| g00d人体西西| 婷婷激情五月天激情小说| 欧美日本免费一道免费视频| 97啪啪| 日本天天操| 久久久18| 97热视频| 亚洲激情婷婷| 婷婷五月亚洲一本在线丁香| 亚洲久久婷婷| 五月综合777| 国产在线中文字幕| 激情性爱五月| 视频久久9| 久久女人九九| 色色色五月| 色综合网页| 女人高潮内射99精品| 五月婷婷深深爱| 久久总和99| 99热资源在线| 九九色99| 色欲天天综合网| 亚洲精品视频在线播放| 大香蕉啪啪| 丁香色综合| 久热这里只有精品99re| 色色五月天激情| 99爱在线免费视频| 亚洲激情网| 五月婷婷六月天| 狠狠狠狠狠| 亚洲V国产V欧美V久久久久久| 武则天精品久久| 激情综合网五月婷婷| 99热首页| 成人日韩欧美| 在线99热| 北京熟妇搡BBBB搡BBBB| 大战熟女丰满人妻AV| 另类视频在线| 99日韩| 国产SUV精品一区二区6| 成人在线观看精品| 久久成人亚洲欧美电影| www。五月,com| 九月婷婷激情久久| 婷婷综合日本| 99热免费精品| 无码九九| 激情婷婷丁香色五月综合| 日韩激情人伦人| 丁香五月天天高清在线| 天天婷婷| 久久与婷婷| 激情綜合W W W,激情五月天| 99久久国产宗和精品1上映| 伊人丁香在线| 国产婷伊人| 久久五月天丁香花| 九九干视频| 婷婷综合网| 人人人人人人人人人草| 激情五月色综合| 中文久久婷婷| 日韩另类| 久久五月婷天天干| 精品久9| 婷婷日韩| 91九色小视频| 亚洲色激婷| 丁香五月天天高清在线| 色婷婷88| 99精品久久| 久久精品日| 亚洲愉拍99热成人精品| 色五月天.con| 丁香网五月天激情| 色五月婷婷91| 99精品视频在线观看| 国产精产国品一二三在观看| 久久亭亭电影| 色情五月综合婷婷| 潘金莲AAAAAAAAAA| 一本色道久久88加勒比—| 精品久色| 天天射夜夜骑| 九九综合色综合| 日本久久99| 狠狠 久久| 婷婷久久五月| 五月丁香亚洲综合网| 丁香九月婷婷色| 91超碰在线播放| 日本欧美成人片AAAA| 69精品人妻不卡视频| 激情床戏| 开心五月丁香啪| 亚洲无线视频| 欧美A级成人婬片免费看理论| 天天日天天插| 激情久久丁香| 色婷婷欧美在线| 天天干天天干天天干| 久久婷五月婷| 波多野结衣成人作品在线| 人妻av在线| 色爱99| 九九在线视频| 中文字幕在线日亚州9| 丁香五月婷婷老师网站| 国产亚洲99久久精品| 婷婷五月六月激情| 五月丁香啪| 91日婷婷在线| 激情深爱婷婷网| 色五月大| 东京热五月婷婷| 极品色丁香| 开心激情网五月天| 欧美三级A做爰在线观看| 激情宗合 激情宗合| 欧美99热| 伊人激情综合网| 第四色色色色色丁香五月天| 亚洲小视频免费看| 啪啪黄页网| 综合久久激情久久| 亚洲激情图文小说| 在线观看av网站| 丁香六月婷婷综合缴| 日产精品久久久久久久蜜臀| 五月天婷婷青青草| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 色爆五月| 成人av免费观看| 五月婷婷啪啪啪啪| 婷婷综合激情| 91精品久久久久久| 五月丁香成人视频| 东京热五月婷婷| 天天做天天爱天天摸| 婷婷婷久久久| 九九Y精品热播| 色999五月色| 丁香五月婷婷影院| 欧美日韩成人一区二区| 狠狠色噜噜| 亚洲成人在线在线| WWW·天天操·视频?| 99久久综合网| 哇嘎成人久久| 亚洲色色香蕉| 国产一区二区av免费| 99激情视频热| 婷婷五月色播放| AV在线观看网站| 婷婷五月婷婷| 日本全黄一级999| 五月丁香色婷婷熟女| 中文字幕日产A片在线看| 婷婷啪啪| 欧美一级色| 亚洲综合在线播放| 天天综合 99久久婷婷| 婷婷五月天性爱视频| 激情综合六月| 九九热青草| 天天日人人| 伊人久久婷婷| 丁香六月天AV| 99热这里只有精品免费| 91精品久久久久久综合五月天| 婷婷射图五月天| 亚洲国产精品VA在线看黑人| 高潮毛片遮挡费高一百度| 九九99免费理论| 久久婷婷国产| 亚洲婷婷91丁香| 91无码高清| 丁香婷婷性久久| 色婷在线视频| 激情都市丁香婷婷| yiqicaoav| 丁香五月中文字幕色播| 91精品丝袜久久久久久久久粉嫩| www.久久66| 综合五月婷婷| 丁香五月婷婷五月天在线| 成年人丁香五月| 99热综合在线| 亚洲日日日| 色婷婷中文字母五月丁香| 五月激情小说| 五月丁香WWW| 大战熟女丰满人妻AV| 五月婷色丁香| 五月丁香| WWW.桔色成人.COM| 97操资源婷婷| 深爱激情六月天| 夜色综合网| 成人综合视频在线| 在线日韩视频| 五月婷婷综合网| av九九| 激情小说五月天中文字幕| 69超碰在线| 99精品爱| 丁香五月 激情文学| 久热免费| 国产日韩av片| www久久久| 五月视频日本免费观看| 国产五月视频| 五月开心激情| 成人av观看| 色五月婷婷久久| 欧美色色色| 伊人在线视频| 丁香五月五月婷婷五月天激情四射| 欧美日综合| 婷婷丁香五月噜噜噜| 九九综合网| 99riAV国产精品视频| 无码色色色色色| 嫩草AV久久伊人妇女超级A| 亚洲成人乱码av网站| 伊人五月天久久| 欧洲不卡视频| 天天干狠狠操| 婷婷色色宗合网| WWW.99视频| www98日本小时间到了| 亚洲综合在线视频| www色五月天| 91九色欧美| 午夜丁香婷婷| 国产精品五月天婷婷| 久草性爱| 丁香五月激情综合| 思思 热 99| 综合五月婷婷| 国产日产亚系列精品版优势 | AV在线大香蕉| 婷婷色丁香五月| 涩涩五| 中文字幕成人日韩| 久热 91| 人人干天天操五月丁香| 996热re视频在线观看视频| 亚洲综合在线视频| 先锋av性爱成人电影| 色五月色图| 国产精自产拍久久久久久蜜 | 丁香五月天AV在线| 亚洲中文字幕在线观看| 五月天开心激情综合网| 丁香五月精品视频| 激情综合视频| 婷婷色综合| 婷婷五月六月丁香综合| 777久久久| 玖玖在线视频| 久久人妻www| 丁香五月婷婷亚洲色图| 人人综合色| 国产成人网站在线观看| 久久五月天激情| 狠狠综合| 丁香五月婷婷综合啪啪| 成人网站在线观看视频| 这里只有国产精品在线| 欧美性爱一区| 亚洲狠狠终合停停终合| 国产操碰| 激情伊人五月天| 五月丁香拍拍激情综合| 婷婷色片| 丰满人妻妇伦又伦精品国产| 欧美99视频| 婷婷五月天激情综合深爱激情| 色99综合色88| 免费黄色视频网址| 五月激情久久| 新99色色色色色色| 99在线观看精品| 婷婷5月久久综合网站| 色播五月婷婷| 思思热精品在线| 狠狠干五月丁香| 超碰在线成人| 一区二区你懂的| 无码人妻少妇色欲AV一区二区| 成人五月天视频播放| 91在线日本| 日韩人妻在线播放| 成人日韩欧美| 五月婷婷性爱| 思思久热6| 丁香婷婷少妇| 熟女色专区| 婷婷丁香五月综合久久| 天天天天操| 丁香六月综合激情| 久久精品视频9| 亚洲五月婷婷在线| 99在线视频色版| 1024操逼视频|