Я дивлюся на синтаксичний парсер bison + flex з опцією reentrant. Парсер запускається у функції, яка викликає yylex_init(&scanner)
де scanner
це yyscan_t
. %locations
ввімкнено
Цей синтаксичний аналізатор використовується для аналізу вбудованих скриптів, розташованих у середині інших файлів. Таким чином, номер рядка не починається з 1.
Проте в синтаксичному аналізаторі поточний номер рядка похований у непрозорому yyscan_t
, і я не бачу чистого способу налаштування. Я сподіваюся, що я щось відсутній.
Відповіді:
2 для відповіді № 1Ви можете використовувати yyset_lineno(int line_number, yyscan_t scanner)
, щоб встановити поточний номер рядка.