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

資源簡介

內容: 一共有實驗一和實驗二兩個實驗,每個實驗有4次課8個學時; 實驗一完成詞法分析; 實驗二完成語法、語義分析及中間代碼生成。 兩個實驗完成后最終效果: 實現一個簡單的集成開發環境(IDE),可以編輯源代碼、有“編譯”、“運行”等功能; 需要顯示所有的錯誤信息、掃描結果、語法分析結果、中間代碼和匯編代碼 (做實驗一時可以使用命令行界面)

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
using?namespace?std;

int?Test(char[200]);
int?AddIdentifier(char[20]);
int?FindIdentifier(char[20]);
bool?Isnum(char[20]);???//判斷是否合法標識符

void?Load(char[30]);
void?WordSplit(char[30]);
void?Display(char[200]?int[10000]?int&);
void?Errors(int[10000]?int&);

char?Identifiers[1000][50];
int?Counts;??????//記錄存儲字符常量個數
int?huanhang=0;??//記錄每一行輸出多少個了
bool?isStr=false;//用于判斷轉義字符串是ID還是STR,因為STR的單引號沒有放到word數組里

int?main(){

char?filepath[30];
cout<<“請輸入要分析的程序文件名稱:“;
while(cin>>filepath){
Load(filepath);???????//對指定文件進行詞法分析
cout<<‘\n‘<<‘\n‘;
cout<<“請輸入要分析的程序文件名稱:“;
}
return?0;
}

