Правильный порядок математических выражений в грамматике PEG ⇐ Php
-
Anonymous
Правильный порядок математических выражений в грамматике PEG
Я работаю над переписыванием рукописного синтаксического анализатора с кодом, сгенерированным PEG, с использованием PHP-peg (есть более современная версия, которая публикуется для упаковщиков).
У меня проблема с вычислением этого выражения:
-8(5/2)^2*(1-sqrt(4))-8 Это должно быть оценено как 42, но получено -20. Я понятия не имею, почему он получил такие результаты. Я пытался поставить несколько скобок, чтобы понять это. Но не смог выяснить, в чем проблема и какой оператор был первым.
Когда я заменяю неявное умножение обычным:
-8*(5/2)^2*(1-sqrt(4))-8 Я получил правильные результаты для 42.
Я не совсем уверен, правильно ли я определил приоритет операторов. Это мой старый код, имеющий приоритет:
$ops_p = array( '&&' => 1, '||' => 1, '>' => 2, '=' => 2, '' => 0, '=' => 0, '
Я работаю над переписыванием рукописного синтаксического анализатора с кодом, сгенерированным PEG, с использованием PHP-peg (есть более современная версия, которая публикуется для упаковщиков).
У меня проблема с вычислением этого выражения:
-8(5/2)^2*(1-sqrt(4))-8 Это должно быть оценено как 42, но получено -20. Я понятия не имею, почему он получил такие результаты. Я пытался поставить несколько скобок, чтобы понять это. Но не смог выяснить, в чем проблема и какой оператор был первым.
Когда я заменяю неявное умножение обычным:
-8*(5/2)^2*(1-sqrt(4))-8 Я получил правильные результаты для 42.
Я не совсем уверен, правильно ли я определил приоритет операторов. Это мой старый код, имеющий приоритет:
$ops_p = array( '&&' => 1, '||' => 1, '>' => 2, '=' => 2, '' => 0, '=' => 0, '
Мобильная версия