电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

编译原理实验报告1

编译原理实验报告1_第1页
1/10
编译原理实验报告1_第2页
2/10
编译原理实验报告1_第3页
3/10
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.c; 4. 使用 VC++创建 Win32 Console Application 工程并 配置该项目; 加入 mylexer.h 与 mylexer.c,编译工程; 执行标识符数字识别器; 注意:每次修改 l 文件后,需要重新编译l 文件,再重新编译VC 工程 六、 设计思路及过程  设计流程:  词法分析 LEX 的此法分析部分主要利用有限状态机进行单词的识别,在分析该部分之前,首先应该对YACC 的预定义文法进行解释。在YACC 中用%union 扩充了 yystype 的内容,使其可以处理 char 型,int 型,node 型,其中 Node 即为定义的树形结点,其定义如下: typedef enum { TYPE_CONTENT, TYPE_INDEX, TYPE_OP } NodeEnum; /* 操作符 */ typedef struct { int name; /* 操作符名称 */ int num; /* 操作元个数 */ struct NodeTag * node[1]; /* 操作元地址 可扩展 */ } OpNode; typedef struct NodeTag { NodeEnum type; /* 树结点类型 */ /* Union 必须是最后一个成员 */ union { int content; /* 内容 */ int index; /* 索引 */ YACC 预定义文法 BNF 递归文法 扩展实现函数 OpNode op; /* 操作符对象 */ }; } Node; extern int Var[26]; 结点可以是三种类型(CONTENT,INDEX,OP)。结点如果是操作符对象(OpNode)的话,结点可继续递归结点。操作符结点包括了名称,个数和子结点三...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

编译原理实验报告1

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部