百度文库1 实验四 LR (k)分析器设计一、实验目的(1)掌握下推机这一数学模型的结构和理论, 并深刻理解下推自动机在 LR分析法中的应用(即LR分析器)
(2)掌握LR分析法的思想,学会特定分析表的构造方法,利用给出的分析表进行 LR分析
二、实验内容根据课堂讲授的形式化算法,编制程序实现对以下语法进行自底向上语法分析的 LR分析器,设计分析表,对给出的输入语句进行语法分析,判断是否符合相应的文法要求
Program block block { stmts } stmts stmt stmts | stmt id = E ; | while ( bool ) stmt | block bool E = E E E + T | T T id | num 输入语句:三、实验要求要求实现以下功能:百度文库2 a) 设计分析表和语句的输入;b) 要实现通用的LR分析思想的源代码;c) 输出对语句的语法分析判断结果,如果可能给出错误的信息提示
四、实现方法根据课本的LR分析器模型和LR分析算法,完成 LR分析
对要求中的错误信息提示,指的是对应分析表中的空白处,每一个空白的地方都应该有对应的错误情况, 因而有相应的错误信息
注意这里的语法分析,是在词法分析的基础上进行的
五、识别活前缀的 DFA 百度文库3 六、SLR(1)分析表①Program -> block ②Block -> { stmts } ③Stmts -> stmt stmts ④Stmts -> eps ⑤Stmt -> id = E; ⑥Stmt -> while ( bool ) stmt ⑦Stmt -> block ⑧Bool -> E E >= E ⑩E -> E + T
E -> T
T -> id
T -> num FOLLOW(program) = {‘#’} FOLLOW(block)