2024年5月25日发(作者:)
递归下降分析程序实验报告
1.实验内容
编程实现给定算术表达式的递归下降分析器。
算术表达式文法如下:
EE+T | T
TT*F | F
F(E) | i
2.实验分析
(1 ) 对所给表达式进行分析,如果是左递归则对算术表达式进行改写消除其左递归。
改写的算术表达式如下:
E→TE’
E’→+TE’| ε
T→FT’
T’→*FT’ | ε
F→(E) | i
( 2) 写出上面表达式的FIRST集和FOLLOW集,然后对有多个规则的FIRST集求并
集,看是否等于空集;对规则右部出现空串的FIRST集与FOLLOW集求并集,看是否等
于空集。
对E’:FIRST(+TE′) ∩FOLLOW(E′)={+,ε} ∩{#, )}=Φ
对T’:FIRST(*FT′) ∩FOLLOW(T′)={* ,ε} ∩{+,#, )}=Φ
对F: FIRST(i) ∩FIRST( (E) )={i} ∩{ ( }=Φ
故由上面可知此改写后的文法是LL(1)文法。
(3)对上述LL(1)文法编程。编程规则如下:
①当遇到终结符a时,则编写语句
If(当前读来的输入符号==a)读下一个输入符号
②当前遇到非终结符A时,则编写语句调用A()。
③当前遇到A→ε规则时,则编写语句
If(当前读来的输入符号不属于FOLLOW(A)) error()


发布评论