zhouqijie

语法分析概述

语法分析器作用

在我们的编译器模型中,语法分析器从词法分析器获得一个由词法单元组成的串,并验证这个串可以由源语言的文法生成。
我们期望语法分析器能够以易于理解的方式报告错误,并且能够从常见的错误中恢复并处理程序的其他部分。
从概念上讲,对于良构的程序,语法分析器构造出一棵语法分析树,并把它传递给编译器的其他部分进一步处理。

在实践中。语法分析过程可能包括多个任务,比如将不同词法单元的信息收集到符号表中,进行类型检查和其他类型的语义分析,以及生成中间代码。(前端的剩余部分)

处理文法的语法分析器大体上可以分为三种类型:通用的自顶向下的自底向上的。像Cocke-Younger-Kasami算法和Earley算法这类通用语法分析方法可以对任意文法进行语法分析,但是效率很低。编译器中常用的方法是自顶向下和自底向上的。

语法错误的恢复策略:恐慌模式恢复短语层次恢复错误产生式全局纠正

个人总结

CRE:LL文法在语法分析阶段比较直观简单且容易实现。但是LL文法需要的非左递归特性导致语义分析/语法制导翻译比LR文法复杂得多。

(END)