91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

編譯原理課程設計 for循環 用LR法實現 中間代碼用三元式表示

資源截圖

代碼片段和文件信息

#include“init.h“

int?main(){
input();//輸入
scanner();//掃描輸入串進行詞法分析,詞法分析存于tokenList中,有單詞和類型碼
grammar();//語法分析和語義分析,二者穿插進行
outfile1.close();//關閉打開的文件
outfile2.close();//關閉打開的文件
outfile3.close();//關閉打開的文件
return?0;
}

void?input(){//輸入函數,以#控制
char?c;
cout<<“******************BEGIN*******************“< cout<<“*????????????for循環語句的分析???????????*“< cout<<“*????????????????????????????????????????*“< cout<<“*包括的內容如下:?????????????????????????*“< cout<<“*1.詞法分析??????????????????????????????*“< cout<<“*2.語法分析??????????????????????????????*“< cout<<“*3.語義分析??????????????????????????????*“< cout<<“*????????????????????????????????????????*“< cout<<“*****************END**********************“< cout< cout<<“請輸入for循環語句并以#結束:“< do{ ????
c=cin.get();
s+=c;
}while(c!=‘#‘);//不以#結尾則重新輸入
}?

void?scanner(){
int?t;
while(num switch(sort(s[num])){
case?0:
error();
num++;
break;
case?1:?
t=recog_id(s[num]);
if(t==-1)error();
break;
case?2:t=recog_dig(s[num]);
if(t==-1)error();
break;
case?3:t=recog_delimeter(s[num]);
if(t==-1)error();
break;
case?4:t=recog_oper(s[num]);
if(t==-1)error();
break;
case?5:
num++;
break;
}
}
write_token();
}

int?sort(char?ch){//排序函數
if(isalpha(ch)?||?ch==‘_‘)return?1;//標識符以字母或下劃線開始
else?if(isdigit(ch))return?2;//數字
else?if(isin(chdelimeter12))return?3;//若是‘,則是字符常數
else?if(isin(choper10))return?4;//若是其他符號
else?if(ch==‘?‘?||?ch==9)return?5;//9表示水平制表符
else?return?0;
}

int?recog_id(char?ch){//ch為給定字符串的第一個字符
char?state=‘0‘;//出示狀態為0
while(state!=‘2‘){
switch(state){
case?‘0‘://若當前是狀態0,讀入一個字母或下劃線,轉向狀態1
if(isalpha(ch)?||?ch==‘_‘){
state=‘1‘;
tokenList[count].word.push_back(ch);
tokenList[count].token=0;
}
else?return?-1;
break;
case?‘1‘://若當前是狀態1,讀入字母或數字或下劃線,仍為狀態1
if(isalpha(ch)?||?isdigit(ch)?||?ch==‘_‘){
state=‘1‘;
tokenList[count].word.push_back(ch);
}
else{
state=‘2‘;
tokenList[count].token=2;
num--;//退回當前讀入的字符
}
}
ch=s[++num];
}
string?str;//截取字符串,并判斷是否是關鍵字
for(int?i=0;i str+=tokenList[count].word[i];
}
if(isin(strkeyword33))tokenList[count].token=1;
count++;
return?0;
}

int?recog_dig(char?ch){//識別常數
char?state=‘0‘;//初始狀態為0
while(state!=‘7‘){
switch(state){
case?‘0‘:
if(isdigit(ch)){
state=‘1‘;
tokenList[count].word.push_back(ch);
tokenList[count].token=0;
}
else?return?-1;
break;//讀入一個數字
case?‘1‘:
if(isdigit(ch)){
state=‘1‘;
tokenList[count].word.push_back(ch);
}//仍然讀入數字
else?if(ch==‘.‘){
state=‘2‘;
tokenList[count].word.push_back(ch);
}//讀入小數點,識別實數
else?if(ch==‘e‘?||?ch==‘E‘){
state=‘4‘;
tokenList[count].word.push_back(ch);

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????630821??2009-06-18?19:40??編譯原理課程設計for循環\Debug\for.exe

?????文件?????853372??2009-06-18?19:40??編譯原理課程設計for循環\Debug\for.ilk

?????文件????2568072??2009-06-18?18:53??編譯原理課程設計for循環\Debug\for.pch

?????文件????1188864??2009-06-18?19:08??編譯原理課程設計for循環\Debug\for.pdb

?????文件?????434801??2009-06-18?19:40??編譯原理課程設計for循環\Debug\main.obj

?????文件??????82944??2009-06-18?19:41??編譯原理課程設計for循環\Debug\vc60.idb

?????文件?????135168??2009-06-18?19:08??編譯原理課程設計for循環\Debug\vc60.pdb

?????文件???????4308??2009-06-18?19:39??編譯原理課程設計for循環\for.dsp

?????文件????????529??2009-06-18?18:52??編譯原理課程設計for循環\for.dsw

?????文件??????41984??2009-06-18?19:42??編譯原理課程設計for循環\for.ncb

?????文件??????53760??2009-06-18?19:42??編譯原理課程設計for循環\for.opt

?????文件????????871??2009-06-18?19:40??編譯原理課程設計for循環\for.plg

?????文件???????4733??2009-06-18?18:53??編譯原理課程設計for循環\init.h

?????文件??????20628??2009-06-21?19:44??編譯原理課程設計for循環\main.cpp

?????文件????????219??2009-06-18?01:03??編譯原理課程設計for循環\產生式.txt

?????文件????????350??2009-06-18?19:40??編譯原理課程設計for循環\詞法分析結果.txt

?????文件????????186??2009-06-18?19:40??編譯原理課程設計for循環\語義分析結果.txt

?????文件???????1694??2009-06-18?19:40??編譯原理課程設計for循環\賦值語句分析過程.txt

?????文件????????524??2009-06-18?19:40??編譯原理課程設計for循環\過程分析.txt

?????目錄??????????0??2009-06-19?12:11??編譯原理課程設計for循環\Debug

?????目錄??????????0??2009-06-22?02:04??編譯原理課程設計for循環

-----------?---------??----------?-----??----

??????????????6023828????????????????????21


評論

共有 條評論