前后文无关文法和语言
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2章 前后文无关文法和语言 文法开始符号是一个特殊的非终结符,它代表文法所定义的 语言中我们最终感兴趣的语法实体,即语言的目标,而其它语 法实体只是构造语言目标的中间变量;如表达式文法的语言目 标是表达式,而程序语言的目标通常为程序。 产生式(也称产生规则或规则)是定义语法实体的一种书写规 则。一个语法实体的相关规则可能不止一个。例如,有: P→α1 P→α2 P→αn 为书写方便,可将这些有相同左部的产生式合并为一个,即 缩写成 P→α1∣α2∣„∣αn 其中,每个αi(i=1,2,„,n)称为P的一个候选式,直竖“∣” 读为“或”,它与“→”一样是用来描述文法的元语言符号 (即不属于Σ的字符)。
第2章 前后文无关文法和语言
研究程序设计语言 语法:每个程序构成的规律 语义:每个程序的含义 1、语法 -- 表示构成语言句子的各个记号之间的组合规律。 语法包括:词法规则和语法规则 例如:C语法规定了构成条件语句的各个记号的组合规律为: 第一个单词(记号)必须是”if”,然后是单词”(”、表 达式,„.。 2、语义 -- 表示各个记号的特定含义。(各个记号和记号所 表示的对象之间的关系) 对一个语言来说,不仅要给出它的词法、语法规则,而且要 定义它的单词符号和语法单位的意义。离开语义,语言只 不过是一堆符号的集合。 所谓一个语言的语义是这样的一组规则,使用它可以定义 一个程序的意义。这些规则称为语义规则。 阐明语义要比阐明语法难的多,现在还没有一种形式系统 描述语义。
有关定义和记号
符号:可以相互区别的记号(元素)。 字母表:符号(元素)的非空有穷集合。 符号串:由字母表中的符号组成的任何有穷序列 称为该字母表上的符号串。1.空符号串ε(没有 符号的符号串)是上的符号串 2.若x是上的符 号串,a是的元素,则xa是上的符号串 3. y是 上的符号串,当且仅当它可以由1和2导出。 例如: Σ={a,b} ε,a,b,aa,ab,aabba…都是上的符号串
{ } ......
* 2
* { } * 2 3 ......
第2章 前后文无关文法和语言
例:Σ={a,b} Σ*={ε,a,b,aa,ab,ba,bb,aaa,aab,…} Σ+={a,b,aa,ab,ba,bb,aaa,aab,…}
第2章 前后文无关文法和语言
语言概述
语言是由句子组成的集合,是由一组记号所构成的 集合。 汉语--所有符合汉语语法的句子的全体 英语--所有符合英语语法的句子的全体 程序设计语言--所有该语言的程序的全体 语法:每个句子构成的规律 研究语言 语义:每个句子的含义 语用:每个句子和使用者的关系
下面给出文法的定义.进而在文法的定义的基础上, 给出推导的概念,句型、句子和语言的定义.
第2章 前后文无关文法和语言
文法和语言的形式定义
文法的定义 推导的定义 句型、句子、语言的定义
第2章 前后文无关文法和语言
文法的定义
文法G定义为四元组(VN,VT,P,S)
— VN :非终结符集 — VT :终结符集 — P:产生式(规则)集合 — S:开始符号 VN∩VT= φ , S∈VN V=VN∪VT,称为文法G的文法符号集合
第2章 前后文无关文法和语言
规则的定义
规则(重写规则、产生式或生成式), 是形如α →β 或α ∷=β 的(α ,β )有 序对,且α ∈V+,β ∈V*。
α 称为规则的左部(或生成式的左部)。 β 称为规则的右部(或生成式的右部)。
第2章 前后文无关文法和语言
文法的定义
例:文法G=(VN,VT,P,S) VN = { S }, VT ={ 0, 1 } P={ S→0S1, S→01 } S为开始符号
第2章 前后文无关文法和语言
终结符号是指语言不可再分的基本符号,通常 是一个语言的字母表;终结符代表了语法的最小元 素,是一种个体记号。非终结符号也称语法变量, 它代表语法实体或语法范畴;非终结符代表一个一 定的语法概念,因此,一个非终结符是一个类、一 个集合。例如,在程序语言中,可以把变量、常数、 “+”、“*”等看作是终结符,而像“算术表达式” 这个非终结符则代表着一定算术式组成的类,如 i*(i+i)、i+i+i等;也即每个非终结符代表着由一 些终结符和非终结符且满足一定规则的符号串组成 的集合。
“我是大学生”的构成符合上述规则,而 “我大学生是”不符合上述规则,我们说它 不是句子。这些规则成为我们判别句子结构 合法与否的依据,换句话说,这些规则看成 是一种元语言,用它描述汉语。这里仅仅涉 及汉语句子的结构描述。其中一种描述元语 言称为文法。
第2章 前后文无关文法和语言
英语句子
sentence –> <subject> <verb-phrase> <object> subject –> This | Computers | I verb-phrase –> <adverb> <verb> | <verb> adverb –> never verb –> is | run | am | tell object –> the <noun> | a <noun> | <noun> noun –> university | world | cheese | lies This is a university. Computers run the world. I am the cheese. I never tell lies.
第2章 前后文无关文法和语言
符号串s的头(前缀):移走符号串s尾部 的零个或多于零个符号得到的符号串. 如:b是符号串banana的一个前缀. 符号串s的尾(后缀):删去符号串s头部 的零个或多于零个符号得到的符号串. 如:nana是符号串banana的一个后缀. 符号串s的子串:从s中删去一个前缀和一 个后缀得到的符号串. 如:ana是符号串banana的一个子串.
第2章 前后文无关文法和语言
文法G定义为四元组(VN,VT,P,S ),其中
VN为非终结符号(或语法实体,或变量)集; VT为终结符号集; P为产生式(也称规则)的集合; VN,VT和P是非空有 穷集。
S称作识别符号或开始符号,它是一个非终结符,至 少要在一条产生式中作为左部出现。
VN和VT不含公共的元素,即VN ∩ VT = φ 用V表示VN ∪ VT ,称为文法G的字母表或字汇表
第2章 前后文无关文法和语言
文法是程序语言的生成系统,而自动机则是程序 语言的识别系统;用文法可以精确地定义一个语 言,并依据该文法构造出识别这个语言的自动机。 因此,文法对程序语言和编译程序的构造具有重 要意义,如程序语言的词法可用正规文法描述, 语法可用上下文无关文法描述,而语义则要借助 于上下文有关文法描述。
如果不考虑语义,即只从语法这一侧面来看语言,这种意 义下的语言称作形式语言。形式语言抽象地定义为一个数学 系统。“形式”是指这样的事实:语言的所有规则只以什么 符号串能出现的方式来陈述。形式语言理论是对符号串集合 的表示法、结构及其特性的研究。是程序设计语言语法分析 研究的基础。
第2章 前后文无关文法和语言
本章难重点
关于文法和语言的概念是形式语言的理论 基础,形式语言抽象地定义为一个数学系统。 "形式"是指这样的事实:语言的所有规则只以 什麽符号串能出现的方式来陈述。这里介绍的 语言的语法描述工具正是这样的系统。
第2章 前后文无关文法和语言
第2章 前后文无关文法和语言
文法及语言的表示
当我们表述一种语言时,无非是说明这种语言的 句子(句子:一定字符集(称字母表)上的一字符 串),如果语言只含有有穷多个句子,则只需列出 句子的有穷集就行了,但对于含有无穷句子的语言 来讲,存在着如何给出它的有穷表示的问题。 以自然语言为例,人们无法列出全部句子,但是 人们可以给出一些规则,用这些规则来说明(或者定 义)句子的组成结构(也就是各种属性的单词所允许 的排列规则),比如汉语句子可以是由主语后随谓 语而成,构成谓语的是动词和直接宾语,我们采用 EBNF来表示这种句子的构成规则:
?根据语言文法的特点来指导语法分析的过程?从描述语言的文法可以自动构造出可用的分析程序从描述语言的文法可以自动构造出可用的分析程序?制导语义翻译第2章前后文无关文法和语言本章难重点关于文法和语言的概念是形式语言的理论基础形式语言抽象地定义为一个数学系统
第二章 前后文无关文法和语言
语言文法概述 文法和语言的形式定义 文法的类型 上下文无关文法及其语法树 句型的分析 有关文法实用中的一些说明
第2章 前后文无关文法和语言 例如:我们根据C语法可以判断出声明语句”int i=999;” 是正确的,但是无法判断出声明语句” int i=9999999;” 是 错误的,因为该语句的语法没有错误(即单词的排列顺序是 对的),其错误是因为数值 9999999 超过了整型变量的最大 允许值。这个错误就需要语义检查才能发现。
第2章 前后文无关文法和语言
文法和语言的形式定义
如何来描述一种语言?
如果语言是有穷的(只含有有穷多个句子),可以 将句子逐一列出来表示 如果语言是无穷的,找出语言的有穷表示。语言的 有穷表示有两个途经: - 生成方式 (文法):语言中的每个句子可以用 严格定义的规则来构造。 - 识别方式(自动机):用一个过程,当输入的一 任意串属于语言时,该过程经有限次计算后就会停 止并回答“是”,若不属于,要么能停止并回答 “不是”,(要么永远继续下去。)
第2章 前后文无关文法和语言
两个符号串集合A和B的乘积定义为 AB =xy|xA且yB 若集合A=ab,cde,B = 0,1 则 AB =ab1,ab0,cde0,cde1 使用 *表示上的一切符号串(包括ε)组成的集 合。Σ*称为Σ的闭包。 上的除ε外的所有符号串组成的集合记为+ 。 Σ+称为Σ的正闭包。
第2章 前后文无关文法和语言
符号串的运算
符号串的长度:符号串中符号的个数.符号串s的长 度记为|s|。 ε的长度为0 连接:符号串x、y的连接,是把y的符号写在x的符号 之后得到的符号串xy 如 x=ab,y=cd 则 xy=abcd 有εa = aε 方幂:符号串自身连接n次得到的符号串 an 定义为 aa…aa n个a a1=a, a2=aa则a0=ε 符号串集合:若集合A中所有元素都是某字母表上 的符号串,则称A为字母表上的符号串集合。
ห้องสมุดไป่ตู้2章 前后文无关文法和语言
“我是大学生”。是汉语的一个句子 〈句子〉∷=〈主语〉〈谓语〉 〈主语〉∷=〈代词〉|〈名词〉 〈代词〉∷=我|你|他 〈名词〉∷=王明|大学生|工人|英语 〈谓语〉∷=〈动词〉〈直接宾语〉 〈动词〉∷=是|学习 〈直接宾语〉∷=〈代词〉|〈名词〉
第2章 前后文无关文法和语言
1
第2章 前后文无关文法和语言
本章目的
为语言的语法描述寻求工具。
通过该工具,可以: 掌握对源程序给精确无二义(严谨、简洁、易 读)的语法描述手段之一---文法。 根据语言文法的特点来指导语法分析的过程 从描述语言的文法可以自动构造出可用的分析 程序 制导语义翻译
第2章 前后文无关文法和语言
第2章 前后文无关文法和语言
语言是由句子组成的集合,是由一组符号所构成的
集合。换言之,字母表上的一个语言是上的一些 符号串的集合 (字母表上的每个语言是*的一个 子集)。 例如:字母表Σ={a,b} , Σ*={ε,a,b,aa,ab,ba,bb,aaa,aab,…} 集合{ab,aabb,aaabbb,…,anbn,…}或表示为 {w|w∈Σ*且w=anbn,n≥1}为字母表上的一个语言。 集合{a,aa,aaa,…}或表示为{w|w∈Σ*且w=an,n≥1} 为字母表上的一个语言。 ε是一个语言。 即 是一个语言。
第2章 前后文无关文法和语言
例 文法G=(VN,VT,P,S) VN ={标识符,字母,数字} VT ={a,b,c,…x,y,z,0,1,…,9} P={<标识符>→<字母> <标识符>→<标识符><字母> <标识符>→<标识符><数字> <字母>→a,…, <字母>→z <数字>→0,…, <数字>→9 } S=<标识符>