Мне нужны положительные проверки назад в lex (flex 2.5.35). Изучив документацию, я не вижу прямого способа сделать это. Он имеет что-то похожее на утверждение просмотра вперед (синтаксис r/s), но не просмотр назад. Как лучше всего добиться такого же эффекта?
Вот пример: Скажем, у меня есть следующие правила в моем файле спецификации сканера:
a printf("matched a ");
b printf("matched b ");
c printf("matched c ");
d printf("matched d ");
Как мне сопоставить «d» после «b» и самого «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 этого не поддерживает.