Почему гибкий сканер работает медленно при сопоставлении символов NUL?

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

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

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

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


person Calmarius    schedule 23.11.2011    source источник
comment
Возможно, он использует его как символ завершения строки (что нормально в C), и ему нужно каким-то образом экранировать его.   -  person    schedule 23.11.2011
comment
Кроме того, что будет содержать yytext?   -  person Kaz    schedule 08.03.2012


Ответы (1)


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

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

person Community    schedule 23.01.2015