没有合适的资源?快使用搜索试试~ 我知道了~
《编译原理》课程设计_DO_WHILE循环语句的翻译程序设计(LL(1)法、输出三地址表示).docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 132 浏览量
2022-07-14
10:49:16
上传
评论
收藏 616KB DOCX 举报
温馨提示
试读
29页
《编译原理》课程设计_DO_WHILE循环语句的翻译程序设计(LL(1)法、输出三地址表示).docx《编译原理》课程设计_DO_WHILE循环语句的翻译程序设计(LL(1)法、输出三地址表示).docx《编译原理》课程设计_DO_WHILE循环语句的翻译程序设计(LL(1)法、输出三地址表示).docx《编译原理》课程设计_DO_WHILE循环语句的翻译程序设计(LL(1)法、输出三地址表示).docx《编译原理》课程设计_DO_WHILE循环语句的翻译程序设计(LL(1)法、输出三地址表示).docx《编译原理》课程设计_DO_WHILE循环语句的翻译程序设计(LL(1)法、输出三地址表示).docx《编译原理》课程设计_DO_WHILE循环语句的翻译程序设计(LL(1)法、输出三地址表示).docx《编译原理》课程设计_DO_WHILE循环语句的翻译程序设计(LL(1)法、输出三地址表示).docx
资源推荐
资源详情
资源评论
学
号:
课 程 设 计
题
学
专
班
姓
目
院
业
级
名
编译原理
计算机科学与技术
计算机科学与技术
指导教师
2 年
月
日
课程设计任务书
学生姓名:
指导教师:
专业班级:
工作单位:
题目: DO-WHILE 循环语句的翻译程序设计(LL(1)法、输出三地址表示)
初始条件:
理论:学完编译课程,掌握一种计算机高级语言的使用。
实践:计算机实验室提供计算机及软件环境。如果自己有计算机可以在其上进行设
计。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
(1) 写出符合给定的语法分析方法的文法及属性文法。
(2) 完成题目要求的中间代码三地址表示的描述。
(3) 写出给定的语法分析方法的思想,完成语法分析和语义分析程序设计。
(4) 编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。
(5) 设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:
1 系统描述(问题域描述);
2 文法及属性文法的描述;
3 语法分析方法描述及语法分析表设计;
4 按给定的题目给出中间代码形式的描述及中间代码序列的结构设计;
5 编译系统的概要设计;
6 详细的算法描述(流程图或伪代码);
7 软件的测试方法和测试结果;
8 研制报告(研制过程,本设计的评价、特点、不足、收获与体会等);
9 参考文献(按公开发表的规范书写)。
时间安排:
设计安排一周:周 1、周 2:完成系统分析及设计。
周 3、周 4:完成程序调试及测试。
周 5:撰写课程设计报告。
设计验收安排:设计周的星期五第 1 节课开始到实验室进行上机验收。
设计报告书收取时间:设计周的次周星期一上午 10 点。
指导教师签名:
2011 年 12月 23日
2011 年 12月 23日
系主任(或责任教师)签名:
DO-WHILE 语句的翻译程序设计
(LL(1)文法输出 3 地址表达式)
1 课设的描述
1.1
课设要求
首先按照课程设计的要求,写一个能识别 do-while 循环语句的文法,并使它符合 LL(1)
法的要求,按照这个文法编写一个程序,该程序能识别输入的语句是否符合 do-while 语句的
文法,或者通过文法的开始符号能判断是否能推导出该语句。
程序应该包括词法分析器,能对输入的语句进行词法分析,对输入的源程序从左到右进
行扫描并将其分解为一个个的单词符号。然后再对结果进行语法分析。词法分析器应能识别
关键字,标识符,常量,操作符等。
该程序的语法分析器能对输入的语法进行分析,判断输入语句能否满足 do-while 循环语
句的文法,如果不是则提示错误,如果满足 do-while 循环语句文法,判断是否符合 LL(1)法,
运用最左推导对其进行分析,看能否通过开始符号推导出来。
将语法和语义分析的结果用输出三地址形式表示出来。
1.2 课设中所用概念
1) 词法分析:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的
单词符号:关键字(do,while)、标识符、常量、操作符等。
2) 语法分析:在词法分析的基础上,根据语法规则,把单词符号串分解成各类语法单
位。
3) 语义分析与中间代码产生:对语法分析所识别出的各类语法范畴,分析其含义,并
进行初步翻译(产生中间代码)。
4) LL(1)文法:LL(1)文法是一种自上而下的语法分析方法。第一个 L 是自上而下的分析,
第二个 L 是从最左单词开始分析,1 代表只通过下 1 个单词分析需要用到的语法。
5) 预测分析程序:实现 LL(1)法分析的一种有效方法,使用一张预测分析表和一个栈进
行联合控制。预测分析程序就是属于这种类型的 LL(1)分析器。
2 文法的描述
2.1 do.. While 语句文法描述
K->dLwS
P->;SP
S->iQE
G->+TG
G->ε
R->*FR
R->ε
F->I
L->SP
P->ε
E->TG
G->-TG
T->FR
R->/FR
F->(E)
Q->=
Q-><
Q->>
非终结符集 V {K,L,P,S,G,R,E,F,Q,T}
N
终结符集 V*{ do,while,(,), ε,+,-,*,/,i,>,=,<,;}
预测分析表
; while
K
L
P
S
E
G
T
R
F
Q
ε
ε
ε *FR /FR
=
<
>
3 语法分析方法及中间代码形式的描述
3.1 语法分析方法描述
LL(1)文法的定义:
First 集:
设 G={V ,V ,S,P}是上下文无关文法
T
N
First(α)={a|α=>aβ,a∈V ,α,β∈V }
*
T
若 a=>ε,则规定ε∈First(α),称为 First(α)为α的开始符号集或首
符号集。
FOLLOW 集:
设 G={V ,V ,S,P}是上下文无关文法
T
N
FOLLOW(A)={a|S=>μAβ且 a∈V ,a∈First(β),μ∈V ,β∈V }
*
+
T
若 S=>μAβ,且β=>ε,则#∈FOLLOW(A)
T
SELECT 集:
给定上下文无关文法的产生式 A--> α A∈V ,α∈V ,若α≠ >ε,则
*
N
SELECT(A-->α)=First(α)
如果α=>ε,则 SELECT(A-->α)=(First(α)-{ε})U FOLLOW(A).
LL(1)文法:
一个上下文无关文法是 LL(1)文法的充分必要条件是,对每个非终结符 A
的两个不同的产生式,A-->α A-->β,满足
SELECT(A-->α)∩SELECT(A-->β)= ф
其中α,β不能同时推导出空.
3.2 中间代码形式
三地址码是由下面一般形式的语句构成的序列:
x := y op z
其中,x y z 为名字、常数或临时变量;op 代表运算符号。每个语句中只能有一个运算符。
三地址码类似于汇编语言代码。语句可以带有符号标号,而且存在各种控制流语句,本程序
输出中用到了:
复制语句 x := y
条件转移语句 if x relop y goto L //L 为带标号L 的三地址语句
无条件转移语句 goto L //转移到标号为L 的三地址语句。
剩余28页未读,继续阅读
资源评论
若♡
- 粉丝: 6123
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功