自底向上句法分析一般采用LR分析法,该刚发要求文法不包含移进--归约或者归约--归约冲突,由于自然语言的歧义性,不可避免的存在各种冲突,因此,自底向上分析法并不适合汉语句法分析
1.移进--归约算法
算法的基本数据结构是堆栈。
算法中主要的操作:
(1)移进。从句子左端将一个终结符移到栈顶
(2)归约。根据规则,将栈顶的若干个符号替换成一个符号
(3)接收。句子中所有词语都已移动到栈里,并且栈中只剩下一个符号S,分析成功,结束
(4)拒绝。句子中所有词语都已移动到栈里,栈中并非只有一个符号S,也无法进行任何归约操作,分析失败,结束
2.欧雷分析法
算法基本思想是:把每个句法成分的识别过程划分为若干个状态。一个重要贡献是引入了点规则,所谓点规则,是在规则右部的终结符或者非终结符之间的某个位置上加上一个圆点,表示规则右部被匹配的程度
Earley算法涉及到的操作: