1 / 8
文档名称:

实验二语法分析.docx

格式:docx   大小:58KB   页数:8页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验二语法分析.docx

上传人:840122949 2018/2/3 文件大小:58 KB

下载得到文件列表

实验二语法分析.docx

文档介绍

文档介绍:昆明理工大学信息工程与自动化学院学生实验报告
( 2013 — 2014 学年第 1 学期)
课程名称:编译原理开课实验室:信自楼 442 2013年 12 月27日
年级、专业、班
学号
201110405137
姓名
成绩
实验项目名称
语法分析器
指导教师
冯松
教师评语
该同学是否了解实验原理: □ □ □
该同学的实验能力: □ □ □
该同学的实验是否达到要求: □ □ □
实验报告是否规范: □ □ □
实验过程是否详细记录: □ □ □
教师签名:
年月日
实验目的及内容
实验目的:编制一个语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析。
实验内容:在上机(一)词法分析的基础上,采用递归子程序法或其他适合的语法分析方法,实现其语法分析程序。要求编译后能检查出语法错误。
已知待分析的C语言子集的语法,用EBNF表示如下:
<程序>→PROGRAM<标识符>;<分程序>
<程序>→<变量说明>BEGIN<语言表>END.
<变量表>→VAR<变量说明表>
<变量说明表>→<变量表>:<类型>| <变量表>:<类型>;<变量说明表>
<类型>→INTEGER|REAL
<变量表>→<变量>|<变量>,<变量表>
<语句表>→<语句>|<语句>;<语句表>
<语句>→<赋值语句>|<条件语句>|<WHILE语句>|<复合语句>
<赋值语句>→<变量>:=<算术表达式>
<条件语句>→IF<关系表达式>THEN<语句>ELSE<语句>
<WHILE语句>→WHILE<关系表达式>DO<语句>
<复合语句>→BEGIN<语句表>END
<算术表达式>→<项>|<算术表达式>+<项>|<算术表达式>-<项>
<项>→<因式>|<项>*<因式>|<项>/<因式>
<因式>→<变量>|<常数>|(<算术表达式>)
<关系表达式>→<算术表达式><关系符><算术表达式>
<变量>→<标识符>
<标识符>→<标识符><字母>|<标识符><数字>|<字母>
<常数>→<整数>|<浮点数>
<整数>→<数字>|<数字><整数>
<浮点数>→.<整数>|<整数>.<整数>
<关系符>→=|<|〈=|=|>|>=|<>
<字母>→A|B|C|…|X|Y|Z
<数字>→0|1|2|…|9
二、实验原理及基本技术路线图(程序流程图)
语法分析程序的算法思想
(1)主程序示意图如图1所示。
置初值
调用scaner读下一个单词符号
调用lrparser
结束
图1 语法分析主程序示意图
(2)递归下降分析程序示意图如图2所示。
是否begin?
调用scaner
调用语句串分析程序
是否end?
调用scaner
syn=0&&kk=0?
打印分析成功
出错处理
(3)语句串分析过程示意图如图3所示。






(4)statement语句分析程序流程如图4、5所示。
调用term函数
是否+ , -?
调用scan