编译原理实验词法分析语法分析

编译原理实验词法分析语法分析

ID:43641978

大小:245.56 KB

页数:23页

时间:2019-10-11

编译原理实验词法分析语法分析_第1页
编译原理实验词法分析语法分析_第2页
编译原理实验词法分析语法分析_第3页
编译原理实验词法分析语法分析_第4页
编译原理实验词法分析语法分析_第5页
资源描述:

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

1、本代码只供学习参考:词法分析源代码:#includedostream>#include#includeusingnamespacestd;stringkeyDUrdoTendTfoFT'ifTprintfTscanf",“then",“while”};stringoptr[4]={stringseparator⑹二charch;〃判断是否为保留字boolIsKey(stringss){inti;for(i=0;i<8;i++)if(!strcmp(key[i].c_str(),s

2、s.c_str()))returntrue;returnfalse;}〃字母判断函数boolIsLetter(charc){if(((o=,a,)&&(cv二'/'))ll((c>二A)&&(cv二Z)))returntrue;returnfalse;}〃数字判断函数boolIsDigit(charc){if(c>=*0&&c<='9')returntrue;returnfalse;}〃运算符判断函数boolIsOptr(stringss){inti;for(i=0;i<4;i++)if(!strcmp(optr

3、[i].c_str()$ss.c_str()))returntrue;returnfalse;}〃分界符判断函数boolIsSeparator(stringss){inti;for(i=0;i<6;i++)if(!strcmp(separator[i].c_str(),ss.c_str()))returntine;returnfalse;}voidanalyse(ifstream&in){stringst=nu;charch;intline=l,row=0;while((in.get(ch))){if((ch==

4、,)

5、

6、(ch=t')){}//空格,tab健elseif(ch=='){line++;row=0;}//换行行数加一处理elseif(IsLetter(ch))〃关键字、标识符的处理row++;while(IsLetter(ch)IIIsDigit(ch)){st+=ch;in.get(ch);in.seekg(-l,ios::cur)://文件指针(光标)后退一个字节if(IsKey(st))〃判断是否为关键字杏询关键字农;coutvvstvv”tC«stvv”,”vvlvv”)”vvWtNv”关,

7、,«t,«,,(,,«line«,,,,,«row«,,),,«endl;else〃否则为标示符cout«st«,,t(u«st«,V,«2«,,)M«M,«,t,«M标n«t,«u(,,«line«n,n«row«H),'«endl;}elseif(IsDigit(ch))〃无符号整数处理row++;while(IsDigit(ch)){st+=ch;ch=in.get();}in.seekg(-l,ios::cur);coutvvstvv%CvvstvvTvv3vv”)"vvWvvtNv””vvF

8、vv”(”v

9、h(ch)(row++casell•二row-H-oosAAll-AAwAAll-AAYAA-QAAyAAYAA^出独应w^A

10、xwaa_(・AAineAA

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

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

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