1、 1 课课 程程 设设 计计 报报 告告 设计题目:简单文法的编译器的设计与实现 班 级:计算机1206 组长学号: 组长姓名: 指导教师: 设计时间:2014 年 12 月 2 摘摘 要要 编译原理是计算机科学与技术专业一门重要的专业课, 它具有很 强的理论性与实践性,目的是系统地向学生介绍编译系统的结构、工作 原理以及编译程序各组成部分的设计原理和实现技术,在计算机本科教 学中占有十分重要的地位。计算机语言之所以能由单一的机器语言发展 到现今的数千种高级语言,就是因为有了编译技术。编译技术是计算机 科学中发展得最迅速、最成熟的一个分支,它集中体现了计算机发展的 成果与精华。 本课设是词法分
2、析、语法分析、语义分析的综合,外加上扩展任务 中间代码的优化和目标代码的生成,主要是锻炼学生的逻辑思维能力, 进一步理解编译原理的方法和步骤。 关键词关键词:编译原理,前端,目标代码,后端 3 目目 录录 摘要摘要.3 .3 1. 1. 概述概述6 6 2. 2. 课程设计任务及要求课程设计任务及要求8 8 2.1 设计任务8 2.2 设计要求9 3. 3. 算法及数据结构算法及数据结构1010 3.1 算法的总体思想10 3.2 词法分析器模块11 3.2.1 功能11 3.2.2 数据结构11 3.2.3 算法12 3.3 语法分析器模块13 3.3.1 功能13 3.3.2 数据结构13
3、 3.3.3 算法14 3.4 中间代码产生器模块24 3.4.1 功能24 3.4.2 数据结构24 3.4.3 算法25 3.5 优化器模块27 3.5.1 功能27 3.5.2 数据结构27 3.5.3 算法28 3.6 目标代码生成器模块30 3.6.1 功能.30 3.6.2 数据结构.30 3.6.3 算法.31 4 4. 4. 程序设计与实现程序设计与实现.32.32 4.1 程序流程图.32 4.2 程序说明.33 4.3 实验结果.35 5. 5. 结论结论.42.42 6. 6. 参考文献参考文献.43.43 7. 7. 收获、体会和建议收获、体会和建议.44.44 5 1
4、 1 概述概述 在计算机上执行一个高级语言程序一般要分为两步;第一步,用一 个编译程序把高级语言翻译成机器语言程序;第二步,运行所得的机器 语言程序求得计算结果。在学习编译原理课程过程中,逐渐掌握各 章节构造编译程序的基本理论,并能独立完成词法分析器、语法分析器 和语义分析器实验,在基本实验完成的基础上,逐步完成课程设计。针 对自己的理解和学习,实现一个小编译器括符号表的构造。 编译程序的工作过程一般可以划分为五个阶段:词法分析、语法分 析、语义分析和中间代码产生、优化、目标代码生成。 第一阶段,词法分析。词法分析的任务是:输入源程序,对构成源 程序的字符串进行分解和扫描,识别出一个个的单词或
5、符号。我们设计 了符号表,包括名字栏和信息栏,其中名字栏作为关键字,根据给定的 名字,在符号表中查找其信息。如果该名字在符号表中不存在,则将其 加入到符号表中,否则返回指向该名字的指针,从符号表中删除给定名 字的表项,并且设计了词法分析器,具体实现为设计各单词的状态转换 图,并为不同的单词设计种别码。将词法分析器设计成供语法分析器调 用的子程序。词法分析器具备预处理功能。将不翻译的注释等符号先滤 掉,只保留要翻译的符号串,即要求设计一个供词法分析调用的预处理 子程序; , 能够拼出语言中的各个单词, 将拼出的标识符填入符号表, 返 回识别单词或符号的种别码和 属性值。 第二阶段,语法分析。在词法分析的基础上,根据语言的语法规则, 把单词符号串分解成各类语法单位。通过语法分析,确定整个输入串是 否构成语法上正确的“程序” 。我们实现了语