【COMP218 笔记6】

(Begin from p37)​​​​​​​

Parsing推导一个content free language怎么获得的input太复杂了,需要尝试每一个derivation,就像下图:

为了解决如果input不属于这个languge,那么推导永远也不会停止的problem:

(这里提出一个概念叫:nullable-- 1.如果一个varialbe可以推导出ε,那么他就是nullable的 2. 如果B -> CD,但CD都可以推导出ε,那么B也是nullable的)

1. Remove all ε-productions,方法如下

例:

 最后的结果:

2. Removal of unit productions 

 例:

 例:

 3. 及时停止如果满足:|derived string| > |input| 

例:

Cocke-Younger-Kasami algorithm (CYK) : a faster way to parse 

To use CYK algorithm, we should convert CFG to Chomsky Normal Form :

Step 1. Eliminate ε productions 

Step 2. Eliminate unit productions 

Step 3. Add rules for terminals and split longer sequences of non-terminals 

>> Chomsky Normal Form 

这个form只允许出现 A → BC / A → a 这两种形式,()转化需要两步:

例:From tutorial 7 

Answer:

 >> CYK algorithm

Pushdown automata(PDA)

引入了stack,其中右边是notation of PDA,最终stack里是不能留有x的,所以这里每读一个0要push一个x,而每read一个1要pop一个x,为了不能留有x所以控制了read1和0的数量一样的条件:L = {0^{n}1^{n} : n ≥ 1}  

右边的图:记住左边是pop 右边是push 先push 再pop

这是PDA的定义,其中transition function很重要

 例:有点复杂..

CFG ↔ PDA conversions 

(End with p92)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值