Advertisement

表达式语法分析:递归子程序法

阅读量:

递归子程序法在表达式语法分析中的应用

写在前面:务必保留代码部分中对函数的声明,否则可能导致error!!!通过函数声明可规避函数定义顺序问题

递归子程序法是一种明确的自顶向下语法分析策略,其适用条件为文法需满足LL(1)文法的要求。该方法的核心思路是针对文法中的每一个非终结符设计一个递归过程,每个过程的作用是识别由对应非终结符所生成的字符串。当某个非终结符具有多个产生式选项时,该方法能够依据LL(1)形式唯一地选择某一个候选式进行推导。请根据以下表达式LL(1)文法,构建相应的递归子程序,以实现对表达式的语法分析。

表达式文法如下:

E→TG

G→+TG | ε

T→FS

S→*FS | ε

F→(E) | i

对于给定的输入串(长度不超过50个符号),请输出分析过程中所使用的全部产生式,并指出该输入串是否属于该文法所能生成的表达式。输出共11行,前10行每行包含两个数据项,用空格分隔,表示推导过程中所使用的产生式序号(从0开始),最后一行显示accept,表明i+i*i是符合该文法规则的有效表达式。注:其中&符号代表文法中的ε符号。

例如:

i+i*i是一个符合该文法规则的有效表达式,输出格式如下:

0 E-->TG

1 T-->FS

2 F-->i

3 S-->&

4 G-->+TG

5 T-->FS

6 F-->

全部评论 (0)

还没有任何评论哟~