use of org.drools.drl.ast.dsl.RuleDescrBuilder in project drools by kiegroup.
the class DRL5Parser method rule.
/* ------------------------------------------------------------------------------------------------
* RULE STATEMENT
* ------------------------------------------------------------------------------------------------ */
/**
* rule := RULE stringId (EXTENDS stringId)? annotation* attributes? lhs? rhs END
*
* @return
* @throws RecognitionException
*/
public RuleDescr rule(PackageDescrBuilder pkg) throws RecognitionException {
RuleDescrBuilder rule = null;
try {
rule = helper.start(pkg, RuleDescrBuilder.class, null);
// 'rule'
match(input, DRL5Lexer.ID, DroolsSoftKeywords.RULE, null, DroolsEditorType.KEYWORD);
if (state.failed)
return null;
if (helper.validateIdentifierKey(DroolsSoftKeywords.WHEN) || helper.validateIdentifierKey(DroolsSoftKeywords.THEN) || helper.validateIdentifierKey(DroolsSoftKeywords.END)) {
failMissingTokenException();
// in case it is backtracking
return null;
}
String name = stringId();
if (state.failed)
return null;
if (state.backtracking == 0) {
rule.name(name);
helper.setParaphrasesValue(DroolsParaphraseTypes.RULE, "\"" + name + "\"");
helper.emit(Location.LOCATION_RULE_HEADER);
}
if (helper.validateIdentifierKey(DroolsSoftKeywords.EXTENDS)) {
// 'extends'
match(input, DRL5Lexer.ID, DroolsSoftKeywords.EXTENDS, null, DroolsEditorType.KEYWORD);
if (state.failed)
return null;
String parent = stringId();
if (state.backtracking == 0)
rule.extendsRule(parent);
if (state.failed)
return null;
}
if (state.backtracking == 0 && input.LA(1) != DRL5Lexer.EOF) {
helper.emit(Location.LOCATION_RULE_HEADER);
}
while (input.LA(1) == DRL5Lexer.AT) {
// annotation*
annotation(rule);
if (state.failed)
return null;
}
attributes(rule);
if (helper.validateIdentifierKey(DroolsSoftKeywords.WHEN)) {
lhs(rule);
} else {
// creates an empty LHS
rule.lhs();
}
rhs(rule);
match(input, DRL5Lexer.ID, DroolsSoftKeywords.END, null, DroolsEditorType.KEYWORD);
if (state.failed)
return null;
} catch (RecognitionException re) {
reportError(re);
} finally {
helper.end(RuleDescrBuilder.class, rule);
}
return (rule != null) ? rule.getDescr() : null;
}
use of org.drools.drl.ast.dsl.RuleDescrBuilder in project drools by kiegroup.
the class PackageDescrBuilderImpl method newRule.
public RuleDescrBuilder newRule() {
RuleDescrBuilder rule = new RuleDescrBuilderImpl(this);
descr.addRule(initDescr(rule));
rule.getDescr().setUnit(descr.getUnit());
return rule;
}
use of org.drools.drl.ast.dsl.RuleDescrBuilder in project drools by kiegroup.
the class RuleDescrBuilderImpl method lhs.
public CEDescrBuilder<RuleDescrBuilder, AndDescr> lhs() {
CEDescrBuilder<RuleDescrBuilder, AndDescr> ce = new CEDescrBuilderImpl<RuleDescrBuilder, AndDescr>(this, new AndDescr());
descr.setLhs(ce.getDescr());
return ce;
}
use of org.drools.drl.ast.dsl.RuleDescrBuilder in project drools by kiegroup.
the class DRL6Parser method rule.
/* ------------------------------------------------------------------------------------------------
* RULE STATEMENT
* ------------------------------------------------------------------------------------------------ */
/**
* rule := RULE stringId (EXTENDS stringId)? annotation* attributes? lhs? rhs END
*
* @return
* @throws org.antlr.runtime.RecognitionException
*/
public RuleDescr rule(PackageDescrBuilder pkg) throws RecognitionException {
RuleDescrBuilder rule = null;
try {
rule = helper.start(pkg, RuleDescrBuilder.class, null);
// 'rule'
match(input, DRL6Lexer.ID, DroolsSoftKeywords.RULE, null, DroolsEditorType.KEYWORD);
if (state.failed)
return null;
if (helper.validateIdentifierKey(DroolsSoftKeywords.WHEN) || helper.validateIdentifierKey(DroolsSoftKeywords.THEN) || helper.validateIdentifierKey(DroolsSoftKeywords.END)) {
failMissingTokenException();
// in case it is backtracking
return null;
}
String name = stringId();
if (state.failed)
return null;
if (state.backtracking == 0) {
rule.name(name);
helper.setParaphrasesValue(DroolsParaphraseTypes.RULE, "\"" + name + "\"");
helper.emit(Location.LOCATION_RULE_HEADER);
}
if (helper.validateIdentifierKey(DroolsSoftKeywords.EXTENDS)) {
// 'extends'
match(input, DRL6Lexer.ID, DroolsSoftKeywords.EXTENDS, null, DroolsEditorType.KEYWORD);
if (state.failed)
return null;
String parent = stringId();
if (state.backtracking == 0)
rule.extendsRule(parent);
if (state.failed)
return null;
}
if (state.backtracking == 0 && input.LA(1) != DRL6Lexer.EOF) {
helper.emit(Location.LOCATION_RULE_HEADER);
}
while (input.LA(1) == DRL6Lexer.AT) {
// annotation*
annotation(rule);
if (state.failed)
return null;
}
attributes(rule);
if (helper.validateIdentifierKey(DroolsSoftKeywords.WHEN)) {
lhs(rule);
} else {
// creates an empty LHS
rule.lhs();
}
rhs(rule);
match(input, DRL6Lexer.ID, DroolsSoftKeywords.END, null, DroolsEditorType.KEYWORD);
if (state.failed)
return null;
} catch (RecognitionException re) {
reportError(re);
} finally {
helper.end(RuleDescrBuilder.class, rule);
}
return (rule != null) ? rule.getDescr() : null;
}
use of org.drools.drl.ast.dsl.RuleDescrBuilder in project drools by kiegroup.
the class KiePMMLDescrRulesFactory method declareRule.
protected void declareRule(final KiePMMLDroolsRule rule) {
logger.trace("declareRule {}", rule);
final RuleDescrBuilder ruleBuilder = builder.newRule().name(rule.getName());
if (rule.getAgendaGroup() != null) {
declareAgendaGroup(ruleBuilder, rule.getAgendaGroup());
}
if (rule.getActivationGroup() != null) {
declareActivationGroup(ruleBuilder, rule.getActivationGroup());
}
KiePMMLDescrLhsFactory.factory(ruleBuilder.lhs()).declareLhs(rule);
KiePMMLDescrRhsFactory.factory(ruleBuilder).declareRhs(rule);
}
Aggregations