文法的形式定义

1.处理文法的语法分析器大体上可以分为三种类型:通用的,自顶向下的和自顶向上的。

2.文法:一种用于描述程序设计语言语法的表示方法——“上下文无关文法”,简称“文法”。

3.一个上下文无关文法(文法)有四个元素组成:

文法G可以抽象成四元组的形式:G=(VN,VT,P,S)

其中VN表示非终结符集,VT表示终结符集,P表示产生式集,S表示开始符号。

(1)一个终结符号集合,也称为词法单元。是组成串的基本符号。

(2)一个非终结符号集合,也称为语法变量。是表示串的集合的语法变量。

(3)一个开始符号。这个符号表示的串集合就是这个方法生成的语言。

(4)一个产生式集合。描述了将终结符号和非终结符号组合成串的方法。有三个元素组成:

         ①一个被称为产生式头或左部的非终结符号这个产生式定义了这个头所代表的串集合的一部分。

符号→。

一个由零个或多个终结符号或非终结符号组成的右部或产生式体。右部中的成分描述了左部的非终结符号所对应的串的某种构造方法。

4.文法G描述的语言用L(G)表示L(G)={w|w∈VT*且S=*>w}

其中S是文法G的开始符号,我们可以说w是G的一个句型。因此一个终结符号串w在G生成的语言L(G)中,当且仅当w是G的一个句子。可以由文法生成的语言被称为上下文无关语言。

(1)句型:一个句型可能既包含终结符号又包含非终结符号,也可能是空串。

(2)句子:是一个不包含非终结符号的句型。

(3)语言:一个文法生成的语言是它所有句子的集合。

(5)文法等价:如果两个文法生成相同语言,这两个文法就被称为是等价的。

5.(1)最左推导:总是选择每个句型的最左非终结符号。逆过程为最右规约。

(2)最右推导:总是选择每个句型的最右非终结符号,也称为规范推导。逆过程为最左规约。

例:

文法:

S--->AB

A--->a|t

B---->+CD

C--->a

D---->a

最右推导:

S--->AB---->A+CD--->A+Ca---->A+aa----->a+aa

最左推导:

S---->AB----->aB--->a+CD--->a+aD----->a+aa

6.上下文无关文法及其语法树:

7.文法的二义性:如果一个文法可以为某个句子生成多棵语法分析树,那么它就是二义性的。换句话说,二义性文法就是对同一个句子有多个最左推导或多个最右推导的文法。

造成二义性的原因是:文法中没有体现出结合率和优先级。

8.文法的分类:

(1)0型文法:无限制文法、短语文法,α->β,α中至少含一个非终结符。

(2)1型文法(CSG):上下文有关文法,α->β满足|α|<=|β|,对于产生式α1Aα2->α1βα2,用β替换A时,只能在上下文为α1和α2时才能进行。这里的|β|表示的是β的长度。同理|α|表示的是α的长度。

注意:虽然要求|β|>=|α|,但有一特例:α→ε也满足1型文法。

(3)2型文法(CFG):上下文无关文法,A->β,其中左边必须有且仅有一个非终结符,当用β替换A时,与A的上下文环境无关。

如Ab->Bab虽然符合1型文法要求,但不符合2型文法要求,因为其α=Ab,而Ab不是一个非终结符。

(4)3型文法(RG):也称为正则文法。它应该满足以下条件①左边必须只有一个字符,且必须是非终结符。②右边最多只能有两个字符,且当只有两个字符时必须是一个为终结符而另一个为非终极符;当右边只有一个字符时,此字符必须为终结符。③对于3型文法中的所有产生式,其右边有两个字符的产生式,这些产生式右边两个字符中终结符和非终结符的相对位置一定要固定,也就是说如果一个产生式右边的两个字符的排列是:终结符+非终结符,那么所有产生式右边只要有两个字符的,都必须前面是终结符而后面是非终结符。反之亦然,要么,就全是:非终结符+终结符。

可以理解为每个产生式形为A->aB或A->a。它是在2型文法的基础上满足:A→α|αB(右线性)或A→α|Bα(左线性)。

它们分别被四种自动机识别:

(1)图灵机

(2)线性界线自动机

(3)下推自动机

(4)有穷自动机

