正在加载图片...
消除回溯的条件 然而还存在另外一种情况,可能存在某个候选式Y,Y1→*8, 即ε∈FIRST(y)(这样的是唯一的(?!)),此时,为匹配当前扫 描的符号a就可能有两种选择,一是存在某yj,使y推导出以a 打头的符号串,另一种选择是让A推导出Y,再让y推导出, 最后再让跟随在A后的符号串推导出以a打头的符号串. 若这两种选择都可行,则回溯不可避免.因此,就必须要求 当Y:→*ε时,跟在A后的符号串不能推导出其它Y所能推导 出的首终结符的符号串.为此,我们定义可紧跟在A后的所有 终结符之集 F0LL0W(A)={aS#→*cAaδ,aeVU{#},,6eV*] 其中,当A为一句型的尾符号时,#EFOLLOW(A). 现在,我们可把无回溯的另一条件描述为:若Y→*ε,则 FOLL0W(A)与其它的Y互不相交:FOLLOW(A)OFIRST(y)=O.消除回溯的条件 • 然而还存在另外一种情况,可能存在某个候选式i, i*, 即FIRST(i)(这样的是唯一的(?!)),此时,为匹配当前扫 描的符号a就可能有两种选择,一是存在某j,使j推导出以a 打头的符号串,另一种选择是让A推导出i,再让i推导出, 最后再让跟随在A后的符号串推导出以a打头的符号串. • 若这两种选择都可行,则回溯不可避免. 因此,就必须要求 当i *时,跟在A后的符号串不能推导出其它j 所能推导 出的首终结符的符号串.为此,我们定义可紧跟在A后的所有 终结符之集 FOLLOW(A)={a | S#*Aa, aVT{#}, ,V*} 其中,当A为一句型的尾符号时,#FOLLOW(A). • 现在,我们可把无回溯的另一条件描述为: 若i*,则 FOLLOW(A)与其它的j互不相交: FOLLOW(A)FIRST(j)=
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有