【问题标题】:Custom control statements with math.js and code evaluation使用 math.js 和代码评估的自定义控制语句
【发布时间】:2016-05-31 14:42:41
【问题描述】:

我正在创建允许用户执行数学运算的在线计算器。在核心,我使用 math.js 评估器来获取操作结果。

目前,用户可以在命令行中逐个键入操作,但我的想法的下一步应该允许用户在某些文本区域或不同的编辑器中编写几行 javascript(或自定义语法)代码,然后评估整个输入。问题是 math.js eval 无法处理这个问题,但是,它允许通过自定义函数扩展内置功能。

有没有办法扩展库来处理 for/if/switch 语句?或者也许我应该考虑一些不同的方法(解析每一行并检查特定的语句名称?我应该用括号做什么?)。

有没有人执行过类似的问题?有什么建议可以解决这个问题吗?

【问题讨论】:

  • 您希望用户使用 javascript 代码做什么? js 并不是一个计算结果为单个值的数学表达式。
  • 您能否向我们展示您想要评估的用户输入和预期结果?
  • @Bergi 和@le_m,假设用户想要控制他编写的脚本的流程,就像在 Matlab 中一样,您可以在其中定义自定义函数,在其中您可以键入例如 for i = 1:6 c[i] = a[i] * b[i] end和类似的..我想让用户填写整个算法并将它们用作可以从命令行运行的函数
  • 我想你会想为此编写自己的脚本语言,而不是使用 javascript。
  • @Bergi 不是真的,我认为它可以处理普通的 javascript 样式代码,不确定使用正则表达式检查是否是个好主意..

标签: javascript ecmascript-6 mathjs


【解决方案1】:

有没有办法扩展库来处理 for/if/switch 语句?

不,不支持。不过它在愿望清单上,请参阅:

https://github.com/josdejong/mathjs/issues/467

【讨论】:

  • 是的,我昨天正在检查,谢谢。但是,我正在考虑逐行解析整个输入代码并检测 for/if/switch 语句的解决方案,这些行应该被跳过,否则应该用 math.eval 包裹行,也许这应该可以解决问题..
  • 它不必严格连接到mathjs库,它可以是生成正确代码的包装器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
相关资源
最近更新 更多