编译技术课程设计报告内容摘要:

法等。 3. 中间代码生成器 产生上述算术表达式的中间代码(四元式序列) 较高要求: 1. 扩充上述小语言的单词; 2. 增加语法分析器的功能,能识别条件语句和循环语句等; 3. 增加中间代码生成器的功能,能产生条件语句和循环语句等的中间代码(四元式序列) 4. 报错基础上增加错误信息; 5. 将中间代码翻译成汇编语言。 三、实验环境 开发环境: VisualStadio2020 语言: C++ 四、实现过程说明 ( 1)单词符号表 amp。 amp。 18 Op || 19 Op /* 若对单词扩充需给出单词符号表 */ ( 2) 数据结构 词法分析 程序主要通过使用 scaner()函数对用户输入的语句进行单词符号的分析,然后以(单词符号,种别编码)的二元式形式输出,在函数中使用到的表主要有如下: 符号表: list1。 //存放标示符 常数表: list2。 //存放数字 /* 单词的二元式、符号表、常数表等 */ /* 若定义类,给出类图及说明 */ 第 5 页 ( 3) 函数说明 Scaner 函数从左到右依次对输入的语句进行分析,每次读员工字符,分析它是什么类型 :如果是字母类型,则接着 往下读,如果是字母或数字,则把第一个和第二个字符连起来放在 token 数组中,将他 们依次对比关键字表中的元素,如果相同,把 sny 中置相应的种别编码,如果不同,则字符为标示符,则将标示符放入 list1 表中;若读到数字,首先分析第一个符号,接着读下一个字符串,直到读到一个不是数字的字符串位置,每读一个数字字符,就将他们转化为相应的数字,使用辗转相乘法,每次都让 number 先自乘 10,然后加上这个数字,这样就将字符串表示的数字转化成了相应的数,返回主函数输出 ,则将数字放入 list2表中;如果是其他单词表的符号,则将他们的 sny 置为相应的种别码。 ( 4) 流程图 主流程图 N Y 开始 定义关键字表 请用户输入语句 读入用户输入的字符串 调用扫描程序 调出单词二院组 输入串结束 结束 第 6 页 Y N N N 变量初始化 读取下一个字符 是否为字母 拼成标示符 是否为关键字 Sny 为对应关键字的种别编码 返回 Sny 为 6 标 识 符词 法分析流程图 变量初始化 读取下一个字符 Sny 置 7 拼成数字 是否为数字 返回 数字词 法分析流程图 第 7 页 Y N ( 1)分析方法说明 语法分析阶段的基本任务是将词法分析阶段产生的二元组作为输入,根据语言的语法规则,识别出各种语法成分,并 判断该单词符号序列是否是该语言的一个句子。 程序采用的是递归下降分析法,这是一种自上而下的分析方法,文法的每个非终结符对应一个递归过程。 分析过程就是从文法开始符号出发执行一组递归过程,这样向下推导直到推出句子;或者从跟节点出发,自上而下输入串寻找一个最左匹配序列,建立一棵语法树。 /* 预测分析法 ; 递归下降分析法; LR 分析法 */ ( 2) 文法 文法: E→ E+T|T T→ T*F|F F→ FP|P**F|P P→ (E)|i 改造后的文法: E→ TE’ E’ → +TE’ T→ FT’ T’ → *FF。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。