in drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/lang/DRL5Parser.java [1321:1424]
public AttributeDescr attribute( AttributeSupportBuilder< ? > as ) {
AttributeDescr attribute = null;
try {
if ( state.backtracking == 0 && input.LA( 1 ) != DRL5Lexer.EOF ) {
helper.emit( Location.LOCATION_RULE_HEADER_KEYWORD );
}
if ( helper.validateIdentifierKey( DroolsSoftKeywords.SALIENCE ) ) {
attribute = salience( as );
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.ENABLED ) ) {
attribute = enabled( as );
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.NO ) &&
helper.validateLT( 2,
"-" ) &&
helper.validateLT( 3,
DroolsSoftKeywords.LOOP ) ) {
attribute = booleanAttribute( as,
new String[]{DroolsSoftKeywords.NO, "-", DroolsSoftKeywords.LOOP} );
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.AUTO ) &&
helper.validateLT( 2,
"-" ) &&
helper.validateLT( 3,
DroolsSoftKeywords.FOCUS ) ) {
attribute = booleanAttribute( as,
new String[]{DroolsSoftKeywords.AUTO, "-", DroolsSoftKeywords.FOCUS} );
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.LOCK ) &&
helper.validateLT( 2,
"-" ) &&
helper.validateLT( 3,
DroolsSoftKeywords.ON ) &&
helper.validateLT( 4,
"-" ) &&
helper.validateLT( 5,
DroolsSoftKeywords.ACTIVE ) ) {
attribute = booleanAttribute( as,
new String[]{DroolsSoftKeywords.LOCK, "-", DroolsSoftKeywords.ON, "-", DroolsSoftKeywords.ACTIVE} );
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.REFRACT ) ) {
attribute = booleanAttribute( as,
new String[]{ DroolsSoftKeywords.REFRACT } );
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.AGENDA ) &&
helper.validateLT( 2,
"-" ) &&
helper.validateLT( 3,
DroolsSoftKeywords.GROUP ) ) {
attribute = stringAttribute( as,
new String[]{DroolsSoftKeywords.AGENDA, "-", DroolsSoftKeywords.GROUP} );
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.ACTIVATION ) &&
helper.validateLT( 2,
"-" ) &&
helper.validateLT( 3,
DroolsSoftKeywords.GROUP ) ) {
attribute = stringAttribute( as,
new String[]{DroolsSoftKeywords.ACTIVATION, "-", DroolsSoftKeywords.GROUP} );
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.RULEFLOW ) &&
helper.validateLT( 2,
"-" ) &&
helper.validateLT( 3,
DroolsSoftKeywords.GROUP ) ) {
attribute = stringAttribute( as,
new String[]{DroolsSoftKeywords.RULEFLOW, "-", DroolsSoftKeywords.GROUP} );
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.DATE ) &&
helper.validateLT( 2,
"-" ) &&
helper.validateLT( 3,
DroolsSoftKeywords.EFFECTIVE ) ) {
attribute = stringAttribute( as,
new String[]{DroolsSoftKeywords.DATE, "-", DroolsSoftKeywords.EFFECTIVE} );
if (attribute != null) {
attribute.setType( AttributeDescr.Type.DATE );
} else {
throw new RecognitionException();
}
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.DATE ) &&
helper.validateLT( 2,
"-" ) &&
helper.validateLT( 3,
DroolsSoftKeywords.EXPIRES ) ) {
attribute = stringAttribute( as,
new String[]{DroolsSoftKeywords.DATE, "-", DroolsSoftKeywords.EXPIRES} );
if (attribute != null) {
attribute.setType( AttributeDescr.Type.DATE );
} else {
throw new RecognitionException();
}
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.DIALECT ) ) {
attribute = stringAttribute( as,
new String[]{DroolsSoftKeywords.DIALECT} );
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.CALENDARS ) ) {
attribute = stringListAttribute( as,
new String[]{DroolsSoftKeywords.CALENDARS} );
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.TIMER ) ) {
attribute = intOrChunkAttribute( as,
new String[]{DroolsSoftKeywords.TIMER} );
} else if ( helper.validateIdentifierKey( DroolsSoftKeywords.DURATION ) ) {
attribute = intOrChunkAttribute( as,
new String[]{DroolsSoftKeywords.DURATION} );
}
if ( state.backtracking == 0 ) {
helper.emit( Location.LOCATION_RULE_HEADER );
}
} catch ( RecognitionException re ) {
reportError( re );
}
return attribute;
}