编译原理实验报告.docxVIP

  • 10
  • 0
  • 约1.12万字
  • 约 27页
  • 2021-03-21 发布于天津
  • 举报
编译原理课程实验报告 实验2 :语法分析 姓名 ■ 1院系1软件学院 学号 任课教师 指导教师 实验地点 软件学院三楼机房 实验时间 2016/10/30/ 星期日 实验课表现 出勤、表现得分 实验报告 得分 实验总分 操作结果得分 一、需求分析 得分 要求:采用至少一种句法分析技术( LL(1)、SLR(1、LR(1)或LALR(1))对类高级语言中的基本语句进 行句法分析。阐述句法分析系统所要完成的功能。 本语法分析器是在词法分析器的基础上实现对类高级语言中的基本语句进行句法分析,基本功能 如下: (1) 能识别以下几类语句: 声明语句(包括变量声明、数组声明、记录声明和过程声明 ) 表达式及赋值语句(包括数组元素的引用和赋值) 分支语句:if_then_else 循环语句:do_while 过程调用语句 (2) 本语法分析器采用自顶向下的分析技术,能根据导入的文法,自动计算 first集和follow集, 能够生成每个产生式的select集,并自动生成预测分析表。 (3) 本语法分析器具备语法错误处理能力,可以进行错误检测,如果检测到在出错时,采用恐 慌模式,能够给出错误提示信息,格式:错误项 错误原因 行号 a) 忽略输入中的一些符号, 直到输入中出现选定的同步词法单元集合中的某个词法单元, 同 步集合的选取是非终结符的 follow集; b) 如果终结符在栈顶而不能匹配,弹出此终结符。 c) 输入栈中缺少某些应有的符号,比如只有右括号没有左括号等,会给出相应的提示。 (4) 系统的输入形式多样:可以通过文件导入文法和测试用例,可以通过用户界面显示并编辑 测试用例。测试用例涵盖了第(1)条中列出的各种类型的语句,并设置了一些语法错误。 (5) 系统的输出分为两部分:一部分是打印输出语法分析器的 FIRST集、FOLLOW集、select集 和LL(1)分析表。另一部分是打印输出语法分析结果。 (6)本系统还实现了输出语法分析树的功能,让语法分析的过程更清晰。 二、文法设计 得分 要求:给出如下语言成分的文法描述。 声明语句(包括变量声明、数组声明、记录声明和过程声明 ) 表达式及赋值语句(包括数组元素的引用和赋值) 分支语句:if_then_else 循环语句:do_while 过程调用语句 本语法分析器主要针对 C语言进行文法设计,下面给出各语言成分的文法描述。 程序入口: Program-P P-D P //支持连续声明 P -S P P-£ 1) 声明语句: D proc id ; D S| T id; //支持过程声明和变量声明 T t X C | record D //支持结构体声明 X t short|int | Iong|float|double|char|string // 支持多种基本类型的声明 C t [num]C | II支持数组的声明 2) 表达式及赋值语句: S id = E ;| L = E ; E E + E | E * E | E |(E) | id | digit | L L id[E] | L[E] II支持数组元素的引用和赋值 3) 控制流语句: S if B then Slelse S2 | while B do S1 B t b || b II或语句 | B B II且语句 | ! B II非语句 1(B)| E relop E| true| false//使用括号 1(B) | E relop E | true | false //使用括号 //关系语句 //bool 型 //bool 型 //关系符号4)过程调用语句 //关系符号 S call id (Elist) Elist Elist, E Elist E 下面给出整个程序的无二义性,无左递归的 LL (1)文法: Program-P P-D P|S P|empty D-proc T id ( M ) { P }|T id A ;|record id { P } M-X id M M-, X id M|empty A-= F|empty|, id A F-digit|id|char|{ G }|string G-H G G-, H G|empty H-digit|char T-X C X-short|i nt|l on g|float|double|char|void|stri ng|boolea n C-[ digit ] C|empty S-L = E ;|if B the n S else S|while B do S|call id ( Elist ) ;|return E ; E-- E E|( E ) E|digit E|L E|string E E-+ E E|* E E|empty L-id L

文档评论(0)

1亿VIP精品文档

相关文档