算符优先文法
自下而上语法分析
- 简述自下而上语法分析的基本思想,基本过程和基本操作
基本思想:就是从待分析的终结符号串出发,反向使用产生式规则,将产生式规则右部的符号串归约为左部的非终结符。通过一系列这样的归约,最终能归约出文法的起始符号,则证明待分析的终结符号串是合法的句子
- 关键问题:寻找可归约串,即对于待分析的符号串,应选择其中的哪个子串进行归约
- 算符优先文法时,使用优先函数有什么优点和缺点
(1) 优点:使用优先函数为文法中每一个终结符赋予两个函数值f和g,减少了优先关系表尺寸,节省了存储空间;同时通过数值表达终结符之间的优先关系,提高了比较终结符之间优先关系的效率
(2) 缺点:在优先关系表中,某些终结符之间不存在优先关系,但是变成优先函数后,由于任意数值之间都可以比较,会导出任意终结符对都存在优先关系的结论,这样就产生了新问题
算符优先文法
-
优先级符合的规矩:
-
步骤:
-
构造FIRSTVT:
-
构造LSATVT:
-
构造分析表:
-
分析过程:
①入栈符号优先级比栈顶符号优先级大则入栈
②相等也入栈
③如果入栈符号优先级小于栈顶的优先级,栈顶非终结符号进行递归 -
算符优先分析法分析句子成功的标志:
堆栈中符号为‘#’和文法的开始符号,缓冲区的指针指向符号‘#’ -
算符优先分析法按照算符优先关系表进行归约,每一次归约当前句型的最左素短语,而不是句柄,所以其归约过程不是规范的
-
不相邻的终结符没有相应的优先关系
-