形式语言02章文法语言语言

合集下载

《编译方法》第2章 形式语言和文法

《编译方法》第2章 形式语言和文法

S 推导出 “ 000111” , 推导长度3
“ 000111” 归约到 S
+ 表示成 S ⇒ 000111
第2章 形式语言与文法 2.2 文法
2.2.3 相关概念
2.句型和句子
定义: 文法G(VN,VT,S ,P),若符号串x可由开始符号S推导出
* (S ⇒ x),则称 x 是 G 的一个句型,若x仅由终结符组成, 则称 x 为G 的一个句子。 注意:句型和句子都必须由开始符号S推出!
(2)用适当条数的规则描述了一个语言的全部句子。
第2章 形式语言与文法 2.1 语言
2.2 文法
2.2.1 文法的形式定义
2.2.2 文法的表示方法
2.2.3 相关概念
第2章 形式语言与文法
2.2 文法
2.2.1 文法的形式定义
1.终结符
不可分割的符号串,是组成句子的最基本的单位。
一个语言允许使用的所有终结符组成的集合称为终结符集, 用VT 表示。
则 |x|=4 , |y|=4 xy = “homework”
第2章 形式语言与文法
| xy | = 4+4 = 8
2.1 语言
2.1.1 语言的概念
方幂:符号串 x 的方幂就是 n个x 自身连接 次,表示为 xn 。 规定 x0 =ε。 成立的等式: x1=x , x2=xx , x3=xxx ,……
若n>0,则有: xn = xxn-1 = xn-1x
x* 表示 x 的任意多次方幂(可以是 0 次) x+ 表示 x 的任意非 0 次方幂。 【例2-3】 若 x = “ab” 则 x0 =ε x1 = “ab”
x2 = “abab”
第2章 形式语言与文法

第二章文法和形式语言

第二章文法和形式语言

第⼆章⽂法和形式语⾔第⼆章⽂法和形式语⾔《编译原理》课程组计算机⼯程学院第⼆章⽂法和形式语⾔2.1 ⽂法的直观概念2.2 符号和符号串2.3 ⽂法和语⾔的形式定义2.4 ⽂法的类型2.5 上下⽂⽆关⽂法机器语法树2.6 句型分析2.7 ⽂法的实⽤限制第2章⽂法和语⾔【学习⽬标】本章⽬的是为语⾔的语法描述寻求⼯具◇掌握对源程序给出精确⽆⼆义(严谨、简洁、易读)的语法描述⼿段之⼀——⽂法。

◇对形式语⾔的理论有⼀个初步基础◇根据语⾔⽂法的特点指导语法分析的过程本章将讨论词法分析程序的设计原则,单词的描述技术,识别机制及词法分析程序的⾃动构造原理。

第2章⽂法和语⾔【教学重点】概念:⽂法,推导,直接推导,最左(右)推导,产⽣式,句型,短语,直接短语,句柄,语法树,规范推导,⼆义⽂法等4种⽂法的定义、⽂法的构造和⽂法的推导语法树的构造和最左(右)推导;⼆义⽂法、⼆义性的证明;句型分析;2.1 ⽂法的直观概念⼀、语⾔概述语⾔是由符合语法的句⼦组成的集合。

–汉语-- 所有符合汉语语法的句⼦的全体–英语-- 所有符合英语语法的句⼦的全体–程序设计语⾔-- 所有该语⾔的程序的全体每个句⼦构成的规律研究语⾔每个句⼦的含义每个句⼦和使⽤者的关系⼀、语⾔概述(续1)研究程序设计语⾔每个程序构成的规律每个程序的含义每个程序和使⽤者的关系语⾔研究的三个⽅⾯语法Syntax语义Semantics语⽤Pragmatics⼀、语⾔概述(续2)语法:指语⾔的⼀组规则,⽤它可以形成和产⽣⼀个合适的程序。

–如何由基本字符构成⼀个个单词;–如何由⼀系列单词构成程序语法只定义什么样的符号序列是合法的,⽽不表达这些符号及符号序列的含义语义:明确程序各部分的含义–静态语义:由⼀系列限定规则组成,并确定哪些合乎语法的程序是合适的;–动态语义:表明程序要做些什么,要计算什么⼀、语⾔概述(续3)形式语⾔:只考虑语法⽽不考虑语义的符号语⾔。

每种语⾔具有两个可识别的特性,–语⾔的形式–该形式相关联的意义“形式”是指这样的事实:语⾔的所有规则只以什么符号串能出现的⽅式来陈述。

编译原理2文法和形式语言

编译原理2文法和形式语言

2.3.3 语言的形式定义 1.直接推导 直接推导 是一文法, 直接推出x 令G是一文法,我们从 是一文法 我们从xAy直接推出 α y,即xAy ⇒ x α y,仅 直接推出 , , A → α是G的一个规则且 ∈ (VN∪ VT)*,也就是说从符号串 的一个规则且x,y 的一个规则且 也就是说从符号串 xAy直接推出 α y仅使用一次规则。 直接推出x 仅使用一次规则。 直接推出 仅使用一次规则 例:设有文法:G[E] 设有文法: 1、E → E+T|T 、 2、T → T∗F|F 、 ∗ 3、F →(E)|i 、 对从起始符号E到句子 到句子i+i∗ 的直接推导如下 对从起始符号 到句子 ∗i的直接推导如下 : E⇒E+T⇒T+T⇒F+T⇒i+T⇒i+T∗F⇒i+F∗F ⇒ ⇒ ⇒ ⇒ ⇒ ∗ ⇒ ∗ ⇒i+i∗F⇒i+i∗i ∗ ⇒ ∗
8)符号串的幂 ) 定义: 是字母表上的符号串, 的幂运算为: 定义:设x是字母表上的符号串,则x的幂运算为: 是字母表上的符号串 的幂运算为 x0=ε, x1=x, x2=xx, … … ,xn=xn-1x(=x xn-1) ε , , 9)符号串集合的幂:(集合的相乘) )符号串集合的幂:(集合的相乘) :(集合的相乘 定义: 为符号串集合, 定义:若A为符号串集合,则符号串集合的幂为: 为符号串集合 则符号串集合的幂为: A0= {ε } , A1=A ,A2=AA,… … , An-1=An-2A, ε , , An=An-1A(=AAn-1), ( 例:若A={a,b} , 则 A1=A={a,b}; , ;
2.3 文法和语言的形式定义 Σ:为某一字母表, L:一个语言, L⊂Σ 为某一字母表, :一个语言, 字母表 ⊂Σ* ⊂Σ 2.3.1 形式语言 1.定义:序列的有穷集合。具体地说每个形式语言都是某个字母 定义:序列的有穷集合。 定义 表上按某种规则构成的所有符号串的集合, 表上按某种规则构成的所有符号串的集合,反之任何一个字母 表上符号串的集合均可以定义一个形式语言。 表上符号串的集合均可以定义一个形式语言。 2.表示方法: 表示方法: 表示方法 1)枚举法。当语言为有穷集合时使用。 )枚举法。当语言为有穷集合时使用。 2)文法描述。当语言为无穷集合时使用。 )文法描述。当语言为无穷集合时使用。

形式语言与自动机_课件_陈有祺第02章 文法的一般理论

形式语言与自动机_课件_陈有祺第02章 文法的一般理论

的情况。若从S出发,先用第一个产生式n-1次,即S aSb
aaSbb … an-1S bn-1,最后再使用第二个产生式一次,得
到S
anbn,这个推导对于任何n>1都是对的。再加上n=1的
情况,即可得到L(G)={an bn∣n≥1 }。
文法语言
例2.9 给出文法G,它的产生式是:
S→aB∣bA
形式文法与形式语言
例2.4 下面的各四元组都是文法。
① G1 = ({A, B}, {0,1},{A→0B, B→1B, B→0}, A)。
② G2 =( {A,B,C},{a,b,C},{A→aBC, B→b, C→CC, C→ε}, A)。
③ G3=( {L,M,N}, {0,1,2}, { M→0LN, L→1, 0L→2, LN→12,N→0},M)。
其他的符号如:iF,tHEn,ElsE,;,:=,<,>,+,-,*,/, a,b,C,x,y,z,等等都是构成语言的基本符号,也就是 字母表中的符号。
第五条规则关于<语句表>的定义,这是一种递归的 定义形式。
问题的提出
例2.2 根据例2.1中的各规则,我们指出下述的字符串 wHilE x≤5 Do x := (x+2) 是一个合法的语句。
形式文法与形式语言
例2.5 对例2.3 中 给出的文法用定义2. 1加以规范化。其四 元组表示就是: ({<SEntEnCE>,<Noun pHrasE>,<DEtErminEr>, <Noun>, <VErb pHrasE>, <VErb>}, {tHE, a, applE, Cat, man, Eats, sinGs, runs}, {<SEntEnCE>→<Noun pHrasE><VErb pHrasE>, <Noun pHrasE>→<DEtErminEr><Noun>, <DEtErminEr>→tHE, <DEtErminEr>→a, <Noun>→applE,<Noun>→Cat,<Noun>→man, <VErb pHrasE>→<VErb><Noun pHrasE>, <VErb pHrasE>→<VErb>, <VErb>→Eats,<VErb>→sinGs,<VErb>→runs}, <SEntEnCE>)

