Идея лексического сканера заключается в том, что он идентифицирует отдельные токены (идентификаторы, литеральные константы, операторы, знаки пунктуации и т. Д.), А не полные синтаксические конструкции, такие как операторы.
Попытка использовать шаблоны регулярных выражений для распознаваниячто-то настолько сложное, как выражение, почти обязательно приведет к сбою, даже выражения без скобок.Возможно, они могут быть распознаны с помощью регулярного выражения, но работа со всеми угловыми случаями излишне усложнит шаблон.И как только вы добавите круглые скобки, задача станет невозможной (по крайней мере, для языка шаблонов flex, который действительно является обычным в отличие от большинства библиотек регулярных выражений).
Вместо этого используйте сканер, чтобы разбить входные данные на простые части (токены) иотбросить игнорируемые последовательности (пробелы и константы).Затем полученные токены можно проанализировать с помощью анализатора без контекста.