没有合适的资源?快使用搜索试试~ 我知道了~
编译原理实验报告-语法分析.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 56 浏览量
2021-10-03
09:04:59
上传
评论
收藏 502KB DOC 举报
温馨提示
试读
27页
编译原理实验报告-语法分析.doc
资源推荐
资源详情
资源评论
- -
编译原理课程实验报告
实验 2:语法分析
院系 软件学院 学号
任课教师 指导教师
实验地点 软件学院三楼机房 实验时间 星期日
实验课表现
出勤、表现得分
实验报告
得分
实验总分
操作结果得分
一、需求分析
得分
要求:采用至少一种句法分析技术〔、、或 〕对类高级语言中的根本
语句进展句法分析。阐述句法分析系统所要完成的功能。
本语法分析器是在词法分析器的根底上实现对类高级语言中的根本语句进展句法分析,根本功能如
下:
〔〕能识别以下几类语句:
声明语句〔包括变量声明、数组声明、记录声明和过程声明〕
表达式及赋值语句〔包括数组元素的引用和赋值〕
分支语句:
循环语句:
过程调用语句
〔〕本语法分析器采用自顶向下的分析技术,能根据导入的文法,自动计算 集和
集,能够生成每个产生式的集,并自动生成预测分析表。
〔〕本语法分析器具备语法错误处理能力,可以进展错误检测,如果检测到在出错时,采用
恐慌模式,能够给出错误提示信息,格式:错误项 错误原因 行号
忽略输入中的一些符号,直到输入中出现选定的同步词法单元集合中的某个词法单元,
同步集合的选取是非终结符的 集;
如果终结符在栈顶而不能匹配,弹出此终结符。
输入栈中缺少某些应有的符号,比方只有右括号没有左括号等,会给出相应的提示。
〔〕系统的输入形式多样:可以通过文件导入文法和测试用例, 可以通过用户界面显示并编
辑测试用例。测试用例涵盖了第〔〕条中列出的各种类型的语句,并设置了一些语法错误。
〔 〕 系统的输 出 分 为 两 局 部 :一 局 部 是 打 印 输 出 语 法 分 析 器 的 !"# 集 、 !$$%
集、 集和 分析表。另一局部是打印输出语法分析结果。
〔〕本系统还实现了输出语法分析树的功能,让语法分析的过程更清晰。
- word.zl-
- -
二、文法设计
得分
要求:给出如下语言成分的文法描述。
声明语句〔包括变量声明、数组声明、记录声明和过程声明〕
表达式及赋值语句〔包括数组元素的引用和赋值〕
分支语句:
循环语句:
过程调用语句
本语法分析器主要针对 & 语言进展文法设计,下面给出各语言成分的文法描述。
程序入口:
'()*+'
'*+,'支持连续声明
'*+'
'*+-
)声明语句:
,./,0#/ 支持过程声明和变量声明
#12&0, 支持构造体声明
2100(030400(支持多种根本类型的声明
&154)6&0-支持数组的声明
表达式及赋值语句7
89/089/
99:909;9090900(0
5960596支持数组元素的引用和赋值
控制流语句7
if<thenelse 0while<do
<1<||< 或语句
0<==< 且语句
0>< 非语句
0< 使用括号
09relop9 关系语句
- word.zl-
- -
0true 型
0false 型
.1?0?80880>80+0+8 关系符号
〕过程调用语句
callid9
99@9
99
下面给出整个程序的无二义性,无左递归的 〔〕文法:
'()*+'
'*+,'0'0).A
,*+.#BC'D0#/0C'D
B*+2BE
BE*+@2BE0).A
*+8!0).A0@
!*+(000CFD0(
F*+GFE
FE*+@GFE0).A
G*+(0
#*+2&
2*+00(030400H0(0
&*+5(6&0).A
*+89/0<0<09/049/
9*+*99E099E0(9E09E0(9I
9E*+:99E0;99E0).A
*+E
E*+5(6E0).A
<*+><<E0<<E09.9<E04<E0<E
<E*+<<E0<<E0).A
.*+?0?80880>80+0+8
9*+99E
9E*+@99E0).A
注:此处用 ).A 代表空
- word.zl-
- -
三、系统设计
得分
要求:分为系统概要设计和系统详细设计。
() 系统概要设计:给出必要的系统宏观层面设计图,如系统框架图、数据流图、功能模块构
造图等以及相应的文字说明。
〕系统的数据流图:
说明
说明:本语法分析器是基于上一个实验词法分析器的根底上,通过在界面写或者是导入源
程序,词法分析器将源程序识别的词法单元传递给语法分析器,语法分析器验证这个词法
单元组成的串是否可以由源语言的文法生成,能够输出语法分析的结果,文法的
集、 集和预测分析表,当然也可以以易于理解的方式报告语法错误。
)系统框架图
本系统框架主要是三局部,一局部是词法分析,负责识别源程序的词法单元识别,并将其
存储,以供语法分析时读取;第二局部是文法分析局部,负责将导入的文法进展分析,得
- word.zl-
- -
出文法的 集和 集,以及自动构造出预测分析表,在语法分析时进展查询;第
三局部是用户界面,提供源程序输入功能,以及语法分析结果的显示,显示语法分析树,
还有 集、 集和预测分析表的展示。
〔〕系统详细设计:对如下工作进展展开描述
核心数据构造的设计
核心数据构造主要有两种7
#4. 三元组
为了存储预测分析表,我使用 #4.?(@(@(+三元组的数据构造,分别存
储产生式的头部,产生式体,输入符号。
J 栈
为了能够在语法分析时根据预测分析表来进展分析,我写了一个 &J 的类用来实现栈
的数据构造,在进展语法分析时,一个栈用来存储文法符号,一个栈用来存储输入符号,
然后根据预测分析表进展语法分析。
主要功能函数说明
主要功能函数7
",& 类:
功能:充当符号表的角色,主要是用来保存关键字,运算符,界符,转义字符等各类单
词。
主要函数:&&(判断是否转义字符
判断是否字母或下划线
,(判断是否数字
<J判断是否是空格、制表符、换行、回车
KA%(判断是否关键字
<4A判断是否是边界符号
$.(判断是否运算符
〕" 类
功能:识别单词的核心类
主要函数:(",(@是否是标识符
(L(@@4(是否 进制数
(9((@@4(是否 M 进制数
(N4)(@@4(是否是常数
($.(@@4(是否是运算符
(N(@@4(是否注释
(<4A(@@4(是否界符
(&(@@4(是否字符常数
)!! 类
功能:得到 集、 集、 集、预测分析表
.4H(!&得到 集合
.4H(!&得到 集合
.4H(&得到预测分析表
.4H(A#(@(@(得到预测分析表
.4HG参加同步词法单元
- word.zl-
剩余26页未读,继续阅读
资源评论
gjmm89
- 粉丝: 14
- 资源: 19万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功