编译原理词法分析程序设计实验报告.docx

编译原理词法分析程序设计实验报告.docx

ID:57658870

大小:120.31 KB

页数:13页

时间:2020-08-30

编译原理词法分析程序设计实验报告.docx_第1页
编译原理词法分析程序设计实验报告.docx_第2页
编译原理词法分析程序设计实验报告.docx_第3页
编译原理词法分析程序设计实验报告.docx_第4页
编译原理词法分析程序设计实验报告.docx_第5页
资源描述:

《编译原理词法分析程序设计实验报告.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编译原理词法分析程序设计实验报告【实验目得】1.了解词法分析得主要任务。2.熟悉编译程序得编制。【实验内容】根据某文法,构造一基本词法分析程序。找出该语言得关键字、标识符、整数以及其她一些特殊符号,给出单词得种类与值.【实验要求】1.构造一个小语言得文法类C小语言文法(以EBNF表示)??〈程序>::=〈分程序>{<分程序>}、<分程序>::=<标识符>'(<’变量说明部分〉{,〈变量说明部分〉}')〈’函数体〉?〈变量说明部分〉::=int〈标识符>{,<标识符>}?<函数体>::=’{’[<变量说

2、明部分>;]<语句序列〉’}’<语句序列〉::=<语句序列>;〈语句〉|〈语句〉?〈语句>::=<赋值语句>|〈条件语句>|<循环语句〉|<函数调用语句>?<赋值语句>::=<标识符〉=〈表达式><表达式>::=[+|-]<项>{〈加法运算符><项>}?<项〉::=<因子〉{〈乘法运算符>〈因子〉}<因子>:=<标识符〉|<无符号整数〉<加法运算符>::=+

3、-<乘法运算符>::=*

4、/?<条件语句>::=if<条件>’{’<语句序列>’}’[else{’<语句序列>’]}'<条件〉::=<表达式>〈

5、关系运算符><表达式〉?<关系运算符>::===

6、!=

7、>|<

8、>=

9、<=〈循环语句>::=for’(’〈表达式>;<条件>;〈表达式>')’’<{’语句序列〉’}’〈函数调用语句〉::=<标识符>’〈(’标识符>{,<标识符>}|<空>’)'?<标识符>::=<字母>{<字母〉

10、<数字>}<无符号整数>::=〈数字〉{〈数字>}?〈字母>::=a

11、b|c

12、⋯|X

13、Y

14、Z<数字>::=0

15、1

16、2|⋯

17、8

18、9单词分类情况关键字:intifelsefor标识符:以字母开头得字母与数字得组合关系运算符:==

19、|!=|〉

20、〈|>=|〈=加法运算符:+

21、-?乘法运算符:*|/界符:,;{}()2.设计单词得输出形式,单词得种类与值得表示方法种别码单词值如:1int3、编写词法分析程序cffx、c实现基本得词法分析器,能够分析关键字、标识符、数字、运算符(需要有“==”或“:="之类需要超前搜索得运算符)以及其她一些符号.//编译原理词法分析程序、cpp#include〈stdio、h>#include<stdlib、h>#include〈string、h〉typedefstructwords{?intid;?

22、charname[20];charvalue[20];}word;charinteger[20]={'i','n',’}t’;chariff[20]={'i’’f',};charelsee[20]={’e'’,',’ls,’e;’}charforr[20]={’f','o’,'r'};intmain(){?charcode[10000];?charwords[20],ch;inti,j,p,count,n,m;?intk=0;?wordsymbol[500];printf("种别码:1类别:关键字in

23、t");printf("种别码:2类别:关键字if\n”);printf(”种别码:3类别:关键字else”);printf(”种别码:4类别:关键字for\n");printf("种别码:5类别:标识符”);printf(”种别码:6类别:计算运算符n");printf(”种别码:7类别:关系运算符\n”);printf("种别码:8类别:界符");?while(1)?{?gets(code);?n=strlen(code);?for(m=0,j=0;m<n;m++)??{if((c

24、ode[m]〉=’a'&&code[m]<='z')

25、

26、(code[m]>=’0'&&code[m]<=’9)’)?{words[j]=code[m];j++;?}?else{??if(words[0]==’&i'&words[1]=='n'&&words[2]=='t'&&words[3]=='\0')??{???symbol[k]、id=1;?for(i=0;i<20;i++){??symbol[k]、value[i]=words[i];??}??k++;??}???elseif(words[0]

27、=='i'&&words[1]==’f'&&words[2]=='\0’)?{symbol[k]、id=2;?for(i=0;i〈20;i++)???{??symbol[k]、value[i]=iff[i];??}??k++;???}???elseif(words[0]==’e'&&words[1]=='l’&&words[2]==’s'&&words[3]=='e'&&words[4]=='')?{??symbol[k]、id=3;???for(i

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

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

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