Довольно печать AST с минимальными скобками

Я реализую симпатичный принтер для JavaScript AST, и я хотел бы спросить, знает ли кто-нибудь о «правильном» алгоритме, который автоматически заключает в скобки выражения с минимальными скобками на основе приоритета оператора иассоциативность, Я не нашел ни одного полезного материала в Google.

Очевидно, что оператор, родитель которого имеет более высокий приоритет, должен быть заключен в скобки, например:

(x + y) * z // x + y has lower precedence

Однако есть также некоторые операторы, которые не являются ассоциативными, и в этом случае скобки все еще необходимы, например:

x - (y - z) // both operators have the same precedence

Мне интересно, что было бы лучшим правилом для этого последнего случая. Достаточно ли сказать, что для деления и вычитания подвыражение rhs должно быть заключено в скобки, если оно меньшеили равно старшинство.

Ответы на вопрос(3)

Ваш ответ на вопрос