0943041331陈珂编译原理课程设计

0943041331陈珂编译原理课程设计

ID:31739305

大小:268.36 KB

页数:29页

时间:2019-01-17

0943041331陈珂编译原理课程设计_第1页
0943041331陈珂编译原理课程设计_第2页
0943041331陈珂编译原理课程设计_第3页
0943041331陈珂编译原理课程设计_第4页
0943041331陈珂编译原理课程设计_第5页
资源描述:

《0943041331陈珂编译原理课程设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理课程设计实验报告实验一C•语言的词法分析器(基于LEX)实验二手工构造C■语言的词法分析器(表驱动实现)实验三c■语言的语法分析器(基于Yacc)实验四c■语言的语法分析器(手工实现LL1实现)实验一C•语言的词法分析器(基于LEX)目的••熟悉C■语言的各种Token,构造各种Token的正规表达式。熟悉ParserGererator2及其环境,学习基于LEX构造词法分析器的方法。意戈:设计词法分析所需的各种数据结构,理解词法分析的原理,为本套实验的后续实验―手动词法分析、语法分析做铺垫。基于LEX的词法分析器构造方法:Lex的输入结构{def

2、initions}〃声明部分%%{rules}〃识别规则%%{anxiliaryroutines}//辅助过程在声明部分,声明程序将要用到的函数、数据结构等,包括所调用的函数库,所定义的c-Token类型等。在识别规则部分,确定c-语言的Token类型,构造各Token的正规表达式。在辅助过程部分,函数实现c-程序的输入,并函数打印当前tokenoLex示意图如I下:lexsourcefileInputstreamsequenceoftokensc•语言词法分析的设计:重要数据结构1)c・惯用的词法⑴关键字:elseifintreturnvoidwhil

3、e(2)专用符号:+-*/<<=>>===;,0[J{}/**/(3)TD和NUM:IDNUMletterdigit(4)空格:空白、{letter}+{digit}+[a-zA-Z][0-9]换行符、制表符newlinewhitespace[t]+(5)注释:/**/2)c•的Token类型结构体:typedefenmu{//系统保留tokenENDFILE,ERROR,〃六个关键字reservedwordsIF,ELSE,INERETURN,VOID,WHILE,〃两个其它tokenIDNUMID,NUM〃专用符号21个specialsymbo

4、lASSIGN,EQ,NEQ,LT,LQ,GTGQ,COMMA,PLUS,MINUS,TIMESQVER〃分号LPAREN,RPAREN,SEIVII,BRL〃中括号,BRR,DAZUO,DAYOU,COMMENT,UNKNOWTOKEN}TokenType3)token识别规则:c・词法规则的定义"else"{printf("keyword"if"{printf("keyword"int"{printf("keyword"return"{printf("keyword"void"{printf(Mkeyword"while"{printff'keywo

5、rd->%s",yytext);returnELSE;}->%syytext);returnIF;}->%s"zyytext);returnINT;}->%s"/yytext);returnRETUEN;}->%s",yytext);returnVOID;}->%s"/yytext);returnWHILE;}//SPECIALSYMBOLSll^ll{pnntf(Nspecialsymbols->%sM,yytext);returnPLUS;}IIII{printff'specialsymbols->%s,,,yytex

6、t);returnMINUS;}h*ii{printff'specialsymbols->%sH,yytext);returnTIMES;}iiynii^ii{printf(Hspecialsymbols->%s,,/yytext);returnDIVI;}{printf(Nspecialsymbols->%sM,yytext);returnLT;}fl^ll{printf(”specialsymbols->%s蔦yytext);returnGT;},,>=n{printf「specialsymbols->%sf,,yytext);r

7、eturnGQ;}{printf(”specialsymbols・>%s,,/yytext);returnEQ;}u■{prjntf("specialsymbols・>%s舄yytext);returnNEQ;}{printf「specialsymbols%s",yytext);returnASSIGN;}IIJI/{printf「specialsymbols%s"zyytext);returnSEMI;}IIIt9{printf「specialsymbols->%s,l/yytext);returnCOMMA;]ll

8、ll{prin

9、tf「specialsymbols・>%s"/yytext);returnL

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

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

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