文章目录

  • 一、乔姆斯基范式
  • 二、上下文无关语法转为乔姆斯基范式步骤
  • 三、上下文无关语法转为乔姆斯基范式示例1
  • 四、上下文无关语法转为乔姆斯基范式示例 2

参考博客 :

  • 【计算理论】上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 | 语法分析树 )
  • 【计算理论】上下文无关语法 ( 代数表达式 | 代数表达式示例 | 确定性有限自动机 DFA 转为 上下文无关语法 )
  • 【计算理论】上下文无关语法 CFG ( CFG 设计示例 | CFG 歧义性 | Chomsky 范式 | 上下文无关语法 转为 Chomsky 范式 )

一、乔姆斯基范式


1 . Chomsky 范式 : 上下文无关语法中的任何规则都是如下 格式 ;

① 单个变元到 222 个变元 A→BC\rm A \to BCA→BC : AAA 是 变元 , B,C\rm B,CB,C 也是变元 ;

② 单个变元到常元 A→a\rm A \to aA→a : A\rm AA 是 变元 , a\rm aa 是常元 , A\rm AA 可以被终端字符替换 ;

③ B,C\rm B ,CB,C 变元要求 : B,C\rm B, CB,C 变元一定不能是开始变元 ;

④ S→ε\rm S \to \varepsilonS→ε : S\rm SS 开始变元可以为空 ;

不能出现 变元→变元\rm 变元 \to 变元变元→变元 单个变元 到 单个变元不允许出现 ;

2 . S→ε\rm S \to \varepsilonS→ε 规则 说明 :

① 语言包含空字符串 : 如果上下文无关语法包含空字符串时 , 一定 需要 S→ε\rm S \to \varepsilonS→ε 规则 ;

② 语言不包含空字符串 : 如果上下文无关语法不包含空字符串时 , 一定 不需要 S→ε\rm S \to \varepsilonS→ε 规则 ;

③ 规则总结 : 该规则决定 上下文无关语法 所生成的语言 是否包含 空字符串 ; 如果包含 , 必须要这个规则 ; 如果不包含 , 空字符串一定不要这个规则 ;

二、上下文无关语法转为乔姆斯基范式步骤


上下文无关语法转为乔姆斯基范式步骤 :

1 . 添加开始变元及规则 : 添加一个新的 开始变元 S0\rm S_0S0​ , 以及配套的规则 S0→S\rm S_0 \to SS0​→S , S\rm SS 是旧的开始变元 ;

① 目的 : 添加开始变元的目的是 开始变元 永远出现在左边 ;

② Chomsky 范式 中 , 开始变元始终在规则的左边 , 不允许开始变元在规则的右侧 ;

③ 对应 Chomsky 范式 规则 : A→BC\rm A \to BCA→BC 规则 , A\rm AA 是 变元 , B,C\rm B,CB,C 也是变元 , 并且 B,C\rm B,CB,C 不允许是开始变元 ;

2 . 消除所有的 ε\varepsilonε 规则 : 消除所有 从 变元 到 空字符 的规则 ;

3 . 消除所有的 A→B\rm A \to BA→B 规则 : 消除所有 从 单个变元 到 单个变元的 单条规则 , 允许从 单个变元 到 多个变元或常元 ; 如 : A→B\rm A \to BA→B 是需要删除的 , A→BS\rm A \to BSA→BS 可以保留 ;

4 . 添加变元 : 将 A→BCD\rm A \to BCDA→BCD 规则 , 转为 A→ED\rm A \to EDA→ED 规则 , 添加变元 E→BC\rm E \to BCE→BC ;

三、上下文无关语法转为乔姆斯基范式示例1


将 上下文无关语法 转为 Chomsky 范式 :

  • S→ASA∣aB\rm S \to ASA | aBS→ASA∣aB
  • A→B∣S\rm A \to B|SA→B∣S
  • B→b∣ε\rm B \to b|\varepsilonB→b∣ε

1 . 添加新的开始变元 : S0\rm S_0S0​ ;

  • S0→S\rm S_0 \to SS0​→S
  • S→ASA∣aB\rm S \to ASA | aBS→ASA∣aB
  • A→B∣S\rm A \to B|SA→B∣S
  • B→b∣ε\rm B \to b|\varepsilonB→b∣ε

