Довольно печать AST с минимальными скобками
я использую симпатичный принтер для JavaScript AST, и я хотел бы спросить, знает ли кто-нибудь о "собственно» алгоритм автоматического заключения выражений в скобки с минимальными скобками на основе приоритета оператора иассоциативность, У меня нетЯ не нашел никаких полезных материалов в Google.
Очевидно, что оператор, родитель которого имеет более высокий приоритет, должен быть заключен в скобки, например:
(x + y) * z // x + y has lower precedence
Тем не менее, есть также некоторые операторы, которые не являются ассоциативными, и в этом случае скобки все еще необходимы, например:
x - (y - z) // both operators have the same precedence
Мне интересно, что будет лучшим правилом для этого последнего случая. Будь тодостаточно сказать, что для деления и вычитания подвыражение rhs должно быть заключено в скобки, если оно меньшеили равно старшинство.