第3章 文法和语法(lly)3

合集下载

编译原理教程 第3章 语法分析

编译原理教程 第3章 语法分析

记号。注意“ ”与“ →”不同,“ →”是产生式中
的定义记号。直接推导是对文法符号串αAβ中的非终结 符 A 用相应的产生式 A→δ 的右部 δ 来替换,从而得到
αδβ。我们给出推导的说明如下:
(1) 如果 α1 可直接推出 α2 , α2 可直接推出 α3 ,…, αn-1 可直
接 推 出 αn , 即 存 在 一 个 自 α1 至 αn 的 推 导 序 列 : α1α2α3…αn(n>0) ,则我们称 α1 可推导出 αn ,记
文法开始符号是一个特殊的非终结符,它代表文法所定
义的语言中我们最终感兴趣的语法实体,即语言的目 标,而其它语法实体只是构造语言目标的中间变量;
如表达式文法的语言目标是表达式,而程序语言的目
标通常为程序。 产生式(也称产生规则或规则)是定义语法实体的一种书写 规则。一个语法实体的相关规则可能不止一个。例如, 有: P→α1 P→α2 P→αn
(3)S 为一文法开始符,是一个特殊的非终结符号, 即S∈VN;
(4)ξ是产生式的非空有限集,其中每个产生式(或称规则)
是一序偶(α,β),通常写作 α→β或α::=β 读作“α是β”或“α定义为β”。在此,α为产生式的左部, 而β为产生式的右部,α、β是由终结符和非终结符组成
的符号串, α∈(VT∪VN)+ 且至少有一个非终结符,而
我们可以从E出发进行一系列的推导,如表达式i+i*i的 推导如下: EE+EE+E*E E+E*iE+i*ii+i*i
M→B∣MD /*仅两位数字(无中间位)│多于两位数字*/
A→1∣3∣5∣7∣9 B→1∣2∣3∣4∣5∣6∣7∣8∣9 D→0∣B
3.文法产生的语言

第3章 语法分析

第3章 语法分析
计算机科学与技术学院 29
第3章 语法分析
2.1型文法与1型语言(对应线性界限自动机, 自然语言)
文法G的每一个产生式α→β,均在0型文法 的基础上增加了字符长度上满足∣α∣≤∣β∣的 限制,则称文法G为1型文法或上下文有关文法, 记为CSG。 1型文法相应的语言称为1型语言或上下文有 关语言,它的识别系统是线性界限自动机。
计算机科学与技术学院 5
第3章 语法分析
有了规则以后,可以按照如下方式用它们 去推导或产生句子: 符号⇒称为 <句子> ⇒ <主语> <谓语> “推导”, ⇒ <代词> <谓语> 它的含义是, ⇒ 我<谓语> 使用一条规 ⇒ 我<动词> <直接宾语> 则,代替⇒ 左端的某个 ⇒我是 <直接宾语> 符号,产生⇒ ⇒我是 <名词> 右端的符号 串。 ⇒我是大学生
计算机科学与技术学院 18
第3章 语法分析
用S表示“字母数字串”类,由于T是一字 母或数字,ST也是字母数字串。 则有: S→T∣ST
其中,产生式S→T∣ST是一种左递归形 式,由它可以产生一串T。 用I表示“标识符”类,它或者是一单个 字母,或者为一字母后跟字母数字串。 则有: I→L∣LS
计算机科学与技术学院 19
计算机科学与技术学院 28
第3章 语法分析
1. 0型文法与0型语言(对应图灵机)
如果文法G的每一个产生式具有下列形式: α→β 其中,α V* VN V* , β V* , V=VT∪VN 。 0型文法又叫短语文法,记为PSG。0型文 法相应的语言称为0型语言或称递归可枚举集, 它的识别系统是图灵(Turing)机。

编译原理第3章文法和语言

编译原理第3章文法和语言

第3章文法和语言第1题文法G=({A,B,S},{a,b,c},P,S)其中P为:S→Ac|aBA→abB→bc写出L(G[S])的全部元素。

答案:L(G[S])={abc}第2题文法G[N]为:N→D|NDD→0|1|2|3|4|5|6|7|8|9G[N]的语言是什么?答案:G[N]的语言是V+。

V={0,1,2,3,4,5,6,7,8,9}N=>ND=>NDD....=>NDDDD...D=>D......D或者:允许0开头的非负整数?第3题为只包含数字、加号和减号的表达式,例如9-2+5,3-1,7等构造一个文法。

