当前位置:文档之家› 编译原理第3章

编译原理第3章

得到:〈主语〉〈谓语〉 〈代词〉〈谓语〉,
重复做下去, 如句子:“我是大学生”的全部动作过程是:
〈句子〉 〈主语〉〈谓语〉 〈代词〉〈谓语〉
我〈谓语〉 我〈动词〉〈直接宾语〉
我是〈直接宾语〉 我是〈名词〉 我是大学
生 由此可见:“我是大学生”的构成符合上述规则,而 “我大学生是”不符合上述规则,我们说它不是句子。
语言 是由句子组成的集合,是由一组符号所构成的集合。换言
之,字母表上的一个语言是上的一些符号串的集合 (字母表 上的每个语言是*的一个子集)。 例如:字母表Σ={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} 为字母表上的一个语言。
ε是一个语言。 即 是一个语言。
ቤተ መጻሕፍቲ ባይዱ
给出语言上的有关运算
设L是(上的)一个语言,M是(上的)一个语言, 语 言L和M的并,交,差,补是一个语言。
语言L和M的并记为 LM.
如: L1 ={a,b,…y,z} M1 ={1,2…8,9 } L1M1={a,b,… y,z,1,2…8,9 } 语言L和M的连接是一个语言,记为 LM
每个句子构成的规律 研究语言 每个句子的含义
每个句子和使用者的关系
研究程序设计语言 每个程序构成的规律 每个程序的含义 每个程序和使用者的关系
语言研究的三个方面 语法 Syntax 语义 Semantics 语用 Pragmatics
语法 -- 表示构成语言句子的各个记号之间的组合 规律
语义 -- 表示各个记号的特定含义。(各个记号和 记号所表示的对象之间的关系)
上面的这些规则成为我们判别句子结构合法 与否的依据,换句话说,这些规则看成是一种 元语言,用它描述汉语。这里仅仅涉及汉语句 子的结构描述。其中这种描述元语言称为文法。
PL/0语言文法EBNF表示(见P11)
:VAR A;BEGIN READ (A) END.
语言概述
语言是由句子组成的集合,是由一组符号所构 成的集合。 汉语--所有符合汉语语法的句子的全体 英语--所有符合英语语法的句子的全体 程序设计语言--所有该语言的程序的全体
例:0,1, 01, 10, 011,.. 空符号串:无任何符号的符号串,用ε表示 例:符号“a”组成的字母表记作{a}; a,aa,a…a;都是字母表
{a}上的字符串。 符号“a”和“b”组成的字母表记作{a,b};
a,b,aa,ab,abb,baa,…都是{a,b}上的符号串。
一些基本概念
文法的形式定义
规则:重写规则、产生式或生成式,是形如α→β 或α::=β的(α,β)有序对,且 α∈V+ ( α不能为空), β∈V*
称为规则的左部(或产生式的左部) 称为规则的右部(或产生式的右部)
文法的形式定义
第3章 文法和语言
本章知识点(内容)
引言和预备知识 文法和语言的形式定义 文法的类型 上下文无关文法及其语法树 上下文无关文法的句型分析 有关文法实用中的一些说明
3.1 文法的直观概念和语言概述
当我们表述一种语言时,无非是说明这种语 言的句子,如果语言只含有有穷多个句子,则 只需列出句子的有穷集就行了,但对于含有无 穷句子的语言来讲,存在着如何给出它的有穷 表示的问题。以自然语言为例,人们无法列出 全部句子,但是人们可以给出一些规则,用这 些规则来说明(或者定义)句子的组成结构,比 如汉语句子可以是由主语后随谓语而成,构成 谓语的是动词和直接宾语,我们采用EBNF来 表示这种句子的构成规则:
语用 --表示在各个记号所出现的行为中,它们的来 源、使用和影响。
如果不考虑语义和语用,即只从语法这一侧面来看 语言,这种意义下的语言称作形式语言。
形式语言抽象地定义为一个数学系统。 “形式”是指这样的事实:语言的所有规则只以什
么符号串能出现的方式来陈述。 形式语言是程序设计语言语法分析研究的基础。
L1(L1M1)*={所有字母打头的字母和数字符号 串}
3.2 文法和语言的形式定义
如何来描述一种语言? 如果语言是有穷的(只含有有穷多个句子),可 以将句子逐一列出来表示 如果语言是无穷的,找出语言的有穷表示。 语言的有穷表示有两个途经: 生成方式 (文法):语言中的每个句子可以用 严格定义的规则来构造。 识别方式(自动机):使用自动机的行为来描 述语言,(以后再详细讲)
LM={st |s∈L且 t∈M}

如: L1M1 ={a1,b1,…y1,z1,a2,b2…a9…z9} 有L ε= εL=L。 L的n次连接Ln= LL...L
语言上的运算
语言L的 闭包记为 L*。
L*= L0 L1 L2 ...
L0= ε , Ln= L Ln-1= Ln-1 L,n1
语言L的正 闭包记为 L+,
L+= L1 L2 L3 ...
L+= LL*= L*L
L*= L+ ε
如: L1 ={a,b,…y,z} M1 ={1,2…8,9 } (L1M1)={a,b,… y,z,1,2…8,9 } (L1M1)*={ε,a,b,… y,z,1,2…8,9
aa,1a,…xyz,6789st..}
“我是大学生”。是否是汉语的一个句子?
汉语句子的构成规则: 〈句子〉∷=〈主语〉〈谓语〉 〈主语〉∷=〈代词〉|〈名词〉 〈代词〉∷=我|你|他 〈名词〉∷=王明|大学生|工人|英语 〈谓语〉∷=〈动词〉〈直接宾语〉 〈动词〉∷=是|学习 〈直接宾语〉∷=〈代词〉|〈名词〉
有了一组规则以后,按照如下方式用它们导出句子:
3.2 字母符表号就和是符字号符不如,串对对=吗{if,?else,for,while}
字母表:符号的非空有限集 例:={0,1} C语言的字母表 A={a,b,…,0,1,…,9, +,-,×,_/, ( , ), =… if, else,for...}
符号:字母表中的元素 例: 0,1 符号串:由字母表中的符号组成的任何有穷序列
相关主题