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

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

文法分类体系有四种文法


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)

相关文章
|
6月前
|
存储 自然语言处理 前端开发
编译原理 - 语义分析
编译原理 - 语义分析
91 1
|
自然语言处理 C语言
编译原理实验-词法分析
编译原理实验C语言实现
111 0
|
自然语言处理 前端开发 算法
编译原理 (二)词法分析、语法分析、语义分析以及中间代码生成器的基本概念
编译原理 (二)词法分析、语法分析、语义分析以及中间代码生成器的基本概念
766 0
|
1月前
|
自然语言处理 编译器 C语言
软考:区分词法分析、语法分析、语义分析
本文解释了编译过程中的词法分析、语法分析和语义分析三个阶段的区别,并提供了相关练习题,帮助读者理解各阶段在编译过程中的作用和重要性。
60 4
|
5月前
|
自然语言处理 容器
S语言词法分析器设计
还有很多需要优化的地方,作为小白发出了也和大家一起交流下,这次我是分文件写的,因为考虑到以后的实验都用这一套代码,分文件写方便一点,用的是C++14标准
32 0
|
6月前
根据文法求对应的语言
根据文法求对应的语言
46 0
|
6月前
编译原理——构造预测分析表(判断某字符串是否是文法G(E)的句子)
编译原理——构造预测分析表(判断某字符串是否是文法G(E)的句子)
75 0
|
自然语言处理
【编译原理】第二章,词法分析
【编译原理】第二章,词法分析
|
自然语言处理 IDE 开发工具
【编译原理】第三章语法分析
【编译原理】第三章语法分析