Создайте объект 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.