【发布时间】:2011-08-02 16:08:36
【问题描述】:
我需要 lex (flex 2.5.35) 中的积极后向断言。在调查了文档之后,我没有看到直接的方法来做到这一点。它有一些类似于前瞻断言(r/s 语法)的东西,但不是后瞻断言。达到相同效果的最佳方法是什么?
这是一个示例:假设我的扫描仪规范文件中有以下规则:
a printf("matched a ");
b printf("matched b ");
c printf("matched c ");
d printf("matched d ");
如何匹配 'b' 后面的 'd' 和 'b' 本身,这样在输入 'abd' 时我会得到:
matched a matched b matched d following b
但是对于字符串'acd'
matched a matched c matched d
规则:
bd printf("matched d following b ");
显然不起作用,因为它消耗 b;对于“abd”,它输出:
matched a matched d following b
如果我有 pcre lookbehinds 我可以写:
(?<=b)d printf("matched d following b ");
一切都会好起来的,但 lex 不支持这个。
【问题讨论】:
标签: regex lex flex-lexer