我正在寻找一个java库,它可以将波兰语/前缀表示法中的逻辑表达式转换为抽象语法树对象并返回。这是here和SMT-LIB standard使用的语法,我试图创建一些复杂的约束。我不想以任何方式评估表达式。例如
(and (> Money 500) (= Name "Smith"))
应该成为
and
/ \
> =
/ \ / \
Money 500 Name "Smith"
实现所需或可扩展的其他功能:
我对语法一无所知,这使得理解有关该主题的一些问题变得更加困难。
感谢您的每一个想法和提示!
这是我到现在为止所发现的。
关于如何自行编写的问题:
关于如何实现这种转换的精彩答案: CVC4
https://stackoverflow.com/a/7867104/5451007
很高兴听到其中一些可以帮助我:
可能是类似的问题,但在c#:About Trees and Prefix (Polish) Notation?
也许使用ANTRL或JavaCC编写解析器和词法分析器是一种选择? Implementing a prefix notation expression parser using Irony
ANTLR: https://stackoverflow.com/a/4590027/5451007
有关编程等同的问题的问题: 表达式树Parsing an arithmetic expression and building a tree from it in Java
的前缀后缀到表达式树Build binary expression tree from prefix notation?
Converting a Postfix Notation to an ExpressionTree
一般算法创意: