词法分析器分析加代码(编译原理)

词法分析器分析加代码(编译原理)

ID:30920906

大小:101.66 KB

页数:11页

时间:2019-01-04

词法分析器分析加代码(编译原理)_第1页
词法分析器分析加代码(编译原理)_第2页
词法分析器分析加代码(编译原理)_第3页
词法分析器分析加代码(编译原理)_第4页
词法分析器分析加代码(编译原理)_第5页
资源描述:

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

1、现在在学编译原理,做了个简单的词法分析器。可以自定义关键字、界符以及运算符。效果如下:请输入要解析的文件名template,txt请输入该编程语言的关键字ifwhileelsereturn请输入该编程语言的运算符,格式为符号名称符号+jia-jian*cheng/chu=fuzhi==deng请输入该编程语言的界符,格式为符号名称符号(left)right$comma;fengao{dakuohao}xiaokuohao辽Azint$标识符main$标识符($界符left)$界fright{$界符da

2、kuohaoint$柿识符a$棕识符;$界符fengaoint$袜识符b$棕识符;$界符fengaoint$袜识符C$棕识符;$界符fengaoc$袜识符+$运算待jiac$标识符=$运算符fuzhia$标识符;$界符fengaowhile$关讎字、1($界符leftc$袜识符=$运算符fuzhi=$运負持fuzhi1$整型)$界fright{$界符dakuohaoa$棕识符有一点不满意的地方是必须输入两次ctrl+z,原来打算的是按下回车就结束输入的还有一点想法是不输入这些设置,而是读取一个配置文件

3、,识别关键字,界符以及运算符代码如下:#include#include#inelude#include#include#includc〈string>#include〈fstream>usingnamespacestd;vectorkeywords;vector>symble;vector>bound;charch;inti

4、sKeyWord(conststring&s,int&n)if(keywords・empty())for(vector::iteratorit=keywords・begin();it!二keywords・end();it++,n++){if(s=*it){return1;}}returnT;}intisSymble(conststring&s,string&result){for(vector>::iteratorit二symble.begin(

5、);it!二symble.encl();it++){if(s=(*it).first)result二(*it)・second;return0;}intisBound(conststring&s,string&result)!for(vector>::iteratorit二bound.begin();it!二bound.end();it++){if(s=(*it)・first){result=(*it)・second;return1;}}retum0;}voida

6、nalyse(FILE*fp)stringtemp二stringstr二stringresult二;intid=0;while((ch=fgetc(fp))!=EOF){〃〃temp=;str=ch;id二0;if(ch二二,,

7、

8、ch二二’t,

9、

10、ch二二’\ch二二,r){while(ch二二’’Ich二二’t'

11、

12、ch二二’'

13、ch二二'){ch=fgetc(fp);;fseek(fp,-lL,SEEK_CUR);}elseif(isalpha(ch)){while(isalph

14、a(ch)

15、

16、isdigit(ch))temp二temp+ch;ch二fgetc(fp);fscek(fp,-lL,SEEK_CUR);if(isKeyWord(temp,id)==1){endl;cout<

17、mp<<“t$整型〃<

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

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

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