编译原理(六) 文法的分类

简介: 编译原理(六) 文法的分类

文法分类体系有四种文法


1. 0型文法

无限制文法, 或者短语结构文法

任意a -> b ∈ p ,a中至少包含一个非终结符

由0型语法形成的语言称为0型语言


2. 1型文法(CSG)

上下文有关文法

任意a -> b ∈ P, |a| <= |b|

产生式的一般形式 a1 A a2 -> a1 β a2 (β != ε)

CSG中不包含空串

由上下文有关语法形成的语言称为上下文有关语法


3. 2型文法(CFG)

上下文无关语法

任意a -> b ∈ P a ∈ Vn

产生式一般形式: A -> β


例:

S -> L | LT

T -> L| D | TL | TD

L -> a | b | c | d |…|z

D -> 0 | 1 | 2 | 3 | … | 9


4. 3型文法(RG)

正则文法

右线性文法 : A -> wB 或者 A->w

左线性文法 : A ->Bw 或者 A->w

左线性文法和右线性文法都称为正则文法


例 :

S -> a | b | c | d

S ->aT | bT | cT | dT

T -> a | b | c | d | 0 | 1 | 2 | 3 | 4 | 5

T ->aT | bT | cT | dT | 0T | 1T |2T | 3T | 4T | 5T


5.四种文法关系

逐级限制

0型文法要求a至少包含1个非终结符

1型文法要求 |a| <= |b|

2型文法要求 a ∈ Vn

3型文法要求 A -> wB 或 A -> w (A -> Bw 或 A ->w)

相关文章
|
存储 前端开发 小程序
《Discuz! X3.5开发从入门到生态共建》系列教程大纲优雅草卓伊凡
《Discuz! X3.5开发从入门到生态共建》系列教程大纲优雅草卓伊凡
417 7
《Discuz! X3.5开发从入门到生态共建》系列教程大纲优雅草卓伊凡
|
UED 网络架构
IP中转是什么?IP中转会导致网速下降吗
**IP中转详解:影响网络速度的因素** IP中转即数据包在网络间的路由转发,不直接降低网速,但可能因路由选择、网络拥堵、设备性能及跳数增加导致延迟。现代网络中影响通常微小,但在高实时应用中,优化IP中转对提升网络性能尤为关键。
|
消息中间件 人工智能 自然语言处理
基于 RocketMQ 事件驱动架构的 AI 应用实践
基于 RocketMQ 事件驱动架构的 AI 应用实践
610 2
|
人工智能 自然语言处理 PyTorch
【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)
【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)
1353 1
半小时速通Python爬虫!GitHub开源的Python爬虫入门教程
今天给小伙伴们带来了一篇详细介绍 Python 爬虫入门的教程,从实战出发,适合初学者。 小伙伴们只需在阅读过程紧跟文章思路,理清相应的实现代码,30 分钟即可学会编写简单的 Python 爬虫。
|
消息中间件 存储 缓存
RabbitMQ与Kafka选型对比(一)
RabbitMQ与Kafka选型对比(一)
5311 0
RabbitMQ与Kafka选型对比(一)
|
Linux
Linux 服务器下载百度网盘文件
本教程指导如何使用 `bypy` 库从百度网盘下载文件。首先通过 `pip install bypy` 安装库,接着运行 `bypy info` 获取登录链接并完成授权,最后将文件置于指定目录并通过 `bypy downdir /Ziya-13b-v1` 命令下载至本地。
2038 1
Linux 服务器下载百度网盘文件
编译原理----0型,1型,2型,3型文法
编译原理----0型,1型,2型,3型文法
933 1
|
存储 缓存 监控
在Linux中,如何优化虚拟机和容器的性能和资源使用?
在Linux中,如何优化虚拟机和容器的性能和资源使用?
|
Java API
Java一分钟之-Java日期与时间API:LocalDate, LocalDateTime
【5月更文挑战第13天】Java 8引入`java.time`包,改进日期时间API。`LocalDate`代表日期,`LocalDateTime`包含日期和时间。本文概述两者的基本用法、常见问题及解决策略。创建日期时间使用`of()`和`parse()`,操作日期时间有`plusDays()`、`minusMonths()`等。注意点包括:设置正确的`DateTimeFormatter`,考虑闰年影响,以及在需要时区信息时使用`ZonedDateTime`。正确使用这些类能提升代码质量。
902 3