给定一个算术表达式,我需要一些创建自定义树的帮助.比如说,您输入此算术表达式:
(5+2)*7
Run Code Online (Sandbox Code Playgroud)
结果树应如下所示:
*
/ \
+ 7
/ \
5 2
Run Code Online (Sandbox Code Playgroud)
我有一些自定义类来表示不同类型的节点,即PlusOp,LeafInt等.我不需要评估表达式,只需创建树,所以我可以在以后执行其他功能.此外,否定运算符' - '只能有一个子节点,并且要表示'5-2',您必须将其输入为5 +( - 2).
需要对表达式进行一些验证,以确保每种类型的运算符都具有正确的no.参数/儿童,每个开口括号都附有一个结束括号.
另外,我应该提一下,我的朋友已经编写了将输入字符串转换为一堆标记的代码,如果这对此有帮助的话.
我会感激任何帮助.谢谢 :)
(我读过你可以编写一个语法并使用antlr/JavaCC等来创建解析树,但我不熟悉这些工具或编写语法,所以如果这是你的解决方案,我将不胜感激,如果你可以为他们提供一些有用的教程/链接.)