Правильный порядок математических выражений в грамматике PEGPhp

Кемеровские программисты php общаются здесь
Anonymous
Правильный порядок математических выражений в грамматике PEG

Сообщение Anonymous »


Я работаю над переписыванием рукописного синтаксического анализатора с кодом, сгенерированным 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, '

Вернуться в «Php»