Правильный порядок математических выражений в грамматике 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, '
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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