Matetmatica在Racket中的ToExpression相当于什么?

时间:2012-02-29 21:01:45

标签: parsing scheme expression racket

我正在寻找类似于Mathematica中提供的ToExpression的东西。我只想将字符串转换为表达式,并评估表达式。作为第一遍,我的字符串将仅包括数字和算术运算符,甚至不包括括号。

如果我需要写它,请指出我应该使用的适当的预定义模块/定义的方向。

3 个答案:

答案 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部分是否适用于您的问题?您可以使用readopen-input-string的组合将字符串解析为表达式。无论有没有sandbox的帮助,都可以评估生成的表达式。

答案 2 :(得分:1)

相关问题