答案:G[S]:S->S+D|S-D|DD->0|1|2|3|4|5|6|7|8|9第4题已知文法G[Z]:Z→aZb|ab写出L(G[Z])的全部元素。

答案:Z=>aZb=>aaZbb=>aaa..Z...bbb=>aaa..ab...bbbL(G[Z])={anbn|n>=1}第5题写一文法,使其语言是偶正整数的集合。

要求:(1)允许0打头;(2)不允许0打头。

答案:(1)允许0开头的偶正整数集合的文法E→NT|DT→NT|DN→D|1|3|5|7|9D→0|2|4|6|8(2)不允许0开头的偶正整数集合的文法E→NT|DT→FT|GN→D|1|3|5|7|9D→2|4|6|8F→N|0G→D|0第6题已知文法G:<表达式>::=<项>|<表达式>+<项> <项>::=<因子>|<项>*<因子><因子>::=(<表达式>)|i试给出下述表达式的推导及语法树。

(5)i+(i+i)(6)i+i*i答案:(5)<表达式>=><表达式>+<项>=><表达式>+<因子>=><表达式>+(<表达式>)=><表达式>+(<表达式>+<项>)=><表达式>+(<表达式>+<因子>)=><表达式>+(<表达式>+i)=><表达式>+(<项>+i)=><表达式>+(<因子>+i)=><表达式>+(i+i)=><项>+(i+i)=><因子>+(i+i)=>i+(i+i)(6)<表达式>=><表达式>+<项>=><表达式>+<项>*<因子>=><表达式>+<项>*i=><表达式>+<因子>*i=><表达式>+i*i=><项>+i*i=><因子>+i*i=>i+i*i<表达式><表达式>+<项><因子><表达式><表达式>+<项><因子>i<项><因子>i<项><因子>i()<表达式><表达式>+<项><项>*<因子><因子>i<项><因子>ii第7题证明下述文法G[〈表达式〉]是二义的。

编译原理 第三章 语法分析

编译原理 第三章 语法分析

α1=>α2=>...=>αn,则称此过程为零步或多步推导,记为:
α1=*>αn,其中α1=αn的情况为零步推导。
若α1≠αn,即推导过程中至少使用一次产生式,则称此过
程为至少一步推导,记为:α1=+>αn。

定义3.2强调了两点: α,有α=*>α,即推导具有自反性;
若α=*>β,β=*>γ,则α=*>γ,即推导具有传递性。
5. 静态语义错误:如类型不一致、参数不匹配等
6. a,b:integer; x:array[1..10] of integer;
7. x:=a+b;
8. 动态语义错误(逻辑错误):如死循环、变量为零时作除数等
9. while (t) { ...};
a:=a/b;
精品文档
4
3.1.2 语法错误的处理原则(续1)
棵树。
(1) 根由开始符号所标记;
(2) 每个叶子由一个终结符、非终结符、或ε标记;
(3) 每个内部结点由一个非终结符标记;
(4) 若A是某内部节点的标记,且X1,X2,...,Xn是该节点
从左到右所有孩子的标记,则A→X1X2...Xn是一个产生式。若
A→ε,则标记为A的结点可以仅有一个标记为ε的孩子。
精品文档
8
3.2.1 CFG的定义与表示(续1) 例3.2 简单算术表达式的上下文无关文法可表示如下:
N = {E} T = {+,*,(,),-,id} S = E P: E → E + E (1) E → E * E (2) E →(E) (3) (G3.1) E → -E (4) E → id (5)
精品文档

【考研计算机专业课】天津大学 编译原理讲义 第三章文法和语言

【考研计算机专业课】天津大学 编译原理讲义 第三章文法和语言

