文章目录

  • I . 代数表达式 语法
  • II . 代数表达式 语法 示例
  • III . 设计 上下文无关语法
  • IV . 确定性有限自动机 DFA 转为 上下文无关语法

I . 代数表达式 语法


1 . 代数表达式 语法 : G4=(V,A,R,Expression)G4 = ( V , A , R , Expression )G4=(V,A,R,Expression) 是代数表达式语法 ;

① 终端字符集 : A={a,+,×,()}A = \{ a , + , \times , () \}A={a,+,×,()} ;

② 变量集 : V={Expression,Term,Factor}V = \{ Expression , Term , Factor \}V={Expression,Term,Factor} ;

  • ExpressionExpressionExpression 是表达式 ;
  • TermTermTerm 是项 ;
  • FactorFactorFactor 是因子 ;

2 . ExpressionExpressionExpression 表达式 规则 :

Expression→Expression+Term∣TermExpression \to Expression + Term \quad | \quad TermExpression→Expression+Term∣Term

ExpressionExpressionExpression ( 表达式 ) 可以通过 Expression+Term∣TermExpression + Term \quad | \quad TermExpression+Term∣Term 代替 ;

3 . TermTermTerm 项 规则 :

Term→Term×Factor∣FactorTerm \to Term \times Factor \quad | \quad FactorTerm→Term×Factor∣Factor

TermTermTerm 项 可以通过 Term×Factor∣FactorTerm \times Factor \quad | \quad FactorTerm×Factor∣Factor 代替 ;

4 . FactorFactorFactor 因子 规则 :

Factor→Expression∣aFactor \to Expression \quad | \quad aFactor→Expression∣a

FactorFactorFactor 因子 可以通过 Expression∣aExpression \quad | \quad aExpression∣a 代替 ;

II . 代数表达式 语法 示例


为字符串 (a+a)×a(a + a) \times a(a+a)×a 构建 语法分析树 ;

1 . 起始状态 : 语法的起始状态是 ExpressionExpressionExpression , 根据 Expression→Expression+Term∣TermExpression \to Expression + Term \quad | \quad TermExpression→Expression+Term∣Term 规则 , ExpressionExpressionExpression 可以使用 TermTermTerm 替换 , 直接从起始状态 , 使用 TermTermTerm 替换 ExpressionExpressionExpression ;

2 . (a+a)×a(a + a) \times a(a+a)×a 字符串的语法分析树 :

符号 : 其中有 ×\times× 乘号 ;

语法分析树 : (a+a)×a(a + a) \times a(a+a)×a 中间有 ×\times× , 带有 ×\times× 乘号的替换规则为 Term→Term×Factor∣FactorTerm \to Term \times Factor | FactorTerm→Term×Factor∣Factor , 显然该项很显然是一个 TermTermTerm 项 ;

3 . 根据上述 Term→Term×FactorTerm \to Term \times FactorTerm→Term×Factor 可知 , TermTermTerm 是由 Term×FactorTerm \times FactorTerm×Factor 进行替换的 , 左侧的 (a+a)(a + a)(a+a) 是一个 TermTermTerm , 右侧的 aaa 是一个 FactorFactorFactor ;

4 . 根据 Factor→Expression∣aFactor \to Expression | aFactor→Expression∣a 规则 , 右侧的 FactorFactorFactor 直接使用 aaa 进行替代 , 可得如下语法分析树 :

5 . 想办法将左侧的 TermTermTerm 替换成 (a+a)(a + a)(a+a) :

加法只能是 ExpressionExpressionExpression , 先替换成 ExpressionExpressionExpression ;

6 . 这里先使用 FactorFactorFactor 替换 TermTermTerm : 使用规则 Term→Term×Factor∣FactorTerm \to Term \times Factor | FactorTerm→Term×Factor∣Factor ;

7 . 在使用 ExpressionExpressionExpression 替换 FactorFactorFactor : 使用规则 Factor→Expression∣aFactor \to Expression | aFactor→Expression∣a ;

8 . 使用 Expression+TermExpression + TermExpression+Term 替换 ExpressionExpressionExpression : 使用规则 Expression→Expression+Term∣TermExpression \to Expression + Term | TermExpression→Expression+Term∣Term ;

9 . 使用 TermTermTerm 替换 左侧的 ExpressionExpressionExpression : 使用规则 Expression→Expression+Term∣TermExpression \to Expression + Term | TermExpression→Expression+Term∣Term ;

10 . 使用 FactorFactorFactor 替换左侧的 TermTermTerm : 使用规则 Term→Term×Factor∣FactorTerm \to Term \times Factor | FactorTerm→Term×Factor∣Factor ;

11 . 使用 aaa 替换左侧的 FactorFactorFactor : 使用规则 Factor→Expression∣aFactor \to Expression | aFactor→Expression∣a ;

12 . 使用 FactorFactorFactor 替换右侧的 TermTermTerm : 使用规则 Term→Term×Factor∣FactorTerm \to Term \times Factor | FactorTerm→Term×Factor∣Factor ;

13 . 使用 aaa 替换右侧的 FactorFactorFactor : 使用规则 Factor→Expression∣aFactor \to Expression | aFactor→Expression∣a ;

最终的 语法分析树为 :

此时可以得到语法分析树 ; 该语法分析树是一个代数表达式 ; 将该语法分析树写出 , 即可理解 上下文无关 语法 ;

代数表达式就是上下文无关的语法 ;

III . 设计 上下文无关语法


给定语言 , 设计上下文无关语法 , 使用该语法可以生成该语言 ;

上下文无关语法 设计技巧 : 将复杂的语言分解 , 化整为零 , 针对每个部分设计上下文无关的语法 , 最终将这些语法合并在一起 ;

