LR(1)实验报告(附代码).pdfVIP

  • 11
  • 0
  • 约7.9千字
  • 约 7页
  • 2021-11-07 发布于山东
  • 举报
实验三 LR(1) 分析法 实验学时: 4 实验类型:验证 实验要求:必修 一、实验目的 构造 LR(1) 分析程序,利用它进行语法分析,判断给出的符号串是否为该文 法识别的句子,了解 LR (K)分析方法是严格的从左向右扫描,和自底向上的语 法分析方法。 二、实验内容 对下列文法,用 LR (1)分析法对任意输入的符号串进行分析: ( 产生式有误, 进行修改 ) (1)E- E+T (2)E- E —T (E-T) (3)T- T*F (4)T- T/F (T-F) (5)F- (E) (6)F- i 三、实验目的 1、编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。 2、如果遇到错误的表达式,应输出错误提示信息。 3、程序输入 / 输出实例: 输入一以 #结束的符号串 ( 包括 +—*/ ()i#) :在此位置输入符号串 输出过程如下: 步骤 状态栈 符号栈 剩余输入串 动 作 1 0 # i+i*i# 移进 i+i*i 的 LR分析过程 步骤 状态栈 符号栈 输入串 动作说明 1 0 # i+i*i# ACTION[0,i]=S 5 , 状态 5 入栈 2 05 #i +i*i# r 6 : F →i 归约 ,GOTO(0,F)=3 入栈 3 03 #F +i*i# r 4 : T →F 归约 ,GOTO(0,T)=3 入栈 2 4 02 #T +i*i# r : E →T 归约 ,GOTO(0,E)=1入栈 5 01 #E +i*i# ACTION[1,+]=S6 , 状态 6 入栈 6 016 #E+ i*i# ACTION[6,i]=S 5 , 状态 5 入栈 7 0165 #E+i *i# r 6 : F →i 归约 ,GOTO(6,F)=3 入栈 4 8 0163 #E+F *i# r : T →F 归约 ,GOTO(6,T)=9 入栈 9 0169 #E+T *i# ACTION[9,*]=S 7 , 状态 7 入栈 10 01697 #E+T* i# ACTION[7,i]=S 5 , 状态 5 入栈 11 016975 #E+T*i # r 6 :F →i 归约 ,GOTO(7,F)=10 入栈 3 12 0169710 #E+T*F # r : T →T*F 归约 ,GOTO(6,T)=9 入栈 1 13 0169 #E+T # r :E →E+T,GOTO(0,E)=1入栈 14 01 #E # Acc:分析成功 实验报告正文的内容: 描述 LR(1) 语法分析程序的设计思想 : 定义项目的一般形式是 [A → · , a 1a2 …ak] ,这样的一个项目称为一个

文档评论(0)

1亿VIP精品文档

相关文档