编译原理复习二

873 阅读4分钟

这是我参与更文挑战的第21天,活动详情查看: 更文挑战

第二章:文法和语言

1.文法形式定义--4元组(考名词解释)

VNV_NVTV_T,P,S)

VNV_N:非终结符集;

VTV_T:终结符集;

P:规则(a->b的集合)--通俗点:产生式的集合;Vn,Vt,P都是非空有穷集

S:称作识别符 或 开始符

Vn和Vt的交集为空

2. 符号串的运算

  • 连接

例如:x=ST,y=abu,则它们的连接为xy=STabu;|x|=2,|y|=3,则|xy|=5

  • 方幂

例如:x=AB,则:x0=e(表示空集)x^0=e(表示空集)x1=ABx^1=ABx2=ABABx^2=ABABx3=ABABABx^3=ABABAB

  • 集合

例如:闭包

3. 相关名词概念

  • 推导与直接推导

直接推导:v=>w

长度为n(n>=1)的推导:=>(上面+号)

长度为n(n>=0)的推导:=>(上面*号)

  • 句型

设G[S]是一个文法,如果符号串x是从识别符号推导出来的,即有S=>x(上面*号),则称x是文法G[S]的一个句型

  • 句子(句子\subseteq句型)

若x仅由终结符号组成,即S=>x,xXTx\in X_T^*,则称x是G[S]的一个句子

  • 语言(用L(G)L(G)表示)

集合{x|S=>x(上面 * 号),其中S为文法识别符号(也就是开始符号),且xVTx\in V_T^*}

简单点就是:开始符能够推出所有句子的集合

文法描述的语言是:该文法一切句子的集合

4. 文法等价

如果L(G1)=L(G2)L(G1)=L(G2),则称文法G1和G2是等价的

5. **文法的类型(主要考各种类型文法的 概念 和 对文法产生式的要求)

  • 0型文法(短语文法)

文法中的每一个产生式都是:α>β\alpha->\beta α(VNVT)且至少含有一个非终结符\alpha \in (V_N\cup V_T)^*且至少含有一个非终结符β(VNVT)\beta \in (V_N\cup V_T)^*

  • 1型文法(上下文有关文法)

文法中的每一个产生式都是:产生式右边长度>左边(仅S>ϵS->\epsilon除外)

  • 2型文法(上下文无关文法)--产生式左边只是一个终结符

文法中的每一个产生式都是:α>β\alpha->\betaα\alpha一个非终结符 ,β(VNVT)\beta \in (V_N\cup V_T)^*

  • 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是文法的开始符号,αβδ\alpha \beta \delta 是文法G的一个句型。

  • 短语:如果有S=>αAδ\alpha A \delta (上面*号)且A=>β\beta (上面+号),则称β\betaαβδ\alpha \beta \delta 相对于A 的短语

  • 直接短语(简单短语):A=>β\beta 即:直接推导出β\beta,则称β\betaαβδ\alpha \beta \delta 相对于规则A->β\beta 的直接短语

  • 句柄:最左直接短语(一个右句型的直接短语称为句柄,句柄的概念只适用于右句型)

短语相对于非终结符、直接短语相对于规则

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、通过语法树进行语法分析

语法树习题.jpg

  • 给出最左推导和最右推导
  • 产生式集合P可能有哪些元素
  • 给出该句子的所有短语、简单短语、句柄

语法树习题答案.jpg