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

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

文法分类体系有四种文法


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)

相关文章
|
12月前
|
SQL 关系型数据库 MySQL
【赵渝强老师】MySQL的慢查询日志
MySQL的慢查询日志用于记录执行时间超过设定阈值的SQL语句,帮助数据库管理员识别并优化性能问题。通过`mysqldumpslow`工具可查看日志。本文介绍了如何检查、启用及配置慢查询日志,并通过实例演示了慢查询的记录与分析过程。
637 3
|
Python
【Python】已解决:re.error: bad escape \z at position 4
【Python】已解决:re.error: bad escape \z at position 4
917 0
|
SQL 关系型数据库 API
Star 4.7k!高效SQL Parser!纯Python开发!自称目前最快的纯Python SQL解析器!
Star 4.7k!高效SQL Parser!纯Python开发!自称目前最快的纯Python SQL解析器!
515 1
|
设计模式 安全 Java
Java编程中的单例模式:理解与实践
【10月更文挑战第31天】在Java的世界里,单例模式是一种优雅的解决方案,它确保一个类只有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的实现方式、使用场景及其优缺点,同时提供代码示例以加深理解。无论你是Java新手还是有经验的开发者,掌握单例模式都将是你技能库中的宝贵财富。
344 2
|
存储 人工智能 数据库
【AI大模型应用开发】【LangChain系列】10. 实用技巧:如何使用已经存在的向量数据库作为 Retriever?
【AI大模型应用开发】【LangChain系列】10. 实用技巧:如何使用已经存在的向量数据库作为 Retriever?
522 0
|
存储
数据结构学习记录——什么是堆(优先队列、堆的概念、最大堆最小堆、优先队列的完全二叉树表示、堆的特性、堆的抽象数据类型描述)
数据结构学习记录——什么是堆(优先队列、堆的概念、最大堆最小堆、优先队列的完全二叉树表示、堆的特性、堆的抽象数据类型描述)
419 2
|
Java API
Java一分钟之-Java日期与时间API:LocalDate, LocalDateTime
【5月更文挑战第13天】Java 8引入`java.time`包,改进日期时间API。`LocalDate`代表日期,`LocalDateTime`包含日期和时间。本文概述两者的基本用法、常见问题及解决策略。创建日期时间使用`of()`和`parse()`,操作日期时间有`plusDays()`、`minusMonths()`等。注意点包括:设置正确的`DateTimeFormatter`,考虑闰年影响,以及在需要时区信息时使用`ZonedDateTime`。正确使用这些类能提升代码质量。
518 3
|
缓存 Java Maven
IDEA如何把MAVEN项目打包成jar包并且用命令行启动
IDEA如何把MAVEN项目打包成jar包并且用命令行启动
298 0
|
存储 安全 Ubuntu
Android 生成平台应用签名keystore文件
Android 生成平台应用签名keystore文件
462 0