语言和文法的形式定义---编译原理

文章探讨了文法与正则表达式之间的转换,特别是3型文法(正则文法)的特性,以及右线性文法如何与正则表达式相互转化。它提供了一种将右线性文法转换为正则表达式的方法,并给出了一个以0开头和结尾的正则表达式例子。文章适用于学习编译原理的学生。
摘要由CSDN通过智能技术生成

文法的构建问题

* 参考已有的模型

最经典的即是算数表达式的模型,其有多个算术运算符号和优先级别。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文法与正则表达式与有穷自动机的转换

显然是3型文法,也就是正则文法才有相应的性质,因为只有3型文法才是右部至多仅有两个符
号,一个是终结符,一个是非终结符;或者仅有一个终结符的情况。

文法与有穷自动机的转换
右线性文法:

在这里插入图片描述

文法与正则表达式的转换
正则表达式转正则文法
先明确要转成左线性还是右线性。如果是右线性,则把 S → α op β(α是只有终结符的串,
op是基本正则运算,β不作限制)转成 S → αA,A → β(A可能是S或者ε)的形式。左线性,
则把 S → α op β 转成 S → Aβ,A → α的形式。下面以右线性为例。

计算机学院2022-2023学年考试题,编译原理A卷。

在这里插入图片描述
(2)可以画一个DFA图出来
在这里插入图片描述
可以发现正则表达式以0开头, 最后一定是0结尾
最后可以知道
0(10)* 0*0
在这里插入图片描述
在这里插入图片描述
正则文法转正则表达式
就是上述的逆过程,将其再转回正则表达式。

祝学弟学妹考个好成绩!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值