递归下降本质
递归下降使用递归推导方式来解析语法,其要求文法能够使用递归方法追个推导,最终达到文法匹配的目的。例如如下计算逻辑表达式的BNF文法:
<expr> ::= <term> <expr_tail>
<expr_tail> ::= '&' <term> <expr_tail>
| '|' <term> <expr_tail>
| <empty>
<term> ::= '(' <expr> ')'
| '!' <term>
| 'y'
| 'n'
在上述的逻辑运算表达式文法中,并非只按照递归来编写文法的,而是在递归的同时结合了推导,如果只使用递归,将无法进行解析,如下所示:
<expr> ::= <term> <expr_tail>
<expr_tail> ::= '&' <term>
| '|' <term>
| <empty>
<term> ::= '(' <expr> ')'
| <expr>
| '!' <term>
| 'y'
| 'n'
标签:文法,语法分析,递归,推导,下降,表达式
From: https://www.cnblogs.com/LSWu/p/18353140