文法
认识终结符和非终结符
终结符,通俗的说就是不能单独出现在推导式左边的符号,也就是说终结符不能再进行
推。
例如:
有文法G2[S]为:
S->Ap
S->Bq
A->a
A->cA
B->b
B->dB
则表示:S 为开始符,S,A,B 为非终结符,而p,q,a,b,c,d 为终结符
文法的类型
- 0型文法,也称短语文法,能力相当于图灵机,任何0型文法都是递归可枚举的。它是几类文法中限制最少的,所以能见到的文法至少是0型文法。
- 1型文法,也称上下文有关文法,对应于线性有界自动机,它是在0型文法的基础上每一个α→β,都有|β|>=|α|。这里的|β|表示的是β的长度。
例,如有A->Ba则|β|=2,|α|=1符合1型文法要求
α→ε也满足1型文法,ε为空
- 2型文法,也称上下文无关文法,它对应下推自动机。2型文法是在1型文法的基础上,再满足:每一个α→β都有α是非终结符。
- 3型文法,也称正规文法,它对应于有限状态自动机。
第一点:左边必须只有一个字符,且必须是非终结符;
第二点:其右边最多只能有两个字符,且当有两个字符时必须有一个为终结符而另一个为非终结符。当右边只有一个字符时,此字符必须为终结符。
第三点:对于3型文法中的所有产生式,其右边有两个字符的产生式,这些产生式右边两个字符中终结符和非终结符的相对位置一定要固定,也就是说如果一个产生式右边的两个字符的排列是:终结符+非终结符,那么所有产生式右边只要有两个字符的,都必须前面是终结符而后面是非终结符。反之亦然,要么,就全是:非终结符+终结符。
如何判断一个串是否为某个文法的句型
α → β \alpha \rightarrow \beta α→β
正规式
正规式又叫正则表达式,每个正规式对应一个正规文法(3型文法)。
文法产生式 | 正则表达式 | |
---|---|---|
规则1 | A->xB,B->y | A=xy |
规则2 | A->xA or y | A=x*y |
规则3 | A->x,A->y | A=x or y |
有穷自动机(有限自动机)
NFA与DFA的定义
NFA,不确定的有限自动机;DFA,确定的有限自动机
-
一个确定的有限自动机实质为一个五元组。
M = ( S , ϵ , f , S 0 , Z ) M=\left ( S,\epsilon,f,S_{0},Z \right ) M=(S,ϵ,f,S0,Z)
其中,S,有限状态集合;ϵ,是一个字母表,每个元素称为输入字符;f,单值状态映射
f ( s , a ) = s ′ f\left ( s,a \right )=s' f(s,a)=s′
意味着,当前状态s,遇到输入a时,状态会转化为s’。s’会是s的后继状态。
S0,是S中的一个元素,称为唯一初态;Z是S的子集,称为终极态集合(终态集)。从状态转移图中可以看出,初态为只出不入,终态集为只入不出。 -
不确定的有限自动机(NFA)与DFA的不同点在于。
- NFA的初态并不是唯一确定的。
- 确定有限状态自动机对每一个可能的输入只有一个状态的转移,不确定有限状态自动机对每一个可能的输入可以有多个状态转移,接受到输入时从这多个状态转移中非确定地选择一个。
NFA与DFA的转化
- NFA转化为DFA
- 正规式到DFA的转换
语法推导树
关注推导树、短语、直接短语、句柄四个概念。
参考网站