文章目录

  • I . 语法组成
  • II . 规则
  • III . 语法
  • IV . 语法示例
  • V . 语法简写形式
  • VI . 语法分析树
  • VII . 代数表达式 语法

I . 语法组成


上下文无关语法 组成 : 由 {V,Σ,R,S}\{ \quad V , \Sigma , R , S \quad \}{V,Σ,R,S} 四部分组成 ;

变量集 VVV : 有限的变量集合 ;

终端字符集 Σ\SigmaΣ : 有限的终端字符组成的集合 ; 相当于常量的含义 , 与变量相对 ;

规则集 RRR : 有限的规则组成的集合 , 规则规定如何进行代换操作 , 规定 变量 , 终端字符 , 字符串变量 等 ;

开始变量 SSS : 该变量作为开始变量 ;

II . 规则


规则 简介 :

① 已知条件 : 假设 u,v,wu, v , wu,v,w 是 变量 ( 变元 )终端字符集 ( 常量 / 常元 ) ;

② 规则描述 : 规则是一个箭头 , A→wA \to wA→w , AAA 是变元 , www 是 变元 和 常元 组成的终端字符 ;

③ 规则用法 : 在字符串中 , 根据 A→wA \to wA→w 规则进行替换 , 只需要将 AAA 变元替换成 www 字符串即可 ;

④ 规则示例 : uAvuAvuAv 中使用上述规则进行替换 , 将 AAA 替换成 www , 替换结果是得到新字符串 uwvuwvuwv ;

uAv⇒uwvuAv \Rightarrow uwvuAv⇒uwv

III . 语法


1 . 有限次规则替换 : u⇒∗vu \Rightarrow *vu⇒∗v 表示有限多次替换后 , 每一步替换的临时结果序列组成集合 {u1,u2,⋯,uk}\{u_1 , u_2 , \cdots , u_k\}{u1​,u2​,⋯,uk​} , 最终结果是 终端字符 ;

2 . 有限次规则替换 步骤 :

  • uuu 根据某规则进行替换得到 u1u_1u1​ ;
  • u1u_1u1​ 根据某规则进行替换得到 u2u_2u2​ ;
  • ⋮\vdots⋮
  • uku_kuk​ 根据某规则进行替换得到 vvv ;

3 . 最终规则替换结果要求 : vvv 中不包含变元 , 全部由 终端字符 ( 常元 ) 组成的 字符串 ;

vvv 是由 uuu 生成的 ;

4 . 语法定义 : 从开始变元 , 使用规则逐步替换 , 替换到最后 , 将所有 终端字符组成字符串 放在一个集合中 , 称为语法生成的语言 ;

L(G)={w∈Σ∗:S⇒∗w}L(G) = \{ w \in \Sigma^* : S \Rightarrow *w \}L(G)={w∈Σ∗:S⇒∗w}

IV . 语法示例


1 . 语法组成部分 : G3=({S},{a,b},R,S)G3 =( \; \{ S \}, \{ a, b \}, R , S \; )G3=({S},{a,b},R,S) 其组成如下 :

  • 变量集 {S}\{ S \}{S} ;

  • 终端字符集 {a,b}\{ a, b \}{a,b} ;

  • 规则 RRR ;

  • 开始变量 SSS ;

2 . 规则 RRR 描述 :

S→aSb∣SS∣εS \to aSb \; | \; SS \; | \; \varepsilonS→aSb∣SS∣ε

  • SSS 变量 可以使用 aSbaSbaSb 字符串替换 ;
  • SSS 变量 可以使用 SSSSSS 字符串替换 ;
  • SSS 变量 可以使用 ε\varepsilonε 字符串替换 ;

3 . 规则替换过程 :

① SSS 是开始变量 , 可以使用 aSbaSbaSb 替换 :

S⇒aSbS \Rightarrow aSbS⇒aSb

② 使用 aSbaSbaSb 替换 SSS :

S⇒aSb⇒aaSbbS \Rightarrow aSb \Rightarrow aaSbbS⇒aSb⇒aaSbb

