3

我希望能够使用 mathjsmath.parser()函数结果编写类似 J 的语言。

假设我想定义一个#返回数组长度的运算符。理想情况下,它会像这样工作:

a = [1, 2, 3]
#a             // yields 3

然后,为了好玩,一个运算符$接受两个数组并将它们组合起来。

a = [1, 2, 3, 4]
b = [4, 5, 6]
a $ b            // yields [1, 2, 3, 4, 4, 5, 6]

我怎么能用 mathjs 做这些事情?如果我做不到,我可以用什么工具代替?

为什么不一样

我希望能够像这样使用它:

var parser = math.parser();
parser.eval("a = [1,2,3]; #a");
4

1 回答 1

3

math.js 的表达式解析器不支持添加自定义运算符,因此您必须克隆项目并为此调整解析器的代码:

https://github.com/josdejong/mathjs/blob/master/src/expression/parse.js

请注意,现在该#字符用作解析器中注释的开头。

如果你想为你自己的特定语法创建你自己的解析器,你可以使用像jisonpeg这样的解析器生成器。

于 2016-04-01T08:33:21.960 回答