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

声明:本系列文章,是根据中国大学MOOC网 哈工大的编译原理 这门课学习而成的学习笔记。

一、基本概念

字母表

字母表Σ 是一个有穷符号集合。字母表也称为符号集。

  • 符号:字母、数字、标点符号…
  • 例:ASCII 字符集,二进制字母表:{0,1},Unicode字符集

字母表上的运算

  1. 字母表与字母表的乘积
    在这里插入图片描述
  2. 字母表的 n次幂:长度为 n 的符号串构成的集合
    在这里插入图片描述
  3. 字母表的正闭包:长度正数的符号串构成的集合
    在这里插入图片描述
  4. 字母表的克林闭包:任意符号串(长度可以为零)构成的集合
    在这里插入图片描述

符号串

  • 串:由字母表中的符号组成的任何有穷序列。
  • 串 s 的长度,通常记作 |s| ,指 s 中符号的个数。 例:|aab|=3。
  • 空串是长度为0 的串,用 ε 表示,| ε |=0。

串上的运算

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

     例如,如果 x=dog 且 y=house,那么 xy=doghouse。
     空串是连接运算的单位元,即,对于任何串 s 都有, εs=sε=s。
    
  • 串的幂运算:将 n 个 串连接起来。
    在这里插入图片描述

二、文法的定义

在这里插入图片描述
文法的形式化定义
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
产生式的简写
在这里插入图片描述
符号约定

  • 终结符

·字母表中排在前面的小写字母,如a、b、c
·运算符,如+、乘等
·标点符号,如括号、逗号等
·数字0、1、. . . 、9
·粗体字符串,如id、if等

  • 非终结符

·字母表中排在前面的大写字母,如A、B、C
·字母S。通常表示开始符号
·小写、斜体的名字,如expr、stmt等
·代表程序构造的大写字母。如E(表达式)、T(项) 和F(因子)

在这里插入图片描述

三、语言的定义

推导和归约
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
句型和句子
在这里插入图片描述
在这里插入图片描述

语言的形式化定义

由文法 G 的开始符号 S 推导出的所有句子构成的集合称为文法 G 生成的语言,记作 L(G)。
在这里插入图片描述

语言上的运算
在这里插入图片描述

四、文法的分类

0型文法,无限制文法
在这里插入图片描述
1型文法,上下文有关文法
在这里插入图片描述
2型文法,上下文无关文法
在这里插入图片描述
3型文法,正规文法
在这里插入图片描述
四种文法之间的关系
在这里插入图片描述
在这里插入图片描述

五、CFG的分析树

在这里插入图片描述
分析树是推导的图形化表示
在这里插入图片描述
在这里插入图片描述
句型的短语

给定一个句型,其分析树中的每一颗子树的边缘称为该句型的一个短语
如果子树只有父子两代节点,那么这课子树的边缘称为该句型的一个直接短语

二义性文法

如果一个文法可以为某个句子生成多棵分析树, 则称这个文法是二义性的

二义性文法的判定

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

发布了6 篇原创文章 · 获赞 0 · 访问量 55

猜你喜欢

转载自blog.csdn.net/weixin_44226857/article/details/104197304