【编译原理系列】文法、终结符、非终结符、产生式、子集构造法

文法

维基百科的解释:

在形式语言理论中,文法(为了避免歧义,常称作“形式文法”)是形式语言中字符串的一套产生式规则。这些规则描述了如何用语言的字母表生成符合语法的有效的字符串。文法不描述字符串的含义,也不描述在任何上下文中可以用它们做什么——只描述它们的形式。

我的理解:
其实就是语法,在有限的符号串集合上,定义一定的产生规则,用来生成无穷多的满足文法定义的句子

几个关键概念

终结符、非终结符、产生式
  • 非终结符:我觉得叫语法变量会更好理解点。在识别或者产生的过程中,如果该符号还未确定下来,还可以被继续推导,那么就是非终结符。例如<整数>。
  • 终结符:和非终结符相对应,可以叫做是“语法常量”,已经被完全确定下来了。例如1,2,3…。
  • 产生式:定义的推导规则,就是从非终结符出发去构造串的方法。说白了,我觉得这叫做一个分解规则会比较合适,他定义了非终结符的分解规则。
子集构造法

从NFA到DFA的构造算法:

  1. 计算NFA开始状态的状态闭包
  2. 枚举每个转移字符,求得新状态闭包。
  3. 检查新状态是否已经处理过,有则加入处理列表。
  4. 重复过程直到所有产生的新状态闭包都处理过
  5. 鉴别终止状态闭包,花对应的DFA
dfa的最小化

1.先划分,终止与否的等价类
2.根据字符表中的字符,进一步去划分等价类。

re转dfa的tips
  1. 子集构造法那儿会要看比较久,一般字母比较少的时候,从字母所在的边去看,I中有没有边的出发节点,有的话则在对应输出集合中写出对应的终点节点,以此类推把所有边遍历完。然后再对所有点,去写他们的空-闭包。
  2. 除了终结点对应构成的集合外,其他的节点是冗余的,看是哪个状态,一般就只看前者。
  3. 最小化DFA时,
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值