2 . 消除 B→ε\rm B \to \varepsilonB→ε 规则 : 根据消除前后等价原则 , 重新构造含有 B\rm BB 的规则 ; 消除 B→ε\rm B \to \varepsilonB→ε , 即在对应的含有 B\rm BB 的规则中添加 B\rm BB 为空的情况 , aB\rm aBaB 如果 B\rm BB 为空就是 a\rm aa , B\rm BB 如果 B\rm BB 为空就是 ε\rm \varepsilonε ;

  • S0→S\rm S_0 \to SS0​→S
  • S→ASA∣aB∣a\rm S \to ASA | aB | aS→ASA∣aB∣a
  • A→B∣ε∣S\rm A \to B| \varepsilon |SA→B∣ε∣S
  • B→b\rm B \to bB→b

3 . 消除 A→ε\rm A \to \varepsilonA→ε 规则 : 根据消除前后等价原则 , 重新构造含有 A\rm AA 的规则 ; 消除 A→ε\rm A \to \varepsilonA→ε , 即在对应的含有 A\rm AA 的规则中添加 A\rm AA 为空的情况 , ASA\rm ASAASA 如果 A\rm AA 为空就产生 S,AS,SA\rm S , AS, SAS,AS,SA 三种 ( 考虑不同 A\rm AA 为空的情况 ) ;

  • S0→S\rm S_0 \to SS0​→S
  • S→ASA∣AS∣SA∣aB∣a\rm S \to ASA | AS | SA | aB | aS→ASA∣AS∣SA∣aB∣a
  • A→B∣S\rm A \to B| SA→B∣S
  • B→b\rm B \to bB→b

4 . 消除 A→B\rm A \to BA→B 规则 : 找 B\rm BB 出现在左边的情况 , 发现有 B→b\rm B \to bB→b 规则 , 直接使用 A→b\rm A \to bA→b 替换 A→B\rm A \to BA→B 规则 ; ( 注意 : B→b\rm B \to bB→b 规则 不变 )

  • S0→S\rm S_0 \to SS0​→S
  • S→ASA∣AS∣SA∣S∣aB∣a\rm S \to ASA | AS | SA | S | aB | aS→ASA∣AS∣SA∣S∣aB∣a
  • A→b∣S\rm A \to b | SA→b∣S
  • B→b\rm B \to bB→b

5 . 消除 S0→S\rm S_0 \to SS0​→S 规则 : 找 S\rm SS 出现在左边的情况 , 发现有 S→ASA∣AS∣SA∣S∣aB∣a\rm S \to ASA | AS | SA | S | aB | aS→ASA∣AS∣SA∣S∣aB∣a , 使用 S0→ASA∣AS∣SA∣S∣aB∣a\rm S_0 \to ASA | AS | SA | S | aB | aS0​→ASA∣AS∣SA∣S∣aB∣a , 替换 S0→S\rm S_0 \to SS0​→S ; ( 注意 : S→ASA∣AS∣SA∣S∣aB∣a\rm S \to ASA | AS | SA | S | aB | aS→ASA∣AS∣SA∣S∣aB∣a 规则不变 )

  • S0→ASA∣AS∣SA∣S∣aB∣a\rm S_0 \to ASA | AS | SA | S | aB | aS0​→ASA∣AS∣SA∣S∣aB∣a
  • S→ASA∣AS∣SA∣aB∣a\rm S \to ASA | AS | SA | aB | aS→ASA∣AS∣SA∣aB∣a
  • A→b∣ASA∣AS∣SA∣aB∣a\rm A \to b | ASA | AS | SA | aB | aA→b∣ASA∣AS∣SA∣aB∣a
  • B→b\rm B \to bB→b

6 . 添加变元 : 添加新规则 R→SA\rm R \to SAR→SA ;

  • S0→AR∣AS∣SA∣S∣aB∣a\rm S_0 \to AR | AS | SA | S | aB | aS0​→AR∣AS∣SA∣S∣aB∣a
  • S→AR∣AS∣SA∣aB∣a\rm S \to AR | AS | SA | aB | aS→AR∣AS∣SA∣aB∣a
  • A→b∣AR∣AS∣SA∣aB∣a\rm A \to b | AR | AS | SA | aB | aA→b∣AR∣AS∣SA∣aB∣a
  • R→SA\rm R \to SAR→SA
  • B→b\rm B \to bB→b

