1.编译程序的基本概念、结构
2.文法(描述词法规则和语法规则的工具):文法G可以定义成四元组(VN,VT,S,P)
- VN是一个有限集合,称为非终结符集,其中的每个元素称为非终结符;
- VT是一个有限集合,称为终结符集,其中的每个元素称为终结符;
- S∈VN是一个特殊的非终结符,称为文法起始符号;
- Р是一个有限的集合,其中每个元素是形如α→β的产生式规则,α,β都是由非终结符和终结符构成的符号串,包括空串,且α中至少含有一个非终结符。(产生式集合)
在描述词法规则时,终结符是字母表上的字母,非终结符是为区分不同类型单词符号引入的文法符号。在描述语法规则时,终结符是单词符号,非终结符表示各种语法范畴(表达式、语句、分程序、程序)。
0型文法(短语文法)等价于图灵机,产生式规则没有限制。
1型文法(上下文有关文法)产生式规则α→β必须满足|αl≤|βl,只有S→ε例外,|αl,|βl表示长度。
2型文法(上下文无关文法)产生式规则A→β形式,其中 A∈VN,β为由终结符和非终结符构成的符号串,包括空串。
3型文法(正则文法)等价于有限自动机,产生式规则具有A→αB或者A→α的形式,其中A和B都是文法非终结符,α是由文法终结符构成的符号串,包括空串。
3.推导:所谓推导,是对于一个含非终结符A的符号串,利用规则A→α,把A替换成α得新符号串的过程。(最左推导:符号串最左边的非终结符进行替换与最右推导)
4.语法树:推导过程用一棵树的形式表示出来,每一步推导对应一步树的增长,开始时树中只有用文法起始符号标示的根节点,在推导的每一步,当利用规则A→A1A2...An替换当前符号串中的A时,其中A为非终结符,A1,A2...A为任意的终结符或者非终结符,则产生以A为父节点的节点A1,A2...An,这样的树称为语法树。
句型:从文法起始符号出发,经过有限步推导能够推导出来的符号串称为句型。
句子:只由终结符构成的句型称为句子。
语言:所有句子的集合构成该文法描述的语言。
存在两个不同的语法树,或文法存在句子或者句型,该句子或者句型按照文法有两种不同的最左或最右推导称为二义文法。
5.短语、直接短语、句柄、素短语、最左素短语