03091337 李璐 03091339 宗婷婷 一、 上机题目:实现一个简单语言(CPL)的编译器(解释器) 二、 功能要求:接收以CPL 编写的程序,对其进行词法分析、语法分析、语法制导翻译等,然后能够正确的执行程序
三、 试验目的 1
加深编译原理基础知识的理解:词法分析、语法分析、语法制导翻译等 2
加深相关基础知识的理解:数据结构、操作系统等 3
提高编程能力 4
锻炼独立思考和解决问题的能力 四、 题目说明 1
数据类型:整型变量(常量),布尔变量(常量) 取值范围{…, -2, -1, 0, 1, 2, …}, {true, false} 2、运算表达式:简单的代数运算,布尔运算 3、程序语句:赋值表达式,顺序语句,if-else 语句,w hile 语句 五、 环境配置 1
安装 Parser Generator、Visual C++; 2
分别配置 Parser Generator、Visual C++; 3
使用 Parser Generator 创建一个工程 编写l 文件 mylexer
l; 编译mylexer
l,生成 mylexer
h 与 mylexer
使用 VC++创建 Win32 Console Application 工程并 配置该项目; 加入 mylexer
h 与 mylexer
c,编译工程; 执行标识符数字识别器; 注意:每次修改 l 文件后,需要重新编译l 文件,再重新编译VC 工程 六、 设计思路及过程 设计流程: 词法分析 LEX 的此法分析部分主要利用有限状态机进行单词的识别,在分析该部分之前,首先应该对YACC 的预定义文法进行解释
在YACC 中用%union 扩充了 yystype 的内容,使其可以处理 char 型,int 型,node 型,其中 Node 即为定义的树形结点