当前课程知识点:软件理论基础 >  第八章 CFG的应用与文法的二义性 >  8.1 CFG的应用 >  Video

返回《软件理论基础》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《软件理论基础》慕课在线视频列表

Video课程教案、知识点、字幕

欢迎同学们来到《软件理论基础》的MOOC课堂

我是清华大学的教师罗贵明

今天我们介绍内容是

上下无关文法的应用与文法的二义性

这个内容包括有上下无关文法

也就是CFG的应用 CFG的转换

文法的二义性 二义性的消除方法

CFG的构造方法

最后我们介绍CFG的构造实例

首先我们介绍上下无关文法的应用

在上一讲里面我们介绍了上下无关文法

以及上下无关文法的推导

和上下无关文法的语言

上下无关文法在我们实际的

软件和编程当中有哪些应用呢

这一讲里面我们介绍第一个应用就是

程序设计语言它的语法的描述和分析

接着我们介绍文档格式的描述和处理

在我们通常给的程序

到最后我们看到的效果

整个的过程是这样的

编程是给的是源程序

能看到的是目标程序

而这中间这个过程

是用编译和解释这个来完成的

那整个的这个文法实际上

就是在中间这个步骤

这个步骤要用到的

是词法分析器和语法解析器

也就是从源程序经过这个词法分析器

得到单词 再到语法的解析之后

再到目标程序

这个词法的分析器

我们通常用到的是词法的这个生成器

生成这个词法得到单词

而这个文法的解析器

通常是把这个单词经过合理的文法

最后得到句子结构

那在这个词法分析器里面用到的是Lex

这是一个词法的生成器

文法里面 解析器里面 我们用的Yacc

通过Yacc 文法最后得到语法的结构

这个Yacc 它的构造过程

首先它有声明节

声明节这里面通常用一个这个%号

后面再加上它的token

来描述你这里面的一些相关的代码的说明

接下来是一个语法规则节

语法规则节就是

定义你这里面的语法规则以及语义的动作

这个Yacc里面它的产生式

实际上这次变量也是非终结符

这个箭头它这里面

我们是用一个冒号表示的

后面是一个字符串

这个括号里面是对一些动作做些说明

之后我们可能要用到一些函数的调用

以及支撑函数节

下面我们看一个具体的一个文法事例

这是我们上一讲里面介绍过的

一个算术文法

我们通过刚才介绍的文法的

三个构成部分

前面这一块这是变量和数据

这里使用的声明节

介绍这里面我们用到的

这里面有终结符 有变量和数据

也就是v和d

那接下来这一部分就是我们的语法部分

这些就是语法规则节

那这里面我们第一个E也是Exp

它产生EOE

这里面它是用这个表示的

而这个就是动作说明

第二个产生式 就是E产生了

这个左括号

在这里是终结符

终结符我们用单引号把它标注出来

再这是Exp 后面这是个右括号 也是终结符

我们也用单引号表示

后面是动作

E产生是变量variable

那变量

在这里就说明它是一个终结符

所以它用单引号标注

E产生d也是δ

δ它也是终结符

我们也用单引号把它标记

这是E的它的产生部分

接下来是O operation

O产生它有这里+

+是终结符 也用单引号标注

O产生乘

乘也是终结符 用单引号标注

这里同样有些动作

这就是它的语法部分

接下来 这里面我们没有函数调用

一些支撑函数节

所以这里你如果要用的话

我们在这一部分再描述

另外介绍标记语言

在我们实际的这种程序编程当中

大面积用的标记语言

首先在超文本这个语言里面

超文本标记语言

这是我们经常在网页里面可以看到的

我们看这么一个例子

这是一个标记 后面这是文字

这是文字 这里做标记

在接下来这里做标记

标记这是个列表部分

这是第一个列表

这是第二个列表

这一个标记它给出的这是我们的源程序

经过它这个标记生成的目标程序

我们看实际上是得到了是这样一个效果

这就是我们通过标记文法

得到的标记语言

另外的SGML这是一类标记语言

这个标记语言 国际的标准是ISO8879

其中里面一个非常重要的 用的很多的是XML

也就是扩展的标记语言

在扩展标记语言里面 用的很多的就是DTD

也就是我们的文档类型定义语言

程序文档用的非常多

下面看这个DTD格式

DTD格式实际上它有这个DTD它的名字

这个名字里面它有一些说明

就是说我们的元素的定义

这里元素定义的列表

而这个元素element

它包含了元素的名字和这个元素的描述

关于这个元素的表述实际上

它可以看作是一个正则表示

而这里面这些基本表示

可以是一些元素的名字

还有一些特殊的表示

你比如我们后面要用到的

表示一些数据的一些说明

还有一些表示是类似于用UNIX

