c词法分析器.doc

c词法分析器.doc

ID:49407919

大小:279.50 KB

页数:6页

时间:2020-03-01

c词法分析器.doc_第1页
c词法分析器.doc_第2页
c词法分析器.doc_第3页
c词法分析器.doc_第4页
c词法分析器.doc_第5页
资源描述:

《c词法分析器.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理00++错哮禍依今斩赛同給工丑则軒20U2U5唸C/C++语言词法分析器的设计与实现实验、目的:1・强化对系统软件综合工稈实现能力、规划能力的训练;2.加强对词法分析原理、方法和基本实现技术的理解;二实验内容:C/C++语言词法分析器的设计和实现。三程序简要说明:1、属性字和对应记号设计:存储结构typedefstructkeywords{stringcontainer;stringtag;}KEY;%1保留字:KEYreserved[]={”r_varl”},{”long”,”r_var2”},{”float”,

2、Jar3”},{“double",Hr_var4H},{“char”,”r_var5”},{“string",nr_var6n},{”F,”r_logl”},{”else“,”r」og2”},{“void”,”r_void”},{”bool”,Hr_var7H},{“fbr”,”rlog3”},{“while“,”rlog4”},{“switch“,”r_log5”},{”casc”,nr_log6"},{“default”,”r_log7”},{“include”,”r_decT'},{“define”,”r_dec2“

3、},{”cout”,”r_io「},{”cin”,nr_io2H},{“struct”,”r_dec3”},{"class”,"rdec4"},{"typedef,nr_typedef,},{"enum",nr_dcc5',},{,•return","r_rctum"},{“new”,,,r_meml',},{,,deleten,nr_mem2n},{"sizeof,”rmem3“},{“static”,nrdec6"},{“public”,”r_sortl”},{“private”,”r_sort2”},{nendln,

4、nr_endln}};%1无符号数:vectornumbers对应文法:digit(digit)*(.digit(digit)*

5、)(E(+

6、-

7、)digit(digit)*

8、)记号流设计:“num:读取的数串”例:数串“23.45E7”对应记号流“23.45E7”%1变量名:vcctoridentifiers对应文法:Jid(id

9、digitD*记号流设计id」(i为读到变量在变量表屮存放的顺序)每次按文法读入变量名示,先遍历保留字表和已有的变臺表,确定部不属于后才会将新的变量添加到变量表尾。%1错误

10、报告ERROR:识别数字、变量对应的词法错误、符号的错误使用和非法符号使用处理方法为将错谋所在的无空格分隔的串视为一个完整的输入错误,以记号“ERROR”标记写入记号流文件对应的位置%1运算符CHARACTER:KEYcharacters[]={{”v”,”cmp_<”},{ass_=”},{”〉”,”cmp_>”},{*'«",nio_«"},{n»n,"io_»"}2、原程序主要流程自动机:3、主要数据结构:全局变量:boolnote=false;//j±释标记,确定当前彳亍处于注释状态/正常代码状态,false表示代

11、码状态,true表示当前行缓存内容为注释,需额外处理,处理完成后即恢复note=falseintid_countcr=0;//单词计数器(变量加保留字)intnum_counter=0;//无符号数计数器intcha_counter=0;〃运算符计数器interr__counter=0;//^误二级缓存计数器intscount=0,mcount=0,lcount=0;〃括号统计(小、屮、大)面向对象:typcdcfclassmorphcmcanalysis{private:stringbuffer;//行输入缓存strin

12、gtagbufTcr;//行输出记号流缓存public:morphemeanalysis(){};〃构造函数〜morpheme_analysis(){};//析构函数intjudging();//主白动札判断分类函数为关键字匹配记号流,存入tagbuffer缓存中intsorting(char);//判断函数,返冋该类字符对应的整型标号,如字母对应数字1voidanalysing();//行分析函数,从文件读入每彳亍内容缓存入buffer属性屮,调用judging。函数分析后提取tagbuffer屮内容导入到记号流文件st

13、ringgetbufler();stringgcttagbuffbrO;boolsetbuffer(stringt);boolsettagbuffer(stringt);}MA;缓冲机制:按行缓冲,分析时跳过开头空格部分,取空格分隔开的字符串作为二级缓存,分析二级缓存内容,错误记号也以二级缓存为单位。4

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

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

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