Создайте объект POJO из этого правила производства.

У меня есть правила этого формата:

Condition -> Condition OPERATOR Condition | Condition 
Condition -> attribute OPERATOR 
value OPERATOR -> EQUALS | STARTS WITH | ENDS WITH | AND | OR | NOT EQUALS | CONTAINS 

Мне нужно создать JAVA POJO (сеттеры / геттеры) для данных правил. Как мне это сделать?

Есть ли какой-нибудь внешний инструмент парсера, который нужно создать. Я могу создать для ОПЕРАТОРА часть:

//POJO CLASS
Class Condtion{
    private String attr;
    private String op;
    private String value;

    public String getAttr(){
        this.attr=attr;
    } 

    public String getOp(){
        this.op=op;
    }

    public String getValue(){
        this.value=value;
    }

    //setters for above three 
}

Как создать POJO по правилам Condition->Condition OPERATOR Condition | Condition?

1 ответ

Кажется, что у вас есть язык правил с определенным синтаксисом, и вы хотите представить правила, выраженные в вашем синтаксисе, как объекты Java.

Обычно вам нужно вложить объекты различных типов (правило, оператор, значение,...). На самом деле, вы, вероятно, хотите построить абстрактное синтаксическое дерево (AST).

Пример: 3 and 2 (что бы это ни значило)

Может быть представлен как:

new And(3,2)

где

class And { 
  int left; 
  int right; 

  And(int l, int r) { 
    left = l; right = r;
  } 
  //getters and setters, etc. 
}

Теперь, чтобы представлять 3 and 2 and 5 вы бы (например) вложили:

 new And(new And(3, 2), 5);

Пример: 3 and 2 -> 1 (что бы это ни значило...)

Вы могли бы представить как:

new Rule(new And(3, 2), new Value(1))

где

class Rule {
    Expression body;
    Expression head;

    Rule(Expression b, Expression h) {
        body = b; head = h;
    }
}

... где я ленюсь и предполагаю, что это правда, что, например, And extends Expression а также Value extends Expression (что может быть не то, что вы хотите).

Точно так же и для других предикатов, операторов и т. Д. Вам необходимо иметь четкое представление о языке правил, и тогда это будет относительно легко. Есть много способов составить объекты.

Теперь не ясно, нужно ли вам выполнять какой-то анализ или вы хотите просто составить эти объекты программно.

Вы можете создать свой собственный парсер, но для него есть библиотеки, такие как JavaCC.

Другие вопросы по тегам