实验二 语法分析(算术表达式的扩充)
一·、实验题目
算术表达式文法扩充如下:
E→E+E| E-E|E*E |E/E| (E) | I
试根据该文法重新设计LR分析表,并修改语义加工程序,最后验证修改的结果。
二、实验过程
(1)代码设计
由于一开始没有用实验要求的文法设计的表(最主要是实验要求的文法有很多左递归的文法造成对于还没充分认识LR的我来说,存在很大的难度。所以查找一些假设LR构造的表已经设计出来的,看看LR语法分析的流程),所以等我了解了LR构造的流程以后,我就想设计一个更加符合要求的。
-
文法
E→E+E| E-E|EE |E/E| (E) | I
转化为如下:
A→E(文法开始)
E→E+E
E→E-E
E→EE
E→E/E
E→(E)
E→I -
项目集规范族
I0:
A→·E
E→·E+E
E→·E-E
E→·EE
E→·E/E
E→·(E)
E→·i
I1:
A→E·
E→E·+E
E→E·-E
E→E·E
E→E·/E
I2:
E→(·E)
E→·E+E
E→·E-E
E→·EE
E→·E/E
E→·(E)
E→·i
I3:
E→i·
I4:
E→E+·E<