目录

3.1 基本概念

3.1.1 语法分析

3.1.2 文法

3.2 上下文无关文法

3.2.1 推导

3.2.2 递归

3.3 分析树与推导

3.4 语法树

3.5 二义性文法

3.6 乔姆斯基语言分类


3.1 基本概念

3.1.1 语法分析

①程序设计语言的语法通常是用上下文无关文法的文法规则进行描述的

②与正则表达式最大的区别:上下文无关文法能够表达递归

③语法分析的任务:根据扫描程序产生的记号来确定程序的语法结构

④语法分析阶段的输出:分析树或者语法树

3.1.2 文法

定义:文法是描述语言的语法结构的形式规则(G(S))

3.2 上下文无关文法

①终结符:产生式中没有出现在左侧的符号

②非终结符:通常出现在产生式左侧,在语法推导中总是被替换

③开始符号:一般是文法规则中第一条产生式左侧的非终结符

3.2.1 推导

句型:如果开始符号S可经过任意步推出α,则称α是一个句型。

句子:仅含终结符的句型

语言:文法G产生的句子的全体

补充:可以自己找文法例子练习写出终结符、非终结符、句子,加深理解

3.2.2 递归

①左递归:左侧非终结符出现在右侧第一个位置。
A —>  A a | a
②右递归:左侧非终结符出现在右侧最后一个位置
A—> a A | a
练习如何用上下文无关文法表示一个语言和描述一个文法产生的语言是什么

3.3 分析树与推导

①一个串的推导过程可能并不是唯一的,有最左推导、最右推导和既非最左推导又非最右的推导

②最左推导:是指每一步中最左的那个非终结符都要被替换的推导

③最右推导:是指每一步中最右的那个非终结符都要被替换的推导

④用树形结构表示推导过程就可以得到串的分析树:

a.叶子节点:终结符

b.其他节点:非终结符

c.根:开始符号

3.4 语法树

语法树

a.叶子节点是:参与运算的数

b.其他节点:表示运算

!!!优先级仍然保留在树形结构中

3.5 二义性文法

定义:该文法允许一个串对应多个分析树,存在串对应着两个最左推导或两个最右推导

判断该文法是否是二义性文法:

找到一个串,可以写出两种分析树

3.6 乔姆斯基语言分类

·3型语言(正则文法)

·2型语言(上下文无关文法)

·1型语言(上下文有关文法)

·0型语言(短语文法,图灵机)

包含关系,比如1型文法不能表示的语言,2型文法也不能表示。

编译原理 第三章 上下文无关文法与语法分析相关推荐

  1. 形式语言与自动机——第三章 上下文无关文法与下推自动机

    文章目录 3.1 推导树与二义性 3.2 上下文无关文法的改写 3.2.1 CFG的最简化 3.2.2 CFG的变换 3.2.2.1 去除可零化的非终结符 3.2.2.2 去除单产生式 3.2.2.3 ...

  2. 【编译原理】什么是上下文无关文法?

    上下文无关是指,一句话的含义与其前后的内容没有或者几乎没有关系,只由自己决定,把它剪切到其他任何位置,也还是原有的意思. 例如: ... a = 0; ... 这是一个赋值语句,无论此语句的前后是什么 ...

  3. 形式语言与自动机 第5章 上下文无关文法与下推自动机

    文章目录 第5章 上下文无关文法与下推自动机 CFG 的化简 无用符号 CNF 和 GNF 范式 CNF 范式 GNF 范式 PDA 与 CFG 下推自动机 CFG →\to→ PDA PDA →\t ...

  4. 【编译原理】第二章 语言及其文法

    第二章 语言及其文法 2.1 基本概念 字母表 字母表 ∑ \sum ∑是一个又穷的符号集合,其中符号包括字母.数字和标点符号等 如➢二进制字母表:{ 0,1 } :➢ASCII字符集 :➢Unico ...

  5. 文法分析——编译原理第三章、第四章

    归约与推导 归约: 将产生式右部替换为产生式的左部. 推导:将产生式左部替换为产生式的右部. 最左推导 如下: 就是把最左边的非总结符号替换成终结符号. 文法的存储结构 class LinkNode ...

  6. 编译原理——第三章词法分析总结

    词法分析 在词法分析这一章主要通过学习了词法分析.正规表达式和有限自动机来了解词法分析器的构造. 词法分析器是执行词法分析的程序.将源程序输入词法分析器后,词法分析器从左至右逐个字符的对源程序进行扫描 ...

  7. 【笔记】编译原理——第三章 词法分析

    目录 编译过程结构框架 3.1 对于词法分析器的要求 3.1.1 词法分析器的功能和输出形式 3.1.2 词法分析器作为一个独立子程序 3.2 词法分析器的设计 3.2.1 输入.预处理 3.2.2 ...

  8. 编译原理第三章 词法分析与有穷自动机

    词法分析与有穷自动机 1.词法分析程序的功能 2.正规集.正规式.正规文法.确定的有穷自动机.不确定的有穷自动机的定义. 3.正规文法.有穷自动机.正规式三者之间的互相转换方法.不确定有穷自动机到确定 ...

  9. [编译原理]-----第三章 词法分析

    文章目录 @[toc] 1. 有穷自动机(Finite Automata) (1). FA转换图 (2). 最长子串匹配原则 2. 有穷自动机的分类 (1). 确定的有穷自动机(DFA) (2). 非 ...

  10. 计算理论——正则语言,上下文无关文法,图灵机,可判定性,可规约性

    目录 第一章 正则语言 状态图 自动机的形式化定义 非确定性 正则表达式 泵引理 使用泵引理证明某个语言非正则的方法 第二章 上下文无关文法 上下文无关文法概述 1.上下文无关文法形式化定义 2.上下 ...

最新文章

  1. 关于php抓取页面信息的简单代码
  2. kylin安装mysql_源码安装mysql
  3. DevOps,到底是开发还是运维?
  4. 白光干涉衍射实验的计算机仿真,白光干涉_衍射实验的计算机仿真_蓝海江.pdf
  5. mybatis mysql demo_SpringBoot(入门Demo,整合mybatis,连接mysql)
  6. Linux入门笔记——系统目录结构
  7. 13.函数式编程:匿名函数、高阶函数、装饰器
  8. java编译时注解_简单介绍 Java 中的编译时注解
  9. 这两个VHDL的问题终于解决了!
  10. ortools解决tsp_ortools系列:后话
  11. python基础--字符串
  12. 小黑计算机一级题库,小黑课堂计算机一级题库
  13. Application.DoEvents()
  14. Docker设置端口映射
  15. 嵌入式系统开发笔记15:CJ/T-188 冷热量表协议解析4
  16. js php活动倒计时,js活动倒计时实现思路?
  17. 假期读好书——力荐《八位大学校长》
  18. C#绘制九宫格形式的图片
  19. 8、go语言:测试与性能调优
  20. Unity—“合成大西瓜”小游戏笔记

热门文章

  1. vs2017 社区版本离线下载安装包
  2. python建立英文语料库_使用NLTK创建新的语料库
  3. spring学习-01编译spring5.0源码(亲测可用)
  4. 用c语言判断字符串为空,如何检查C字符串是否为空
  5. [Matlab有限元分析] 1.有限元分析的发展、基本概念和特点
  6. Android基于串口通讯笔记(USB,485协议,232协议)
  7. 小白教程系列——XMind8 Pro下载安装
  8. 解决资源监视器不显示的问题。
  9. 【愚公系列】2022年09月 微信小程序-电商项目-UI框架的选型
  10. SwitchHosts-一款实用的host地址切换工具