Я написал базовый компилятор, который генерирует AST, правильно учитывая приоритет оператора в выражениях. Однако при выполнении генерации кода для получения кода C ++ я не уверен, как справиться с использованием скобок.
Для этого выражения:
A - (B - c)
АСТ ниже:
-
/ \
A -
/ \
B C
Должно правильно генерировать предыдущее выражение, включая скобки, однако, если бы второй оператор был оператором сложения (например), скобки были бы излишними. Я бы предпочел использовать их только там, где это необходимо для улучшения читабельности.
Существуют ли какие-либо правила, предписывающие такое поведение, и как узнать, когда использовать скобки. Плюс и минус имеют одинаковый приоритет в большинстве языков, и я бы хотел, чтобы это работало для всех операторов.