形式语言02章文法语言语言

形式语言02章文法语言语言

例2-5
C语言中简单变量的说明语句的定义。 C语言中的说明语句形式为:
TYPE 变量名表; TYPE 变量名表; … TYPE 变量名表;
产生式为:
S→SS|P P→T V; T→int|char|float V→V,V|I I→L|IL|ID L→a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p| q|r|s|t|u|v|w|x|y|z D→0|1|2|3|4|5|6|7|8|9
符号“( ”和“ )”是字母表的元素。
Chomsky采用的符号化(形式化)的 描述方式,运用如下的规则(这些规 则被称为产生式):
① S→( )
② S→(S)
③ S→SS
→”读作“定义为”或者“是” ,它 的左边和右边分别称为该产生式的左 边和右边;
根据这些规则,也可以生 成任意合法的串;可以判 断一个串是否为合法的串。
语言就是某个字母表上的字符串组成的一 个集合。语言中的字符串称为句子。
文法的作用就是产生一个语言。
有穷语言的表示较容易,即使语言中的句 子的组成没有什么规律,也可以使用枚举 的方式列出语言中的所有句子。
对于无穷语言,使用有穷描述的方式表达。 需要从语言包含的句子的一般构成规律去 考虑问题。这种从语言的有穷描述来表达 语言的方法对一般的语言都是有效的。尤 其在使用计算机判断一个字符串是否是某 个语言的句子时,从句子和语言的结构特 征上着手是非常重要的。
考虑:
由奇数个1组成串的语言的产生。
例2-3:包含有+、-பைடு நூலகம்*、/、 ()的算术表达式的语言。
自然语言的描述方式
①单个变量是合法的最基本的串; ②若S是一个合法的串,则SAS是一
个合法的串( 其中A代表运算符+、 -、*、/) ③若S是一个合法的串,则(S)是合法 的串;

编译原理 第2章 文法和形式语言

编译原理 第2章 文法和形式语言

2011年6月7日
推导方法: 推导方法:从一个要识别的符号 开始推导, 开始推导,即用相应规则的 右部来替代规则的左部, 来替代规则的左部 右部来替代规则的左部, 每次仅用一条规则去进行推导。 每次仅用一条规则去进行推导。
<句子 ::=<主语><谓语> 句子>::=<主语><谓语> 句子 ::=<主语><谓语 >::=<代词>|<名词 <主语>::=<代词>|<名词> 主语>::=<代词>|<名词> <代词> ::=你|我|他 代词> ::=你 名词>::= 王民|大学生|工人| <名词>::= 王民|大学生|工人|英语 >::=<动词><直接宾语 <谓语>::=<动词><直接宾语> 谓语>::=<动词><直接宾语> >::=是 <动词>::=是|学习 动词>::= 直接宾语>::=<代词>|<名词> >::=<代词>|<名词 <直接宾语>::=<代词>|<名词>
2011年6月7日
2.由规则推导句子:有了一组规则之后, 2.由规则推导句子:有了一组规则之后,可以按照一定的方式 由规则推导句子 用它们去推导或产生句子。 用它们去推导或产生句子。 推导方法:从一个要识别的符号开始推导, 推导方法:从一个要识别的符号开始推导,即用相应规则的 右部来替代规则的左部,每次仅用一条规则去进行推导。 来替代规则的左部 右部来替代规则的左部,每次仅用一条规则去进行推导。 <句子 => <主语><谓语> 句子> <主语><谓语 主语><谓语> 句子 <代词><谓语 代词><谓语> <主语><谓语> => <代词><谓语> 主语><谓语> ><谓语 …… …… 这种推导一直进行下去,直到所有带< >的符号都由终结符号 这种推导一直进行下去,直到所有带< >的符号都由终结符号 替代为止。 替代为止。

形式语言与自动机——语言及文法

形式语言与自动机——语言及文法
xxx
x y x+y
关于字符串的运算
其它 如 取头字符,取尾部,子串匹配 等 设ω1, ω2, ω3是字母表T上的字符串,称:
ω1是字符串ω1ω2的前缀, ω2是字符串ω1ω2的后缀, ω2是字符串ω1ω2ω3的子串。 空串是任何字符串的前缀,后缀及子串。 例:abc的前缀 a ab abc ε.
举例 = 0, bbaba = 5
ai 表示含有i个a的字符串
关于字符串的运算
连接(concatenation) 设 x, y为串, 且 x a1a2 … am, y b1b2 … bn, 则 x 与 y 的连接 x y a1a2 … am b1b2 … bn
连接运算的性质 ( x y ) z x( y z )
隐含的概念:如何表述子集的“特性和规则”,
举例 - 左右括号的匹配。
英文单词集 …, English, …, words , … C 语言程序集 … 字母表? 汉语成语集 …, 马到成功, … 化学分子式集 …, H2O, …, NaCl , … any, 任意
语 言 (Languages)
举例:设T = {a,b} 则 L1 = {anbn | n≥1} L3 = { bk | k 是质数} L2 ={ε} 只有一个空句子的语言 L4 = { } = Φ 空语言 均为字母表T上的语言。
由语言的定义知语言是集合,对于集合的运算可 应用于对于语言的计算。如并,交,补,差。
语言的基本运算
字 符 串 (string)
概念 字母表 T 上的一个字符串(简称串),或称为 字(word),为 T 中字符构成的一个有限序列。
空串(empty string), 用 表示,不包含任何
字符。

