编译原理学习笔记-2

声明:
–以下引自东南大学的编译原理课件

2编译基础知识

-词法规则:规定那些字符是单词符号,一般包括:数值,标识符等等
-语法规则:规定单词符号构成的语法单位:表达式,子句,语句,函数,过程,程序-
-语义规则:语义,程序的含义。定义程序的意义的一组规则
文法:
描述程序设计语言构造的层次化语法结构。

2.1 字母表与符号串

相关概念

1、字母表
– 是符号的非空有穷集合。
– 用Σ、V表示。
2、符号:
是语言中最基本的不可再分的单位。
3、符号串:
– 符号串是字母表中符号组成的有穷序列。
– 空串:不含有任何符号的串称作空串,记作ε。
4、句子:
字母表上符合某种规则构成的串。
5、语言:
字母表上句子的集合。
• 注:约定用a,b,c…表示符号;用α,β,γ…表示符号串;
用A,B,C…表示其集合。

符号串集合的运算

1、连接(乘积)运算:

– 定义:若串集A={α1, α2, …},串集B={β1,
β2, …},则乘积AB={α β| α ∈ A and β ∈ B}
注: 1)串集的自身乘积称作串集的方幂
2)A0={ε}
3)字母表A的n次方幂是字母表A上所有长度为n的串集
例如:A={a,b}; B={c,e,d}
• 则AB={ac,ae,ad,bc,be,bd}
• 例如:串集A={a}的各次方幂定义为:
– A0={ε}
– A1=A={a}
– ……
– An=AAn-1(n>0)={a…a}

2、字母表的闭包与正闭包

• 1)字母表A的闭包(A*):
A*=A0∪A1∪A2∪…
– 即:由A上符号组成的所有串的集合(包括空串
ε )。
• 2)字母表A的正闭包(A+):
A+= A1 ∪A2∪ …=A*-{ε}
– 即:由A上符号组成的所有串的集合(不包括空
串ε )。
• 3)语言: 是字母表上符合某种规则的语句组成的。
– 字母表上语言:是字母表上正闭包的子集。

相关概念

  1. 非终结符
    -出现在规则的左部,用<>括起来,表示一定语法概念的词
    -非终结符集合用Vn表示
  2. 终结符
    -语言中不可以被分割的字符串(包括单个字符组成的串)。注:终结符是组成句子的基本单位。
    -终结符集合用Vt表示
  3. 开始符号
    -表示所定义的的语法范畴的非终结符
  4. 产生式
    -是用来定义符号串之间关系的一组规则。形式:A->a (A产生a) A就是非终结符,a就是终结符
  5. 推导
    -推导是从开始符号开始,通过使用产生式的右部取代左部,最终能产生语言的一个句子的过程。
    -最左(右)推导:每次使用一个规则,以其右部取代符号最左(右)非终结符
    1. 归约
      • 归约是推导的逆过程,从给定的源语言的句子开始,通过规则的左部取代右部,最终达到开始符号的过程。
      • 最左(右)归约是最右(左)推倒的逆过程
    2. 句型、句子和语言
      • 句型:
      – 句型是从文法的开始符号S开始,每步推导(包括0步推导)所得到的字符串α。
      – 记作:S α,其中α ∈ (VN∪ VT )*
      • 句子:是仅含终结符的句型。
      语言:
      – 语言是由S开始通过1步或1步以上推导所得的句
      子的集合。
      – 记为:L(G)。L(G)={α|S α,且α ∈ VT*}
    3. 文法规则的扩充表示
      ——扩充的BNF表示
      • () ——提因子
      – 例:把U→ax|ay|az 改写为U→a(x|y|z)
      • {} ——重复次数的指定
      – 例:<标识符>→<字母>{<字母>|<数字>}50.
      • [] ——任选符号
      – 例:<整数>→[+|-]<数字>{<数字>}

2.2文法与语言的形式定义

Chomsky对文法的分类

根据对产生式施加的限制,可分为
– 0型文法
– 1型文法
– 2型文法
– 3型文法
0型文法(短语文法或无限制文法)
• P中产生式α→β 其中α∈V+ 并至少含有一个非终结符, β∈V*
记忆:左边有非终结符,右边有终结符

1型文法
• P中产生式α→β,除可能有S → ε 外均有|β|>=|α|(即右边长度大于等于左边长度),若有S → ε ,规定S不得出现在产生式右部 .
• 或者,P中产生式α→β,除可能有S → ε外均有αAβ→α γ β,其中α, β∈V* ,
A ∈VN,γ∈V+.
举例:
设文法G=(VN,VT,P,S),
•VN={S,B,E}, VT={a,b,e}
•其中P为: (0) S →aSBE
•(1) S →aBE
•(2) EB →BE

2型文法
• P中产生式具有形式A→β 其中A∈VN , β∈V*.
• a)2型文法对产生式的要求是:产生式左部一定是非终结符,产生式右部可以是VN 、 VT或ε ;非终结符的替换不必考虑上下文;
• b)识别2型语言的自动机称为下推自动机(PDA);
• c) 2型文法也称为上下文无关文法
举例
设文法G=(VN,VT,P,S),
•VN={S,A,B}, VT={a,b}
•其中P为: (0) S →aB
•(1) S →bA
•(2) A →a
•(3) A →aS|bAA

3型文法
• P中产生式具有形式
P中产生式具有形式 A→ αB,A→ α (右线性),或者A→Bα,A→ α(左线性), 其中A,B∈V N,α∈VT*。
注: • a)3型文法也称为**正规文法**RG、右线性文法或左线性文法;
• b) 3型文法中的产生式要么均是右线性产生式,要么是左线性产生式,不能既有左线性产生式,又有右线性产生式;若所有产生式均是左线性,则称为左线性文法;若所有产生式均是右线性,则称为右线性文法;
• c)识别3型语言的自动机称为有限状态自动机文法与语言的形式定义

• 注意:在词法分析和语法分析中对产生式有限制:
– 不存在P →P产生式 (p是非终结符)
– 产生式中出现的任何非终结符P必须有用。
• 从开始符号S出发,存在推导S →αPβ
• P必须能推导出终结符串。即: P →γ ; γ ∈VT*

这里写图片描述

2.3 文法构造与文法简化

1、为什么要进行文法的简化?
• 由于同一语言可以用不同的文法来描述,显然应当选择产生式的个数最少,最符合语言特征的来描述。
• 在文法中,有些产生式对推导不起作用,要删除掉:
– 如某个产生式在推导过程中永远不会被用到,即
由开始符号推导,永远推不到的左部的非终结符。
– 再如永远导不出终结符串的产生式。
– 如形如P→P的产生式。

2.4 语法树与文法的二义性

语法树中的概念

(1)子树:除叶子结点之外的任意结点连同它的所有子孙结点构成子树。
(2)修剪子树:剪去子树树根的所有孩子。
(3)句型:在一棵语法树生长过程中的任何时刻,所有那些叶子结点排列起来就是一个句型。
(4)短语:子树的末端符号自左到右连成串,相对于子树树根而言称为短语。
• 简单短语(直接短语):若短语是某子树根经过1步推导得到的,则称之为该子树根 的简单短语。
• 句型的短语:该句型中哪些符号串可构成某子树根的短语。
(5)句柄:句型中的最左简单短语

文法的二义性

1、句子二义性:
– 如果文法的一个句子存在对应的两棵或两棵以上
的语法树,则该句子是二义的。
2、文法二义性:
• 包含二义性句子的文法是二义文法

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值