L(G)={anbncn|n≥1}
2型文法也称上下文无关文法,用于描述多数 现今程序设计语言的语法结构。
例,文法G =({S},{a,b},P,S) P定义为: S→aSb|ab L(G)={anbn|n≥1}
3型文法也称正则文法,由其产生的语言叫做 正规语言,即正规集。
例,文法G =({S},{0,1},P,S) P定义为: S→0S|1S|0|1 L(G)=(0|1)*
例,文法G的产生式为: E→T|E+T T→F|T*F F→(E)|i E E+T E+F E+i3 T+i3 T*F+i3 T*i2+i3 F*i2*,i3 ,i1*i2 ,i1*i2+ i3都是句型i1*i2+i3的短语。
i1 ,i2,i3 均为直接短语。
i1是句柄。
i2+i3是否句型i1*i2+i3的短语?
+ 不是,尽管有E i2+i3,但不存在从E到i1*E的推导。
3.1.2 文法的Chomsky分类
0型文法(短语结构文法):
设文法G=(VN,VT,P,S) ,其产生式形式为: α →β α ∈V*VNV* ,β ∈V*
如果对 0 型文法分别加上以下的第 i 条限制,则我们 就得到 i 型文法。 1.G的任何产生式α →β 均满足|α |<|β |,S→ε除外;
1. 文法是描述语言的语法结构的形式规则(即 语法规则)。
文法是一个四元组: G[S]=(VN,VT,P,S) VN为非终极符集合; VT为终极符集合; VN∩VT =Ф ; 一般令V= VN∪VT ,V中的符号称为文法符号; P为产生式集合; P中的每个产生式写为: α →β ;α ∈V*VNV*, β ∈V* S为开始符号。

编译原理文法和语言

编译原理文法和语言

<谓语>::=<动词><直接宾语>
<动词>::=是|学习
<直接宾语>::=<代词>|<名词>
§3.2 文法和语言的形式定义
一、文法的直观理解
3.由产生式推导句子 推导方法:从一个要识别的符号开始推导,
即用相应产生式的右部来替代产生式的左部, 每次仅用一条产生式去进行推导。
例:给定一组语法规则,考察一个句子: “我是大学生”的推导过程。
§3.2 文法和语言的形式定义
三、推导和归约
1.直接推导/直接归约
如α→β是文法G的产生式,γ和δ∈V*, 若有 v,w满足:v=γαδ,w= γβδ, 其中 则称v直接推导到 w,也称w直接归约到v,记作 v w
例2:文法G[S]: S→0S1, S→01 若v=S,w=0S1, 有直接推导S0S1
§3.2 文法和语言的形式定义
四 、句型、句子和语言
3. 语言
文法G生成的语言记为L(G),它是文法G 的一切句子的集合:
L(G)={x|S * x,且x ∈VT*}
例:G[S]: S→0S1, S→01 S 0S1 00S11 0n-1S1n-1 0n1n L(G)={0n1n|n≥1}
§3.2 文法和语言的形式定义
<谓语>
<代词> 我
<动词> 是
<直接宾语> <代词>
大学生
§3.2 文法和语言的形式定义
二、文法的形式定义
其中: ① 非终结符号:出现在
定义: 文法G[S]定义为一个四元产能组生推,式出的符左号部或或符右号部串,,且
VN :G[非S]终=(结V符N,号V集T,P,S)用分②来。终表结示 符语号言:的不语出法现成在

编译原理第三章文法和语言

编译原理第三章文法和语言

2020/9/28
14
字母表:是元素的非空有穷集合,把字 母表中的元素称为符号,因此字母表也 称符号集。例,{a,b,c,+,﹒}就是 含有5个元素的一个字母表。一般用∑和 V来表示
符号:是语言当中最基本的不可再分的 单位
2020/9/28
15
符号串:字母表中的符号所组成的任何 有穷序列。例,V={a,b,c}是一个字母 表,则a,b,c,aa,ab,bc,abc等等都 是V上的符号串
符号串的连接:设和是符号串,它们 的连接是把的符号写在的符号之后得 到的符号串。例,若=NPU, =1108,则 =NPU1108, =1108NPU
2020/9/28
18
符号串的方幂:设是符号串,把自身 连接n次得到符号串,即=…, 称为符号串的方幂,写作=n。
符号串集合:若集合A中的一切元素都是 某字母表上的符号串,则称A为字母表上 的符号串集合。
词法
– 单词符号
语言中具有独立意义的最基本结构
– 词法规则
词法规则规定了字母表中哪些字符串是单词符号 单词符号一般包括:常数、标识符、基本字、算
符、界限符等
– 我们用正规式和有限自动机理论来描述词法 结构和进行词法分析
语法
– 单词符号 – 语法单位
表达式、子句、语句、函数、过程、程序
2020/9/28
26
3.3 文法和语言的形式定义
前面已经对规则(或产生式)的概念进 行了非形式化的说明,我们已经对其有了 一个直观的了解。下面将对其进行形式化 说明,并在此基础上抽象地定义文法和语 言。
2020/9/28
27
定义3.1
文法G定义为四元组(VN,VT,P,S)
– VN :非终结符集 – VT :终结符集 – P:产生式(规则)集合 – S:开始符号(或识别符号)

