版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、for循環(huán)語句翻譯遞歸下降法輸出三地址碼/#define MAX 100#include#include#includechar strMAX;char ch;int turn;char strTokenMAX;int kind;int n=0;/存放strtoken元素的個數struct Word/結構體存放單詞(int sort;char wordMAX;/ 存放 strtoken的內容;/recordx=new Word;Word *record12;/放所有識別出來的單詞,分別存放他們的編號以及字符串,x是其下標/ 詞法分析 /int buffer()/載入(int0;cout輸入程序
2、,以“#”作為結束標志。endl;for(int n=0;n=MAX;n+)(for(;istri不可用,用C語言讀入字符。if(stri=#)break;/如果尾數為識別碼#,則表示程序讀完,跳出循環(huán).break;return(i); bool IsLetter(char ch)/ 判斷是否是字母(if(ch=65&ch=97&ch=48&ch=57)return(true);elsereturn(false);char GetChar(int i)/ 讀取字符(char ch;ch=stri;return(ch);char GetBC(char ch)/判斷是不是空格或者換行,如果是,直接
3、讀取下一個字符直道不再空白為止(if(ch=32|ch=10)(turn+;ch=GetChar(turn);ch=GetBC(ch);/ 遞歸實現return(ch);elsereturn(ch);void Concat()/連接,即為 strtoken賦值(strTokenn=ch;n+;int Reserve()/以單詞為單位查找保留字,是則返回編碼,不是則返回0,用來區(qū)分標志符和保留字 (if(strcmp(strToken, DIM0)=0)/調用 strcmp 函數實現,return(1);else if(strcmp(strToken,for0)=0)return(2);else
4、 if(strcmp(strToken,step0)=0)return(3);else if(strcmp(strToken,until0)=0)return(4);else if(strcmp(strToken,do0)=0)return(5);elsereturn(6);void clear()(n=0;/* 語法遞歸分析 */int A(int * c,int & q)(if(cq+=3)(if(cq=7)( q+;return 1;else (coutstep 右部出錯endl;return 0;else (couterror stependl;return 0;int B(int *
5、 b,int & o)(if(bo+=4)(if(bo=7)( o+;return 1;else (coutuntil 右部出錯endl;return 0;else (couterror untilendl;return 0;int S2(int * d,int & h)(if(dh+=6)(if(dh+=8)(if(dh=6|dh=7) h+; return 1;else cout賦值語句右部出錯endl;return 0;else cout賦值語句缺少賦值運算符”endl;return 0;else cout賦值語句左部出錯endl;return 0;int S1(int * m,int
6、& n)if(S2(m,n)if(A(m,n)if(B(m,n) return 1;else return 0;else return 0;else return 0;int S(int *a,int & z)if (az+=2)if (S1(a,z)if(az+=5)if(S2(a,z)(coutsucceed!endl;return 1;else return 0;else (couterror doendl; return 0;else return 0;else (couterror forendl; return 0;void main()(cout* 產生式 *endl;/ for
7、 step until do i j =coutfor S1 do S2endl; / 編號 2 3 4 5 6 7 8coutS2ABendl;couti=jendl;coutstepjendl;coutuntiljendl;int num;turn=0;num=buffer()-1;int x=0;/計識別的單詞的個數for(;turn=num;turn+)/總循環(huán),ch存放剛讀入的字符,strtoken存放巳識別的標志付或保留字,turn是數 組str的下標(ch=GetChar(turn);ch=GetBC(ch);if(IsLetter(ch)(while(IsLetter(ch)&
8、turn=num|IsDigit(ch)&turnsort=kind;/12345 或 6/coutkind; 測試cout(;for(int i=0;iwordi=strTokeni;coutwordi;/輸出識別的標志符或保留字cout”,kind”)”wordi=0;clear();x+;else if(IsDigit(ch)(while(IsDigit(ch)&turnsort=kind;/cout(;for(int i=0;iwordi=strTokeni;coutwordi;cout”,kind”)”wordi=0;clear();x+;else if(ch=)(kind=8;/r
9、ecordx=new Word;recordx-word0=;recordx+-sort=kind;cout”(=,kind”)”endl;elsecouterror input!endl;/* 語法分析 */int y;/*for(y=0;yx;y+)(coutsort ;/打印單詞的編號。coutendl;*/int anaMAX;/存放詞法分析得到的單詞序列的編號的序列 int m;for(m=0;msort;/將 sort 作為數組保存起來/語法分析/int j=0;/ 制導翻譯 /if(!S(ana,j) cout語法出錯!”endl;else cout三地址碼如下:endl;cou
10、twordi != 0)coutwordi+:coutword0;i=0;while (record 3-wordi != 0)coutwordi+;coutendl:cout101 goto 103”endl;coutwordi != 0)coutwordi+;cout:=”;i=0;while (record l-wordi != 0)coutwordi+;cout+”;i=0;while (record 5-wordi != 0)coutwordi+;coutendl:coutwordi != 0)coutwordi+;cout;i=0;while (record 7-wordi != 0)coutwordi+;cout go
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨境保險顧問白名單制度
- 2025 小學四年級科學下冊哺乳動物幼崽哺育行為課件
- 2026山東聊城市眼科醫(yī)院引進博士研究生3人備考考試題庫附答案解析
- 2026山東聊城市眼科醫(yī)院引進博士研究生3人參考考試試題附答案解析
- 2026上海第二工業(yè)大學招聘66人備考考試試題附答案解析
- 2025河北邢臺市中心血站第二批招聘編外人員1人備考考試試題附答案解析
- 2026山東事業(yè)單位統考棗莊市薛城區(qū)招聘初級綜合類崗位34人備考考試試題附答案解析
- 2026上半年云南事業(yè)單位聯考省科學技術廳直屬事業(yè)單位招聘8人備考考試試題附答案解析
- 2026廣西北海市合浦縣山口鎮(zhèn)人民政府招錄城鎮(zhèn)公益性崗位人員1人參考考試題庫附答案解析
- 2026山東事業(yè)單位統考濟南商河縣招聘初級綜合類崗位59人參考考試試題附答案解析
- 柴油維修技術培訓課件
- 安全附件管理制度規(guī)范
- 2026院感知識考試題及答案
- 《紅樓夢》導讀 (教學課件) -高中語文人教統編版必修下冊
- 室外供熱管道安裝監(jiān)理實施細則
- 腰背部推拿課件
- 通信管道施工質量管理流程解析
- 商場經理2025年終工作總結(二篇)
- 2026年神木職業(yè)技術學院單招職業(yè)技能測試題庫含答案
- 化肥產品生產許可證實施細則(二)(磷肥產品部分)2025
- 2025年CFA二級《投資組合管理》模擬
評論
0/150
提交評論