定义:上下文无关文法G是一个四元组
,其中
- V是一个字母表,
是终结符集合,它是V的子集,(
的成员叫做非终结符) R是规则集合,它是
的有穷子集,
是起始符。
对任意的
和
,当
时记作
。对任意字符串
,记
当且仅当存在字符串
和
使得
,
和
。关系
是的自反传递闭包。
G生成的语言
为
如果
,其中G是一个上下文无关文法,则称L是一个上下文无关语言。
形如
的序列称作
在G中从
开始的推导,这里
可以是
中的任何字符串,推导的长度n是任何自然数,包括0在内。也说推导有n步。
语法分析树:
设
是一个上下文无关文法,
和
是G中的两个推导,其中
,
且
,
。即D和D'都是从单个非终结符到终结符串的推导。如果n>2并且存在k,1<k<n使得:
对于所有的
有
,这里
,
,这里
,这里
则称D先于D',记作
如果有序对
属于
的自反对称传递闭包,则称这两个推导D和D'是相似的。
最左推导:在相似性下的等价类,有一个推导在
下是极大的,叫做最左推导。
最右推导:在相似性下的等价类,有一个推导在
下是极小的,叫做最右推导。
定理:设
是一个上下文无关文法,
及
,则下述命题是等价的:
有一棵根为A、结果为
的语法分析树 - 有最左推导
- 有最右推导
在上下文无关文法生成的语言中,一个字符串可能有两个不相似的推导,也就是说有两棵不相同的语法分析树,或等价的说有两个不同的最右推导(最左推导)。能有两棵或者以上的不同语法分析树的字符串的文法叫做歧义的。存在具有下述性质的上下文无关语言:生成它的所有上下文无关文法一定是歧义的。这样的语言叫做固有歧义的。
下推自动机是一个六元组
,其中
- K是有穷的状态集合
是一个字母表(所有的输入符号)
是一个字母表(所有栈符号)
是初始状态
是终结状态的集合
是转移关系,它是
的有穷子集。
,则当M处于状态p,栈顶为
时,他可以从输入带读a,在栈顶用
代替
,然后进入状态q,这叫做M的转移。
推入一个符号是把这个符号加到栈顶上;托出一个符号是把这个符号从栈顶移去。
下推自动机的格局是
的成员。设
和
是两个格局,如果存在转移
使得
,
和
,其中
,则称
一步生成
,记作
。把
的自反传递闭包记作
。称M接受字符串
当且仅当对于某个
,
M接受的语言是M接受的所有字符串的集合,记作
。
定理:下推自动机接受的语言正好是上下文无关语言。
定理:上下文无关语言在并、连接和Kleene星号下是封闭的。
定理:一个上下文无关语言与一个正则语言的交是一个上下文无关语言。
泵定理:设
是一个上下文无关文法,那么
中任一长度大于
的字符串w可以写成
使得v或y不是空串,并且对每一个
,
。
定理:上下文无关语言在交和补下不是封闭的。
定理:
- 有多项式算法,任给一个上下文无关文法,构造一台等价的下推自动机。
- 有多项式算法,任给一台下推自动机,构造一个等价的上下文无关文法。
有多项式算法,任给一台上下文无关文法G和一个字符串x,判断是否
。
确定型上下文无关语言:
定理:确定型上下文无关语言类在补运算下是封闭的。
死结束:
推论:确定型上下文无关语言类是上下文无关语言类的真子集。(就下推自动机而言,非确定性比确定性更有力。)