Я пишу алгоритм маневрового двора в Javascript для логической логики, и я сталкиваюсь с зацепкой с порядком операций. Операции, которые я разрешаю, следующие:Стандартный булевский порядок работы
and, or, implies, equals(biconditional), not, xor, nor, nand
Однако я не знаю, для чего это приоритет. На данный момент у меня есть:
not>equals>implies>xor>nor>nand>or>and
Это правильно? Есть ли какой-либо стандарт, который я могу использовать, подобно системе PEMDAS/BODMAS для чисел?
Идущ Coq proof assistant, not> equals > xor> и> и> или> означает – jozefg
В стандарте C используется NOT> EQUALS> AND> XOR> OR. Чтобы выполнить работу по синтаксическому анализу, унарные операторы должны иметь более высокий приоритет, чем все двоичные операторы. И, как правило, считается, что он связывает более жесткие, чем OR, что позволяет реализовать выражения в канонической дизъюнктивной форме без круглых скобок: '(A && B || C && D)'. –
Поскольку вам нравится алгоритм Shunting Yard, вам также может понравиться [восхождение на приоритет] (http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm). –