Maude策略语言及其应用概述
1. 字母移除策略
字母移除策略的语义由两个具有不相交匹配模式的定义给出。对于移除零个字母的情况,我们使用 idle 操作,即不做任何处理:
sd remove(L, 0) := idle .
对于移除非零个字母的情况,我们使用 remove 规则删除一个字母 L 的出现,并递归调用该策略,同时将计数器减1:
sd remove(L, s N) := remove[L <- L] ; remove(L, N) .
例如,使用 remove(a, 2) 重写 b a z a a r 会得到 b z a r 和 b a z r 。但如果使用 rewrite(a, 4) ,由于尝试第四次调用 remove ,操作会失败。
我们可以通过修改第二个定义,让 remove(l, n) 尽可能多地删除字母 l 的出现,但不超过 n 次:
sd remove(L, s N) := remov
超级会员免费看
订阅专栏 解锁全文
33

被折叠的 条评论
为什么被折叠?



