编译原理 词法分析程序 c++

编译原理 词法分析程序 c++

ID:14239647

大小:46.00 KB

页数:9页

时间:2018-07-27

编译原理 词法分析程序 c++_第1页
编译原理 词法分析程序 c++_第2页
编译原理 词法分析程序 c++_第3页
编译原理 词法分析程序 c++_第4页
编译原理 词法分析程序 c++_第5页
资源描述:

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

1、编译原理词法分析程序C++#include#include#includeusingnamespacestd;/*全局变量*/ifstreaminfile;//读取目标字符串ofstreamoutfile;//向文件中输出结果charbuf1[64],buf2[64];//双缓冲char*p2;//指向双缓冲char数组的指针charci;//用来存储从文件中读取的单个charstringtoken;//多个ci组成的一个字符串stringkeyWord[]={"asm","do","if","return","type

2、def","auto","double","inline","short","typeid","bool","dynamic_cast","int","signed","typename","break","else","long","sizeof","union","case","enum","mutable","static","unsigned","catch","explicit","namespace","static_cast","using","char","export","new","struct","virtual","class","extern","

3、operator","switch","void","const","false","private","template","volatile","const_cast","float","protected","this","wchar_t","continue","for","public","throw","while","default","friend","register","true","delete","goto","reinterpret_cast","try","NULL"};//保留字(摘自百度百科)最后一个"NULL是我自己加的"constintK

4、EYWORDLENGTH=64;//keyWord[]的长度/*全局变量*//*函数声明*/voidstart();//main函数开始时对程序的预处理voidget_ci();//获取字符,使用双缓冲boolisLetter(int);//判断是否是字母boolisDigit(int);//判断是否是数字boolisUnderLine(int);//判断是否是下划线boolisKeyWord(string);//判断是否是关键字chargetType(char);//获取ci的类型代表voidprintFile(string,string);//输出至文件voidretr

5、actPoint();//p2指针前移撤销一位/*函数声明*/voidmain(){start();//预处理,初始化while(true)//死循环直到主动跳出{token="";//每次循环时,清空get_ci();switch(getType(ci)){case'a'://a是字母的代表,当ci是字母是,进入这个case{token=token+ci;get_ci();while(isLetter(ci)

6、

7、isDigit(ci)

8、

9、isUnderLine(ci)){token=token+ci;get_ci();}//while循环跳出if(isKeyWord(to

10、ken)){printFile(token,"关键字");}else{printFile(token,"标识符");}//此时指针指向了下一个retractPoint();//所以指针要回退;}break;case'_':{token=token+ci;get_ci();while(isLetter(ci)

11、

12、isDigit(ci)

13、

14、isUnderLine(ci)){token=token+ci;get_ci();}//while循环跳出if(isKeyWord(token)){printFile(token,"关键字");}else{printFile(token,"标

15、识符");}//此时指针指向了下一个retractPoint();//所以指针要回退;}break;case'0':{while(isDigit(ci)

16、

17、ci=='.'){token=token+ci;get_ci();}printFile(token,"数值");retractPoint();}break;case'<':{get_ci();if(ci=='='){printFile("<=","运算符");}elseif(ci=='<'){printFile("<<","运算符");}else{printFi

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

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

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