编译原理:文法与语法分析基本概念
语法分析
语法分析器的输入是词法分析后的结果——Token序列。每当调用一次词法分析器将读出一个单词,并将其Token表示回送给语法分析器。语法分析器的输入单位可视为一个Token。
语法错误类型:
起始单词错,包括程序、声明、语句表达式、变量等语法单位的起始单词错误。
后继单词错,包括程序、声明、语句表达式、变量等语法单位的起始单词错误。
标识符和常量单词错。
括号类错误,括号不配对错。
运算符错。
分隔符错。
语法分析方法:
分为两大类:自顶向下分析和自底向上分析。
文法和文法分析
产生式:产生式是一个二元组 (U,β) ,通常写成: U::=β 或者 U→β
其中U是符号,β是符号串。
符号串:是符号的有限序列。如果 ∑{a,b,c,...} ,则a、ab、ca等都是字母表上的符号串。符号串也称为字。特别用 Λ 或 ϵ 来表示空符号串。
非终极符:可以出现于产生式左部和右部的符号。
终极符:只出现于产生式右部的符号。
文法
作用:定义程序的语法结构。一般用G表示,
其中,
VT :有限的终极符集
VN :有限的非终极符集
S
:文法的开始符,
P :产生式的有限集
语言
文法中的产生式给出了从开始符号出发产生所有合法(符合语法)终极符串(句子,程序)的推导规则。每步的推导过程是将句型中的任一非终极符替换为以该非终极符为左部的产生式右部。
句型:如果有
句子:不包含非终极符的句型。
语言:文法G所定义的语言是开始符可导出的所有句子的集合。