Почему гибкий сканер работает медленно при сопоставлении символов NUL? - PullRequest
2 голосов
/ 23 ноября 2011

У меня есть лексер, написанный кем-то другим, который сгенерировал его с помощью flex.Это работает, но в примере, который содержит строковый литерал и много символов NUL, сканирование выполняется очень медленно.

После некоторого поиска в Google я нашел этот абзац в гибких документах, где говорится,без причины:

Последнее замечание: flex медленен при сопоставлении NUL, особенно когда токен содержит несколько NUL.Лучше всего писать правила, которые соответствуют небольшому количеству текста, если ожидается, что текст будет часто содержать NUL.

В чем проблема flex с символами NUL?

1 Ответ

0 голосов
/ 23 января 2015

(Ответ на вопрос дан в комментариях @Rhymoid и @Kaz. Здесь скопированы. См. Также Вопрос без ответов, но проблема решена в комментариях (или расширена в чате) )

Возможно, он использует его как символ завершения строки (что является нормальным в C), и ему нужно каким-то образом избежать его.Кроме того, что будет содержать yytext?

...