这是我参与更文挑战的第21天,活动详情查看: 更文挑战
第二章:文法和语言
1.文法形式定义--4元组(考名词解释)
(,,P,S)
:非终结符集;
:终结符集;
P:规则(a->b的集合)--通俗点:产生式的集合;Vn,Vt,P都是非空有穷集
S:称作识别符 或 开始符
Vn和Vt的交集为空
2. 符号串的运算
- 连接
例如:x=ST,y=abu,则它们的连接为xy=STabu;|x|=2,|y|=3,则|xy|=5
- 方幂
例如:x=AB,则:,,,
- 集合
例如:闭包
3. 相关名词概念
- 推导与直接推导
直接推导:v=>w
长度为n(n>=1)的推导:=>(上面+号)
长度为n(n>=0)的推导:=>(上面*号)
- 句型
设G[S]是一个文法,如果符号串x是从识别符号推导出来的,即有S=>x(上面*号),则称x是文法G[S]的一个句型
- 句子(句子句型)
若x仅由终结符号组成,即S=>x,,则称x是G[S]的一个句子
- 语言(用表示)
集合{x|S=>x(上面 * 号),其中S为文法识别符号(也就是开始符号),且}
简单点就是:开始符能够推出所有句子的集合
文法描述的语言是:该文法一切句子的集合
4. 文法等价
如果,则称文法G1和G2是等价的
5. **文法的类型(主要考各种类型文法的 概念 和 对文法产生式的要求)
- 0型文法(短语文法)
文法中的每一个产生式都是: ,
- 1型文法(上下文有关文法)
文法中的每一个产生式都是:产生式右边长度>左边(仅除外)
- 2型文法(上下文无关文法)--产生式左边只是一个终结符
文法中的每一个产生式都是:,是一个非终结符 ,
- 3型文法(正规文法)
文法中的每一个产生式都是:A->aB或A->a,其中A和B都是非终结符,a是终结符
6. 语法树(推导树)
- 语法树是用来描述上下文无关文法的,语法树可能不唯一
例题:给定一文法:画出语法树、求句型、短语、句柄
7. 最左推导、规范推导(最右推导)、规范规约
- 最左推导:a=>b,都是对a的最左非终结符进行替换,则称这样的推导为最左推导
- 最右推导(规范推导):对比最左推导;由规范推导得到的句型称为:规范句型(右句型)
- 规范规约:规范推导的逆过程,也叫做最左规约(规范规约)
8. 文法的二义性
- 如果一个文法中存在某个句子对应两棵不同的语法树,则说这个文法是二义的。
例题:例2.6、例2.8
例2.6:文法G=({E},{+,*,i,(,)},P,E),其中P为:
E->i
E->E+E
E->E*E
E->(E)
例2.8:文法G[E]:
E->T|E+T
T->F|T*F
F->(E)|i
存在表达式:i*i+i
如果使用例2.6的文法,则可以产生两棵不同的语法树,故例2.6的文法是二义的,而例2.8的文法不是二义的
9. 回溯定义
有一种办法是从各种可能的选择中随机挑选一种,并希望它是正确的。如果以后发现它是错误的,必须退回去,再试另外的选择,这种方式称为回溯。
10. 短语、直接短语(简单短语)、句柄(常考名词解释、大题中计算短语、直接短语、句柄...)
令G是一个文法,S是文法的开始符号, 是文法G的一个句型。
-
短语:如果有S=> (上面*号)且A=> (上面+号),则称 是 相对于A 的短语
-
直接短语(简单短语):A=> 即:直接推导出,则称 是 相对于规则A-> 的直接短语
-
句柄:最左直接短语(一个右句型的直接短语称为句柄,句柄的概念只适用于右句型)
短语相对于非终结符、直接短语相对于规则
11. 有害规则、多余规则
- 有害规则:形如U->U的产生式,它只会引起文法的二义性
- 多余规则:文法中连一个句子的推导都用不到的规则。
- 不可到达的:文法中某些非终结符不在任何规则的右部出现
- 不可终止的:文法中某些非终结符不能够从它推导出终结符号串来
12. **相关例题
12.1、允许0打头的偶正整数文法表示:
E->D|NT
T->NT|D
D->0|2|4|6|8
N->D|1|3|5|7|9
12.2、不允许0打头的偶正整数文法表示:
E->NT|D
T->FT|G
N->D|1|3|5|7|9
D->2|4|6|8
F->N|0
G->D|0
12.3、为只包含数字、加号和减号的表示式,例如:9-2+5,3-1,7等构造一个文法
E->E+T|E-T|T
T->0|1|2|...|9
12.4、通过语法树进行语法分析
- 给出最左推导和最右推导
- 产生式集合P可能有哪些元素
- 给出该句子的所有短语、简单短语、句柄