编译原理课程设计报告.docx

编译原理课程设计报告.docx

ID:58490971

大小:865.27 KB

页数:133页

时间:2020-05-17

编译原理课程设计报告.docx_第1页
编译原理课程设计报告.docx_第2页
编译原理课程设计报告.docx_第3页
编译原理课程设计报告.docx_第4页
编译原理课程设计报告.docx_第5页
资源描述:

《编译原理课程设计报告.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编译原理课程设计报告1.概述编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。由于时间和同学们的水平有限,故本实验只涉及到了词法分析,语法分析,及中间代码的四元式生成和符号表。具体概述介如下:1.

2、词法分析:在这个阶段编译器实际阅读源程序(通常以分析程序字符流的形式表示)。扫描程序执行词法分析注释树符号表 :它将字符序列收集到称作记号错误处的有意义单元中,记号同自然语言,如英源代码理器语中的字词相似。因此可以认为扫描程序执行与优化程序拼写相似的任务。本实验的词法分析程序用于生成Token序列。2.语法分析:该程序从扫描程序中获取记号形式的源代码,并完成定义程序结构的语法分析,这与自然语言中句子的语法分析类似。语法分析定义了程序的结构元素及其关系。其任务是识别和处理比单词更大的语法单位。本实验

3、用于指出程序设计语言中的表达式、各种说明和语句乃至全部源程序其中的语法错误;必要时,可生成部形式,便于下一阶段处理。3.中间代码:根据中间代码的类型和优化的类型,该代码可以是文本串的数组、临时文本文件或是结构的连接列表。对于进行复杂优化的编译器。由于同学们水平有限,我们只做了四元式的生成。4.语义分析:程序的语义就是它的“意思”,它与语法或结构不同。程序的语义确定程序的运行,但是大多数的程序设计语言都具有在执行之前被确定而不易由语法表示和由分析程序分析的特征。这些特征被称作静态语义,而语义分析程序

4、的任务就是分析这样的语义。一般的程序设计语言的典型静态语义包括声明和类型检查。由于同学们水平有限,我们只做了其中的符号表部分。编译原理课程兼有很强的理论性和实践性,是计算机专业的一门非常重要的专业基础课程,在系统软件中占有十分重要的地位。编译原理课程设计是本课程重要的综合实践教学环节,是对平时实验的一个补充。通过编译器相关子系统的设计,使学生能够更好地掌握编译原理的基本理论和编译程序构造的基本方法和技巧,融会贯通本课程所学专业理论知识;培养学生独立分析问题、解决问题的能力,以及系统软件设计的能力;

5、培养学生的创新能力及团队协作精神。2.课程设计任务及要求2.1设计任务在下列容中任选其一:1、一个简单文法的编译器前端的设计与实现。2、一个简单文法的编译器后端的设计与实现。3、一个简单文法的编译器的设计与实现。。4、自选一个感兴趣的与编译原理有关的问题加以实现,要求难度相当。2.2设计要求1、在深入理解编译原理基本原理的基础上,对于选定的题目,以小组为单位,先确定设计方案;2、设计系统的数据结构和程序结构,设计每个模块的处理流程。要求设计合理;3、编程序实现系统,要现可视化的运行界面,界面应清楚

6、地反映出系统的运行结果;4、确定测试方案,选择测试用例,对系统进行测试;5、运行系统并要通过验收,讲解运行结果,说明系统的特色和创新之处,并回答指导教师的提问;6、提交课程设计报告。3算法与数据结构3.1算法的总体思想我的课程设计实验基于词法扫描,采用递归下降子程序法的语法分析的方法实现编译器前端。主要部分有词法扫描、语法分析、四元生成、符号表建立等。3.2词法分析3.2.1功能词法分析程序又称扫描器,任务有二:(1)识别单词——从用户的源程序中把单词分离出来;(2)翻译单词——把单词转换成机表示

7、,便于后续处理。词法分析是编译的第一步,其目的是对程序进行扫描,并生成token序列,以便后面进行语法分析。3.2.2数据结构词法分析中用到的数据结构如下所示://关键字表privateMapkeyWordMap=newHashMap<>();//界符表privateMapborderMap=newHashMap<>();//标识符表privateMapidSignMap=newHashMap<>();//常

8、数表privateMapconstantMap=newHashMap<>();//栈privateStackpastword=newStack<>(在程序中用哈希表存储关键字表,界符表,常数表,标识符表,其中标示符表和常数表在分析单词过程中生成,关键字表和界符表根据语法规则写成,其中用哈希表中的key来存储单词,用val存储标号,如下图:(a)(b)图3-2-2:关键字表(a)和界符表(b);3.2.3算法词法分析主要是通过自动机来写的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。