Re: вычислить выражение записанное в виде строки символов
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 31.01.26 15:54
Оценка: +1
Здравствуйте, system.console, Вы писали:

SC>hi all,

SC>подскажите, как в PHP сделать сабж.
SC>Функции передается строка, содержащая арифметическое выражение.
SC>Функция должна вернуть результат.
SC>Выражение несложное — без всяких там функций и переменных, только +,-,*,/ и скобки.

SC>вот типа такого, только без eval()


Опиши, какие операторы будешь использовать, и их приоритет. Напиши, что хочешь использовать группирующие скобки. Скорми это дипсику, и попроси его написать парсер рекурсивного спуска. Он справится. Я так делал. Единственно, у меня уже был лексер, и на выходе лексера (на входе парсера) уже были токены — оператор/литерал/идентификатор/скобка. Он мне на питоне написал, но я без проблем переделал под себя на плюсиках. Возможно, на PHP он сразу сможет написать. Ну, и пусть тебе лексер напишет, или совместит его с парсером.

Да, не забудь указать, что +/- могут быть унарными.

Скажи ему, что значения хочешь складывать на стек, вызывать операторную функцию, и помещать результат обратно на стек. А меня был кейс посложнее — я использовал идентификаторы/переменные, вызов своих функций, и тернарный оператор.
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.