[af]?lex正则表达式的差异

时间:2012-03-30 13:54:30

标签: bnf regular-language flex-lexer set-difference alex

我不知道如何做到这一点,我在网上找不到有关如何执行此操作的好资源[。]我正在尝试使用带注释的EBNF生成规则,这是两个正则表达式之间的差异并把它变成一个(na | f?)lex语法规范规则[。]问题是我认为通常无法做到这一点[。] {3}有没有办法用Kleene代数做这个,就像这样你可以在无上下文语法[?]

中使用空匹配和交替

1 个答案:

答案 0 :(得分:1)

EBNF生产规则是什么样的(你能在EBNF中写出来吗?)

正则表达式之间的集合差异A\B等同于与补充的交集:A&~B:由A匹配的字符串集合,没有与B匹配的任何字符串。不支持flex和alex支持正则表达式语言中的语义。

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