编译原理----0型,1型,2型,3型文法

简介: 编译原理----0型,1型,2型,3型文法

0型文法:

解释: (左部)可以包含非终结符和终结符, (右部)可以包含非终结符和终结符,但是 (左部)中至少包含1个非终结符

符合:Ab-->b,B-->Bb

不符合:a-->b,ab-->BA,a-->bA

1型文法(上下文有关文法):

在0型文法的基础上,还需符号

 

解释:左部符号串长度必须小于右部符号串长度


符合:A--->bB        Aa--->abc        --->(特例)        aB--->


不符合:Ab-->c        Ba--->c        


2型文法(上下型无关文法):


在1型文法的基础上

符合:A--->aB        B--->BB        B-->ab

不符合:Ab--->aB        AA--->Ba        bb--->AB

3型文法(正规文法):

在2型文法的基础上

解释:产生式规则的右侧只能包含一个终结符后跟一个非终结符,或者只包含一个终结符,或者是空串。


右线性文法就是后半部分中非终结符在右侧,例如:A--->bA


左线性文法就是后半部分中非终结符在左侧,例如:B--->Ab


符合:A--->bA        B---->Ba        B---->BBa       A-->b


不符合:A--->AbB


从0型到3型文法描述能力是越来越小的:

即描述能力:0型>1型>2型>3型

从0型到3型文法的限制是越来越大的:

目录
相关文章
|
编译器
区分LR(0),SLR(1),LR(1)和LALR(1)
区分LR(0),SLR(1),LR(1)和LALR(1)
1220 0
|
12月前
|
缓存 算法 调度
数据结构之 - 双端队列数据结构详解: 从基础到实现
数据结构之 - 双端队列数据结构详解: 从基础到实现
587 5
|
12月前
|
算法 Java C语言
【数据结构】后缀(逆波兰)表达式的计算以及中缀转后缀的方法
【数据结构】后缀(逆波兰)表达式的计算以及中缀转后缀的方法
1685 1
|
12月前
|
机器学习/深度学习 数据可视化 Python
使用最小二乘法进行线性回归(Python)
【10月更文挑战第28天】本文介绍了使用Python实现最小二乘法进行线性回归的步骤,包括数据准备、计算均值、计算斜率和截距、构建线性回归方程以及预测和可视化结果。通过示例代码展示了如何从创建数据点到最终绘制回归直线的完整过程。
364 2
构造LR(1)分析表和LALR(1)分析表
构造LR(1)分析表和LALR(1)分析表
364 3
构造LR(0)分析表和SLR(1)分析表
构造LR(0)分析表和SLR(1)分析表
573 0
|
Web App开发 IDE 应用服务中间件
phpstorm+xdebug 配置断点调试
阅读tp框架源码过程中,经常被代码绕来绕去,头晕的很(tp框架源码已很久没有更新);
406 0
编译原理-----逆波兰表示法,四元式,三元式,间接三元式
编译原理-----逆波兰表示法,四元式,三元式,间接三元式
581 0
|
Python
在Python中实现图片转字符画灰度处理或灰色量化
在Python中实现图片转字符画灰度处理或灰色量化
252 1