-1

我不知道该怎么做,而且我在网上没有找到关于如何执行这个操作的好资源[。]我正在尝试采用一个带注释的 EBNF 生产规则,它是两个正则表达式之间的差异并将其转换进入 a(na| f?)lex 语法规范规则[.] 问题是我看不到正常执行此操作的方法[.]{3} 有没有办法使用 Kleene 代数来执行此操作,就像您可以使用的方式一样与上下文无关语法中的交替空匹配[?]

4

1 回答 1

1

EBNF 产生式规则是什么样的(你能用 EBNF 写吗?)

A\B正则表达式之间的集合差异相当于与补码的交集:: A&~BA匹配的字符串集合,没有B匹配的任何字符串。flex和alex在它们的正则表达式语言中都不支持这种语义。

这种形式的表达式仍然表示正则语言,因此具有等价的自动机,其正则表达式仅基于交替和 Kleene 运算符存在。这个等价表达式不容易找到,它取决于 A 和 B 的具体内部情况。也就是说,我们不能将 A 和 B 插入到一些通用的正则表达式中,结果表示集合的差异。原来的 A 和 B 不会出现在设置的差异正则表达式中。

于 2012-04-02T23:45:29.733 回答