第三章 语法分析
编译器常用的语法分析方法有自上而下和自下而上两种。正如它们的名字所示,自上而下分析器按从根结点到叶结点的次序来建立分析树,而自下而上分析器恰好相反。它们的共同点是从左向右地扫描输入,每次一个符号。
最有效的自上而下和自下而上的分析法都只能处理上下文无关文法的子类。这些子类足以描述编程语言的大多数构造和它们的语法特征,其中L文法的分析器通常用手工实现,而LR文法的分析器通常利用自动工具构造。
3.1 上下文无关文法很多较复杂的语言不能使用正规式表达,所以需要定义描述功能比正规式更强的上下文无关的文法。
终结符: 即记号名。
非终结符: 非终结符用来帮助定义由文法决定的语言,一个非终结符定义终结符串的一个集合。非终结符还在语言中强加了层次结构,这种层次结构对语法分析和翻译都是有用的。
推导: 从开始符号开始,通过使用产生式的右部取代左部,最终能产生语言的一个句子的过程。其中, → \rightarrow