编译原理上机报告

编译原理上机报告

ID:17697384

大小:294.32 KB

页数:9页

时间:2018-09-04

编译原理上机报告_第1页
编译原理上机报告_第2页
编译原理上机报告_第3页
编译原理上机报告_第4页
编译原理上机报告_第5页
资源描述:

《编译原理上机报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理上机报告组员:班级:031121一、上机题目:实现一个简单的语言(CoreProgrammingLanguage,CPL)的编译器(解释器)(或者其他自己想完成的编译器)二、上机目的加深编译原理基础知识的理解:词法分析、语法分析、语法制导翻译等加深相关基础知识的理解:数据结构、操作系统等提高编程能力锻炼独立思考和解决问题的能力三、上机要求1、功能要求接收以CPL编写的程序,对其进行词法分析、语法分析、语法制导翻译等,然后能够正确的执行程序2、验收要求条件:1.完成CPL词法分析器;2.完成CPL语法分析器;3.完成CPL语法制导翻译;方法:1.演示程序的功能;2.解释程

2、序的源代码;四,基本步骤1.分别配置ParserGenerator、VisualC++;2.使用ParserGenerator创建一个工程numberØ编写l文件mylexer.l;Ø编译mylexer.l,生成mylexer.h与mylexer.c;3.安装ParserGenerator、VisualC++;4.使用VC++创建Win32ConsoleApplication工程numberØ配置该项目;Ø加入mylexer.h与mylexer.c,编译工程;Ø执行标识符数字识别器;注意:每次修改l文件后,需要重新编译l文件,再重新编译VC工程五、工具:编译器:VisualC+

3、+,EclipseLex与Yacc:ParserGenerator(支持C/C++/Java,带实例)或者其他自己擅长的语言和环境六、相关介绍1、CoreProgrammingLanguage(CPL)数据类型:整型变量(常量),布尔变量(常量)¯取值范围{…,-2,-1,0,1,2,…},{true,false}运算表达式:简单的代数运算,布尔运算程序语句:赋值表达式,顺序语句,if-else语句,while语句语言特点:简单、易处理如果加入浮点数及相应的除操作,那么该语言的表达能力相当于C,C++,JAVA等便于关注语言实现的本质,而不受繁冗细节的干扰基本框架:CPL程序C

4、PLComplier执行结果词法分析器 语法分析器 语义子程序C/C++/Java编译器CPLCompiler(1)手工编写(2)工具生成词法l文件LexYaccC/C++编译器语义子程序CPLC语法y文件2、词法分析器生成器LexLex是一个词法分析器生成器,接受正规式表示的词法规则,生成识别正规式所描述语言的源程序,不同版本的Lex支持不同的高级语言,如C、C++、Java等。正规式NFADFA最小化DFA分析表+驱动器人工编写词法分析器Lex转化利用Lex构造词法分析器:实质为如何设计正规式和语义动作Lex源程序*.l(三段式):[定义C声明辅助定义正规式]%%规则词法规

5、则正规式语义动作(C代码)[%%注意:不同版本的Lex生成的文件不同用户子程序C源程序]Lex源程序*.l(三段式):lex.yy.c结构: (1)声明的C语言部分 (2)词法分析表 (3)词法分析驱动器(yylex()) (4)用户定义子程序[定义C声明辅助定义正规式]%%规则词法规则正规式语义动作(C代码)[%%用户子程序C源程序]mylexer.l源代码://声明部分//C声明:记号类别%{将来在Yacc中使用下列语句代替: %TokenIDNUMBER#defineID0#defineNUMBER1%}//辅助定义正规式char[a-zA-Z]digit[

6、0-9]digits{digit}+optional_fraction(.{digits})?optional_exponent(E[+-]?{digits})?//词法规则正规式%%{char}({char}

7、{digit})*//语义动作:C代码{printf("识别标识符%s:长度为%d",yytext,yyleng);returnID;}{digits}{optional_fraction}{optional_exponent}{printf(“识别数字%s:长度为%d",yytext,yyleng);returnNUMBER;yytext,yyleng:全局变

8、量,用来存放识别出的输入序列,由词法分析器自动填写}%%//C源程序intmain(void){printf("词法分析成功,返回记号类别为%d",yylex());yylex():词法分析驱动器,根据语法规则返回记号的类别,如ID、NUMBER等。}实验结果:每次输入一个字符串,输出识别结果注意:将来Yacc自动调用yylex()返回一个记号3、语法分析器生成器Yacc语法分析器Yacc是一个语法分析器生成器,接受产生式表示的语法规则,生成识别产生式所描述语言的源程序,不同版本的Yac

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

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

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