я определил следующие псевдонимы:Lex модель не реагирует на входы
WS [ \t\n]
WSS {WS}*
NEWSS {WS}+
NAME [A-Za-z_][A-Za-z0-9_-]*
WORD [^;]+
VAR_USE ${WSS}{NAME}{WSS}:
VAR_DEF ${VAR_USE}{WSS}{WORD}{WSS};
И два простых правила:
{VAR_DEF} cout << "VAR DEF";
{VAR_USE} cout << "VAR USE";
Когда я запустить программу и я начинаю писать слова, когда я пишу слова, которые должны быть обнаружены вторым правилом, он просто не реагирует, пока я не напишу слово, обнаруженное первым правилом. (Это не эхо и не обнаружено)
Например, вот скриншот краткосрочной перспективе:
Первый вход вторит, второй вход обнаружен второй правило, третий вход должен быть обнаружен первым правилом но это не так. В чем может быть проблема?
Я не вижу, как эта спецификация lex может произвести этот вывод. 'VAR_DEF' требует двух последовательных двоеточий, и ваш вход имеет только один. – rici
К сожалению, я скопировал это неправильно. Хотя он все еще не объясняет, что это не отражается. – sel