ПРИМЕЧАНИЕ. Я предполагаю, что это вводный курс, а не курс теории компиляторов. Если вас учат конкретным вещам, относящимся к этому (например, алгоритмам, отличным от того, что я упоминаю), вы почти наверняка будете ожидать применения этих понятий .
Во-первых, вам нужно понять отдельные слова. Для этого вы, скорее всего, просто взломаете это вместе - читайте по одному слову за раз и пытайтесь понять это. Постепенно создайте функцию, которая может читать набор чисел, с которыми вам нужно работать.
Если ввод достаточно прост (только выражения базовой формы, которую вы предоставляете, без скобок или чего-либо еще), вы можете просто переключаться между чтением числа и оператора, пока ввод не будет полностью прочитан (но если это должно быть Надежный, вам нужно остановить и отобразить ошибку, если последнее, что вы прочитали, это оператор), так что вы можете написать отдельные методы для чисел и операторов.
Чтобы понять, как нужно вычислить выражение, используйте алгоритм шунтирующий двор , чтобы проанализировать выражение с надлежащим приоритетом оператора. Скорее всего, вы можете объединить начальный синтаксический анализ слов с этим, просто используя его для предоставления токенов алгоритму.
Чтобы реально вычислить результат, вам нужно оценить проанализированное выражение. Для этого вы можете просто использовать стек для вывода: когда вы обычно нажимаете на оператор, вы вместо этого извлекаете 2 значения, применяете к ним оператор и отправляете результат. После завершения алгоритма маневрового двора в стеке будет одно значение, содержащее конечный результат.