Я решил это сам. Я отправлю решение, когда наступил срок моей домашней работы.Пролог анализирует постфиксные математические выражения
Хорошо, я собираюсь создать парсер или оценщик. Стандарт де-факто при разборе с префиксом нотации - это просто использовать стек. Добавьте в стек, если ввод - это число, если это оператор, вы можете дважды применить оператор и вернуть результат в стек.
Стек здесь будет списком, поэтому мне нужно знать, как я могу применять операторы. Ввод будет строкой. "(11 + 2 *)" Это будет 1 + 1 = 2 * 2 = 4. Сначала он читал 1 и 1 в стек. Прочтите еще 1 и добавьте его в стек. Теперь он читает «+», поэтому он дважды удаляет (поп) из стека и применяет + и возвращает результат. Прочитайте 2, поместите 2 в стек. Прочитайте *, дважды нажмите и примените *.
Надеюсь, что это имеет смысл. Как будет выглядеть предикат? Мне нужна одна переменная для входной строки, одна для поддержки стека и одна для результата? Три?
Мне особенно интересно, как нажать и поп в стеке, а также удалить, когда я иду от входной строки.
выглядит довольно близко к обратной польской нотации – Simon
Solved.Solved.Solved.Solved. – Algific
Уход за публикацией решения? –