上下文无关文法是程序设计语言所使用的语法。它的特点是同样的字符串在不同的语境下,意思不变。满足上下文无关文法的语言便于计算机识别和处理。我们已经介绍过,语言是语句的集合,而语句是通过产生式定义的。上下文无关文法要求产生式的左部有且仅有一个非终结符。

例如:考虑如下文法G,其非终结符集合为{L, D},终结符集合为{0,1,2,…,9,+,-},开始符号为L,产生式集合为

L→L+D|L−D|D

L \rightarrow L + D | L - D | D

D→0|1|2|3|4|5|6|7|8|9

D \rightarrow 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

上面两个产生式中”|”表示“或”运算。产生式L→L+D|L−D|DL \rightarrow L + D | L - D | D是产生式集合

L→L+D

L \rightarrow L + D

L→L−D

L \rightarrow L - D

L→D

L \rightarrow D
的缩写。
同样地产生式 D→0|1|2|3|4|5|6|7|8|9D \rightarrow 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9是产生式集合

D→0

D \rightarrow 0

D→1

D \rightarrow 1

D→2

D \rightarrow 2

D→9

D \rightarrow 9
的缩写。

本例定义的文法是所有由‘+’和‘-’分割的数字序列组成的集合。

为了描述语法分析过程,需要引入分析树的概念。

分析树具有如下特性。

  1. 根节点是开始字符。
  2. 非叶子节点是非终结符(或者特殊的空串非终结符,见后文)。
  3. 叶子节点是终结符。
  4. 任何一个节点与它的子节点对应一个产生式。

例如:1+2-3的分析树如下。

整个分析过程如下

L→→D→3→L→L+D→D→2→L→D→D→1L−DL−3L+D−3L+2−3D+2−31+2−3.

\begin{array}{lcl} L &\rightarrow& L - D\\ &\overset{D\rightarrow 3}{\rightarrow}& L - 3\\ &\overset{L\rightarrow L + D}{\rightarrow}& L + D - 3\\ &\overset{D\rightarrow 2}{\rightarrow}& L + 2 - 3\\ &\overset{L\rightarrow D}{\rightarrow}& D + 2 - 3\\ &\overset{D\rightarrow 1}{\rightarrow}& 1 + 2 - 3. \end{array}

如果一个语句能够构成一棵完整的分析树,则成为这个语句是合法的。事实上,语法分析的过程,就是构造分析树的过程。虽然我们在实现的时候,并不一定显示地构造这棵分析树。但是分析树的思想贯穿整个语法分析的始终。

上下文无关文法及其分析树相关推荐

  1. 上下文无关文法的分析树(Context-Free Grammar, CFG)的分析树--编译原理

    上下文无关文法的分析树(Context-Free Grammar, CFG)的分析树 分析树 根节点的符号为文法开始符号S 每个内部节点都是对某个产生式A→β的应用,该节点的标号就是产生式的左部,子节 ...

  2. 《编译原理》-3.上下文无关文法及分析

    上下文无关文法及分析 3.1 分析过程 3.2 上下文无关文法 3.2.1 与正则表达式的比较 3.2.2 上下文无关文法规则的说明 3.2.3 推导及由文法定义的语言 3.3 分析树与抽象语法树 3 ...

  3. 【Python自然语言处理】概率上下文无关文法(PCFG)及神经网络句法分析讲解(图文解释 超详细)

    觉得有帮助或有疑问麻烦点赞关注收藏后评论区私信留言~~~ 一.句法分析 句法分析(syntactic parsing或者parsing)是识别句子包含的句法成分要素以及成分之间的内在关系,一般以句法树 ...

  4. 上下文无关文法和正则文法_什么是上下文无关文法?

    上下文无关文法和正则文法 Have you ever noticed that, when you are writing code in a text editor like VS code, it ...

  5. 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 2 ) ★★

    文章目录 一.上下文无关文法 CFG 转为下推自动机 PDA 流程 二.上下文无关文法 CFG 转为下推自动机 PDA 示例 2 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | ...

  6. 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 1 ) ★★

    文章目录 一.上下文无关文法 CFG 转为下推自动机 PDA 流程 二.上下文无关文法 CFG 转为下推自动机 PDA 示例 1 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | ...

  7. 【计算理论】计算理论总结 ( 下推自动机计算过程 | 上下文无关文法 CFG 转为下推自动机 PDA ) ★★

    文章目录 一.下推自动机计算过程 二.上下文无关文法 CFG 转为下推自动机 PDA 流程 参考博客 : [计算理论]上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 ...

  8. python语言平台无关_从零开始学Python自然语言处理(十二)——上下文无关文法...

    前文传送门: 在说上下文无关文法之前,我们来看看形式语言理论,什么是形式语言理论?形式语言理论形式语言理论是用数学方法研究自然语言或者程序设计语言的理论.研究语言组成规则,而不研究语言的具体含义.说到 ...

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

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

最新文章

  1. 信标灯、三轮车、电容充电
  2. windows下安装配置mongodb
  3. 阿里数加大数据平台发布,将培养5万大数据科学家
  4. Intellij Idea 15 下新建 Hibernate 项目以及如何添加配置
  5. python set 和 ^ 的妙用
  6. Oracle RAC备份异机单实例恢复演练
  7. Uva220 Othello
  8. 利用java语言在eclipse下实现在新浪微博开发平台发微博(转)
  9. nginx fastcgi配置
  10. Exception in thread “main“ java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibilit
  11. 2022软件库iAPP源码前端/后端程序整套独立后台
  12. 中心极限与大数定理律的关系_实数系基本定理(一)
  13. cad单位_CAD标注样式如何转换公制和英制
  14. 利用SAP Leonardo做图片近似查找 ——Python实现
  15. 问题 F: 是你飘了,还是我拿不动刀了(字符串问题)
  16. 关于阿里云windows服务器上ping不通公网 ip 的解决思路
  17. 2021年芯片产业发展的五大关键词
  18. elasticsearch6.8.4-docker部署升级方式以及安全加密
  19. 携程航班信息爬取(python)---第一次写博客,不好请别见外!
  20. SteamVR Unity工具包(VRTK)之概览和控制器事件

热门文章

  1. Python 解析log日志
  2. 芒格最新演讲:中国的水有些聪明人已经蹚进去了,时候到了更多人会进场
  3. vue 有关于命名大小写的问题
  4. 03 - JS数据类型转换/判断相等
  5. 如何用html自动关机电脑,如何设置电脑完东西自动关机
  6. CentOS6 64位系统安装步骤
  7. 如何成为技术大牛(华为超级技术大牛的十年经验总结)
  8. 冯东阳:知名博主博客发软文广告,你怎么看?
  9. 使用Kronecker积计算手眼标定矩阵AX=XB
  10. 计算机用户登录界面,win登录界面突然多出来个Administrator的账户