0
点赞
收藏
分享

微信扫一扫

编译原理(1):语言及其文法


语言及其文法

  • ​​语言及其文法​​
  • ​​基本概念​​
  • ​​字母表​​
  • ​​串​​
  • ​​文法定义​​
  • ​​语言的定义​​
  • ​​推导​​
  • ​​归约​​
  • ​​句子和句型​​
  • ​​CFG分析树​​
  • ​​构造树分析​​
  • ​​短语​​
  • ​​二义性​​

语言及其文法

基本概念

字母表

字母表(alphabet):字母表习是一个有穷符号集合。符号:字母、数字、标点符号、…

如二进制字母表:{0, 1}
ASCII字母表
Unicode字母表

字母表的运算

  • 字母表∑ 1和∑ 2的乘积(product)
  • 字母表∑ 的n次幂(power)(长度为n的符号串构成的集合)
  • 字母表∑ 的正闭包(positive closure)
  • ∑ + = ∑ ∪∑ 2∪∑ 3…(长度为正数的符号串构成的集合, 其中∑ 2中的2表示幂级)
  • 字母表的克林闭包(Kleene closure)
  • ∑ * = ∑ 0 ∪∑ +(任意符号串构成的集合)

串(String)

  • 设∑ 是一个字母表,x∈∑*,则x称为是∑上的一个串(串是字母表中符号的一个有穷序列)
  • 串s的长度,通常记作|s|,是指s中符号的个数
  • 空串是长度为0的串,用ε(epsilon)表示

连接:如果x和y是串,那么x和y的连接(concatenation)是把y附加到x后面而形成的串,记作xy

空串是连接运算的单位元( identity),即,对于任何串s都有,Sε=εS=S

幂,将n个S进行连接

文法定义

G=(V(T),V(x),P,S )

  • V(T):终结符集合:终结符(terminal symbol)是文法所定义的语言的基本符号,有时也称为token
  • V(T) = {a, b, c, d}
  • V(x):非终结符集合:非终结符(nonterminal)是用来表示语法成分的符号,有时也称为“语法变量
  • V(x) = {<动宾短语>,<句子>}
  • P:产生式集合。产生式(production)描述了将终结符和非终结符组合成串的方法
  • 产生式的一般形式:α→β,读作:α定义为β
  • a∈(V(T),∪ V(x)),且α中至少包含V(x)中的一个元素:称为产生式的头(head)或左部(left side)
  • b∈(V(T)U V(x))^:称为产生式的体(body)或右部(right side)
  • S:S ∈V(x)。开始符号表示的是该文法中最大的语法成分

候选式:α→β1 | β2 | β3 | β4…

V(T)∩ V(x) = 0
V(T)∪ V(x) = 文法符号集

符号约定:
下述符号是终结符

  • 字母表中排在前面的小写字母
  • 运算符
  • 标点符号
  • 数字
  • 粗体字符串

下述符号是非终结符

  • 字母表中排在前面的大写字母
  • 字母S,通常表示开始符号
  • 小写、斜体的字母
  • 代表程序构造的大写字母

字母表中排在后面的大写字母表示文法符号(既可以是终结符也可以是非终结符)
字母表中排在后面的小写字母表示终结符号串(包括空串)
小写希腊字母,表示文法字符串(包括空串)

语言的定义

推导

直接推导:
存在产生式a→b,字符串acd,将其重写为bcd,记作acd→bcd,此时,称文法符号串acd直接推导出bcd(简而言之,就是用表达式的右边替换表达式的左边)

经过正数推导:
a0→a1,a1→a2…a(n-1)→a(n),称作a0→(n)a(n)

归约

将推导反转即可,即用表达式的左边替换表达式的右边

句子和句型

句子:不包含非终结符
句型:可以包含终结符,也可以包含非终结符,也可能是空串

CFG分析树

编译原理(1):语言及其文法_二义性

构造树分析

  • 根节点的标号为文法开始符号
  • 内部结点表示对一个产生式A→B的应用,该结点的标号是此产生式左部A。该结点的子结点的标号从左到右构成了产生式的右部β
  • 叶结点的标号既可以是非终结符,也可以是终结符。从左到右排列叶节点得到的符号串称为是这棵树的产出(yield )或边缘(frontier)

短语

给定一个句型,其分析树中的每一棵子树的边缘称为该句型的一个短语(phrase)

如果子树只有父子两代结点,那么这棵子树的边缘称为该句型的一个直接短语(immediate phrase)

二义性

对于任意一个上下文无关文法,不存在一个算法,判定它是无二义性的;但能给出一组充分条件,满足这组充分条件的文法是无二义性的

  • 满足,肯定无二义性
  • 不满足,也未必就是二义性


举报

相关推荐

0 条评论