logo资料库

编译原理 将词法、语法、代码生成等实验组合成一个大的编译程序 内有源代码和完整报告.doc

第1页 / 共108页
第2页 / 共108页
第3页 / 共108页
第4页 / 共108页
第5页 / 共108页
第6页 / 共108页
第7页 / 共108页
第8页 / 共108页
资料共108页,剩余部分请下载后查看
一、实验目的
二、实验内容
(一)C的一个子集,其语法特征如下:
(二)过程分析图:
三、程序使用说明:
四、程序的一个输出显示:
五、程序源代码
六. 实验心得:
七.参考文献
郑州轻工业学院 课程设计说明书 题目: 姓 名: 赵 倩 院 (系):计算机与通信工程学院 专业班级:计算机科学与技术 10-01 班 学 号: 541007010155 指导教师: 马吉明 成 绩: 时间: 2013 年 6 月 17 日至 2013 年 6 月 21 日
郑州轻工业学院 课 程 设 计 任 务 书 题目 专业、班级计算机科学与技术 10-01 班 学号 541007010155 姓名 赵倩 主要内容、基本要求、主要参考资料等: 主要内容: 将词法、语法、代码生成等实验组合成一个大的编译程序。 完 成 期 限: 2013 年 6 月 21 日 指 导 教 师 签 名 : 课程负责人签名: 年 月 日 1
目 录 一、 实验目的 ...........................................................................................................................................3 二、 实验内容 ...........................................................................................................................................3 (一) C 的一个子集,其语法特征如下:..............................................................................................3 (二) 过程分析图: ...............................................................................................................................4 三、 程序使用说明:..................................................................................................................................5 四、 程序的一个输出显示:......................................................................................................................7 五、 程序源代码.....................................................................................................................................13 六. 实验心得:........................................................................................................................................105 七.参考文献 ...............................................................................................................................................106 2
一、 实验目的 构造一个 C 语言的编译器,达到综合理解和运用编译原理课程所讲解的关键过程 (词法分析、语法分析、代码生成)及相关算法的目的。 二、 实验内容 (一) C 的一个子集,其语法特征如下: 1) 基本数据类型 BasicType: int 2) 变量声明: BasicType avariable; 3) 函数定义: BasicType foo(BasicType param1, BasicType param2,...) 4) 四则运算: +,-,/,* 5) 赋值: = 6) 返回: return, return BasicTypeValue 7) 逻辑判断: if, else (含复合语句) 8) 循环: while(含复合语句) 9) 复合语句块标记: { } 3
在由词法分析程序分析 SimpleC 产生的 token 文件、符号表文件的基础上,完 善语法和词法分析,产生相应的中间代码-四元式序列。 (二) 过程分析图: 目标代码 符号表 语义分析及代 码生成 出错检查和 处理程序 语法项构造 返回 语法分析 送单词 取单词 词法分析 源程序 整个编译程序结构以语法分析组件为中心,在语法分析组件对句子结构生成或归约 的控制下,其调用词法分析组件从输入的 SimpleC 源程序字符流中识别单词,完成语法 树的逐步构造,其间词法分析程序、语法分析程序将对符号表进行操纵。在语法树构造 完成后,调用语义分析对语法树进行静态语义分析,当通过静态语义分析(即表明源程 序无静态语义错误)后,调用代码生成组件完成中间代码(四元式)的生成。出错检查 和处理程序服务于词法分析、语法分析和代码生成组件。+ 4
三、 程序使用说明: 1. 这个简单的编译器生成四元式程序是一个 EXE 执行文件, 可直接打开 EXE 文件运 行它. 1.1. 打开之后会有提示让你输入要编译的文件, 要求是文件的全名即包含路径的. 如果 输入有错即找不到文件的情况下会有错误提示, 编译文件名后缀一般为 TXT 文件. 1.1.1. 如果编译成功最后会在屏幕上输出源程序和生成的四元式, 并在同目录下生成 了一个保存四元式的 TXT 文件. 1.1.1.1. 编译过程中如果发现程序有错误, 编译不会通过, 屏幕上会有程序的错误提示. 1.1.1.1.1. key word: 0 1 2 3 4 5 6 7 8 9 10 11 const int char void main if else do while scanf printf return 1.1.1.1.1.1. oprate 5
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 JME JMC JMP CAS RED EXF WRI :+ :- :* :/ MUS j> j< j== j!= j>= j<= CAL 6
24 25 BEGIN END 四、 程序的一个输出显示: 程序一: Test1.txt void main() { int i,j,m,p; i=2; j=3; p=4; m=i+j+p; printf("%d",m); } 7
分享到:
收藏