Мне было интересно это довольно давно. Их уже целая куча, и они могут быть перегружены, так почему бы не сделать это до конца и разрешить создание пользовательских операторов? Я думаю, что это может быть отличным дополнением.
Мне сказали, что это сделает язык слишком сложным для компиляции. Это заставляет меня задуматься: C ++ не может быть действительно спроектирован для простой компиляции, так что это действительно невозможно отменить? Конечно, если вы используете парсер LR со статической таблицей и грамматикой, такой как
E → T + E | T
T → F * T | F
F → id | '(' E ')'
это не сработает. В Прологе, который обычно анализируется с помощью синтаксического анализатора «Оператор-приоритет» AFAIK, новые операторы можно легко определить, но язык намного проще. Теперь грамматику, очевидно, можно переписать так, чтобы она принимала identifiers
в любом месте, где оператор жестко запрограммирован в грамматике.
Какие существуют другие решения и схемы синтаксического анализатора и что еще повлияло на это проектное решение?