从宏观上讲就是由高级语言生成机器码的过程。
字母表:有穷符号集合。
乘积:连接。
正闭包与克林闭包:克林闭包多了一个空串。(所有不同长度的字符串组成的集合)
G=(VT,VN,P,S)
+表示经过正数次推导,*表示经过若干次推导(多了一个0次)。
不包含非终结符的是句子,包含的是句型,句子是一个特殊的句型。
由文法开始符号推导出所有的句子构成的集合称为该文法生成的语言。
是通过对产生式内容的限制来划分的。
无限制文法,a->b
,a中至少有一个非终结符。
a->b
a中至少一个非终结符
且|a|<=|b|
a->b
a中至少一个非终结符
|a|<=|b|
a只能是非终结符
a->b
a中至少一个非终结符
|a|<=|b|
a只能是非终结符
右线性:(a->w)||(a->wB) 左线性:(a->w)||(a->Bw)
我们只对2型文法做研究。
根节点符号为文法开始符号。
子树根节点为产生式左侧,子节点从左到右构成产生式右侧。
叶节点既可以是终结符,也可以是非终结符。
边缘:从左到右排列叶子节点,得到符号串称为这棵树的边缘。
短语:分析树中的每一个子树的边缘称为该句型的一个短语。
直接短语:子树只有父子两代节点,它的边缘为一个直接短语。
形成多棵分析树的文法是二义性文法,我们要避免。有一个充分条件,如果文法满足,则为一个二义性文法。