freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

編譯原理課程設(shè)計(jì)-for語(yǔ)句的翻譯程序設(shè)計(jì)簡(jiǎn)單優(yōu)先法、輸出三地址碼-在線瀏覽

2024-07-31 12:19本頁(yè)面
  

【正文】 式的語(yǔ)句構(gòu)成的序列: x:=y op z 其中, xyz 為名字、常數(shù)或變量; op 代表運(yùn)算符。} 三地址碼輸出為 1 i=0 2 goto 5 3 i++ 4 if i10 goto5 else goto7 5 j=b+c 6 goto3 7 end 5 編譯系統(tǒng) 的概要設(shè)計(jì) 單詞種別: struct Token { //單詞種別 int num。 }。 //如果是狀態(tài)保存格子里的內(nèi)容 string action。 武漢理工大學(xué)《 編譯原理 》 課內(nèi)實(shí)踐 說(shuō)明書 7 本系統(tǒng)分為四大模塊:詞法分析模塊、語(yǔ)法分析模塊、語(yǔ)義分析模塊以及主控模塊,其中主控模塊負(fù)責(zé)協(xié)調(diào)前三個(gè)模塊。 詞法分析模塊 void LexicalScanner() { //詞法分析 FILE *fp。 errno_t _err2 = fopen_s(amp。 if (fp == NULL) //取當(dāng)前目錄下的 文件的第一個(gè)字符 { fprintf(stderr, error opening!\n)。 } do{ ch = fgetc(fp)。$39。 //作為文件結(jié)尾 else if (ch == 39。) scanner(fp)。 scanner(fp)。$39。 strings[arrTop] = (1,$)。 = 。 tokens[tokenTop] = t1。i 20。 } cout endl。 string product2 = F1stepE2。 string product4 = F3doS1。 for (int i = 0。i++) { for (int j = 0。j++) { priorityTable[i][j] = 2。 (mapstring, int::value_type(S, 0))。 (mapstring, int::value_type(F2, 2))。 (mapstring, int::value_type(for, 4))。 (mapstring, int::value_type(until, 6))。 (mapstring, int::value_type(i, 8))。 (mapstring, int::value_type(E1, 10))。 (mapstring, int::value_type(E3, 12))。 (mapstring, int::value_type(S1, 13))。 priorityTable[map_[for]][map_[i]] = 0。 priorityTable[map_[=]][map_[E1]] = 0。 priorityTable[map_[step]][map_[E2]] = 0。 priorityTable[map_[until]][map_[E3]] = 0。 priorityTable[map_[do]][map_[S1]] = 0。 priorityTable[map_[do]][map_[F2]] = 1。 priorityTable[map_[do]][map_[for]] = 1。 priorityTable[map_[]][map_[F1]] = 1。 priorityTable[map_[]][map_[F3]] = 1。 priorityTable[map_[E1]][map_[step]] = 1。 priorityTable[map_[E3]][map_[do]] = 1。 for (int i = 0。i++) { for (int j = 0。j++) { cout priorityTable[i][j] 。 } int i = 0。 //cout () endl。 } if (priorityTable[map_[()]][map_[tokens[i].()]]==2amp。!strcmp(tokens[i].lexem(), )) { cout error endl。 //error } else { //cout enter endl。 string top = ()。 ()。 tempStr = top + tempStr。 //cout tempStr endl。 system(pause)。 cout i=E1 endl。 } if (!strcmp((), ())) { (F2)。 } if (!strcmp((), ())) { (F3)。 } if (!strcmp((), ())) { (S)。 endl goto AGAIN end。 } } //cout tempStr endl。 //i++。 //詞法分析 LexicalScanner()。 //語(yǔ)義分析 Semantic()。 cout translation endl。 } 6 詳細(xì)的算法描述 武漢理工大學(xué)《 編譯原理 》 課內(nèi)實(shí)踐 說(shuō)明書 12 語(yǔ)法分析與語(yǔ)義分析同步完成,在規(guī)約的過(guò)程中,每使用一個(gè)產(chǎn)生式則調(diào)用其對(duì)應(yīng)的動(dòng)作 武漢理工大學(xué)《 編譯原理 》 課內(nèi)實(shí)踐 說(shuō)明書 13 7 軟件的測(cè)試方法和測(cè)試結(jié)果 編譯調(diào)試環(huán)境 : Visual Studio 2021 Community 程序語(yǔ)言 : C++ 測(cè)試用例: 采用如下形式雙重循環(huán)作為測(cè)試用例之一 首先輸出的是詞法分析結(jié)果: 武漢理工大學(xué)《 編譯原理 》 課內(nèi)實(shí)踐 說(shuō)明書 14 然后是語(yǔ)法以及語(yǔ)義分析結(jié)果: 8 本設(shè)計(jì)的評(píng)價(jià)、特點(diǎn)、 本系統(tǒng)可以完成 Fortran 語(yǔ)言的 For 語(yǔ)句的語(yǔ)法制導(dǎo)翻譯,在詞法分析的基礎(chǔ)上先后進(jìn)行語(yǔ)法分析和語(yǔ)義分析。例如,詞法分析可以進(jìn)一步改進(jìn)成為詞法分析器的自動(dòng)生成器。 特點(diǎn): 本系統(tǒng)可以完成 Fortran 語(yǔ)言的子集( For 語(yǔ)句)的制導(dǎo)翻譯,但是沒(méi)有優(yōu)化過(guò)程,符號(hào)表的控制也很簡(jiǎn)單,很多代碼采用了硬編的方法,改變文法將導(dǎo)致巨大的工作量。 9 收獲與體會(huì) 經(jīng)過(guò)這次課內(nèi)實(shí)踐,使我更加扎實(shí)的掌握了有關(guān)編譯原理方面的知識(shí),在編寫程序的過(guò)程中遇到了許多問(wèn)題,但經(jīng)過(guò)一遍遍的調(diào)試終于使得程序可以順利運(yùn)行。 過(guò)而能改,善莫大焉。最終的檢測(cè)調(diào)試環(huán)節(jié),本身就是在 踐行“過(guò)而能改,善莫大焉”的知行觀。在今后發(fā)展和學(xué)習(xí)實(shí)踐過(guò)程中,一定要不懈努力,不能遇到問(wèn)題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問(wèn)題所在,然后一一進(jìn)行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上武漢理工大學(xué)《 編譯原理 》 課內(nèi)實(shí)踐 說(shuō)明書 15 劈荊斬棘,而不是知難而退,那樣永遠(yuǎn)不可能收獲成功,收獲喜悅,也永遠(yuǎn)不可能得到社會(huì)及他人對(duì)你的認(rèn)可! 回顧這次課內(nèi)實(shí)踐,是一個(gè)痛并快樂(lè)的過(guò)程,在構(gòu)造簡(jiǎn)單優(yōu)先文法的矩陣時(shí)遇到了不少困難,花費(fèi)了許多時(shí)間,但是當(dāng)成功構(gòu)造出來(lái)時(shí)那種喜悅也是難以言 表的。 武漢理工大學(xué)《 編譯原理 》 課內(nèi)實(shí)踐 說(shuō)明書 16 10 核心代碼 include include include include include include string include iostream include sstream include fstream include vector include stack include map using namespace std。 //定義優(yōu)先級(jí)表 1 為小于, 0為等于, 1為大于 int priorityTable[15][15]。 //詞素(單詞的值) string lexeme。 struct Term { //1為狀態(tài), 2 為產(chǎn)生式 int kind。 }。 ~SyntaxScanner()。 stackchar, vectorcharChStack。 }。//保存結(jié)果的文件 Token tokens[100]。//指向 token 序列的尾部 char TOKEN[30]。 extern int lookup(char*)。 extern void report_error(void)。 int arrTop = 0。另外, extern 也可用來(lái)進(jìn)行鏈接指定 */ int lookup(char *TOKEN)
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1