2015-12-19 2 views
-2

В схеме - как я могу оценить простое выражение (содержащее только + * - /() и 0-9 цифр), заданное как строка?SCHEME: Как оценить арифметическое выражение

Я попытался сначала превратить выражение в постфиксное выражение, но я думаю, что я делаю что-то неправильно.

Спасибо

+2

Пожалуйста, прочтите http://stackoverflow.com/help/how-to-ask – Renzo

ответ

1

Может быть, вы можете использовать этот анализатор для инфиксных выражений.

http://planet.racket-lang.org/package-source/soegaard/infix.plt/1/0/planet-docs/manual/index.html

Вот небольшой пример (это занимает некоторое время для библиотеки для установки - это, кажется, старый Schematics набор тестов принимает навсегда установить в эти дни - мне нужно, чтобы перейти к встроено один).

#lang at-exp racket 
(require (planet soegaard/infix) 
     (planet soegaard/infix/parser)) 
(display (format "1+2*3 is ~a\n" @${1+2*3})) 

(parse-expression #'here (open-input-string "1+2*3")) 

Выходной сигнал будет:

1+2*3 is 7 
.#<syntax:6:21 (#%infix (+ 1 (* 2 3)))> 

разбор выражение-функция анализирует выражение в строке, и возвращает синтаксический-объект, который напоминает выход ToExpression.

Смежные вопросы