从语言归纳语法的5种经验方法

本文介绍了从语言归纳语法的五种经验方法:对称法、逐步分解法、等价方法、电路状态转换法和混合方法。通过具体例子详细阐述了如何应用这些方法解决不同的语言构造问题,涉及回文数、数量相等或不等的语言构造等。
摘要由CSDN通过智能技术生成

语言和语法回顾

参见我的另一篇博文:http://blog.csdn.net/cuiods/article/details/52442584
语言的构造方法有两种:全组合(full combination)和部分组合(partial combination)。
- 全组合:用字母表 Σ 的闭包表示( Σ *)
- 部分组合:基于规则的语法(rule-based grammar)
从语法可以推导出符合语法规则的语言:G==Derivation=>L(G)
极左推导示例:

Grammar:
E => E + F | F
F => F * G | G
G => (E) | i
Leftmost derivation:
E => E + F => F + F => G + F => i + F => i + G => i + i

最左规约是最右推导的逆过程。

从语言归纳到语法一般依靠经验方法,以下五种方法是常见的经验方法。

方法1:对称法(Symmetrical Method )

典型问题:明显的对称特征

Example1:Let L1={a2nbn|n>=1 and a,b VT},Try to construct the grammar G1 from L1
Let n=1, L1 =aab
n=2, L1 =aaaabb
n=3, L1 =aaaaaabbb
……

解决步骤:

  1. Find out axis - special case : 找到对称特例,比如在上面的问题中第一步找到的特例就是S->aab
  2. Find out the symmetrical properties: 我的理解就是找到对称轴,然后把对称的非终结符放在对称轴上,在上面的问题中,第二步就是S->aaSb

因此,Example1的答案就是S->aab|aaSb。(这种语法是之前提到的嵌入式语法(embedded grammar))

用这种方法可以方便地表示回文数(palindrome)。
1. axis: S -> 0|1|2|…|9|

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值