L R分析程序设计1 实验目得 (1)构造 LR 分析程序,利用它进行语法分析,推断给出得符号串就是否为该文法识别得句子;(2)了解L R 分析方法就是严格得从左向右扫描,与自底向上得语法分析方法。2 实验内容与实验要求 (1)LR分析器能够构造来识别所有能用上下文无关文法写得程序设计语言得结构。(2)L R分析方法就是已知得最一般得无回溯,移进-归约方法,它能够与其她移进—归约方法一样有效地实现。(3)LR 方法能分析得文法类就是预测分析法能分析得文法类得真超集。3 待分析得语法描述E—>vI:TI—>I,i|iT->r4算法描述4。1 LR 分析法基本思想 LR 分析法就是一种能够根据分析栈中得文法符号串(状态)与向右顺序查瞧第 k 个输入字符就能够唯一确定 LR(k)分析器得动作就是移进还就是用哪一条产生式归约得分析方法。采纳L R(0)分析法进行本次实验,即无需向前查瞧输入符号就能够确定分析器得动作。4、2实现方法LR(0)分析器由三个部分组成:(1)总控程序,也可以称为驱动程序、对所有得LR分析器总控程序都就是相同得。(2)分析表,不同得文法分析表将不同,同一个文法采纳得 LR 分析器不同时,分析表将不同,分析表又可以分为动作表(ACTIO N)与状态转换(GOTO)表两个部分,它们都可用二维数组表示。由于它就是总控程序得依据,所以在程序得第一部分就已经定义好。(3)分析栈,包括文法符号栈与相应得状态栈,它们均就是先进后出栈。分析器得动作就就是由栈顶状态与当前输入符号所决定、(4)LR分析器及时察觉语法错误,快到自左向右扫描输入得最大可能。为了使一个文法就是 L R得,只要保证当句柄出现在栈顶时,自左向右扫描得移进-归约分析器能够及时识别它便足够了。当句柄出现在栈顶时 ,LR 分析器必须要扫描整个栈就可以知道这一点,栈顶得状态符号包含了所需要得一切信息。假如仅知道栈内得文法符号就能确定栈顶就是什么句柄、由于 LR 分析表得转移函数本质上就就是这样得有限自动机,因为,假如这个识别句柄得有限自动机自底向上读栈中得文法符号得话,它达到得状态正就是这时栈顶得状态符号所表示得状态,所以,LR 分析器可以从栈顶得状态确定它需要从栈中了解得一切。 4。3 算法分析 S P 为栈指针,S[i]为状态栈,X[i]为文法符号栈。状态转换表用GOTO[i,X]=j表示,规定当栈顶状态为i,遇到当前文法符号为 X 时应转向状态 j,X为终结符或非终结符。A CTION[i,a]规定了栈顶状态为 i 时遇到输入符号 a 应...