lxy第2章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第15页
编译原理
高级语言及其语法描述
上下文无关文法
文法是描述语言的语法结构的形式规则(即语法规 文法是描述语言的语法结构的形式规则( 则)。 上下文无关文法所定义的语法范畴(或语法单位) 上下文无关文法所定义的语法范畴(或语法单位)是 完全独立于这种范畴可能出现的环境的。 完全独立于这种范畴可能出现的环境的。 上下文无关文法不宜于描述任何自然语言, 上下文无关文法不宜于描述任何自然语言,但对于现 今的程序语言来说,上下文无关文法基本上是够用了。 今的程序语言来说,上下文无关文法基本上是够用了。
第12页
编译原理
高级语言及其语法描述
例: {a,b}, ∑={a,b},则 ={ε a,b,aa,ab,ba,bb,aaa,…}。 ∑﹡={ε,a,b,aa,ab,ba,bb,aaa, }。 表示不含任何元素的空集{}。 Ф:表示不含任何元素的空集{}。 注意:要注意ε {}和 的区别。 注意:要注意ε、{}和{ε}的区别。
第16页
编译原理
高级语言及其语法描述
从一个具体英文例句的分析出发,引进有关上下文无关文法的基本概 从一个具体英文例句的分析出发, 比如,我们写了这样一个句子: 念。比如,我们写了这样一个句子: He gave me a book. 这是一个语法上正确的句子,因为它满足英语中的基本语法规则。 这是一个语法上正确的句子,因为它满足英语中的基本语法规则。 有下面语法规则: 有下面语法规则: 句子> 主语><谓语><间接宾语><直接宾语> ><谓语><间接宾语><直接宾语 <句子>→<主语><谓语><间接宾语><直接宾语> 主语> 代词> <主语>→<代词> <谓语>→<动词> 谓语> 动词> 间接宾语> 代词> <间接宾语>→<代词> 直接宾语> 冠词><名词> ><名词 <直接宾语>→<冠词><名词> 代词> <代词>→He 代词> <代词>→me <冠词>→a 冠词> 动词>→gave <动词>→gave 名词> <名词>→book
字母表(Σ):符号的有限集合, 例:∑ = {0,1} 符号的有限集合, 字母表( ):符号的有限集合 符号:字母表的每个元素称为一个符号。 符号:字母表的每个元素称为一个符号。 符号串: 是指由Σ中的符号所构成的一个有穷序列。 符号串: 是指由Σ中的符号所构成的一个有穷序列。 符号串的长度:符号串种符号的个数,记作|x|. 符号串的长度:符号串种符号的个数,记作|x|. 空串(空字) 不包含任何符号的序列,记为ε 空串(空字):不包含任何符号的序列,记为ε。 |ε|=0. 表示Σ上的所有符号串的全体,空字ε Σ﹡:表示Σ上的所有符号串的全体,空字ε也包括 在其中。 在其中。例:
第22页
编译原理
高级语言及其语法描述
例 变量是一个算术表达式; “变量是一个算术表达式; E1和E2是算术表达式 是算术表达式, E1+E2,E1*E2和 El) 若E1和E2是算术表达式,则E1+E2,E1*E2和(El)也 是算术表达式。 是算术表达式。” 对于这个定义,若用产生式来描述,则可将它写成: 对于这个定义,若用产生式来描述,则可将它写成: E→i E→E+ E→E+E E→E * E E→( E→(E)
第13页
编译原理
高级语言及其语法描述
∑﹡的子集U和V的(连接)积定义为UV= 的子集U 连接)积定义为UV UV= αβ| {αβ|α∈U&β∈V} 即集合UV中的符号串是由U UV中的符号串是由 的符号串连接而成的。 即集合UV中的符号串是由U和V的符号串连接而成的。 注意,一般而言,UV≠VU, 注意,一般而言,UV≠VU, (UV)W=U(VW)。 但(UV)W=U(VW)。 自身的n 连接) V自身的n次(连接)积记为 =VV……V Vⁿ=VV V 规定: ={ε 规定:V°={ε} V° ∪V¹ ∪V² 令 V*= V° ∪V ∪V² ∪V ³ ∪…… 的闭包。 =VV﹡ 的正则闭包。 称V﹡是V的闭包。记V﹢=VV﹡,称V+是V的正则闭包。
第10页
编译原理
高级语言及其语法描述
2.3 程序语言的语法描述
重点讨论上下文无关文法、语法分析树,以及文 重点讨论上下文无关文法、语法分析树, 上下文无关文法 法的二义性问题 二义性问题。 法的二义性问题。最后还将对形式语言进行简单 概述。 概述。
第11页
编译原理
高级语言及其语法描述
字母表与符号
编译原理
第二章 高级语言及其语法描述
编译原理
高级语言及其语法描述
2.1 程序语言的定义
一个程序语言是一个记号系统。程序语言主要由语 一个程序语言是一个记号系统。程序语言主要由语 法和语义两个方面定义 两个方面定义。 法和语义两个方面定义。
第2页
编译原理
高级语言及其语法描述
语法
语言的语法:指由程序语言基本符号组成程序中各 语言的语法: 个语法单位(包括程序)的一组规则, 个语法单位(包括程序)的一组规则,其中由单词 构成语法单位的规则称为语法规则(产生规则) 构成语法单位的规则称为语法规则(产生规则) , 而由基本符号构成单词的规则称为词法规则。 而由基本符号构成单词的规则称为词法规则。 单词符号:语言中具有独立意义的最基本结构。 单词符号:语言中具有独立意义的最基本结构。包 括基本字、常数、标识符、算符和界符等。 括基本字、常数、标识符、算符和界符等。 语法单位:由单词符号形成的较大的结构。 语法单位:由单词符号形成的较大的结构。包括表 达式、语句、子程序、函数、过程和程序。 达式、语句、子程序、函数、过程和程序。
第23页
Leabharlann Baidu
编译原理
高级语言及其语法描述
一个上下文无关文法G是一个四元式(VT,VN,S,ρ), ,S,ρ 一个上下文无关文法G是一个四元式( 其中 是一个非空有限集,它的每个元素称为终结符号; VT是一个非空有限集,它的每个元素称为终结符号; 是一个非空有限集,它的每个元素称为非终结符号, VN是一个非空有限集,它的每个元素称为非终结符号, V T∩ V N=φ 是一个非终结符号,称为开始符号; S是一个非终结符号,称为开始符号; 是一个产生式集合(有限), ),每个产生式的形式是 ρ是一个产生式集合(有限),每个产生式的形式是 P→α 其中, 开始符号S P→α,其中,P∈VN, α∈(VT∪VN)* 。开始符号S 至少必须在某个产生式的左部出现一次。 至少必须在某个产生式的左部出现一次。
第20页
编译原理
高级语言及其语法描述
非终结符号(也称语法变量)用来代表语法范畴。 非终结符号(也称语法变量)用来代表语法范畴。 例如, 算术表达式” 布尔表达式” 例如,“算术表达式”、“布尔表达式”、“赋值 分程序” 过程” 句”、“分程序”、“过程”等。 开始符号是一个特殊的非终结符号 是一个特殊的非终结符号, 开始符号是一个特殊的非终结符号,它代表所定义 的语言中我们最终感兴趣的语法范畴, 的语言中我们最终感兴趣的语法范畴,这个语法范 畴通常称为“句子” 畴通常称为“句子”。
第5页
编译原理
高级语言及其语法描述
语义
一个语言的语义是指这样的一组规则,使用它可以 一个语言的语义是指这样的一组规则, 语言的语义是指这样的一组规则 定义一个程序的意义。这些规则称为语义规则。 定义一个程序的意义。这些规则称为语义规则。 静态语义:编译时刻可以确定的语法单位含义。 静态语义:编译时刻可以确定的语法单位含义。 动态语义: 动态语义:运行时刻才能理解与确定的语法单位含 义。 采用基于属性文法的语法制导翻译方法。 采用基于属性文法的语法制导翻译方法。
第14页
编译原理
高级语言及其语法描述
符号串集合的运算
语言的运算 和:L∪M = {s | s ∈L 或 s ∈ M } 连接: 连接:LM = {st | s ∈ L 且 t ∈ M} 指数: 指数:L0是{ε },Li是Li-1L 闭包: 闭包:L∗ = L0 ∪ L1 ∪ L2 ∪… 正闭包: 正闭包: L+ = L1 ∪ L2 ∪…
第21页
编译原理
高级语言及其语法描述
产生式(也称产生规则或简称规则)是定义语法范 产生式(也称产生规则或简称规则) 畴的一种书写规则。 畴的一种书写规则。一个产生式的形式是 A→α A→α 其中,箭头(有时也用::=)左边的A ::=)左边的 其中,箭头(有时也用::=)左边的A是一个非终结 称为产生式的左部符号;箭头右边α 符,称为产生式的左部符号;箭头右边α的是由终 结符号或/与非终结符号组成的一符号串, 结符号或/与非终结符号组成的一符号串,称为产生 式的右部。 式的右部。
第3页
编译原理
高级语言及其语法描述
词法规则是指单词符号的形成规则。 词法规则是指单词符号的形成规则。 语言的单词符号是由词法规则所确定的。 语言的单词符号是由词法规则所确定的。词法规则 规定了字母表中哪样的字符串是一个单词符号。 规定了字母表中哪样的字符串是一个单词符号。
第4页
编译原理
高级语言及其语法描述
第17页
编译原理
高级语言及其语法描述
<句子> ==> <主语><谓语><间接宾语><直接宾语> 句子> 主语><谓语><间接宾语><直接宾语> ><谓语><间接宾语><直接宾语 代词><谓语><间接宾语><直接宾语> ><谓语><间接宾语><直接宾语 ==> <代词><谓语><间接宾语><直接宾语> He<谓语><间接宾语><直接宾语> ><间接宾语><直接宾语 ==> He<谓语><间接宾语><直接宾语> He<动词><间接宾语><直接宾语> ><间接宾语><直接宾语 ==> He<动词><间接宾语><直接宾语> gave<间接宾语><直接宾语> ><直接宾语 ==> He gave<间接宾语><直接宾语> gave<代词><直接宾语> ><直接宾语 ==>He gave<代词><直接宾语> me<直接宾语> ==> He gave me<直接宾语> me<冠词><名词> ><名词 ==> He gave me<冠词><名词> a<名词> ==> H gave me a<名词> ==> He gave me a book
语法规则是语法单位的形成规则。 语法规则是语法单位的形成规则。 语言的语法规则 语法规则规定了如何从单词符号形成更大的 语言的语法规则规定了如何从单词符号形成更大的 结构(即语法单位)。 结构(即语法单位)。 语言的词法规则和语法规则定义了程序的形式结构, 语言的词法规则和语法规则定义了程序的形式结构, 是判断输人字符串是否构成一个形式上正确( 是判断输人字符串是否构成一个形式上正确(即合 程序的依据。 式)程序的依据。
第6页
编译原理
高级语言及其语法描述
语用
语用:表示语言符号及其使用者之间的关系,涉及 语用:表示语言符号及其使用者之间的关系, 符号的来源、使用和影响。 符号的来源、使用和影响。
第7页
编译原理
高级语言及其语法描述
程序语言基本功能:描述数据和对数据的运算。 程序语言基本功能:描述数据和对数据的运算。 程序(本质上说)是描述一定数据的处理过程。 程序(本质上说)是描述一定数据的处理过程。
第8页
编译原理
高级语言及其语法描述
2.2 高级语言的分类
一、强制式语言 二、应用式语言 三、基于规则的语言 四、面向对象语言
第9页
编译原理
高级语言及其语法描述
名字和标识符
名字由标识符表示。 名字由标识符表示。 标识符由字母或数字组成以字母开头的一个字符串。 标识符由字母或数字组成以字母开头的一个字符串。 名字的左值:指名字所代表的存储单元的地址。 名字的左值:指名字所代表的存储单元的地址。 名字的右值:指该单元的内容。 名字的右值:指该单元的内容。 本质区别:标识符是一个没有意义的字符序列, 本质区别:标识符是一个没有意义的字符序列,但 名字却有明确的意义或属性。 名字却有明确的意义或属性。
第18页
编译原理
高级语言及其语法描述
语法分析树:用一种图示化的方法来表示这种推导
句子 主语 谓语 间接宾语 直接宾语
代词
动词
代词
冠词
名词
He
gave
me
a
book
第19页
编译原理
高级语言及其语法描述
上下文无关文法描述
一个上下文无关文法G包括四个组成部分:一组终 一个上下文无关文法G包括四个组成部分: 结符号,一组非终结符号,一个开始符号, 结符号,一组非终结符号,一个开始符号,以及一 组产生式。 组产生式。 终结符号乃是组成语言的基本符号 乃是组成语言的基本符号, 终结符号乃是组成语言的基本符号,在程序语言中 就是以前屡次提到的单词符号,如基本字、标识符、 就是以前屡次提到的单词符号,如基本字、标识符、 常数、算符和界符等。从语法分析的角度来看, 常数、算符和界符等。从语法分析的角度来看,终 结符号是一个语言的不可再分的基本符号。 结符号是一个语言的不可再分的基本符号。
相关文档
最新文档