int?Test(char?word[200]){
char?Keys[36][20]={““?“true“?“false“?“or“?“and“?“not“?“int“?“bool“?“string“?“while“?“do“?“if“?“then“?“else“?“end“?“repeat“?“until“?“read“?“write“?“>“?“<=“?“>=“?““?“‘“?“{“?“}“?“;“?“:=“?“+“?“-“?“*“?“/“?“(“?“)“?“<“?“=“};

if(word[0]>=‘0‘&&word[0]<=‘9‘){
if?(word[0]?==?‘0‘?&&?(word[1]?==?‘x‘?||?word[1]?==?‘X‘))
{
for?(int?i?=?2;?i? if?(!(word[i]>=‘a‘&&word[i]<=‘f‘||word[i]>=‘A‘&&word[i]<=‘F‘||word[i]>=‘0‘&&word[i]<=‘9‘))
return?-6;//錯誤的十六進制數
return?37;
}
else?if(!Isnum(word))
return?-6;??????//非法標示符,以數字開頭,返回-2
else?return?37;??????//識別為NUM
}

for(int?j=1;?j<36;?j++){???????????????????????//識別為KEY
if(strcmp(Keys[j]?word)==0)
return?j;
}
if?(word[0]?==?‘\\‘&&?isStr==true)//識別STR出現“\”,也認為是STR?
return?38;
if?(word[0]?==?‘\\‘&&?isStr==false)//識別轉義字符
return?40;
if(!(word[0]>=‘a‘&&word[0]<=‘z‘||word[0]>=‘A‘&&word[0]<=‘Z‘||word[0]>=‘0‘&&word[0]<=‘9‘||word[0]==‘\‘‘))
return?-1;
if?(word[0]?!=?‘\‘‘?&&?word[strlen(word)-1]?==?‘\‘‘)//缺少左單引號
return?-2;
if?(word[0]?==?‘\‘‘?&&?word[strlen(word)-1]?!=?‘\‘‘)//缺少右單引號
return?-3;
if?(word[0]?!=?‘{‘?&&?word[strlen(word)-1]?==?‘}‘)//缺少左大括號
return?-4;
if?(word[0]?==?‘{‘?&&?word[strlen(word)-1]?!=?‘}‘)//缺少右大括號
return?-5;
if(isStr==false&&((word[0]>=‘a‘&&word[0]<=‘z‘||word[0]>=‘A‘&&word[0]<=‘Z‘)))//識別為ID
return?36;
if?(isStr==true)//識別為STR
return?38;
if?(word[0]?==?‘{‘?&&?word[strlen(word)-1]?==?‘}‘)//識別為注釋
return?39;

return?50;//未識別符號
}


bool?Isnum(char?word[20]){
for(int?i=1;?word[i]!=‘\0‘;?i++){
if(word[i]<‘0‘||word[i]>‘9‘)
return?false;
}
return?true;
}

void?Load(char?FilePath[30]){
Counts=0;?????//清空之前字符常量記錄
WordSplit(FilePath);
}

void?WordSplit(char?fpath[30])
{
ifstream?inf(fpath?ios::in);//打開文件
int?row[10000]={0};??//記錄每一行是否有錯
int?r=1;?????????????//記錄行數
char?ch;
ch=inf.get();
int?c=0;?????????????//記錄輸出個數
while(ch!=EOF)??????//文件尾
{
isStr=false;
while(ch==‘?‘||ch==‘\t‘)
ch=inf.get();?????//過濾空格
while(ch==‘\n‘)
{
r++;?????????????//換行
ch=inf.get();
}
int?i=0;
char?word[200]={‘?‘};

if(ch>=‘a‘&&ch<=‘z‘||ch>=‘A‘&&ch<=‘Z‘)
{
//##############首位為字母時###

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-03-04?19:38??編譯原理實驗\
?????目錄???????????0??2013-03-04?19:38??編譯原理實驗\實驗測試數據\
?????文件?????????314??2012-09-12?11:42??編譯原理實驗\實驗測試數據\experiment1_test1_in.txt
?????文件?????????408??2012-09-12?11:42??編譯原理實驗\實驗測試數據\experiment1_test1_out.txt
?????文件?????????113??2012-09-12?11:42??編譯原理實驗\實驗測試數據\experiment1_test2_in.txt
?????文件?????????334??2012-09-12?11:42??編譯原理實驗\實驗測試數據\experiment1_test2_out.txt
?????文件?????????124??2012-09-12?11:42??編譯原理實驗\實驗測試數據\experiment2_test1_in.txt
?????文件?????????336??2012-09-12?11:42??編譯原理實驗\實驗測試數據\experiment2_test1_out.txt
?????文件?????????148??2012-09-12?11:42??編譯原理實驗\實驗測試數據\experiment2_test2_in.txt
?????文件?????????322??2012-09-12?11:42??編譯原理實驗\實驗測試數據\experiment2_test2_out.txt
?????文件?????????294??2012-09-12?11:42??編譯原理實驗\實驗測試數據\說明.txt
?????目錄???????????0??2013-03-04?19:38??編譯原理實驗\實驗資料\
?????文件???????36352??2012-09-12?11:42??編譯原理實驗\實驗資料\TINY+?EBNF文法.doc
?????文件???????46080??2012-09-12?11:42??編譯原理實驗\實驗資料\TINY+.doc
?????文件???????59392??2012-09-12?11:42??編譯原理實驗\實驗資料\實驗.doc
?????文件??????121344??2012-11-14?10:42??編譯原理實驗\實驗資料\實驗1?指南.ppt
?????文件??????159744??2012-11-13?18:15??編譯原理實驗\實驗資料\實驗2?指南.ppt
?????文件??????126464??2012-09-12?11:42??編譯原理實驗\實驗資料\編譯原理實驗報告模板.doc
?????文件??????114176??2012-09-12?11:42??編譯原理實驗\實驗資料\編譯原理實驗報告要求.doc
?????目錄???????????0??2013-03-04?19:38??編譯原理實驗\詞法分析\
?????目錄???????????0??2013-03-04?19:38??編譯原理實驗\詞法分析\Debug\
?????文件???????51200??2012-11-26?21:00??編譯原理實驗\詞法分析\Debug\詞法分析.exe
?????文件??????412316??2012-11-26?21:00??編譯原理實驗\詞法分析\Debug\詞法分析.ilk
?????文件??????650240??2012-11-26?21:00??編譯原理實驗\詞法分析\Debug\詞法分析.pdb
?????目錄???????????0??2013-03-04?19:38??編譯原理實驗\詞法分析\詞法分析\
?????目錄???????????0??2013-03-04?19:38??編譯原理實驗\詞法分析\詞法分析\Debug\
?????文件????????6740??2012-11-26?21:00??編譯原理實驗\詞法分析\詞法分析\Debug\BuildLog.htm
?????文件???????76189??2012-11-26?21:00??編譯原理實驗\詞法分析\詞法分析\Debug\WordsAnalyser.obj
?????文件??????????65??2012-11-26?21:00??編譯原理實驗\詞法分析\詞法分析\Debug\mt.dep
?????文件??????314368??2012-11-26?21:00??編譯原理實驗\詞法分析\詞法分析\Debug\vc90.idb
?????文件??????225280??2012-11-26?21:00??編譯原理實驗\詞法分析\詞法分析\Debug\vc90.pdb
............此處省略63個文件信息

評論

共有 條評論