Как явно написать правило по умолчанию для gnu flex? - PullRequest
0 голосов
/ 09 февраля 2019

flex manual произнесите следующее.

По умолчанию любой текст, не сопоставленный гибким сканером, копируется в вывод

Я хочу понять, как писатьэто явно.Это что-то вроде этого?

%%
. ECHO;

Кроме того, как отключить правило по умолчанию?

1 Ответ

0 голосов
/ 09 февраля 2019

Правило по умолчанию:

.|\n    ECHO;

(при каждом условии запуска)

Помните, что . в (f) лекс не соответствует символу новой строки.

Чтобы отключить правило по умолчанию, используйте объявление

%option nodefault

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

Поскольку вам вряд ли когда-нибудь понадобится правило по умолчанию, я рекомендую всегда использовать приведенный выше %option.

Если у вас есть какое-то собственное правило по умолчанию, вы можете поместить его в качестве последнего правила в вашем файле:

<*>.|\n   /* default action here */
...