递归下降分析技术
一、递归下降分析程序
若一个文法G不含有左递归,而且每个非终结符的所有候选式的首符集都是两两不相交的,那么就能为G中每个非终结符编写一个相应的递归过程。把该文法中所有这样的递归过程组合起来就可能构成一个不带回溯的自上而下分析程序-递归下降分析程序。
二、递归下降分析法实现思路
三、递归下降分析法的实现
a) 使用LL(1)文法
先将文法消除左递归、提取公共左因子,使之成为LL(1)文法,后将每个非终结符对应一个递归过程,过程体是按照相应产生式的右部符号串顺序编写。每匹配一个终结符,则再读入下一个符号,对产生式右部的每个非终结符,则调用响应的过程。
b)使用BNF范式
先将文法改写为BNF形式,后再书写递归子程序。
四、递归下降分析法的缺点
a) 对文法的要求高,必须满足LL(1)文法。
b) 高深度的递归调用会影响语法分析的效率,速度慢,占用空间多。