我正在寻找类似于Mathematica中提供的ToExpression的东西。我只想将字符串转换为表达式,并评估表达式。作为第一遍,我的字符串将仅包括数字和算术运算符,甚至不包括括号。
如果我需要写它,请指出我应该使用的适当的预定义模块/定义的方向。
答案 0 :(得分:2)
也许您可以将此解析器用于中缀表达式。
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)))>
函数parse-expression解析字符串中的表达式 返回一个类似于ToExpression输出的语法对象。
答案 1 :(得分:1)
dynamic evaluation部分是否适用于您的问题?您可以使用read和open-input-string的组合将字符串解析为表达式。无论有没有sandbox的帮助,都可以评估生成的表达式。
答案 2 :(得分:1)