in drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/lang/DRL6Expressions.java [1621:1717]
public final Object annotationValue(AnnotatedDescrBuilder inDescrBuilder) throws RecognitionException {
Object result = null;
ParserRuleReturnScope exp =null;
java.util.List annos =null;
AnnotationDescr anno =null;
try {
// src/main/resources/org/drools/drl/parser/DRL6Expressions.g:240:3: (exp= expression |annos= annotationArray[inDescrBuilder] |anno= fullAnnotation[inDescrBuilder] )
int alt21=3;
switch ( input.LA(1) ) {
case BOOL:
case DECIMAL:
case DECR:
case DIV:
case DOT:
case FLOAT:
case HEX:
case ID:
case INCR:
case LEFT_PAREN:
case LEFT_SQUARE:
case LESS:
case MINUS:
case NEGATION:
case NULL:
case PLUS:
case QUESTION_DIV:
case STAR:
case STRING:
case TILDE:
case TIME_INTERVAL:
{
alt21=1;
}
break;
case LEFT_CURLY:
{
alt21=2;
}
break;
case AT:
{
alt21=3;
}
break;
default:
if (state.backtracking>0) {state.failed=true; return result;}
NoViableAltException nvae =
new NoViableAltException("", 21, 0, input);
throw nvae;
}
switch (alt21) {
case 1 :
// src/main/resources/org/drools/drl/parser/DRL6Expressions.g:240:5: exp= expression
{
pushFollow(FOLLOW_expression_in_annotationValue1073);
exp=expression();
state._fsp--;
if (state.failed) return result;
if ( state.backtracking==0 ) { if ( buildDescr ) result = (exp!=null?input.toString(exp.start,exp.stop):null); }
}
break;
case 2 :
// src/main/resources/org/drools/drl/parser/DRL6Expressions.g:241:7: annos= annotationArray[inDescrBuilder]
{
pushFollow(FOLLOW_annotationArray_in_annotationValue1085);
annos=annotationArray(inDescrBuilder);
state._fsp--;
if (state.failed) return result;
if ( state.backtracking==0 ) { if ( buildDescr ) result = annos.toArray(); }
}
break;
case 3 :
// src/main/resources/org/drools/drl/parser/DRL6Expressions.g:242:7: anno= fullAnnotation[inDescrBuilder]
{
pushFollow(FOLLOW_fullAnnotation_in_annotationValue1098);
anno=fullAnnotation(inDescrBuilder);
state._fsp--;
if (state.failed) return result;
if ( state.backtracking==0 ) { if ( buildDescr ) result = anno; }
}
break;
}
}
catch (RecognitionException re) {
throw re;
}
finally {
// do for sure before leaving
}
return result;
}