目录
1.文法
1.1终结符和非终结符
终结符: 通俗的说就是不能单独出现在推导式左边的符号,也就是说终结符不能再进行推导。
非终结符: 不是终结符的都是非终结符。非终结符可理解为一个可拆分元素,而终结符是不可拆分的最小元素。
判断注意:
- 只要存在有 S→L ,则 S 必然是个非终结符
- 逗号,[,],(,) 这5个都是终结符
- 一般书上把非终结符用大写字母 表示,而终结符用小写字母表示。
识别符号: 就是开始符。由文法产生语言句子的基本思想是:
从识别符号开始,把当前产生的符号串中的非终结符号替换为相应规则右部的符号串,直到最终全由终结符号组成。这种替换过程称为推导或产生句子的过程,每一步成为直接推导或直接产生。
例如:
有文法G2[S]为:
S->Ap
S->Bq
A->a
A->cA
B->b
B->dB
则表示:S 为开始符,S,A,B 为非终结符,而p,q,a,b,c,d 为终结符
1.2文法的类型
0型文法(短语文法)
对应于图灵机
产生式形式:α→β
要求:箭头左边的α至少含有一个非终结符,其余不加任何限制
例如,G:
C→AaB
aA→a
B→b|Bb
1型文法(上下文有关文法)
对应于线性有界自动机
产生式形式:α→β
要求:|α|≤|β|(产生式左端的长度<=右端的长度),S→ε除外。
例如G:
C→aAB
aA→aBa
B→b|Bb
2型文法(上下文无关文法)
对应于下推自动机
产生式形式:A→β,A∈VN(终结符) ,β∈V *(VN∪VT,即可为终结符也可为非终结符)
在1型文法的基础上,左边只能有一个非终结符
说明:当以β替换A时,与A的上下文环境无关;
大部分程序设计语言近似于2型文法。
3型文法(正规文法)
对应于有限状态自动机
产生式形式:A→a,A→aB,
说明:a∈VT(终结符) , A,B∈VN(非终结符),即产生式右端的第一个符号必须为终结符
例如 G:
A→aB
B→b|bB
总结
*包含关系:0 > 1 > 2 > 3 (以’>'代替包含符,'A>B’译为A包含B)
*严格程度:3 > 2 > 1 > 0
*判断文法所属类型的顺序:3 → 2 → 1 → 0
1.3如何判断一个串是否为某个文法的句型
两种判断方法:构造推导树和直接进行推导
2.正规式
正规式与正规文法之间的转换:

3.有限自动机(有穷自动机)
3.1NFA与DFA的定义
DFA(确定的有限自动机):

NFA(不确定的有限自动机):

区别:第四条,DFA仅有一个初态,NFA可以有多个初态。
3.2NFA转化为DFA
子集法
3.3正规式与有限自动机之间的转换

4.语法推导树

5.算符优先

本文详细介绍了编译原理中关于文法的类型,包括0型、1型、2型和3型文法,以及如何判断一个串是否属于特定文法的句型。同时,讨论了正规式、有限自动机(NFA与DFA)的概念及相互转换,还涵盖了语法推导树和算符优先的相关内容。

525

被折叠的 条评论
为什么被折叠?



