编译原理词法分析.doc

编译原理词法分析.doc

ID:51943792

大小:21.00 KB

页数:5页

时间:2020-03-20

编译原理词法分析.doc_第1页
编译原理词法分析.doc_第2页
编译原理词法分析.doc_第3页
编译原理词法分析.doc_第4页
编译原理词法分析.doc_第5页
资源描述:

《编译原理词法分析.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、上机练习一:词法分析一个PASCAL语言子集(PL/0)词法分析器的设计与实现1.按照P45的算法思想,使用循环分支方法实现PL/0语言的词法分析器,该词法分析器能够读入使用PL/0语言书写的源程序,输出单词符号串及其属性到一中间文件中,具有一定的错误处理能力,给出词法错误提示。2.源代码#include#include#includeusingnamespacestd;#defineMAX1000stringkey[15]={"begin",

2、"end","if","then","else","while","write","read","do","call","const","var","procedure","program","odd"};//保留字intIsLetter(charc)//判断字母{if(((c<='z')&&(c>='a'))

3、

4、((c<='Z')&&(c>='A')))return1;elsereturn0;}intIsDigit(charc)//判断数字{if((c>='0')&&(c<='9'))retur

5、n1;elsereturn0;}intIsKey(stringstrToken)//判断保留字{inti;for(i=0;i<15;i++){if(key[i].compare(strToken)==0)returni;}return15;}stringConcat(charch,stringstrToken){strToken+=ch;returnstrToken;}intmain(){ifstreamfile;intr=0;charch;intl=0;intID;//保留字的idstrings

6、trToken="";file.open("1.txt");//打开第i个记事本if(!file)cout<<"打开文件失败!";ch=file.get();while(!file.eof()){//if(ch==''

7、

8、ch=='t'

9、

10、ch=='')//滤掉空白字符//while(ch=='')//l++;if(ch==''

11、

12、ch=='t')ch=file.get();while(ch==''){l++;ch=file.get();}if(IsLetter(ch)){strT

13、oken="";//每次都需要对strToken置空串处理while(IsLetter(ch)

14、

15、IsDigit(ch)){strToken=Concat(ch,strToken);ch=file.get();}ID=IsKey(strToken);if(ID<15){cout<<"保留字为:"<

16、en置空串处理while(IsDigit(ch)){strToken=Concat(ch,strToken);ch=file.get();}if(IsLetter(ch))//数字后面跟字母,错误词法{while(IsLetter(ch)

17、

18、IsDigit(ch)){strToken=Concat(ch,strToken);ch=file.get();}cout<<"词法错误!(数字后面跟字母)"<

19、}elseswitch(ch){case'+':{cout<<"标识符为:"<<"+"<'

20、:{ch=file.get();if(ch=='=')cout<<"标识符为:"<<">="<"<')cout<<"标识符为:"<<"<>"<

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

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

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