编译原理教程-课后习题答案第三章语法分析

编译原理教程-课后习题答案第三章语法分析

c. 最左推导和最右推导必定相同
d. 可能存在两个不同的最左推导,但它们对应的语法树 相同
第三章 语法分析
(3) 采用自上而下分析,必须 。
a. 消除左递归
b. 消除右递归
c. 消除回溯
d. 提取公共左因子
(4) 设a、b、c是文法的终结符,且满足优先关系 ab和bc,则 。
a. 必有ac
b. 必有ca
第三章 语法分析 表3-1 预测分析表
A A′ B B′
能否不画出语法树,而直接由定义(即在句型中)寻 找满足某个产生式的候选式这样一个最左子串(即句柄) 呢?例如,对句型aAaBcbbdcc,我们可以由左至右扫描 找到第一个子串AaB,它恰好是满足A→AaB右部的子串; 与树(a)对照,AaB的确是该句型的句柄。是否这一方法 始终正确呢?我们继续检查句型aAcbBdcc,由左至右找 到第一个子串c,这是满足A→C右部的子串,但由树(b) 可知,c不是该句型的句柄。由此可知,画出对应句型 的语法树然后寻找最左直接短语是确定句柄的好方法。
c. 必有ba
d. a~c都不一定成立
第三章 语法分析
(5) 在规范归约中,用 来刻画可归约串。
a. 直接短语
b. 句柄
c. 最左素短语 d. 素短语
(6) 若a为终结符,则A→α ·aβ 为 项目。
a. 归约
b. 移进
c. 接受
d. 待约
(7) 若项目集Ik含有A→α · ,则在状态k时,仅 当 面 临 的 输 入 符 号 a∈FOLLOW(A) 时 , 才 采 取
第三章 语法分析
因此,文法G[S]为二义文法(对句子abbb也可画出 两棵不同语法树)。
3.4 已知文法G[S]为S→SaS|ε ,试证明文法G[S] 为二义文法。

编译原理第三章 :文法和语言——续

编译原理第三章 :文法和语言——续

2015-1-15
北京化工大学信息科学与技术学院计算机系
2
3.1 预备知识
一、字母表和符号串 字母表:符号的非空有限集 例:={a,b,c} 符号: 字母表中的元素 例: a,b,c 符号串:符号的有穷序列 例:a,aa,c,abc,.. 空符号串:无任何符号的符号串(ε ) 符号串集合:由符号串构成的集合。
2015-1-15 北京化工大学信息科学与技术学院计算机系 13
例如:G[<无符号整数>] (1) <无符号整数> → <数字串> ; (2) <数字串> → <数字串> <数字> (3) <数字串> → <数字>
请问根据文法G能否推导出10?
(4) <数字> →0; (5) <数字> →1; ………… (13) <数字> →9;
定义7. G和G’是两个不同的文法,若 L(G) = L(G’) , 则G和G’为等价文法。
2015-1-15
北京化工大学信息科学与技术学院计算机系
18
3.3 文法和语言的形式定义
编译感兴趣的问题是:
给定x, G, 求x L(G) ?
G
y
x 算法1
x L(G) ?
算法2 出错处理
停机
n
2015-1-15
2015-1-15 北京化工大学信息科学与技术学院计算机系 6
3. 由规则推导句子: 有了一组规则之后,可以按照一定的方式用它们去 推导或产生句子。 推导方法:从一个要识别的符号开始推导,即用相应 规则的右部来替代规则的左部,每次仅用 一条规则去进行推导。
说明: (1) 有若干语法成分同时存在时,我们总是从最左的语法成 分进行推导,这称之为最左推导,类似的有最右推导(一般推 导)。 (2) 从一组规则可推出不同的句子。

第3章 文法和语言

第3章 文法和语言
集合的正闭包和集合的闭包:设A为一个集合,则 集合A的正闭包用A+表示,定义为:
A+ =A1 ∪ A2 ∪ …. ∪ A n ∪…
集合A的闭包用A*表示,定义为: A* =A 0 ∪ A+ , 显然有 A+=AA*=A*A 例如:A = {a,b}, 则A+ ={a,b,aa,ab,ba,bb,aaa,aab,…}
P:
I→L | IL | ID
L→a | b |… | z
D→0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
29