四、上下文无关语法转为乔姆斯基范式示例 2


将 上下文无关语法转为 Chomsky 范式 :

  • A→BAB∣B∣ε\rm A \to BAB | B | \varepsilonA→BAB∣B∣ε
  • B→00∣ε\rm B \to 00 | \varepsilonB→00∣ε

1 . 添加新的开始变元 : S0\rm S_0S0​ ;

  • S0→A\rm S_0 \to AS0​→A
  • A→BAB∣B∣ε\rm A \to BAB | B | \varepsilonA→BAB∣B∣ε
  • B→00∣ε\rm B \to 00 | \varepsilonB→00∣ε

2 . 消除 B→ε\rm B \to \varepsilonB→ε 规则 : 根据消除前后等价原则 , 重新构造含有 B\rm BB 的规则 , 即添加使用 ε\varepsilonε 替换 B\rm BB 的各种情况 , 如 : BAB\rm BABBAB , 替换 111 个 B\rm BB 两种情况 , 替换 222 个 B\rm BB 一种情况 ;

  • S0→A\rm S_0 \to AS0​→A
  • A→BAB∣BA∣AB∣A∣B∣ε\rm A \to BAB | BA | AB | A | B | \varepsilonA→BAB∣BA∣AB∣A∣B∣ε
  • B→00\rm B \to 00B→00

3 . 消除 A→ε\rm A \to \varepsilonA→ε 规则 : 根据消除前后等价原则 , 重新构造含有 A\rm AA 的规则 , 如 : BAB\rm BABBAB 如果 A\rm AA 为空 就是 BB\rm BBBB , AB\rm ABAB 如果 A\rm AA 为空 , 多出一个 B\rm BB ;

  • S0→A\rm S_0 \to AS0​→A
  • A→BAB∣BA∣AB∣A∣B∣BB\rm A \to BAB | BA | AB | A | B | BBA→BAB∣BA∣AB∣A∣B∣BB
  • B→00\rm B \to 00B→00

4 . 消除 A→B\rm A \to BA→B 规则 : 找 B\rm BB 出现在左边的情况 , 发现有 B→00\rm B \to 00B→00 规则 , 直接使用 A→00\rm A \to 00A→00 规则 替换 A→B\rm A \to BA→B 规则 ; ( 注意 : B→00\rm B \to 00B→00 规则 不变 )

  • S0→A\rm S_0 \to AS0​→A
  • A→BAB∣BA∣AB∣A∣00∣BB\rm A \to BAB | BA | AB | A | 00 | BBA→BAB∣BA∣AB∣A∣00∣BB
  • B→00\rm B \to 00B→00

5 . 消除 S0→A\rm S_0 \to AS0​→A 规则 : 找 A\rm AA 出现在左边的情况 , 发现有 A→BAB∣BA∣AB∣A∣00∣BB\rm A \to BAB | BA | AB | A | 00 | BBA→BAB∣BA∣AB∣A∣00∣BB 规则 , 直接使用 S0→BAB∣BA∣AB∣A∣00∣BB\rm S_0 \to BAB | BA | AB | A | 00 | BBS0​→BAB∣BA∣AB∣A∣00∣BB 规则 替换 S0→A\rm S_0 \to AS0​→A 规则 ; ( 注意 A→BAB∣BA∣AB∣A∣00∣BB\rm A \to BAB | BA | AB | A | 00 | BBA→BAB∣BA∣AB∣A∣00∣BB 规则 规则不变 )

  • S0→BAB∣BA∣AB∣A∣00∣BB\rm S_0 \to BAB | BA | AB | A | 00 | BBS0​→BAB∣BA∣AB∣A∣00∣BB
  • A→BAB∣BA∣AB∣A∣00∣BB\rm A \to BAB | BA | AB | A | 00 | BBA→BAB∣BA∣AB∣A∣00∣BB
  • B→00\rm B \to 00B→00

