Если вам нужно обрабатывать вложенные выражения, просто напишите свой собственный парсер на основе стека.
Если вы не знакомы с алгоритмом, вы используете два стека, один для хранения операторов, а другой для хранения операндов.
Для основного случая вы разбираете все операторы и операнды в соответствующие стеки, а затем оцениваете, выбирая два операнда и оператора, выполняя вычисление, а затем сохраняя результат обратно в стек операнда. Продолжайте до тех пор, пока стек оператора не будет пуст, а стек операнда будет иметь только одно значение (результат). Если у вас закончились операторы, и в вашем стеке есть более одного результата, тогда в выражении есть ошибка.
Для обработки круглых скобок (включая вложенные круглые скобки) вы включаете операторы для левого и правого паренов. При синтаксическом разборе выражения, если вы столкнулись с правильным началом поиска пар, немедленно оценивая выражение (выбирая два операнда и оператора, помещая результат обратно в стек операнда), пока не встретите левый парен. Затем возобновите синтаксический разбор выражения.
Спасибо, этот http://faculty.cs.niu.edu/~hutchins/csci241/eval.htm работал для меня, но он работает только для операндов длины одного символа, я имею в виду 3, 5,9 и т. Д., А не 45, 34, 81 и т. Д. Не могли бы вы рассказать мне об этом. –