例3.2:生成语言 L={a n b m | n, m 1} 的文法
<无符号整数>→{<数字>}13
与 < 无符号整数 >→< 数字 >|< 数字 >< 数字 >|< 数字 >< 数字 >< 数字 > 相同
而字母打头、后面可跟数字或字母的不超过 8 个字符的标识符文法 则为:
<标识符>→<字母>{<字母>|<数字>}07
17
文法的EBNF表示
例如: <IF语句>→IF <布尔表达式> THEN <语句> [ELSE <语句>]
译程序的构造有着重大的作用。

形式工具--“形式”是指这样的事实:语言的所有规则
只以什么符号串能出现的方式来陈述
2
3.1 文法的引入

自然语言:英语——符合相应规则——合法句子
(字母表) (语法) (含义-语义)

编程语言:

编译原理第三章语法分析

编译原理第三章语法分析
void T() { F(); T’(); } void T’() { if(lookahead= =’*’) { match(‘*’); F(); T’(); } }
递归下降程序:
void F() { if(lookahead= =’i’) match(‘i’); else if(lookahead= =’(’) { match(‘(’); E(); if(lookahead= =’)’) match(‘)’); else error(); } else error(); }
输入串
id+id*id;# id+id*id;# id+id*id;# id+id*id;# id+id*id;# +id*id;# +id*id;#
动作
pop(L),push(E;L) pop(E),push(TE’) pop(T),push(FT’) pop(F),push(id) pop(id),next(ip) pop(T’)
形式语言分类
定义:若文法G=(N,T,P,S)的每个产生式α→β中,均有 α∈(N∪T)*N(N∪T)*,且至少含有一个非终结符, β∈(N∪T)*,则称G为0型文法(短语文法)。 ①1型文法(上下文有关文法):G的任何产生式α→β(S→ε 除外)均满足|α|≤| β| (|x|表示x中文法符号的个数); ②2型文法(上下文无关文法):G的任何产生式形如A→β, 其中A∈N,β∈(N∪T)*; ③3型文法(正规文法、线性文法):G的任何产生式形如A→a 或者A→aB(或者A→Ba),其中A,B∈N,a∈T*。
定义:将产生式A→γ的右部代替文法符号序列αAβ 中的A得到αγβ的过程,称为αAβ直接推导 出αγβ,记作:αAβαγβ。

第三章 文法和语言(3.1-3.3)

第三章 文法和语言(3.1-3.3)

例如:|abc|=3
|ε|=0
3.2
字母表和符号串
6、符号串集合 定义 字母表上若干符号串组成的集合。 例如: 设有字母表={a,b,c},则有符号串集合: A={a,ab,bc ,abc}
3.2
字母表和符号串
二、符号串的运算 1、符号串的头尾、固有头和固有尾 如果z=xy一个符号串,那么x是z的头(前缀), y是z的尾(后缀),如果x是非空的, 那么y是固 有尾;同样如果y 是非空的, 那么x是固有头。 例如:z=abc 头: ε、a、ab、abc 尾: ε、c 、bc 、abc 固有头: ε、a、ab 固有尾: ε、c 、bc
3.3
文法和语言形式定义
句型、句子、语言:
例:G: S→0S1, S→01 L(G)={0n1n|n≥1}
例:G[E]: E→E+T|T T→T*F|F F→(E)|a
EE+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a 句子:用符号a,+,*,(和)构成的算术表 达式
举例:已知语言写文法 例1:L={anbn am bm |m,n ≥0}
G:S AB
A
aAb|ε
B
aBb|ε
文法的等价 若L(G1)=L(G2),则称文法G1和G2是等 价的。 如文法G1[A]:A→0R 与G2[S]:S→0S1等价 A→01 S→01 R→A1
3.2
字母表和符号串
二、符号串的运算 4、符号串集合的乘积 定义 设A、B为两个符号串集合,其乘积为 AB={xy|x∈A,y∈B} 例如: 若A={ab,bc}, B={ac,cb} 则AB={abac,abcb,bcac,bccb}

第三章文法和语言

第三章文法和语言

