文法与语言分类

本文参考自《自己动手写编译器、链接器》(DIY Compiler and Linker) 王博俊、张宇编著 《编译原理及编译程序构造》 张莉、杨海燕、史晓华、金茂忠、高仲仪编著

形式语言使用文法和自动机来描述的。文法用于生成语言,自动机用于识别语言。

 文法分类

乔姆斯基(Chomsky)对文法的定义: G=(V,Vt,P,Z)
V :符号集合
Vt:终结符号集合, VtV
P :有穷规则集合
Z:识别符号, ZVVt ,即 VVn Vn

0型文法

αβ : αV+,βV ,且 α 中至少含有一个 Vn

又称为无限制文法。识别器为图灵机
0型文法对文法规则不做限制,从而使定义的语言提供充分的描述功能,但不保证语言的递归性,即不保证语句合法的可判性,所以很少用于定义自然语言。

1型文法

αβ : 在0型文法的基础上,要求 |β|>|α||β|β
(或者这样定义: xUy::=xuyUVn,x,yV,uV+

又称为上下文有关文法,用于描述上下文有关语言。识别器为线性有界自动机
文法左部允许有多个符号(至少一个是非终结符),以指示上下文的相关性。
文法要求右部符号个数不少于左部,确保了语言的递归性,即语句合法的可判性。

2型文法

αβ : 在1型文法的基础上,要求 α 为非终结符。
(或者这样定义: U::=uUVn,uV

又称为上下文无关文法,用于描述形式语言。识别器为下推自动机
之所以称之为上下文无关,由上面的定义可以看出,当把 U 重写为u时无需考虑其上下文。

例如: ABa 为上下文无关文法,而 AbBab 为上下文有关文法,因为左部 α=Ab ,这就意味着想要翻译非终结符 A Ba的时候,还要满足其后为终结符 b 这一限制。而上下文无关文法规定其左部只能是单一的非终结符,这就意味着非终结符通过文法规则的拓展性重写是相互独立的,不受其他符号影响。

3型文法

在2型文法的基础上,满足:Aa|aB线Aa|Ba线

又称为正规文法,或正则文法,用于描述正则语言。识别器为有限状态自动机(FA, Finate Automat)
3型文法表示形式高度受限,使得正则语言可以使用有限状态机程序自动进行分析。

面向正则语言的有限状态自动机以文法左部的非终结符作为当前状态,文法右部的终结符作为输入,文法右部的非终结符作为下一状态,若终结符后没有非终结符,则自动机在此处处于结束状态,停机。若输入结束后自动机处于结束状态,则输入合法,否则不合文法。

文法/语言之间的关系

L3L2L1L0
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值