形式语言第二章参考答案

形式语言第二章参考答案

2.6 设文法 G 的产生式集如下,请给出 G 的每个语法范畴代表的集合.
S→aSa|aaSaa|aAa A→bA|bbbA|bB B→cB|cC C→ccC|DD D→dD|d 解:
set(D)={d}+ set(C)={ c2n dm| m≥2 n≥0} set(B)={ c n d m |m≥2 n≥1} set(A)={ bpcndm | p≥1, m≥2, n≥1} set(S)={ aqbpcndmaq| p≥1 ,m≥2, n≥1, q≥1} ******************************************************************************* 7.给定如下文法,请用自然语言描述它们定义的语言。 (吴贤珺 02282047) ⑴ A→aaA│aaB B→Bcc│D#cc D→bbbD│# 解:该语言由四部分组成:第一部分是偶数个 a(至少有两个) ,第二部分是 3 的倍数个 b (可以是 0 个) ,第三部分是两个“#”号,第四部分是偶数个 c(至少有两个) 。 ⑵ A→0B│1B│2B B→0C│1C│2C C→0D│1D│2D│0│1│2 D→0B│1B│2B 解:该语言的句子是字母表∑={0,1,2}上所有长度为 3 的倍数的字符串,且非空。 ⑶ A→0B│1B│2B B→0C│1B│2B C→0E│1D│2D│0│1│2 D→0C│1B│2B E→0E│1D│2D│0│1│2 解:观察发现 C 和 E 所对应产生式右部是相同的。所以将文法化简成如下的形式: A→0B│1B│2B B→0C│1B│2B C→0C│1D│2D│0│1│2 D→0C│1B│2B 作出状态图如下: 0 0 0, 1, 2
=>aaabBCCBC =>aaabbCCBC =>aaabbCBCC =>aaabbBCCC =>aaabbbCCC =>aaabbbcCC =>aaabbbccc 推导二: S=>aSBC =>aaSBCBC =>aaaBCBCBC =>aaaBBCCBC =>aaaBBCBCC =>aaabbCBCC =>aaabbBCCC =>aaabbbCCC =>aaabbbcCC =>aaabbbccc 归约一、归约二分别为推导一和推导二的逆过程 ******************************************************************************* 5 句子 abeebbeeba 的一个推导如下: (陈伟芳 学号??) S=>aAa 使用产生式 SaAa =>aSSa 使用产生式 ASS =>abAbSa 使用产生式 SbAb =>abSSbSa 使用产生式 ASS =>abeSbSa 使用产生式 Se =>abeebSa 使用产生式 Se =>abeebbAba 使用产生式 SbAb =>abeebbSSba 使用产生式 ASS =>abeebbeSba 使用产生式 Se =>abeebbeeba 使用产生式 Se 不能给出 abeebbeeb 的归约,因为由文法 G 中产生式推出的句子只有三种情况:头尾都是 a,头尾都是 b,或者只有一个 e,而 abeebbeeb 上面三个条件都不符合,所以它不是文法 G 的 一 个 句 子 , 当 然 也 就 不 能 给 出 它 的 一 个 归 约 了 。 *******************************************************************************

第2章 形式语言概述