文法的二义性和语言的二义性
文法的二义性和语言的二义性是两个不同的概念。因为可能有两个不同 的文法G和G′,其中G是二义的,但是却有L(G)=L(G′),也就是说, 这两个文法所产生的语言是相同的。
二义文法改造为无二义文法
G‘[E]:E → i
5
文法即是生成方式描述语言的:语言中的 每个句子可以用严格定义的规则来构造 规则(重写规则、产生式、生成式):
形如→ 或::=的( , )有序对。 称为规则左部 称为规则右部
6
文法定义
文法G定义为四元组(VN,VT,P,S )其中 VN:非终结符号(或语法实体,或变量)集; VT:终结符号集; P: 规则的集合;
3
符号串集合:若集合A上的一切元素都是某字母 表上的符号串,则称A为该字母表上的符号串集 合。 符号串集合的乘积:设A和B是符号串集合,则: AB={xy|xєA且yєB}
注意: {Ɛ}A=A{Ɛ}=A 集合Σ闭包Σ*: Σ上所有有穷长的串的集合。 Σ*= Σ0UΣ1UΣ2 …UΣn … Σ0 =Ɛ
VN,VT和P是 非空有穷集。 S:称作识别符号或开始符号的一个非终结符,它至
少要在一条产生式中作为左部出现。
VN和VT不含公共的元素,即VN ∩ VT = φ 用V表示VN ∪ VT ,称为文法G的字母表或字汇表 规则,也称重写规则、产生式或生成式,是形如
→或 ∷=的( ,)有序对,其中是字母表V 的正闭包V+中的一个符号,是V*中的一个符号。 称为规则的左部, 称作规则的右部。
33
上下文无关文法的语法树
句型aabbaa的可能推导序列和语法树
例: G[S]: S→aAS A→SbA A→SS S→a A→ba
S
aA

第3章 文法和语法

第3章 文法和语法
答案:S→aAb A→aAb A→b
例15
L[G]={ ambn | n>=m>=1 }求对应文法 (混合型)
1
3.1 文法的直观概念
语言: 是由句子组成的集合,是一组记号所构成的集合。
汉语 英语
—— 所有符合汉语语法的句子的全体 —— 所有符合英语语法的句子的全体 —— 所有该语言的程序的全体
程序设计语言
2
语言研究
研究语言 :
每个句子构成的规律 每个句子的含义 每个句子和使用者的关系
例如:x=aabc 则|x|=4
(2)空符号串:ε
则 |ε|=0
(3)头、尾、固有头、固有尾 z=xy
• •
x是z的头;y是z的尾 若y非空,x是z的固有头;若x非空,y是z的固有尾。
例如:符号串abc 头:ε,a,ab,abc 固有头:ε,a,ab 例如:x=01
y=abc
尾:ε,c,bc,abc 固有尾:ε,c,bc

语言研究的三个方面:

