Я хотел бы увидеть итерацию текста для сканирования через файл lex или файл lex.yy.c в любой случай.Как работает файл lex (myscanner.l), является ли он токеном, символом char char
ответ
Лексический сканер считывает ввод символа за раз и делает что-то, когда он распознает токен. Если определенный пользователь действие включает в себя return
, то yylex
возвращается в этой точке, в противном случае он продолжает сканирование, чтобы найти следующую лексему (который также является то, что случилось бы, если yylex
были вызваны снова после возвращения действий пользователя.)
Это возможно, что лексический сканер будет читать слишком далеко вперед, пытаясь идентифицировать токен, потому что токен может быть префиксом более длинного потенциального токена, который не совпадает с остальным входом. В этом случае сканер сбрасывает сканирование до конца идентифицированного токена.
Если вы создаете лексический сканер с опцией -d
(отладки) и связываете его с -lfl
, вы должны увидеть все значительные действия сканера в трассировке отладки. Если этого недостаточно для вас (или любопытства), я бы предложил использовать отладчик.