它的正则表示

这是我们DTD的基本的描述

在下一节里面

我们要给出DTD的

一些个真实的一个实例

来解释我们这种描述的它的表示形式

好 这节内容介绍完毕

谢谢大家

软件理论基础课程列表:

第一章 基础知识

-1.1 概要

--第一节

-1.2 数学基础

--Video

-1.3 图

--Video

-1.4 证明方法

--Video

-1.5 语言基础

--Video

-1.6 语言运算

--Video

-习题--作业

第二章 确定有限自动机

-2.1 确定有限自动机的概念

--Video

-2.2 确定有限自动机的定义

--Video

-2.3 扩展转移函数

--Video

-2.4 正则语言

--Video

-2.5 DFA构造

--Video

-习题--作业

第三章 非确定有限自动机

-3.1 非确定有限自动机的概念

--Video

-3.2 e转移

--Video

-3.3 非确定有限自动机的定义

--Video

-3.4 扩展转移函数

--Video

-3.5 等价性证明

--Video

-3.6 文本搜索

--Video

-习题--作业

第四章 正则表示

-4.1 单一终结状态的NFA

--Video

-4.2 正则语言的运算性质

--Video

-4.3 正则表示和语言

--Video

-4.4 正则表示和正则语言

--Video

-4.5 正则语言的同态

--Video

-4.6 正则表示的代数定律

--Video

-习题--作业

第五章 正则文法和正则语言

-5.1 文法

--Video

-5.2 线性文法

--Video

-5.3 正则文法与正则语言

--Video

-5.4 自动机的积

--Video

-习题--作业

第六章 正则语言的性质与DFA优化

-6.1 基本问题

--Video

-6.2 泵引理

--Video

-6.3 非正则语言的判定 1

--Video

-6.4 非正则语言的判定 2

--Video

-6.5 DFA的优化 1

--Video

-6.6 DFA的优化 2

--Video

-习题--作业

第七章 上下文无关文法和推导

-7.1 上下文无关文法

--Video

-7.2 规约和推导

--Video

-7.3 语法分析树

--Video

-7.4 规约、推导和语法分析树之间的关系

--Video

-7.5 上下文无关语言

--Video

-习题--作业

第八章 CFG的应用与文法的二义性

-8.1 CFG的应用

--Video

-8.2 CFG的转化

--Video

-8.3 文法二义性

--Video

-8.4 二义性的消除方法

--Video

-8.5 CFG的构造方法

--Video

-8.6 CFG的构造实例

--Video

-第八章 CFG的应用与文法的二义性--习题

第九章 下推自动机

-9.1 PDA介绍

--Video

-9.2 PDA的定义

--Video

-9.3 PDA的即时描述

--Video

-9.4 PDA的语言

--Video

-9.5 PDA与CFG的关系

--Video

-习题--作业

第十章 下推自动机与CFG化简规范

-10.1 确定下推自动机

--Video

-10.2 DPDA与其他语言的关系

--Video

-10.3 终态型DPDA和空栈型DPDA

--Video

-10.4 消除无用符号

--Video

-10.5 消除e产生式

--Video

-10.6 消除单一产生式

--Video

-10.7 CFG的化简与Chomsky范式

--Video

-习题--作业

第十一章 上下文无关语言的性质

-11.1 CFL的必要条件

--Video

-11.2 CFL的Pumping引理

--Video

-11.3 CFL的闭运算性质

--Video

-11.4 CFL的同态性质

--Video

-11.5 CFL的交运算

--Video

-11.6 CFL的判定性质

--Video

-习题--作业

第十二章 Turing机

-12.1 图灵机的介绍

--Video

-12.2 图灵机的定义

--Video

-12.3 图灵机的即时描述

--Video

-12.4 图灵机的计算

--Video

-12.5 图灵机的编程技术

--Video

-习题--作业

第十三章 图灵机的扩展

-13.1 Turing理论

--Video

-13.2 图灵机带的扩展

--Video

-13.3 图灵机移动的扩展

--Video

-13.4 受限图灵机

--Video

-13.5 图灵机与其他自动机

--Video

-习题--作业

第十四章 不可判定问题

-14.1 图灵机编码

--Video

-14.2 对角线语言与通用语言

--Video

-14.3 图灵机语言的性质

--Video

-14.4 判定问题和语言

--Video

-14.5 计算复杂性问题

--Video

-第十四章 不可判定问题--习题

第十五章 自动机及应用

-15.1 时间自动机

--Video

-15.2 Buchi自动机

--Video

-15.3 软件形式化验证

--Video

-15.4 模型检测方法

--Video

-15.5 M3C模型检测系统

--Video

-习题--作业

期中考试

-期中考试

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。