Как ввести аббревиатуру регулярного выражения в регулярное выражение в Lex? - PullRequest
0 голосов
/ 20 июня 2020

У меня есть следующая аббревиатура RE:

word  [\x21-\x22\x24-\x2F\x3A-\x3F\x5B-\x5E\x60\x7B\-\x7E]

Теперь мне нужно ввести слово в следующем регулярном выражении:

[@][0-9a-zword][@]

Итак, я мог бы, например, следующие фразы:

@0@
@r@
@!@

Как я могу сказать, что это может быть di git, символ от a до z или то «слово», которое я определил ранее?

1 Ответ

1 голос
/ 20 июня 2020
"@"([0-9a-z]|({word}))"@"

вы не можете преобразовать определенное имя в набор-совпадение, так как это вообще не имеет никакого смысла. Используйте | и круглые скобки, чтобы получить альтернативные варианты с правильной группировкой.

Будьте осторожны с AT&T lex (в отличие от flex), поскольку он просто заменяет определение напрямую, поэтому, как и в случае с макросом C, вам может понадобиться дополнительные скобки для получения права приоритета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...