编译原理(2)——高级语言及其文法

码文不易,希望支持,谢谢->支持原创

高级语言及其文法

让系统知道组成规则并按规则执行

目录

语言的概述

语言是用来交换信息的工具

 语言

  • 自然语言(Natural Language)
  • 计算机语言(Computer Language)

 自然语言

是人与人之间的通讯工具
语义(Semantics):环境、背景知识、语气、二义性——难以形式化

 计算机语言

计算机系统间、人机间通讯工具
严格的语法(Grammar)、语义(Semantics) ——易于形式化:严格

 形式化的内容提取

 自然语言

  • 字符(Character) 语言的基本字符
  • 单词(Token) 满足一定规则的字符串
  • 句子(Sentence) 满足一定规则的单词序列(在计算机语言中一个程序就是一个句子)
  • 语言(Language) 一定规则的句子的集合、

 程序设计语言

  • 程序(Program) 满足语法的语句序列
  • 语句 (Statement) 满足语法规则的单词序列
  • 单词(Token) 满足语法规则的字符串

语言是字和组合字的的规则——结构性描述

基本定义

 字母表

字母表(Alphabet) 是一个非空有穷集合,字母表中的元素称为该字母表的一个字母(Letter),也叫字符(Character)

 符号串

字母表上符号串(String)
(1) E上的一个符号串(叫做空串);
(2) 若x是上的符号串,而a是∑的元素,则xa是上的符号串;
(3) y是上的符号串,当且仅当它由(1)和(2)导出


对于字符串s
前缀:移走s的尾部的零个或多于零个符号
后缀:删去s的头部的零个或多于零个符号
子串:从s中删去一个前缀和一个后缀
子序列: 从s中删去零个或多于零个符号(这些符号不要求是连续的)
长度:是该符号串中的符号的数目。

由字母表中的符号所组成的的任何有穷序列被称之为该字母表上的符号串,也称作“字”(Word)

 正闭包

的正闭包(Positive Closure):
+={x | x是上的非空字符串}
+=234......

 克林闭包

的克林闭包(Kleene Closure):
={E} +
= 0234......

 乘积

12是两个字母表,12 的乘积(Product)12={ ab | a1,b2 }

 语言&句子

是一个字母表,L,L称为字母表上的一个语言(Language),xL,x叫做L的一个句子。

 连接

设x和y是符号串,它们的连接(Concatenation )xy是把y的符号写在x的符号之后得到的符号串。

 幂

设x是符号串,x的n次幂(power)为x0=εxn=xn1x,n>0。

文法定义

码文不易,希望支持,谢谢->支持原创

 文法的形式定义

文法G为一个四元组:

G=(VT.VN.P,S)

VT:终结符(Terminal)集 在产生式右边且自身不会再生成
VN:非终结符(Variable)集,VTVN=ϕ
语法范畴——某个语言结构
S:开始符号(Start Symbol),SVN
至少在产生式左侧出现一次
P:产生式(Product)集合
α→β,被称为产生式(定义式),读作:α定义为β。
其中α(VTVN)+,且α中至少有VN中元素的一个出现。β(VTVN)。α称为产生式α→β的左部(Left Part),β称为产生式α→β的右部(Right Part) 。

一般的非终结符用大写 终结符小写

 产生式的简写

对一组有相同左部的产生式
αβ1,αβ2,,αβn
简单地记为:αβ1|β2||βn
读作:α定义为β1,或者β2,…,或者βn,并且称它们为α产生式。β1β2,…,βn称为候选式(Candidate)。

 直接推导与归约

Aγ是文法G的一个产生式,且α,β(VTVN),称αAβ直接推导/派生(Derive)出αγβ,也称 αγβ直接归约(Reduce)为αAβ
注意到是根据Aγ而将αγβ中的γ变成了A,所以,一般称将γ归约为A
记为 αAβαγβαγβαAβ

 多步推导/归约

α0α1α2αn
记为 α0nαn (恰用n步)
α0+αn(至少一步)
α0αn (若干步:零步或多步)

 句型与句子

如果Sα,α(VTVN)则称α是*生的一个句型(Sentential Form)。

如果Sx,xVT,则称x是*生的一个句子(Sentence)

句型 包括句子
句子 没有非终结符

 文法*生的语言

L(G)={x|Sx&xVT}
产生式集合、终结符集合、非终结符集合是有限的,
递归实现从有限到无限

文法的分类(chomsky体系)

短语结构化语言0型 图灵机
上下文有关文法1型 线性有限自动机
上下文无关 2型 多数语言 下推自动机
正则文法正规文法 (左线性 右线型)3型

 短语结构文法

如果G满足文法定义的要求,则G是0型文法(短语结构文法PSG: Phrase Structure Grammar )

 上下文有关文法

除形如α→ε的ε产生式外,若α→β满足|α|≤|β|则G是1型文法,又叫上下文有关文法(CSG—Context Sensitive Grammar)

 上下文无关文法

若 α→β满足αVN,β(VNVT) ,则 G 是2型文法,又叫上下文无关文法(CFG: Context Free Grammar)

 正规文法

A,BVN,aVT{ε}
右线性(Right Linear)文法:A→aB或A→a
左线性(Left Linear)文法:A→Ba或A→a
都是3型文法(正规文法 Regular Grammar -RG)

 总结

四种文法之间的关系是将产生式作进一步限制而定义的,他们呈逐级“包含”关系,分析方法越来越简单,所能实现功能越来越有限。
编译原理(2)——高级语言及其文法

语法树

码文不易,希望支持,谢谢->支持原创


语法树(Parse Tree,语法分析树,分析树)

用树的形式表示句型的结构
VNVT{ε}中的符号标记结点, 标记ε时为独子
树根:开始符号;中间结点:非终结符
如果一个中间结点v标记为A,v的儿子从左到右依次为v1v2,……,vn,并且它们分别标记为X1X2,……,Xn,则AX1X2XnP

 结果

设有文法G的一棵语法树T, T的所有叶子顶点从左到右依次标记为
X1,X2,Xn
则称符号串
X1X2Xn
是T的结果(Yield)

 短语与句柄

文法G的一棵语法子树的“结果”表示一个句型中某一部分的结构 ——子结构
子树B表示其“结果”Y1Y2Ym的结构。Y1Y2Ym称为短语(Phrase)

如果SαAβ&A+γ,则称γ是句型αγβ的相对于变量A的短语

如果SαAβ&Aγ,则称γ是句型αγβ的相对于变量A的直接短语

最左直接短语叫做句柄(Handle)

 用子树解释短语,直接短语,句柄

短语:子树的结果是相对于子树根的短语
直接短语:仅有父子两代的子树的结果
句柄:一个句型的分析树中最左那棵只有父子两代的子树的结果

支持原创

码文不易,希望支持,谢谢->支持原创

编译原理(2)——高级语言及其文法编译原理(2)——高级语言及其文法

再次感谢,大家对本人的支持。