Мне нужны положительные взгляды за утверждениями в 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
Если бы у меня был вид сзади, я мог бы написать:
(?<=b)d printf("matched d following b ");
и все будет хорошо, но lex этого не поддерживает.