编译原理实验报告31663

编译原理实验报告31663

ID:18970999

大小:211.50 KB

页数:11页

时间:2018-09-27

编译原理实验报告31663_第1页
编译原理实验报告31663_第2页
编译原理实验报告31663_第3页
编译原理实验报告31663_第4页
编译原理实验报告31663_第5页
资源描述:

《编译原理实验报告31663》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理实验报告CompilerPrinciplesExperimentReport学生所在学院:燕山大里仁学院学生所在班级:学生姓名:____指导教师:学号:实验一词法分析设计一.实验目的通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确的、熟练的运用。二.实验内容用给定简单语言书写的源程序进行词法分析,通过输入源程序从左到右对字符串进行扫描和分解,一次输出各个单词的内部编码及单词符号自身值,即二元组(二

2、元式);若遇到错误则显示“Error”,同时输出错误单词在源程序中的行位置,即三元组(单词种类,单词内码值,源程序中的行号);同时进行标示符登记符号表的管理。三.实验原理1.待分析词法的自身值说明(1)关键字:main,if,else,int,return,void,while(2)简单运算符+,=,-,(3)界限符(,),{,},;,:,[,](1)字母(2)数字1.功能说明通过对输入的字符串进行扫描和分析输出各个单词和编码的自身值。四.C++语言程序#include#includ

3、e#includeusingnamespacestd;intDeletenull(charS[1000])//与处理函数{boolstatus=1;intj=0;char*P;P=S;for(inti=0;i<200;i++){if(*P!=''&&*P!='/n'){status=0;S[j]=*P;j++;P++;}else{if(status==0){S[j]='';j++;P++;status=1;}elseP++;}}S[j]='';return(j);}v

4、oidmain(){char*P;charS[1000];charword[20];stringkey[]={"main","if","else","int","return","void","while"};stringfilename;cout<<"*********************"<>filename;ifstreaminfile(filename.c_str(),ios::in);ofstreamoutfile("result.txt

5、",ios::out);P=S;if(infile&&outfile){infile.getline(S,1000,EOF);intN;N=Deletenull(S);for(inti=0;i='A'&&*P<='Z')//识别一个大写字母为首的标示符{j=0;while((*P>='A'&&*P<='Z')

6、

7、(*P>='a'&&*P<='z')

8、

9、(*P>='0'&&*P>='9')){word[j]=*P;j++;P++;}word[j]='';outfil

10、e<<"<"<<4<<",""<"<='0'&&*P<='9')//识别整数{j=0;while(*P>='0'&&*P<='9'){word[j]=*P;j++;P++;}word[j]='';outfile<<"<"<<5<<",""<"<='a'&&*P<='z')//识别关键字或标示符{j=0;while((*P>='A'&&*P<='Z')

11、

12、(*P>='a'&&*P<='z'

13、)

14、

15、(*P>='0'&&*P>='9')){word[j]=*P;j++;P++;}word[j]='';boolYN=0;stringIKY(word);for(inti=0;i<7;i++){if(!IKY.compare(key[i])){outfile<<"<"<<1<<",""<"<"<

16、P=='!'

17、

18、*P=='>'

19、

20、*P=='<')//识别复合运算符{if(*(P+1)=='='){word[0]=*P;word[1]='=';word[2]='';P=P+2;outfile<<"<"<<2<<",""<"<"<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。