0
Все,закона | прогибается действие правил игнорируется
У меня есть заданный тип шаблона в моем ЛЕКСЕ файла:
"#"[ \\t]*"ifdef".* { action_ifdef_manager(yytext);}
если текст, как это encoutred #ifdef GLOBALVAR
действия action_ifdef_manager
не называется
Спасибо за любую помощь.
Почти невозможно ответить на ваш вопрос без какого-либо контекста. Очевидно, что если это было единственным правилом в вашем лексере, нужно вызвать action_if_def_manager, но это, вероятно, не так. Попробуйте упростить источники лексера, чтобы сделать минимальный пример, где вы все еще наблюдаете проблему. –
@ArthurReutenauer Я думаю, что проблема не вытекает из двусмысленности правил в моем лексере, действительно, «. *» В конце шаблона нажимает лексер, пока поиск «\ n» ведьмы не является шаблоном в моем лексере поэтому вызывается действие \ n ''. – Aymanadou
Я не уверен, что понимаю вас правильно, но разве это не двусмысленность в вашем лексере? Вернее, способ, которым вы его проектировали, неоднозначен, и Flex разрешает это так, как вы этого не ожидали. В любом случае, если символ новой строки является проблемой здесь, этого может быть достаточно, чтобы исключить его из правила, например, используя '[^ \ n] *' вместо '. *' –