使用ASTVisitor进行自定义查询

时间:2012-03-23 17:42:33

标签: java parsing abstract-syntax-tree

我有任务要做,我甚至不知道如何开始。我需要为这样的查询实现AST解析器:

((book_date> 2000).author)

在main方法中,它应如下所示:

Expression ex = new DotExpression(
   new WhereExpression(
      new NameExpression("book"),
      new NameExpression("publish_date") > 2000
   ),
   new NameExpression("author"));
ex.accept(new ASTVisitor());

这是如何调用它的唯一示例。有什么建议怎么开始?一些代码示例会很棒。

1 个答案:

答案 0 :(得分:0)

所有这些课程的工厂都没问题:

public abstract class Expressions {
    public static DotExpression dot(NameExpression lhs, Expression rhs);
    public static BooleanExpression where(Expression lhs, Expression rhs);
    public static NameExpression name(String name);
    public static BooleanExpression gt(Expression lhs, Expression rhs);
}

用法

 static import Expressions.*;

 ... where(gt(name("publish_date"), value(2000)));