在 Java 中解析算术表达式并从中构建树
我需要一些帮助来创建自定义树,给出一个算术表达式。例如,假设您输入此算术表达式:
(5+2)*7
结果树应如下所示:
*
/ \
+ 7
/ \
5 2
我有一些自定义类来表示不同类型的节点,即PlusOp,LeafInt等。我不需要计算表达式,只需创建树,以便以后可以对其执行其他功能。此外,负运算符“-”只能有一个子项,要表示“5-2”,必须将其输入为 5 + (-2)。
需要对表达式进行一些验证,以确保每种类型的运算符都具有正确的 no。的参数/子项,每个左括号都附有一个右括号。
另外,我应该提到我的朋友已经编写了将输入字符串转换为令牌堆栈的代码,如果这对这有帮助的话。
我将不胜感激任何帮助。谢谢:)
(我读到你可以编写一个语法并使用antlr / JavaCC等来创建解析树,但我不熟悉这些工具或编写语法,所以如果这是你的解决方案,如果你能为他们提供一些有用的教程/链接,我将不胜感激。