编译原理——语法分析(1)文法的形式定义与四种文法类型的区分相关推荐

  1. 编译原理四种文法的理解补充

    如果你是学习,给定一个文法,判断是哪一个文法的话,那这篇不是讲这个,只是一点小小的理解补充. 四种文法如下: 补充: 1.0型文法,即递归可枚举文法相当于图灵机是指: 给定一个文法G,一个句子g,如果 ...

  2. 编译原理之 短语直接短语句柄 定义与区分

    编译原理之 短语&直接短语&句柄 定义与区分 一.关于短语 二.关于直接短语 三.关于句柄 四.小练习 1.练习一 2.练习二 五.知识加强拓展 1.利用语法树寻找句型的短语.直接短语 ...

  3. 【20200429】编译原理课程课业打卡十九之判断OPG文法求解句子分析过程

    [20200429]编译原理课程课业打卡十九之判断OPG文法&求解句子分析过程 一.课业打卡十九之判断OPG文法&求解句子分析过程 二.知识巩固 1.判断OPG文法 2.求算符优先函数 ...

  4. 语言和文法的形式定义---编译原理

    文法的构建问题 * 参考已有的模型 最经典的即是算数表达式的模型,其有多个算术运算符号和优先级别. 文法与正则表达式与有穷自动机的转换 显然是3型文法,也就是正则文法才有相应的性质,因为只有3型文法才 ...

  5. 【编译原理核心知识点总结】第三章、正则文法、NFA、DFA

    阅读规范: 本文以重点为主,零碎知识点/相对不够重要的为辅助阅读内容,以脚注形式给出,点击脚注即可快速跳转. 助解题目通常是为了帮助理解给出的题目,考试不考,若已理解可直接跳过. 文中提到的课本是陈火 ...

  6. 【最新合集】编译原理习题(含答案)_2程序设计语言及其文法_MOOC慕课 哈工大陈鄞

    [最新合集]MOOC哈工大陈鄞 编译原理答案全集-->传送门 1 文法:G:S→xSx | y所识别的语言是( ). 2 给定文法A→bA|ca,为该文法句子的是( ). A. bba B. c ...

  7. 编译原理,C语言实现LR(0)分析(扩展文法的生成、项目集规范簇的生成、ACTION GOTO表的生成、句子的分析)

    编译原理,C语言实现LR0分析扩展文法的生成.项目集规范簇的生成.ACTION GOTO表的生成.句子的分析 演示 演示所用文法和句子 (1)根据提示输入文法的个数 (2)输入文法 (3)扩展文法的生 ...

  8. 编译原理语法分析之LR分析

    要求: (1)根据给定文法,先对文法进行解析,构造识别活前缀的DFA并输出: (2)根据DFA构造LR分析表并输出: (3)分析给定表达式是否是该文法识别的正确的算术表达式(要求输出归约过程) (4) ...

  9. 编译原理 | 语法分析(LL(1)分析法/算符优先分析法OPG)学习笔记及例子详解

    语法分析(自顶向下 / 自底向上) 自顶向下 递归下降分析法 这种带回溯的自顶向下的分析方法实际上是一种穷举的不断试探的过程,分析效率极低,在实际的编译程序中极少使用. LL(1)分析法 又称预测分析 ...

最新文章

  1. 一名Android程序员如何减少代码中该死的-if-else-嵌套,怎么让代码更简洁?
  2. Lightroom Classic CC8.2安装教程 IT宝盒 10-14 20:32
  3. 小程序switch内部加上文字_文字游戏大全:模拟游戏会长经营公会的小程序,你会管理公会吗?...
  4. 量子计算机迷宫,一个简单的例子,带你读懂量子计算机
  5. STM32编译环境、建立工程模板以及程序下载
  6. 数据库复习 库 表 记录的 增删改查 基础
  7. dev-sidecar
  8. Devexpress使用记录
  9. php留言板系统管理,php留言板系统 更加便于网站管理
  10. java学生管理系统界面设计
  11. 配置urlrewrite不生效
  12. 《深度易经·deepin-bible》草稿汇
  13. webview 边距_张虹亮'blog » android中的dialog默认离屏幕的边距如何去除(即如何全屏)...
  14. 高校计算机实验员岗位职责,计算机学院实验与实训中心主任岗位职责(参考Word)...
  15. 【华为云技术分享】快速搭建网站之云速建站
  16. 寻声定位 matlab,春天里的小情趣
  17. 【量化笔记】移动均线
  18. Mybatis-Plus 新手入门,一篇足以
  19. pdf文件太大怎么变小,如何压缩pdf大小
  20. win11 超神软件

热门文章

  1. 安卓报错Error:Failed to find target with hash string ‘android-26‘以及模拟器找不到错误
  2. Juniper SRX NAT回流
  3. 图片压缩工具压缩大全
  4. 21.android 7.0,8.0,9.0 Settings设置内置选项在一级菜单fragment方式
  5. 【解决】由于现有版本正在使用中,因此无法安装flash player
  6. 无法启动此程序因为计算机中丢失d3dx9_36.dll,WinXP系统提示d3dx9_36.dll丢失怎么办?...
  7. 下载指定主题的邮箱附件
  8. Python批量修改图片,刷新哈希值
  9. linux dvd写入u盘工具,Windows 7 USB/DVD Download Tool(用于制作Windows 7启动U盘)
  10. 三菱变频器有哪些功能