6 . 添加变元 : 添加新规则 R→BA\rm R \to BAR→BA ; 目的是使用 222 个变元的规则替换 333 个变元的规则 ;

  • S0→RB∣BA∣AB∣A∣00∣BB\rm S_0 \to RB | BA | AB | A | 00 | BBS0​→RB∣BA∣AB∣A∣00∣BB
  • A→RB∣BA∣AB∣A∣00∣BB\rm A \to RB | BA | AB | A | 00 | BBA→RB∣BA∣AB∣A∣00∣BB
  • B→00\rm B \to 00B→00
  • R→BA\rm R \to BAR→BA

7 . 添加变元 : 添加新规则 C→0\rm C \to 0C→0 ; 目的是将 B→00\rm B \to 00B→00 中的 222 个终端字符转为两个变元 ;

  • S0→RB∣BA∣AB∣A∣CC∣BB\rm S_0 \to RB | BA | AB | A | CC | BBS0​→RB∣BA∣AB∣A∣CC∣BB
  • A→RB∣BA∣AB∣A∣CC∣BB\rm A \to RB | BA | AB | A | CC | BBA→RB∣BA∣AB∣A∣CC∣BB
  • B→CC\rm B \to CCB→CC
  • R→BA\rm R \to BAR→BA
  • C→0\rm C \to 0C→0

【计算理论】计算理论总结 ( 上下文无关文法 | 乔姆斯基范式 | 乔姆斯基范式转化步骤 | 示例 ) ★★相关推荐

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

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

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

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

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

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

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

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

  5. 【计算理论】下推自动机 PDA ( 上下文无关语言 CFL 的 泵引理 | 泵引理反证示例 | 自动机扩展 )

    文章目录 I . 上下文无关语言 ( CFL ) 的 泵引理 ( Pumping Lemma ) II . 上下文无关语言 ( CFL ) 的 泵引理 ( Pumping Lemma ) 示例 III ...

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

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

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

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

  8. 句法模式识别(两)-正规文法、上下文无关文法

    正规的语法特点 1.全部长度有限的语言都是正规的. 2.用正规文法当然能产生无限长串,当中周期反复部分的长度不大于非终止符的长度. 举个样例 在此规则之下.能生成句子 当中周期反复部分为ab,这个样例 ...

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

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

  10. 上下文无关文法及其分析树

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

最新文章

  1. 分布式事务中间件 Fescar—RM 模块源码解读
  2. 超越对手之四、五、六
  3. This 在 C# 中的含义
  4. 修改服务器mysql密码,修改Linux服务器中的MySql密码
  5. Hadoop3.0 WordCount测试一直Accept 状态,Nodes of the cluster 页面node列表个数为0
  6. Linux ss命令 报错,ECS Linux中ss命令显示连接状态的使用说明
  7. C++中XMLHTTPRequest异步使用onreadystatuschange
  8. 贝佐斯正接受14小时训练 以为周二进行的首次太空飞行做准备
  9. 互联网薪资最新出炉,收藏了
  10. java jar命令来运行jar包
  11. 农场游戏开发记录十二
  12. 一次NBU备份错误诊断
  13. 打工人也不好惹!一份校招“恶霸”指南强势冲上GitHub热榜,一天暴涨 1000 星!
  14. 11.4王者荣耀服务器维护中,4月11日全服不停机更新公告
  15. Linux中常见的ping不通百度问题
  16. 【Java 入门】(六)表设计
  17. win10 apex安装
  18. Linux服务器-Linux服务器的类型
  19. c语言程序设计西安理工,c语言程序设计-西安理工大学三电教学中心!.doc
  20. Elasticsearch:如何为 CCR 及 CCS 建立带有安全的集群之间的互信

热门文章

  1. 如何使用小米手机的便签功能
  2. 智慧工地、智慧建筑、项目GIS、工程信息化协同管理平台、BIM一体化项目管理平台、工程进度管理、计划进度、施工模拟、BIM视图、模型管理、质量管理、安全管理、施工管理、文档管理、建筑施工、工程展板
  3. Flink窗口-时间窗口
  4. Mac访问Github加速
  5. 中艺人脸识别考勤机使用方法_中控人脸识别考勤机说明书 人脸识别考勤机的使用方法...
  6. Android实战开发-Kotlin教程(语法篇 1.1)
  7. 预测(评价)模型——层次分析法*
  8. Centos7安装masscan
  9. 计算机高级筛选操作步骤,Excel中如何应用高级筛选,高级筛选的用法?
  10. MATLAB实战Sobel边缘检测(Edge Detection)