用于为方程式添加括号的工具?

时间:2010-04-20 20:52:36

标签: math parsing formatting

是否有用于在简单数学方程式中添加括号的在线工具?例如,

a + b * c

a + (b * c)

那些在数学课上更受关注的人可能能够解决他们头脑中巨大方程式的操作顺序,但我经常可以使用一些帮助(并验证我的想法)。

我经常遇到其他人的库,我的代码需要方程式和函数,这对调试和理解很有帮助。

我希望Wolfram Alpha能够做到这一点,但输出并不容易插回大多数编程语言,例如a + (bc)

3 个答案:

答案 0 :(得分:1)

this算法会或多或少地做你想要的,因为这是为了帮助你解析表达式而不是编译器/解释器你可以稍微简化它,如果你很高兴+和 - 有一元运算符以及二进制文件。至于在线做吗?你必须自己做。如果我觉得自己需要,我个人很想把它写成编辑器宏。

答案 1 :(得分:1)

有一个很好的自卷式在线解析器网站,名为PEG.js。我用它来创建这个parenthesizer。看看这个。它目前只处理+,-,*,/,但添加更多内容应该很容易。

答案 2 :(得分:0)

像SML这样的语言将提供一种特别通用的解决方案来解析具有任意优先级的任意运算符的任意运算符。例如,在SML shell中输入

datatype ty = + of ty * ty | * of ty * ty | <& of ty * ty | I of int;
infix <& 9; (*Gives our new crazy op a high priority*)

如果您需要文本输出,则会执行以下操作:

fun pr (a*b) =(print"(";pr a;print"*";pr b;print")")
  | pr (a<&b)=(print"(";pr a;print"+";pr b;print")")
  | pr (I a) =print (Int.toString a);

然后它将解析您输入到所需树中的任何内容。没有那么多语言可以内置支持添加新的中缀运算符。否则你将不得不使用库或字符串解析器。

我不会帮助你,但它是最酷的解决方案(几乎任何使用SML等酷语言的东西)。