在 Mathjs 中定义中缀运算符
Defining Infix Operators in Mathjs
我希望能够使用 mathjs math.parser()
函数结果编写类似 J 的语言。
假设我想定义一个运算符 #
来 returns 数组的长度。理想情况下它会像这样工作:
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");
math.js 的表达式解析器不支持添加自定义运算符,因此您必须克隆项目并为此调整解析器代码:
https://github.com/josdejong/mathjs/blob/master/src/expression/parse.js
请注意,现在 #
字符在解析器中用作注释的开头。
这样的解析器生成器来实现
我希望能够使用 mathjs math.parser()
函数结果编写类似 J 的语言。
假设我想定义一个运算符 #
来 returns 数组的长度。理想情况下它会像这样工作:
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");
math.js 的表达式解析器不支持添加自定义运算符,因此您必须克隆项目并为此调整解析器代码:
https://github.com/josdejong/mathjs/blob/master/src/expression/parse.js
请注意,现在 #
字符在解析器中用作注释的开头。