2012-03-23 3 views
0

나는해야 할 일이 있고 시작할 방법을 모른다.ASTVisitor를 사용하여 사용자 지정 쿼리

((책이 게시 _)이 .author 2000> 여기서)는 다음과 같아야합니다 주요 방법은

:

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

있다고 나는 그 같은 쿼리 AST 파서를 구현해야 그것을 호출하는 방법에 대해서만 예를 들어 설명합니다. 조언 시작하는 방법? 일부 코드 예제는 훌륭합니다.

+0

그럼 당신의 표현의 각 부분이에 대한 클래스가 될 필요가 있다는 것을 당신의 예에서 분명하다 일하다. 그래서 Expression, WhereExepression, NameExpression 클래스를 만드는 것이 좋습니다. 그런 다음 해당 클래스의 특성은 Expression에서 사용할 수있는 값입니다. –

답변

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))); 
관련 문제