编译原理课程设计说明书--词法分析,语法分析,语义分析 联系客服

发布时间 : 星期四 文章编译原理课程设计说明书--词法分析,语法分析,语义分析更新完毕开始阅读

编译原理课程设计说明书

目: 编译器原型设计与开发 院 (系): 计算机科学与工程学院 专

业: 计算机科学与技术

目 录

1 引言 .............................................................................................................................................. 1

1.1 设计概述 ........................................................................................................................... 1 1.2 设计目标 ........................................................................................................................... 2 1.3 小组分工 ........................................................................................................................... 3 2 开发过程....................................................................................................................................... 3

2.1 词法分析 ........................................................................................................................... 3

2.1.1 消除白空格以及注释 ............................................................................................. 3 2.1.2 词法分析 ................................................................................................................. 6 2.2 .语法分析 ........................................................................................................................... 8

2.2.1 递归下降手工编码 ................................................................................................. 8 2.2.2 first集合的计算 ...................................................................................................... 8 2.2.3 左递归消除 ............................................................................................................. 9 2.2.4 selection表自动生成 ............................................................................................. 10 2.2.5 LL(1)手工编码 ...................................................................................................... 11 2.3 语义分析 ......................................................................................................................... 11

2.3.1 表达式求值LR(1) ................................................................................................ 11 2.3.2 四元式 ................................................................................................................... 13

3 测试过程..................................................................................................................................... 14 4 总结 ............................................................................................................................................ 19 5 参考文献..................................................................................................................................... 20 6 代码附录..................................................................................................................................... 20

桂林电子科技大学编译原理课程设计说明书 第1页

1 引言

编译程序是现代计算机系统的基本组成部分之一,而且多数计算机系统都配有不止一个高级语言的编译程序,对有些高级语言甚至配置了几个不同性能的编译程序。从功能上看,一个编译程序就是一个语言翻译程序。语言翻译程序把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价程序。

一个编译程序的重要性体现在它使得多数计算机用户不必考虑与机器有关的繁琐细节,使程序员和程序设计专家独立于机器,这对于当今机器的数量和种类持续不断地增长的年代尤为重要。

编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。将编译过程划分成词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段。 1.1 设计概述

编译原理程序结构框图

词法分析 词法分析是编译过程的第一个阶段。这个阶段的任务是从左到右有一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也称单词符号或符号)。这里所谓的单词是指逻辑上紧密相连的一组字符,这些字符基友具体含义。比如标识符是由字母字符开头,后跟字母、数字字符的字符序列组成的一种单词。保留字(关键字或基本字)是一种单词,此外还有算符、界符等。

语法分析 语法分析是编译过程的第二个阶段。语法分析的任务是在词法分析的基础上将单词序列分解成各类语法短语,如“程序”、“语句”、“表达式”等。一般这种语法短语,也称语法单位,可表示成语法树。语法分析所依据的是语言

桂林电子科技大学编译原理课程设计说明书 第2页

的语法规则,即描述程序结构的规则。通过语法分析确定整个输入串是否构成一个语法上正确的程序。

语义分析 语义分析是审查源程序有无语义错误,为代码生成阶段收集类型信息。比如语义分析的一个工作是进行类型审查,审查每个算符是否具有语言规范允许的运算对象,当不符合语言规范时,编译程序应报告错误。

中间代码生成 在进行了上述的语法分析和语义分析阶段的工作之后,有的编译程序将源代码变成一种内部表示形式,这种内部表示形式叫做中间语言或中间代码。所谓“中间代码”是一种结构简单、含义明确的记号系统,这种记号系统可以设计为多种多样的形式,重要的设计原则为两点:一是容易生成;二是容易将它翻译成目标代码。很多编译程序采用了一种近似“三地址指令”的“四元式”的中间代码,这种四元式的形式为:(运算符,运算对象1,运算对象2,结果)。

1.2 设计目标

鉴于我们需要完成编译器的词法分析、语法分析、语义分析、中间代码生成的设计开发,本次课程设计主要完成以下任务: 词法分析: 1. 消除白空格 2. 消除注释 3. 词法分析 语法分析:

4. 递归下降手工编码 5. first集合的计算

6. follow集合的自动计算 7. selection表自动生成 8. 递归下降自动生成 9. LL(1)分析手工编码 10. LL(1)自动生成

11. LR(1)分析手工编码 12. 左递归消除

语义分析以及中间代码生成: 13. 中缀式转后缀式递归下降编码 14. 中缀式转后缀式LL(1)编码 15. 中缀式转后缀式LR1)编码 16. 表达式求值LL(1) 17. 表达式求值LR(1) 18. 四元式