第2章 形式语言概述
<动词> ::= 是|学习 <直接宾语> ::= <代词>|<名词>
软件学院
编译原理
2.2.2 文法的形式定义(1)
非终结符
出现在规则的左部,用<>括起来,表示一定语法概念的词,
用VN表示
终结符
语言中不可再分割的字符串(包括单个字符组成的串)
用VT表示 V= VN U VT
注:1型文法意味着,对非终结符进行替换时务必考虑上下文,并 且,一般不允许替换成 ,除非是开始符号产生
软件学院
编译原理
2型文法(上下文无关文法)
设G=(VN,VT,P,S),若P中的每个产生式α→β满足: α是一个非终结符, β∈(VN∪VT ) *,则此文法称为2 型文法或上下文无关文法。有时将2型 文法的产生式表示为形如:A→β,其中A∈VN 。 也就是当用β取代非终 结符A时,与A所在的上下文无关。上下文无关文法有足够的能力描述现 今的程序设计语言。 识别上下文无关语言的自动机称为下推自动机。它是。缩写为PDA。
3型语言2型语言1型语言0型语言
软件学院
编译原理
2.2.6 文法分类的意义
一个文法实际上是某种语言的一个简明、确切的描述,它表示了 该语言中所允许的一类语法结构。从一个文法能推导出多个终结 符的句子。但是知道了如何去构造属于某一个语言的一个合法串 只是问题的一个方面。同时我们还要有能力判定一个串是否合法 。也就是说,我们需要确定这个给定串的推导序列。如果从文法 出发找不到这个推导序列,则该串就是非法的。 程序设计语言的词法分析属于正规文法,与局部语法相关的部分 属于上下文无关文法,与全局语法和语义有关的部分属于上下文 有关文法。

《编译原理》第2章文法和语言的形式定义

《编译原理》第2章文法和语言的形式定义

《编译原理》第2章文法和语言的形式定义编译原理是计算机科学中的一门重要课程,它研究的是将高级程序语言翻译成机器语言的方法和技术。

在编译原理中,文法和语言的形式定义是非常重要的概念,本文将围绕这个主题展开详细的讨论。

第2章《文法和语言的形式定义》主要介绍文法和语言的概念、应用及其形式定义的方法。

文法是描述语言结构和语法规则的形式化产物,而语言则是文法所描述的符号集合。

在编译原理中,我们需要通过形式定义的方式来描述和理解程序语言的结构和规则。

下面将对文法和语言的形式定义进行详细解释。

1.文法的定义文法是由产生式(Production)组成的四元组(G,N,P,S),其中:-G:表示文法-N:表示非终结符集合,即一组可以推导出或展开的符号。

-T:表示终结符集合,即不再进行推导或展开的符号。

-P:表示产生式规则集合,是一组指定如何生成目标符号串的规则。

-S:表示一个特殊的非终结符,称为开始符号或起始符号,表示文法的初始状态。

文法的定义可以采用两种形式:巴科斯-诺尔范式(Backus-Naur Form,BNF)和扩充背景文法表达式(Extended Backus-Naur Form,EBNF)。

BNF是最常用的文法定义方法,它使用产生式规则来描述语言的结构和规则。

2.产生式的定义产生式规定了如何用一个符号串替换或展开另一个符号串。

一个产生式由一个非终结符和一个由非终结符和终结符组成的字符串组成。

例如,产生式A->BC,表示用符号串BC替换非终结符A。

产生式可以有多个产生式体,每个产生式体之间使用“,”符号分隔。

例如,产生式A->B,C,表示非终结符A可以被替换成非终结符B或C。

产生式体中可以使用如下符号:-终结符:表示语法中不再与其他符号进行推导的符号,如数字、运算符、关键字等。

-非终结符:表示语法中可以被进一步推导的符号。

-空串:表示不产生任何字符的特殊终结符。

-ε:表示空串。

3.语言的定义语言是符合一些特定文法规则的所有符号串的集合。

2文法和语言的形式定义

2文法和语言的形式定义
终结符或者非终结符每个推导对应一个中间结点及其儿子一个二级子树句型分析分类自顶向下的分析方法自底向上的分析方法自顶向下的分析方法自顶向下的分析方法从开始符号出发看能否推导出待检查的符号串如果能则表明此符号串是该文法的句型或句子否则就不是
语言及其文法
计算机科学系 李静
本章主要内容
语言概述 基本定义 文法(Grammar)的定义 CFG的分析树(Parse Tree) 文法的分类 文法的构造
VN={N, L,D} VT={a, b, c, 1, 2, 3} P:
N →L N →NL N →ND L →a|b|c D →1|2|3
L代表<字母> D代表<数字> N代表<标识符>→β1,α→β2…,α→βn 可以简单地记为: α→β1|β2|…|βn 读作:α定义为β1,或者β2,…,或者βn。 并且称它们为α产生式。β1,β2,…,βn 称为候选式(Candidate)。
例:
变量=表达式 if 条件then 语句 while条件do 语句
语言概述
形式化语言理论
用数学方法研究自然语言(如英语)和人工语言(如 程序设计语言)的产生方式、一般性质和规则的理论。
描述形式——文法
语法——语句
语句的组成规则 描述方法:BNF范式、语法(描述)图
词法——单词
单词的组成规则 描述方法:BNF范式、正规式
(1) ε是Σ上的一个符号串。 (2) 若x是Σ上的符号串,而a是Σ的元素,则xa是Σ上的符 号串。 (3) y是Σ上的符号串,当且仅当它由(1)和(2)导出。
由字母表中的符号所组成的任何有穷序列被称之 为该字母表上的符号串。
基本定义
符号串的长度: x=abcd ,|x|=4 空符号串:ε 符号串的头尾:z=xy 符号串的固有头: z=xy,y≠ ε 符号串的固有尾: z=xy,x≠ ε

