math.js中的变量名和限制运算符
Variable name and restrict operators in math.js
我使用math.js来验证数学方程是否缺少右括号或重复运算符等,因此以下方程将被视为不正确的方程:
9 + ((5 * 6)//12
这很好用。然而,我想做的是在等式中允许一个变量名,比如:
9 + (variableName * 6) / 12
变量名称也应相同。因此,验证器需要知道,如果在表达式中找到"variableName",它是可以的。
此外,我想将允许的等式运算符限制为以下内容:
()-+/*
我试图在文档中找到这些问题的答案,但没有成功。
有人知道math.js是如何做到这一点的吗?
使用math.js可以将表达式解析为节点树:
var tree = math.parse('9 + (variableName * 6) / 12');
使用当前版本的math.js,可以使用函数find
分析树(未记录,请参阅此处的解释)。math.js的下一个版本将以函数traverse
和transform
的形式提供更广泛(并有文档记录)的支持,这使您可以轻松地在树中的所有节点上循环并执行某些操作。
例如,使用这些函数,您可以查找所有SymbolNodes并检查它们是否被允许,还可以查找所有OperatorNodes并查看它们是否被许可。我为您创建了一个jsbin来演示如何分析解析的表达式:
http://jsbin.com/duduru/1/edit?html,输出
或者,您可以使用PEG.js或Jison生成自己的解析器。
编辑:最新版本的math.js现在正式支持对表达式树的操作,请参阅文档:http://mathjs.org/docs/expressions/expression_trees.html
相关文章:
- AngularJS-在JSON选择器中使用变量名
- 命令行中的Uglify js;不要弄乱变量名
- 像createComment这样的各种自定义变量名在内联javascript中被覆盖,但在外部js中没有.为什么?
- 这在JavaScript中是一个好的变量名吗
- 在javascript中,在变量名之前使用var有什么区别/优势吗
- 在Javascript中连接一个动态变量名
- 如何使用jQuery循环变量名
- JavaScript将字符串转换为变量名
- 根据发送到javascript中函数的参数创建变量名
- 检索本身包含变量的 Jquery 变量名的值
- 测试JavaScript是否符合异常变量名
- 动态变量名语法
- 动态jQuery变量名
- jquery没有't从DIV数据id中获取PHP变量值,只输出变量名
- Ajax jquery post发布时没有变量名
- 在javascript中的现有变量名中添加一个变量
- 可以't让JavaScript将ID读取为变量名
- ng绑定html,变量名来自ng repeat,但在其他地方定义了变量
- 使用动态变量名更新JSON中的结果
- math.js中的变量名和限制运算符