③ 使用 SSSSSS 替换 SSS :

S⇒aSb⇒aaSbb⇒aaSSbbS \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aaSSbbS⇒aSb⇒aaSbb⇒aaSSbb

④ 使用 aSbaSbaSb 替换第一个 SSS :

S⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbbS \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aaSSbb \Rightarrow aaaSbSbbS⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb

⑤ 使用 ε\varepsilonε 替换第一个 SSS :

S⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbbS \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aaSSbb \Rightarrow aaaSbSbb \Rightarrow aaabSbbS⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbb

⑥ 使用 aSbaSbaSb 替换 SSS :

S⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbb⇒aaabaSbbbS \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aaSSbb \Rightarrow aaaSbSbb \Rightarrow aaabSbb \Rightarrow aaabaSbbbS⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbb⇒aaabaSbbb

⑦ 使用 ε\varepsilonε 替换 SSS :

S⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbb⇒aaabaSbbb⇒aaababbbS \Rightarrow aSb \Rightarrow aaSbb \Rightarrow aaSSbb \Rightarrow aaaSbSbb \Rightarrow aaabSbb \Rightarrow aaabaSbbb \Rightarrow aaababbbS⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbb⇒aaabaSbbb⇒aaababbb

最终得到 aaababbbaaababbbaaababbb 字符串 , 该字符串全部由终端字符构成 , 是从 SSS 开始状态出发 , 按照 RRR 规则替换得来的 ;

称该字符串由 语法 G3G3G3 生成的 ;

V . 语法简写形式


语法可以使用下面的形式简单表示 , 没有必要使用繁琐的形式 , 可以使用约定的简写形式 ;

约定写法 :

  • A→0A1A \to 0A1A→0A1
  • A→BA \to BA→B
  • B→lB \to lB→l

开始状态约定 : 左上方的变元 AAA 约定是 开始变元 ;

变元约定 : 大写字母 A,BA,BA,B 约定为 变元 ;

终端字符约定 : 小写字母 约定为 终端字符 ;

VI . 语法分析树


语法分析树 : 字符串生成的过程 , 可以写成语法分析树 ;

将上述 简写的 约定语法描述 , 生成 终端字符构成的字符串 ;

1 . 开始状态 : AAA , 使用 0A10A10A1 替换 AAA ;

A⇒0A1A \Rightarrow 0A1A⇒0A1

当前语法分析树 :

2 . 使用 0A10A10A1 替换 AAA ;

A⇒0A1⇒00A11A \Rightarrow 0A1 \Rightarrow 00A11A⇒0A1⇒00A11

当前语法分析树 :

3 . 使用 0A10A10A1 替换 AAA ;

A⇒0A1⇒00A11⇒000A111A \Rightarrow 0A1 \Rightarrow 00A11 \Rightarrow 000A111A⇒0A1⇒00A11⇒000A111

当前语法分析树 :

4 . 使用 BBB 替换 AAA ;

A⇒0A1⇒00A11⇒000A111⇒000B111A \Rightarrow 0A1 \Rightarrow 00A11 \Rightarrow 000A111 \Rightarrow 000B111A⇒0A1⇒00A11⇒000A111⇒000B111

当前语法分析树 :

5 . 使用 lll 替换 BBB ;

A⇒0A1⇒00A11⇒000A111⇒000B111⇒000l111A \Rightarrow 0A1 \Rightarrow 00A11 \Rightarrow 000A111 \Rightarrow 000B111 \Rightarrow 000l111A⇒0A1⇒00A11⇒000A111⇒000B111⇒000l111

当前语法分析树 :

6 . 最终得到的字符串为 000l111000l111000l111 ;

VII . 代数表达式 语法


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 | TermExpression→Expression+Term∣Term

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

3 . TermTermTerm 项 规则 :

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

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

4 . FactorFactorFactor 因子 规则 :

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

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