计算机程序编译原理 第2章 形式语言概论

计算机程序编译原理 第2章 形式语言概论

文法举例
例2.6 1型文法G6=(VN ,VT ,P,S),其中VN={S,X,Y,Z}, VT={x , y , z} , P={S→xSYZ|xYZ, xY→xy, yY→yy, yZ→yz, ZY→YZ, zZ→zz} 例2.7 2型文法G7=(VN,VT,P,S),其中VN={S,T},VT={a, b,c, d},P={S→aTd, T→bT|cT|b|c } 例2.8 2型文法G8=(VN,VT,P,B),其中VN={B},VT={(,) }, P={B→(B)|BB|( )} 例2.9 2型文法G9=(VN,VT,P,S),其中VN={S},VT={0,1 }, P={S→0S1, S→01} 例2.10 正规文法G10=(VN,VT,P,A),其中VN={A, B, C, D}, VT={x, y, z },P={A→xB|yC, B→zB|y|yC, C→xD, D→yD|x }
文法和语言的几点说明
(1) 文法中某些非终结符不在任何规则的右部出现,该非 终结符称为不可到达的; (2) 文法中某些非终结符,由它不能推出终结符号串来, 称为不可终止的(无用非终结符); (3)可空终结符,可以用于消除左递归; (4)一个文法,如果它的一个句子有两棵或两棵以上的语法 树,则称该句子具有二义性。如果一个文法含有二义性的 句子,则该文法具有二义性。形如U→U的产生式。会引起 文法的二义性。
推导
定 义 2.3 G= ( VN, VT, P, S ) , α→β 是 文 法 G 的 产 生 式 , γ,δ∈V* , 若 有 v, w 满 足 : v=γαδ, w= γβδ, 则 说 : v (应用规则α→β)直接产生w 或说:w是v的直接推导 或说:w 直接归约到v 记作 v ⇒w。 例 G[S]:S→0S1, S→01 直接推导: 0S1⇒0011 (v=0S1,w=0011,使用规则S→01,γ=0,δ=1) S ⇒0S1 (v=S,w=0S1,使用规则S→0S1,γ=ε,δ= ε ) 0S1⇒00S11 (v=0S1,w=00S11,使用规则S→0S1,γ=0,δ=1) 定义2 定义2.4 v⇒+u 若存在v =α0 =>α1=>…=>αn=u, (n>0) 则称u为u的一个推导,记为v⇒+u。 定义2 定义2.5 v⇒*u 表示v⇒+u 或 v=u

形式语言 第2章 文法

形式语言 第2章 文法

