C++实现词法分析.doc

C++实现词法分析.doc

ID:52458939

大小:33.00 KB

页数:4页

时间:2020-03-27

C++实现词法分析.doc_第1页
C++实现词法分析.doc_第2页
C++实现词法分析.doc_第3页
C++实现词法分析.doc_第4页
资源描述:

《C++实现词法分析.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#include#include#include#defineRWD8#defineOPEAR11#defineSEPAR6usingnamespacestd;//构建符号表stringRword[RWD]={"if","int","for","while","do","return","break","continue"};stringOpear[OPEAR]={"+","-","*","/","=",">","<",">=","<=","!=","

2、=="};stringSepar[SEPAR]={",",";","{","}","(",")"};voidmain(){vectorinput;vector::iteratoriter;/*将源代码中的单词从文件中读出按成分存放在input中*/ifstreammyf;stringstr="";myf.open("1.txt");if(myf.fail()){cout<<"error!"<

3、SEPAR;i++)//判断是否为分隔符{stringtemp="";temp+=ch;if(temp==Separ[i]){if(str!=""){input.push_back(str);str="";}str=ch;input.push_back(str);str="";ch=myf.get();break;}}if(ch=='t'

4、

5、ch==''

6、

7、ch=='')//判断是否为空格,回车{if(str!=""){input.push_back(str);str="";}ch=myf.get();}elseif(ch=='!

8、'

9、

10、ch=='>'

11、

12、ch=='<'

13、

14、ch=='=')//判断是否为运算符{if(str!=""){input.push_back(str);str="";}str=ch;ch=myf.get();if(ch=='='){str+=ch;input.push_back(str);ch=myf.get();str="";}else{input.push_back(str);}}elseif(ch=='+'

15、

16、ch=='-'

17、

18、ch=='*'

19、

20、ch=='/'){if(str!=""){input.push_back(str);str=

21、"";}str+=ch;input.push_back(str);ch=myf.get();str="";}else{str+=ch;ch=myf.get();}}myf.close();/*读文件结束*//*进行词法分析,并输出*/for(iter=input.begin();iter!=input.end();iter++){intsign=0;for(inti=0;i

22、eak;}}if(sign==0)//判断是否为运算符{for(inti=0;i

23、((*iter)[0]>'0'&&(*iter)[0]<='9')cout<<"(3,""<<*iter<<"")"<

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

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

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