【计算理论】上下文无关语法 ( 语法组成 | 规则 | 语法 | 语法示例 | 约定的简写形式 | 语法分析树 )相关推荐

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

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

  2. 【计算理论】自动机设计 ( 设计自动机 | 确定性自动机设计示例 | 确定性与非确定性 | 自动机中的不确定性 )

    文章目录 一. 设计自动机 ( 语言要求 ) 二. 设计自动机 ( 1 ) 开始状态 三. 设计自动机 ( 2 ) 状态 SSS 状态类型确定 四. 设计自动机 ( 3 ) 状态 SSS 输入输出分析 ...

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

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

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

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

  5. 【计算理论】计算复杂性 ( 阶段总结 | 计算理论内容概览 | 计算问题的有效性 | 语言与算法模型 | 可计算性与可判定性 | 可判定性与有效性 | 语言分类 ) ★

    文章目录 一.计算理论内容概览 二.计算问题的 有效性 三.语言 与 算法模型 四.可计算性 与 可判定性 五.可判定性 与 有效性 六.语言分类 一.计算理论内容概览 计算理论分为 形式语言与自动机 ...

  6. 【计算理论】可判定性 ( 通用图灵机和停机问题 | 可判定性 与 可计算性 | 语言 与 算法模型 )

    文章目录 一.通用图灵机和停机问题 二.可判定性 与 可计算性 三.语言 与 算法模型 一.通用图灵机和停机问题 利用 图灵 的结论 , 证明 有哪些 计算问题 是找不到 算法 进行判定的 ; 如 停 ...

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

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

  8. 上下文无关问法cfg

            上下文无关文法(context free grammar,简称为CFG)是形式问法的一种,和其对应的语言是上下文无关语言.所谓上下文无关,如果用我们的语言举例,就是一个文法符号,不论在 ...

  9. lr 1 语法分析器c语言,LR语法分析器

    1 LR语法分析器 本节介绍一个有效的自底向上的分析技术,可以用于一大类上下文无关文法的语法分析.这种技术叫做LR(k)分析法,其中L表示从左到右扫描输入串,R表示构造一个最右推导的逆过程,k指的是在 ...

最新文章

  1. R绘制QQ图并解读QQ图
  2. 七十四、滑动窗口最值问题
  3. 知识图谱有哪些方向是可以深入研究的?
  4. SAP UI5应用的一个调试参数 - sap-ds-debug=true
  5. VCSA 6.5 HA配置 之四 开启vCenter HA
  6. 整理搜集iOS不同版本间的介绍
  7. 【学习】03 淘宝爬虫-使用selenium采集关键词为电动车的数据
  8. map和foreach的区别和应用场景_面试官:说说UDP和TCP的区别及应用场景
  9. 手机哪个软件可以远程控制服务器,手机远程有什么功能?手机远程协助软件哪个好?...
  10. 安卓编程入门 06 开始接触后台代码
  11. w10系统asp服务器搭建,在windows10系统下搭建asp环境的方法
  12. c语言实验报告评语大全,实验报告总结
  13. python的csv安装_Python csv模块:处理csv文件
  14. 基于MATLAB的烟雾火灾检测识别系统
  15. android 拍照,图库,相册,上传
  16. spark task 任务状态管理
  17. Windows DNS服务器策略
  18. 红外热释电处理芯片 BISS0001
  19. 2021年必会的3个Kubernetes工具
  20. 使用Element UI 开发页面遇到的问题之下拉菜单支持拼音缩写查询

热门文章

  1. 在SQL中使用convert函数进行日期的查询
  2. 到底使用接口还是抽象类
  3. kvm热添加和热迁移
  4. C及C++中typedef的简单使用指南
  5. 在 Linux 中使用超级用户权限
  6. vue2.x的小问题
  7. BZOJ 1612: [Usaco2008 Jan]Cow Contest奶牛的比赛【Floyd】
  8. MongoDB3.6.3 windows安装配置、启动
  9. Android 透明度百分比对应的 十六进制
  10. synchronized同步对象锁