YangHao's ink
编译原理 10 min read

自顶向下与自底向上语法分析

语法分析的两大流派:递归下降 / LL 自顶向下,和 LR 系列自底向上。各有取舍。

语法分析的两大流派:递归下降 / LL 自顶向下,和 LR 系列自底向上。各有取舍。

1. 自顶向下(LL)

从开始符号出发尝试推导出输入串。递归下降直观、易手写,但需要消除左递归、提取左公因子。

2. 自底向上(LR)

从输入串规约回开始符号,能力更强(LR(1) / LALR),但表难手写,通常用工具生成(yacc / bison)。

💡

选择建议:手写小语言用递归下降;处理复杂文法用 LR 工具。冲突(shift/reduce)几乎都来自文法二义性。

标签 #compiler#parsing#grammar