2020/11/5
h
16
2.2 形式定义
• 约定
⑴ 对一组有相同左部的产生式 αβ1,αβ2 ,… ,αβn 可以简单地记为: αβ1|β2|…|βn 读作:α定义为β1,或者β2,…,或者βn。并
且称它们为α产生式。β1,β2,…,βn称为 候选式(candidate)。
2020/11/5
h
17
2020/11/5
h
7
2.1 启示
<动词>走在 <动词>进入 <形容词短语>很抽象的 <名词短语>北京 <名词短语>哈尔滨 <名词短语>形式语言
2020/11/5
h
8
2.1 启示
<名词短语>中国
<名词短语>教育
<名词短语>集合
<名词短语> WTO
<名词短语>美丽的城市
<名词短语>祖国的首都
<名词短语>数学的基础
中有时候又称之为语法范畴。
20/11/5
h
12
2.2 形式定义
– T——为终极符(terminal)的非空有穷集。 a∈T,a叫做终极符。由于V中变量表 示语法范畴,T中的字符是语言的句子中
出现的字符,所以,有V∩T=Φ。
– S——S∈V,为文法G的开始符号(start symbol)。
2020/11/5
<名词短语>社会发展的前面
<句号>。
2020/11/5
h
9
2.1 启示
• 表示一个语言,需要4种东西 ⑴形如<名词短语>的 “符号”
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如果使用%代表模运算(即取余数运 算)、使用^代表指数运算,则有
E→E+T|E-T|T T→T*F|T/F|T%F|A A→F^A|F F→(结合性:^是右结 合的。
例2-4 标识符(以字母开头的字母、 数字的串)的产生(仅考虑小写字母)。
I→L I→IL I→ID L→a |b|c|…|z D→0|1|2|…|9
右线性文法自然地对应于句子的 推导过程。
左线性文法
对于文法G,若每个产生式都是:: A→Cb或者A→a;其中A,C∈V,
a∈XU{ε} , b∈X ; 则 文 法 G 是 左 线性文法。如果一个语言L可以由 左线性文法产生,则该语言是左 线形语言。
其中:“=>”表示单步推导过程。
虽然产生式的个数是有限的, 但是规则是递归的,因而,所 有的小括号匹配的串(有无限 个)均可以由它们产生,它们 组成的集合就称为一个语言。
S称为非终结符,在推导过程中,可 以被代替的符号。
(和)称为终结符,在推导过程中,不 可以被代替的符号。
→ 是产生式系统的元符号,不属于 非终结符,也不属于非终结符。
例2-2:由偶数个0组成的串的语言。 自然语言的描述方式: ①00是合法的该语言的基本的串; ②若S是合法的串,则SS是合法的串;
形式化的描述方式:
① S→00 ② S→SS
问题:
将产生式S→SS换成 S→0S0或者S→00S,
是否还产生相同的语言?
同一个语言,可以使用不同的产 生式组合来产生。
第二章 文法与语言
一个语言的定义可以从两个方面进行: 从语言产生的角度;(形式语言) 从接收(识别)语言的角度。(自动机)
设是一个字母表,L *, L称为 字母表上的一个语言(language), x L, x叫做L的一个句子。
2.1 例子语言
例1:括号匹配的语言(该语言是指 所有的左、右括号相匹配的串的集 合)。
其中:S代表简单变量的说明语句(可 以由一个或多个的单个说明语句构 成),P代表单个的说明语句,T代表 类型,V代表变量名表(由‘,’隔开 的多个变量),I代表单个变量。
思考:
PASCAL语言的简单变量的说明语 句的形成。
2.2 文法和语言的关系
介绍语言的定义。 介绍文法的定义。 介绍文法与语言的关系。
2.3Chomsky对文法的分类
本节介绍Chomsky对文法和语言进行的分类。 语言是由文法产生的,对语言的分类,是根
据产生语言的文法的分类而进行的。
短语结构文法
对于一般的短语结构文法PSG,G=(∑,V, S , P) , 产 生 式 的 形 式 是 v→w , 其 中 : v∈(∑∪V)+ , 且 至 少 包 含 一 个 非 终 结 符 ; w∈(∑∪V)*。
V是一个有限字符的集合,叫做非终 结符集合,它的元素称为变量或者非 终结符;
S∈V,称为文法的开始符号;
P是有序偶对(α,β)的集合,其中α是集
合(∑UV)上的字符串,但至少包含一个 非终结符;β是集合(∑UV)*的元素。一
般,将有序偶对(α,β)记为α→β,称为 产生式;
如果有α→ε,称之为空串产生 式或者ε产生式。
当然,还有其它方式的推 导过程(例如混合),而 最左推导和最右推导是比 较常用的推导方式。
对于文法G,如果S=>*ω,则 称ω是文法的一个句型,若ω 中包含的字符全是终结符,称 ω是句子。
语言的定义
给定文法G,有开始符号S,则把S 可以推导出的所有的终结符串的集 合(即所有句子的集合),称为由 文法产生的语言,记为L(G),即
产生串的过程为:从S开始,反 复利用产生式的右边代替产生 式的左边(称之为推导过程), 最后,可以得到匹配的()组 成的串。
例:串(( ))(( )( ))的产生过程
S=>SS=>(S)S=>(( ))S =>(( ))(S)=>(( ))(SS) =>(( ))(( )S) => (( ))(( )( ))
符号“( ”和“ )”是字母表的元素。
Chomsky采用的符号化(形式化)的 描述方式,运用如下的规则(这些规 则被称为产生式):
① S→( )
② S→(S)
③ S→SS
→”读作“定义为”或者“是” ,它 的左边和右边分别称为该产生式的左 边和右边;
根据这些规则,也可以生 成任意合法的串;可以判 断一个串是否为合法的串。
其中 :
A→+,A→-,A→*,A→/ 四个产生 式的左边是相同的符号,可以合并 为
A→+|-|*|/ +、-、*、/ 称为A的侯选式。
注意:
这组产生式没有表示出运 算符的优先级。
表示出运算符的优先级的产生 式:
E→E+T|E-T|T T→T*F|T/F|F F→(E)|i
其中:E代表表达式,T代表项,F代 表因子,(E)代表的是带小括号的表 达式。该组产生式表示出先算因子, 再*、/,最后+、-。
对于一类语言,可以在字母表上,按 照一定的构成规则,根据语言的结构 特点,定义一个文法。使用文法作为 相应语言的有穷描述,不仅可以描述 出语言的结构特征,而且可以产生这 个语言的所有句子。
短语结构文法(文法)的定义
文法G是一个四元式(由四个部分组成), 即G=(∑,V,S,P);
∑是一个有限字符的集合(字母表), 它的元素称为字母或者终结符;
考虑:
由奇数个1组成串的语言的产生。
例2-3:包含有+、-、*、/、 ()的算术表达式的语言。
自然语言的描述方式
①单个变量是合法的最基本的串; ②若S是一个合法的串,则SAS是一
个合法的串( 其中A代表运算符+、 -、*、/) ③若S是一个合法的串,则(S)是合法 的串;
形式语言的描述方式
① S→ i (i代表单个变量) ② S→SAS ③ S→( S ) ④ A→+ ⑤ A→⑥ A→* ⑦ A→/
如果一个语言L可以由短语结构文法产生, 则该语言是短语结构语言PSL。
定义2-4:右线性文法的定义
对于文法G=(∑ ,V,S,P),若它的 每个产生式都是下列形式之一:
A→bC或者A→a; 其中:A,C∈V,a∈XU{ε},b∈∑
则文法G是右线性文法(RLG,也称为 正则文法RG)。
如果一个语言L可以由右线性文法 产生,则该语言是右线性语言 (RLL或RL)。
问题:如何产生该语言?即如何生 成该集合中的所有的串?
自然语言的描述方式,采用如下的 递归规则:
①( )是合法的该语言的最基本的串; ②若S是一个合法的串,则(S)是合法串; ③若S是一个合法的串,则SS是合法串;
这些规则称为形成规则,根据这些规 则,可以
(1)产生任意合法(即符合规则)的该 集合中的串;
L(G)={ω|S=>*ω,且ω∈∑*}。
例如:产生括号匹配的语言的文法是: G=({(,)},{S},S,{ S→( ), S→(S), S→SS }) 一般,对于文法G,可以只给出它的产生式的
集合即可。上述文法可以简写为:
S→( ) S→(S) S→SS
对于文法和语言,可以从一个文 法得到该文法产生的语言;也可 以根据语言,写出产生该语言的 某个文法;还可以判断一个语言 是否由某一个文法产生。
如果有A→B,称之为单产生式。
一个产生式的左边可能不只一 个符号;第一个产生式的左边 只能有一个符号,就是开始符 号S。
文法的作用就是产 生一个语言。
约定:如果没有特别说明
第一个产生式左边的符号,就是 开始符号,可以不为S;
大写的英文字母代表非终结符;
推导(派生)的定义2-2
给定文法G,α和β是集合(∑UV)上的 串 , 若 α , β 分 别 可 以 写 成 pvr 和 pur(p和r可能同时为空串),而v→u是 文法G的一个产生式,则称串α可以直 接推导出串β , 记为α=>β ,或 pvr =>pur。
<括号匹配串>::= ( ) <括号匹配串>::= <括号匹配串> <括号匹配串> <括号匹配串>::=(<括号匹配串>)
使用尖括号“<”和“>”包括起来的部分,作 为一个整体来看待,表示某个语法成分,最 终,需要使用字母表中的字母来定义。
符号“::=”是BNF本身的符号(元符号), 代表“定义为”或“就是”。
推导的实质是用产生式的右边代 替产生式的左边。(非终结符代表 在推导的过程中可以被替代的符 号,而终结符代表在推导的过程 中不可以被替代的符号)。
推导的逆过程称为归约。
用 符 号 y=>*z 表 示 y 可 以 经 过任意步(包括0步)推导 出z,即
①y=z;或者
②存在一个序列
α1,α2 ,α3 ,…,αn
有 y=α1,z=αn,且 αi=>αi+1;对所有i≥1。
用符号y=>+z表示y可以经 过多步(至少一步),推导 出z,即
存在一个序列 α1,α2 ,α3 ,…,αn 有y=α1,
z=αn,且αi=>αi+1;对所有i≥1。
思考:
对于任意文法G: S=>*S 和 S=>+S 一定都成立吗?
如果在推导的过程中,每一步都是将 推导产生的串的最左边的非终结符代 替掉,称之为最左推导,如果每一步 都是将推导产生的串的最右边的非终 结符代替掉,称之为最右推导(也称 之为规范推导),
考虑: 文法 S→aSa|bSb|c|ε 产生的语言是什么?
考虑:
产生语言L的文法, L= {wwT|w∈{a,b,c}+} 其中:wT是w的逆(反序)。
考虑:
产生下列语言的文法: L1={anbn|n>=0}; L2={anbn|n>0};
相关文档
最新文档