编译原理课件chap02(陈火旺)

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章 文法和语言
(3)符号串的连接: 设x,y是符号串,连接xy是y符号写在x符号之后。 例:x=ab, y=MN 显然:εx=xε=x εx=xε=x (4)符号串的方幂:
N个
则xy=abMN
设x是符号串,则z=xx……xx,称z为x的方幂, 记z=xn。 因此 x0=ε, x1=x, x2=xx, x3=xxx 显然n>0时, 有xn =x·x
第二章 文法和语言
文法G ( 例1 文法 =(VN ,VT ,P,S), , ) 其中 VN={S},VT ={0,1}, , , , P={S → 0S1,S → 01}。 , 。 非终结符集中只含一个元素S; 非终结符集中只含一个元素 ; 终结符集由两个元素0和 组成 组成; 终结符集由两个元素 和1组成; 有两条产生式;开始符号是 。 有两条产生式;开始符号是S。 想:从终结符可推出哪些符号串? 从终结符可推出哪些符号串?
第二章 文法和语言
<字母 →z 字母> 字母 <数字 →1 数字> 数字 … <数字 →9 } 数字> 数字 S= <标识符 = 标识符 标识符> “< >” 表示非 终结符
第二章 文法和语言
<2> 文法G的第二种表示法: 的第二种表示法: 上例1改为: 上例 改为: G: S → 0S1 改为 S → 01 <3> 文法G的第三种表示法: 的第三种表示法: 上例1改为: G[S]: 上例 改为: 改为 S → 0S1 S → 01 一般约定,第一条产生式的左部是识别(开始) 符号;用尖括号括起来的是非终结符号,不用尖 括号括起来的是终结符号,或者用大写字母表示 非终结符号,小写字母表示终结符号。
编译原理
第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章 编译程序引论 文法和语言 词法分析 自顶向下语法分析方法 自底向上优先分析方法 LR分析方法 语法制导翻译和中间代码生成 运行时存储空间分配 代码生成
第二章 文法和语言
文法和语言
• 编译程序研究如何将源语言程序翻译为 目标语言程序; • 让计算机熟悉和掌握源语言和目标语言; • 让计算机掌握语言的语法和语义 • 对语法和语义进行形式化描述 • 文法是对语法进行形式化描述的工具 • 对文法和语言进行形式化定义
答案: = , 答案:S={01,0011,000111,00001111…} , , 描述的语言: 描述的语言:L={0n1n|n≥1}
第二章 文法和语言
例2 文法G =(VN ,VT,P,S) 其中 VN ={标识符,字母,数字} VT= {a,b ,c,…,x,y,z,0,1,…,9}
P = { <标识符 →〈字母〉 标识符> 〈字母〉 标识符 <标识符 → <标识符 字母〉 标识符> 标识符><字母 标识符 标识符 字母〉 <标识符 → <标识符 数字〉 标识符> 标识符><数字 标识符 标识符 数字〉 <字母 →a 字母> 字母 <字母 →b 字母> 字母 …
第二章 文法和语言
3、直接推导的定义 、
<1> α → β 是文法 (VN ,VT ,P,S)的规则, 文法G=( 文法 , )的规则, 中的任意符号, 满足: γ和δ是V*中的任意符号,若有符号串 ,W满足: 中的任意符号 若有符号串V, 满足 V= γ α δ,W=γ βδ = δ
则说 V是直接产生 是直接产生W 是直接产生 或 W是V的直接推导 是 的直接推导 直接规约到V 或 W直接规约到 直接规约到 记作 V⇒ W ⇒
符号串有: 0,1,00,01,10,11 例:∑={a,b,c} — 符号集
符号串有:a,b,c,ab,aaca
第二章 文法和语言
3、符号串的长度:符号串x有m个符号,则长度 就为m,表示|x|=m 如: ababa 则长度是5
4、空符号串:用ε表示,长度为0(不含任何 符号) 若符号串x ,则有εx = xε= x 5、符号串的运算: (1) 符号串的头和尾Baidu Nhomakorabea
第二章 文法和语言
文法和语言
• 构造编译程序的算法是从研究源程序及目标程 序产生的,首先找到源语言的形式描述,根据 这种描述,构造出相应的分析加工程序。 • 程序设计语言包括语法和语义两方面。 • 语法是一组规则,可用来产生合乎语法的程序, 也可用来分析一个程序是否合乎语法。 • A:=B+C • 程序设计语言的语义包括静态语义和动态语义。 静态语义是一系列限定规则,用来确定哪些合 乎语法的程序是正确的;动态语义称为运行语 义或执行语义,表示程序要做什么,要计算什 么。
n-1=
x
n-1·x
第二章 文法和语言
(5)符号串的集合: 若集合A中的一切元素都是某字母表上的符号 串,则称A为该字母表上的符号串集合。 两个符号串集合A、B乘积定义: AB={xy| x∈A且y∈b} 例:A={a,b},B={c,d} 则AB=
{ac,ad,bc,bd}
第二章 文法和语言
• (6)闭包(∑*) • 字母表∑,用∑* 表示∑上所有有穷长的 串集合,∑*称为∑的闭包。 • 例:字母表∑={0,1} • 则∑*= {ε,0,1,00,01,10,11,000,001,010……} =∑0∪∑1 ∪ ∑2∪. …∪∑n ∪ 长度为1的符号串… 与语言的关系:有的构成单词 句子,有 第二章 文法和语言 的不构成
〈7〉正闭包(∑+) ∑+ =∑1 ∪ ∑2∪. …∪∑n ∪ ∑+称∑的正闭包。 显然:∑*= ∑0∪∑+ ∑+

∑∑*=∑*∑
第二章 文法和语言
3.文法和语言的形式定义 文法和语言的形式定义
(用以上术语对文法的概念进行形式化) 用以上术语对文法的概念进行形式化) 1、规则(重写规则、产生式、生成式) 形如α→ β 或α ::= β(称:定义为 称 定义为) α 称规则的左部,β称规则的右部。 2、文法的定义 描述语言语法结构的形式规则 〈1〉文法G定义为四元组(VN,VT,P,S)
第二章 文法和语言
形式语言鸟瞰: 形式语言鸟瞰: 乔姆斯基把文法分为四种类型即0 乔姆斯基把文法分为四种类型即0型、 行强于1 行强于2 1型、2型、3型。0行强于1型,1行强于2 型强于3 型,2型强于3型。这几文法的差别在于 对产生式施加不同的限制。 对产生式施加不同的限制。 我们说G=(V ,ζ 是一个0 我们说G=(VT ,VN ,S ,ζ) 是一个0型 文法, α→β是这样 文法,如果它的每个产生式 α→β是这样 的结构 α∈(V α∈(VN∪VT)* 且至少有一个非终结 β∈(V 符,而β∈(VN∪VT)* 。0型文法也称短语 文法。 文法。
第二章 文法和语言
例3: 在例1中 V=0S1,W=0011 W 是V的直接推导
G: S → 0S1 S → 01
V=S,W=0S1 , = W 是V的直接推导 V=0S1,W=00S11 W 是V的直接推导
第二章 文法和语言
例3: 在例1中 V=0S1,W=0011 V是否W的直接推导 直接推导:0S1 ⇒0011 V=S,W=0S1 , = V是否W的直接推导 直接推导: 直接推导:S ⇒ 0S1 V=0S1,W=00S11 V是否W的直接推导
第二章 文法和语言
文法的概念 推导: 推导: 我是教师
主语〉〈谓语〉 〉〈谓语 〈句子〉 ⇒ 〈主语〉〈谓语〉 句子〉 ⇒ 〈代词〉〈谓语〉 ⇒ 我〈谓语〉 ⇒ 代词〉〈谓语〉 〉〈谓语 谓语〉 我〈动词〉〈直接宾语〉 ⇒我是〈名词〉 动词〉〈直接宾语〉 我是〈名词〉 〉〈直接宾语 ⇒ 我是教师
第二章 文法和语言
第二章 文法和语言
如果对0型文法分别施加以下的第i条限制, 如果对0型文法分别施加以下的第i条限制,则我 们就得到第i型文法: 们就得到第i型文法: (1)G的任何产生式 (1)G的任何产生式 α→β 均满足 |β 其中| 分别为α |α|≤ |β|(其中|α|和|β|分别为α和β的长 度;仅S→ε例外,但S不得出现在任何产生式 →ε例外, 例外 的右部。 的右部。 (2) 的任何产生式为A→β, A∈ (2)G的任何产生式为A→β, A∈VN , β∈(V β∈(VN∪ VT)* 。 G的任何产生式为 →αB 的任何产生式为A →α, (3) G的任何产生式为A→αB或 A→α,其中 α∈V α∈VT*,A、B ∈ VN 。 其中1型文法也称上下文有关文法。 其中1型文法也称上下文有关文法。这种文 法意味着, 法意味着,对非终结符进行替换式务必考虑上 下文并且一般不允许替换成空串ε 下文并且一般不允许替换成空串ε。
第二章 文法和语言
文法和语言
一、文法的概念 二、符号和符号串 三、文法和语言的定义 四、文法的类型 五、上下文无关文法及其语法树 六、句型的分析 七、有关文法的一些限制
第二章 文法和语言
1.文法的概念
语 言 语法:是一组规则,定义符号如何排 列,排列与符号含义无关。 语义 :研究语法的含义 静态语义 动态语义
2.符号和符号串 符号和符号串
• C、PASCAL等程序设计语言是由所有C、PASCAL 程序组成的集合; • 程序是由一些基本符号组成的; • 从字面上看,每个程序都是一个基本符号串; • 设有一个基本符号集, C、PASCAL等程序设计 语言可看成是在这个基本符号集上定义的,按 一定规则构成的一切基本符号串组成的集合。
第二章 文法和语言
其中: VN —— 非终结符号集(语法变量:代表语法范畴) (一般用< > 或大写字母表示) VT —— 终结符号集 (组成语言的基本符号)不能分割 即单词符号 P —— 产生式(规则) S —— 开始符号或称作识别符号,它是一个非终 结符,至少要在一条规则中作为左部出现。 规定:(1)VN ,VT,P是有穷非空集合; (2)VN∩VT=φ (不含公共元素)
使用规则:S →01
γ=0,δ=1, , , α=S, β=01
规则: S → 0S1 γ =ε , δ = ε
第二章 文法和语言
2型文法也称上下文无关文法,注意其语言定 型文法也称上下文无关文法, 义: G的任何产生式为A→β,A∈VN, 的任何产生式为A→β, A→β β∈( β∈(VN∪VT)* 表明凡出现在产生式左边的符号都是非 终结符。 终结符。 型文法也称右线性文法。 3型文法也称右线性文法。3型文法还有另 一种形式,称左线性文法:一个文法G 一种形式,称左线性文法:一个文法G为左线 性文法,如果G 性文法,如果G的任何产生式为 A→Bα A→α 其中α A→Bα 或A→α ,其中α∈VT* , 由于3 A、B ∈ VN 由于3型文法等价于正规式所以也 称正规文法。 称正规文法。
第二章 文法和语言
符号和符号串
先讨论一些有关概念: 1、字母表—符号集:是字母的有穷非空集合。 汉语字母表包括: 汉字、数字、标点符号等 Pascal语言字母表包括: 字母、数字、若干专用符号以及Begin、if等保留 字。
第二章 文法和语言
符号和符号串
2、符号串—字母表的符号组成的任何有穷序列。 例:∑={0,1} — 符号集
文法是阐述语法的一个工具
(写出以下语言的文法)
一、文法的概念 描述语言的语法结构的形式规则 “你是大学生” 对 “我大学生是”错 “我是教师”对 “我学习大学生”对
第二章 文法和语言
〈句子〉∷=〈主语〉〈谓语〉 句子〉 〈主语〉 谓语〉 〈主语〉 ∷ =〈代词〉|〈名词〉 主语〉 〈代词〉 〈名词〉 〈代词〉 ∷ = 我|你|他 代词〉 你他 〈名词〉 ∷ = 王明 大学生 教师 英语 王明|大学生 教师|英语 大学生|教师 名词〉 〈谓语〉 ∷ =〈动词〉〈直接宾语〉 谓语〉 〈动词〉 直接宾语〉 〈动词〉 ∷ = 是|学习 动词〉 学习 〈直接宾语〉 ∷ =〈代词〉| <名词 直接宾语〉 〈代词〉 名词> 名词
若z=xy,则x是z的头,y是z的尾。
第二章 文法和语言
例:设z=abc ,则z的头是 ε,a,ab,abc 则z的尾是 ε,c,bc,abc (2)符号串的固有头和固有尾 若z=xy符号串,x非空,则y是固有尾; 若y非空,则x是固有头。 例:设z=abc,则z的固有头是 ε, a, ab 则z的固有尾是 ε,c ,bc
相关文档
最新文档