编译原理 词法分析程序 C++.doc
《编译原理 词法分析程序 C++.doc》由会员分享,可在线阅读,更多相关《编译原理 词法分析程序 C++.doc(9页珍藏版)》请在三一办公上搜索。
1、编译原理 词法分析程序 C+#include #include #include using namespace std;/*全局变量*/ifstream infile; /读取目标字符串ofstream outfile; /向文件中输出结果char buf164 ,buf264; /双缓冲char *p2; /指向双缓冲char数组的指针char ci; /用来存储从文件中读取的单个charstring token; /多个ci组成的一个字符串string keyWord=asm,do,if,return,typedef,auto,double,inline,short,typeid,boo
2、l,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,operator,switch,void,const,false,private,template,volatile,const_cast,float,protected,this,wchar_t,continue,for,pub
3、lic,throw,while,default,friend,register,true,delete,goto,reinterpret_cast,try,NULL;/保留字(摘自百度百科)最后一个NULL是我自己加的const int KEYWORDLENGTH = 64; /keyWord的长度/*全局变量*/*函数声明*/void start(); /main函数开始时对程序的预处理void get_ci(); /获取字符,使用双缓冲bool isLetter(int); /判断是否是 字母bool isDigit(int); /判断是否是 数字bool isUnderLine(int)
4、; /判断是否是 下划线bool isKeyWord(string); /判断是否是 关键字char getType(char); /获取ci的类型 代表void printFile(string ,string);/输出至文件void retractPoint();/p2指针前移撤销一位/*函数声明*/void main()start();/预处理,初始化while (true)/死循环直到主动跳出token=;/每次循环时,清空get_ci();switch(getType(ci) case a:/a是字母的代表,当ci是字母是,进入这个casetoken=token+ci;get_ci(
5、);while (isLetter(ci)|isDigit(ci)|isUnderLine(ci)token=token+ci;get_ci();/while循环跳出if (isKeyWord(token)printFile(token,关键字);elseprintFile(token,标识符);/此时指针指向了下一个retractPoint();/所以指针要回退;break;case _:token=token+ci;get_ci();while (isLetter(ci)|isDigit(ci)|isUnderLine(ci)token=token+ci;get_ci();/while循环
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理 词法分析程序 C+ 编译 原理 词法 分析 程序
链接地址:https://www.31ppt.com/p-2385460.html