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