2016-02-06 2 views

ответ

0

Лексический сканер считывает ввод символа за раз и делает что-то, когда он распознает токен. Если определенный пользователь действие включает в себя return, то yylex возвращается в этой точке, в противном случае он продолжает сканирование, чтобы найти следующую лексему (который также является то, что случилось бы, если yylex были вызваны снова после возвращения действий пользователя.)

Это возможно, что лексический сканер будет читать слишком далеко вперед, пытаясь идентифицировать токен, потому что токен может быть префиксом более длинного потенциального токена, который не совпадает с остальным входом. В этом случае сканер сбрасывает сканирование до конца идентифицированного токена.

Если вы создаете лексический сканер с опцией -d (отладки) и связываете его с -lfl, вы должны увидеть все значительные действия сканера в трассировке отладки. Если этого недостаточно для вас (или любопытства), я бы предложил использовать отладчик.