[电脑基础知识]编译原理课程设计报告

[电脑基础知识]编译原理课程设计报告

ID:29894167

大小:69.88 KB

页数:35页

时间:2018-12-24

[电脑基础知识]编译原理课程设计报告_第1页
[电脑基础知识]编译原理课程设计报告_第2页
[电脑基础知识]编译原理课程设计报告_第3页
[电脑基础知识]编译原理课程设计报告_第4页
[电脑基础知识]编译原理课程设计报告_第5页
资源描述:

《[电脑基础知识]编译原理课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、一:课程设计功能需求分析编译课程设计的基本任务是设计一个mini-pascal语言的编译器,将mini-pascal语言的源程序翻译成等价的中间代码。要求输入mini-pascal语言写的源程序(以文件形式存储),首先经过词法分析,输出原程序分析后的二元式文件,供语法制导翻译用。经过语法制导翻译将词法分析器产生的二元式翻译成等价的四元式形式,也就是中间代码的生成。要求能进行正常的关键字如:begin,end,if,else等的识别。例:程序结构为:  program<标识符>;[<变量说明>]  procedure<标识符>[<参数表>]  [<变量说明>

2、]    begin        [<语句部分>]     end; begin     [<语句部分>]end.过程可以嵌套定义,每个过程最后以“;”为结束符,主程序最后以“•”为结束符。可执行语句:赋值语句、条件语句(if…then和if…then….else两种形式)、当型循环语句、for语句(此语句可不必做)、过程调用语句(有参和无参两种)、读语句、写语句、复合语句。数据类型:只有一种整型数据。数据结构:只有简单变量(整型) 二:课程设计总体设计   编译程序的任务是将高级语言程序翻译成低级语言程序(汇编语言或者机器语言).也就是说编译程序接受的

3、对象是以字符串形式存在文件中的高级语言,经过编译处理生成一个等价的汇编语言或者机器语言程序. 三课程实际模块详细设计                词法分析器模块的详细设计词法分析器的任务词法分析器的任务是将一个字符流文件按词法规则改造成一个单词流文件,也就是说输入词法分析器的是一个由字符组成的源文件,通过词法分析器识别分析后输出由若干个单词名称和单词编码组成的记录文件:单词符号用如下二元组表示:(单词名称,单词种类)词法分析原理及程序设计词法分析原理采用直接分析法进行词法分析,根据单词的第一个字符划分单词类型:•若第一个字符为字母,这将紧接在字母后面的字

4、母、数字逐一拼接成“字母数字串”直到遇到非字母也非数字的其他字符为此单词拼接完成,这可能是用户定义的标识符和保留字。•若第一个字符为数字,同样向后识别,将紧接在后面的数字和前面的数字拼接在一起,直到非数字的其它字符为止,这个单词为整数。•若第一个字符为其它类型,则根据字符本身就可识别,有的双字符运算符(如>=,:=等)需要再向后设备一个字符才能识别。测试简例begin ab2a:=9; ifx>=0thenx:=x+1; whilea=0do b:=a*x/33455; end#词法分析测试结果 递归下降分析法模块详细设计递归下降法的设计思想:用递归下降法

5、进行语法分析时对文法的产生式有两点限制:1.文法的产生式不含有左递归2.提取文法中的公因子mini–pascal语言中的程序结构部分符合上述限制,用递归下降法进行分析。以下为mini–pascal语言“程序结构”部分的文法表示:{}中内容可有可无,[]中内容重复0次到1次,{}n0中内容重复0次到n次(1)<程序> →program <名字>; <过程>.PROG→program ident;  PP.(2)<过程>→[<变量说明>]{<子程序>}begin <语句>endPP→[IDP] {PRP} begin PL end(3) <子程序> → pro

6、cedure <名字> [<参数说明>]; <过程>PRP→procedure ident [PARL]; PP;(4)<变量说明> → var <变量名> {<变量名>}IDP→Var ident{,ident};(5)<参数说明>→ (<变量名> {<变量名>})PARL→(ident{,ident})递归下降法即是对文法的每一个非终结符(一般代表某一语法范畴)编一个子程序用来识别由此非终结符所推导出的符号串。由于文法的产生式往往是递归定义的,因此,所编写程序往往引起递归调用。产生式(1)PROG→program ident;  PP.的示意性子程序P

7、rocedure  progBeginIf sym=‘program’ then getword                 else 出错处理;If sym=ident    then begin 填符号表; getword end                 else 出错处理;If sym=‘;’       then getword                 else 出错处理;调PP过程If sym=.    then判断二元式文件是否结束,若没有结束则出错,否则结束。                else  出错处理;end产生

8、式(2)和(3)是递归定义的,因此其相应的子程序也是递归调用的。以

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

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

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