语法 Syntax:表示构成语 言句子的各个记号之间的组 合规律。 语义 Semantics:表示按照 各种表示方法所表示的各个 记号的特定含义。(各个记 号和记号所表示的对象之间 的关系) 语用 Pragmatics:表示在 各个记号所出现的行为中, 它们的来源、使用和影响。
14
例4 文法G: <标识符>→<字母> <标识符>→<标识符><字母> <标识符>→<标识符><数字> <字母>→a … <字母>→z <数字>→0 … <数字>→9 指出下面直接推导所使用的规则:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3
2、文法 文法:仅仅涉及语言句子的结构描述。 以自然语言为例(用 EBNF 描述一种语言:)
〈句子〉::= 〈主语〉〈谓语〉 〈主语〉::= 〈代词〉|〈名词〉 〈代词〉::= 你 | 我 | 他 〈名词〉::= 王明 | 大学生 | 工人 | 英语 〈谓语〉::= 〈动词〉〈直接宾语〉 〈动词〉::= 是 | 学习 〈直接宾语〉::= 〈代词〉|〈名词〉
思考: 文法的句型与句子的关系? 文法G能得到哪些句子?
19
5、语言的定义:由文法G生成的语言记为L(G),它是 文法G的一切句子的集合: 即L(G)={x|S * x,其 中S为文法的开始符号,且x ∈VT*} 例:G: S→0S1, S→01 L(G)={0n1n|n≥1}
思考:文法G1[A]:A→0R A→01 R→A1的语言?
0S10011 (v=0S1,w=0011,使用规则S→01,γ =0,δ =1) S 0S1 (v=S,w=0S1,使用规则S→0S1,γ =ε,δ = ε ) 0S100S11 (v=0S1,w=00S11,使用规则?)
16
例 文法G=(VN,VT,P,S) VN ={标识符,字母,数字} VT ={a,b,c,…x,y,z,0,1,…,9} P={<标识符>→<字母> <标识符>→<标识符><字母> <标识符>→<标识符><数字> <字母>→a,…, <字母>→z <数字>→0,…, <数字>→9 } S=<标识符> 思考:指出下面直接推导所使用的规则 ? ① <标识符> <标识符><字母> ② <标识符> <字母> <数字> <字母> <字母> <数字> ③ abc <数字> abc5
15
或写成: G[S]:S→0S1 S→01
3、推导的定义 直接推导“” α →β 是文法G产生式,γ ,δ ∈V*,若v,w满足: v=γ α δ , w = γ βδ , 则说:v(应用规则α →β )直接产生w 或说:w是v的直接推导 或说:w直接归约到v 记作 v w
例:G: S→0S1, S→01 的直接推导:
补讲:终端符与非终端符 思考:“我是大学生”是否是该语言的句子?
4
语法规则
(文法)
① ② ③ ④ ⑤ ⑥ ⑦
〈句子〉::= 〈主语〉〈谓语〉 〈主语〉::= 〈代词〉|〈名词〉 〈代词〉::= 你 | 我 | 他 〈名词〉::= 王明 | 大学生 | 工人 | 英语 〈谓语〉::= 〈动词〉〈直接宾语〉 〈动词〉::= 是 | 学习 〈直接宾语〉::= 〈代词〉|〈名词〉
18
+ 即 0S1 00001111
4、文法的句型、句子的定义 句型:设G[S]是一文法,如果符号串x是从识别符号 * 推导出来的,即 S x,则称x是文法G[S]的句型。 句子:x仅由终结符号组成(即S * x,且x∈VT*), 则称x是G[S]的句子。 例:G: S→0S1, S→01 S 0S1 00S11 000S11100001111
17
+ 和 *
若存在v =w0 w1 ... wn=w, (n>0) 则称v推导出(产生)w(推导长度为n), 或称w归约到v. 记作 v + w + * 若有v w,或v=w,则记为v w
例:G: S→0S1, S→01
0S1 00S11 000S111 00001111 * 也记作 0S1 00001111 + 和 * 的区别? 思考:
〈句子〉 〈主语〉〈谓语〉 〈代词〉〈谓语〉 我〈谓语〉 我〈动词〉〈直接宾语〉 我是〈直接宾语〉 我是〈名词〉 我是大学生 思考: ① “”的含义? ② “我大学生是” 与“大学生是王明”是句
5
3、程序设计语言与文法关系: 一个程序设计语言是一个记号系统,如自然语言一样, 由语句组成,完整的定义应包含语法与语义两个方面。 语法规定了语句形成的规则,(哪些符号序列是合法的, 而与其含义无关);语义不仅要限定语法规则(静态), 而且要表明程序要做什么(动态)。 文法是阐述语法规则的工具,是形式语言理论基础。
注意: ① 符号串中的符号排列是有顺序的. ② 可以用字母表示符号串,如 x=aaca
8
2)串的头与尾 如果 z = xy 是一符号串,那么: x 是 z 的头,y 是 z 的尾; 如果 x 非空,那么 y 是固有尾;如果 y 非空, 那么 x 是固有头。 例:设 z = abc, 那么 z 的头是: ε ,a ,ab , abc(固有头呢?) z 的尾是: ε ,c ,bc , abc(固有尾呢?) 3)串的几种表示法(x,z是符号串,t是符号): z = x… x 是符号串 z 的头 z = …x… x 在符号串z 中某处出现 z = t… 符号 t 是 符号串 z 的第一个符号
例3.1 文法G=(VN,VT,P,S) VN = { S }, VT ={ 0, 1 } P={ S→0S1, S→01 } S为开始符号
13
例3.2 文法G=(VN,VT,P,S) VN ={标识符,字母,数字} VT ={a,b,c,…x,y,z,0,1,…,9} P={<标识符>→<字母> <标识符>→<标识符><字母> <标识符>→<标识符><数字> <字母>→a,…, <字母>→z <数字>→0,…, <数字>→9 } S=<标识符> 思考: C语言的标识符(变量命名)如何用文法定义?
6、文法的等价:若L(G1)=L(G2),则称文法G1 和G2是等价的。 课堂作业:P44 2
20
Байду номын сангаас
3.4 文法的类型
Chomsky将文法分四类(对产生式施加不同限制 ): 1. 0型文法(短语文法):对任一产生式α →β , 都有α ∈(VN∪VT)+且至少含一个非终结符, β ∈(VN∪VT)* 2. 1型文法(上下文有关文法):对任一产生式 α →β ,都有|β |≥|α |, 仅仅 A→ε 除外。 3. 2型文法(上下文无关文法) :对任一产生式 α →β ,都有α ∈VN , β ∈(VN∪VT)* 4. 3型文法(正规文法):任一产生式α →β 的形 式都为
2
研究程序设计语言及研究的三个方面: 每个程序构成的规律(语法 Syntax) 每个程序的含义(语义 Semantics) 每个程序和使用者的关系(语用 Pragmatics)
语言三个方面定义: 语法 -- 表示构成语言句子的各个记号之间的组合规 律 语义 -- 表示按照各种表示方法所表示的各个记号的 特定含义。(各个记号和记号所表示的对象之间的 关系) 语用 --表示在各个记号所出现的行为中,它们的来 源、使用和影响。
9
3、符号串的运算 1)符号串的长度:符号串中符号的个数.符号串s的 长度记为|s|。 ε 的长度为0 2)连接:符号串x、y的连接,是把y的符号写在x的符 号之后得到的符号串xy 例: x=ST,y=abu 则 xy=STabu |x|=2,|y|=3,|xy|=5 ε x = xε = x 3)方幂:符号串x自身连接n次得到的符号串 xx…xx(n个x)定义为 x n x0=ε, x1=x, x2=xx, x3=xxx x=AB, 则 x0=ε, x1=AB, x2=ABAB, x3=ABABAB 对于 n>0, x n = xxn-1 = xn-1x 4)符号串集合:若集合A中一切元素都是某字母表 上的符号串,则称A为字母表上的符号串集合。
10
5)两个符号串集合A和B的乘积定义为 AB =xy|xA且yB 若 集合A=a,b B = c,d 则 AB =ac,ad,bc,bd {ε}A = A {ε}= A (εx = xε= x) 6)使用 * 表示上的所有有穷长的串(包括ε)的集合。 Σ*称为Σ的闭包。 7)从*中除去ε得到的集合记为+ 。 Σ+称为Σ的正闭包。 Σ* = Σ 0 ∪ Σ1 ∪ Σ2 … ∪ Σn … Σ+ = Σ 1 ∪ Σ2 … ∪ Σn … Σ* = Σ 0 ∪ Σ+ Σ+ = ΣΣ* = Σ* Σ Σ+ = Σ* -{ε} 例:设Σ ={a,b},则 Σ *={ε ,a,b,aa,ab,ba,bb,aaa,aab,…} Σ +={a,b,aa,ab,ba,bb,aaa,aab,…}
为语言的语法描述寻求工具 工具要对程序设计语言给出精确无二义的语法描述。 (严谨、简洁、易读) 形式工具--形式语言抽象地定义为一个数学系统。“形 式”是指这样的事实:语言的所有规则只以什麽符号串 能出现的方式来陈述。
6
3.2 符号和符号串
1、符号 字母表:元素的非空有穷集合。(符号集)
符号:字母表中的元素。
第 3章
文法和语言
考查重点 1. 基本概念 : 文法;推导/归约;句型;句子; 语言;文法的二义性;文法递归;语法树; 短语;直接短语;句柄;正规文法;上下文 无关文法。 2. 基本方法 构造句型的推导/归约,规范推导/规范归约 画出指定句型的语法树 判别文法的二义性 给出句型的短语、直接短语、句柄。 文法与语言的互求(较简单)
11
3.3 文法和语言的形式定义
1、规则(重写规则、产生式或生成式): 是形如α →β 或α ∷=β 的(α ,β )有序对,其 中α 是某字母表V的正闭包V+中的一个符号,β 是 V*中的一个符号。(α ∈V+,β ∈V* why?) α 称为规则的左部(或生成式的左部)。 β 称为规则的右部(或生成式的右部)。 例:
相关文档
最新文档