上下文无关语法 与 自动机 : 如果给定的语言是正则语言 , 是由正则表达式表达的 , 能够找到一个自动机可以识别该语言 , 首先将语言转换成自动机 , 将自动机转化为上下文无关的语法 ;

IV . 确定性有限自动机 DFA 转为 上下文无关语法


1 . 确定性有限自动机 ( DFA ) 转为 上下文无关语法 ( CFG ) : 将 确定性有限自动机 ( DFA ) 的指令 , 转为 对应的 上下文无关语法 ( CFG ) 规则 :

δ(qi,a)=qj⇒Ri→aRj\delta ( q_i, a ) = q_j \Rightarrow R_i \to aR_jδ(qi​,a)=qj​⇒Ri​→aRj​

δ(qi,a)=qj\delta ( q_i, a ) = q_jδ(qi​,a)=qj​ 表示 qiq_iqi​ 状态下 , 读取字符 aaa , 跳转到 qjq_jqj​ 状态 ;

2 . 自动机的 状态跳转 转换成 规则 示例 : 上图中的 确定性有限自动机 , 开始状态 AAA 读取 111 字符 转化成 BBB 状态 , 表示成规则就是

RA→1RBR_A \to 1R_BRA​→1RB​

3 . 自动机的状态 AAA 读取 字符 aaa 转换成另一个状态 BBB , 都可以转换成对应的规则 RA→aRBR_A \to aR_BRA​→aRB​ ;

4 . 计算能力对比 : 上下文无关语法 的计算能力 要大于等于 自动机的计算能力 ;

【计算理论】上下文无关语法 ( 代数表达式 | 代数表达式示例 | 确定性有限自动机 DFA 转为 上下文无关语法 )相关推荐

  1. 【计算理论】正则语言 ( 推广型的非确定性有限自动机 GNFA | 删除状态 | 确定性有限自动机 转为 正则表达式 )

    文章目录 一.推广型的非确定性有限自动机 ( GNFA ) 引入 二.推广型的非确定性有限自动机 ( GNFA ) 删除状态 三.确定性有限自动机 ( DFA ) 转为 正则表达式 四.确定性有限自动 ...

  2. 【计算理论】计算理论总结 ( 非确定性有限自动机 NFA 转为确定性有限自动机 DFA | 示例 ) ★★

    文章目录 一.NFA 转 DFA 示例 1 二.NFA 转 DFA 示例 2 三.NFA 转 DFA 示例 3 一.NFA 转 DFA 示例 1 将下图的 非确定性有限自动机 NFA 转为确定性有限自 ...

  3. 【计算理论】计算复杂性 ( 证明 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的指数关系 )

    文章目录 证明 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的指数关系 证明 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的指数关系 在上一篇博客 [计算理论]计算复杂性 ( 非确定性 ...

  4. 【计算理论】非确定性有限自动机 ( 计算过程 | 计算树 | 确定可接受字符串 | 设计非确定性有限自动机 | 空字符 )

    文章目录 一.非确定性自动机 计算过程 ( 计算树 ) 二.判定 非确定性自动机 接受的字符串 三.自动机 设计要求 四.非确定性有限自动机设计 五.非确定性有限自动机 与 确定性 有限自动机 比较 ...

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

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

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

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

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

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

  8. 【计算理论】计算理论总结 ( 正则表达式转为非确定性有限自动机 NFA ) ★★

    文章目录 一.正则表达式 二.正则语言运算示例 ★ 三.根据正则表达式构造自动机 一.正则表达式 1 . 正则表达式原子定义 : 如果 RRR 是 字符集 Σ\SigmaΣ 中的 111 个字符 , ...

  9. 【计算理论】上下文无关语法 CFG ( CFG 设计示例 | CFG 歧义性 | Chomsky 范式 | 上下文无关语法 转为 Chomsky 范式 )

    文章目录 一.上下文无关语法 设计 示例 二.上下文无关语法 的歧义性 三.Chomsky 范式 四.上下文无关语法 转为 Chomsky 范式 五.上下文无关语法 转为 Chomsky 范式 示例 ...

最新文章

  1. MATLAB 2018a软件安装教程
  2. 【Linux网络编程】原始套接字实例:MAC 头部报文分析
  3. iostat -x命令诊断
  4. JavaScript 常用工具函数
  5. http://ftp.gnu.org/gnu/ http://ftp.gnu.org/gnu/libc/
  6. [wordpress]更新插件时,免去FTP操作
  7. 优秀的程序员是如何处理技术 Bug 的?
  8. Python编程中报过的错
  9. 厉害,96秒100亿,阿里双十一到底做了什么杠过亿级流量??
  10. 南阳理工ACM111
  11. 计算机视觉教程1-3:图解透视几何原理(灭点、灭线)
  12. Android 11 usb调试默认打开
  13. 关于上海四金计算和工资对照表(转载)
  14. 由光声前向模型求取光声信号
  15. 英语四六级听力真题模拟题
  16. 快应用如何接入微信支付
  17. 生活随记 - 惋惜卡哇伊
  18. Serdes系列总结——Xilinx serdes IP使用(二)——10G serdes
  19. 学前端到底哪个培训机构好?
  20. python网络图片下载---跟我一起爬王者农药皮肤吧

热门文章

  1. Spring学习五(JDBC支持)
  2. postman api
  3. Hadoop权威指南:HDFS-目录,查询文件系统,删除文件
  4. Android——Handler总结
  5. [erlang]proc_lib源码浅析
  6. 【精品资源】干货分享:20款精美的手机网站模板下载
  7. window 注册表五大类
  8. 字典树andXOR*
  9. RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题
  10. Windows从web下载文件的几种方式