match(input, Token.DOWN, null); if (failed) return bs;
match(input,UNBOUNDED,FOLLOW_UNBOUNDED_in_valuesboundary968); if (failed) return bs;
match(input, Token.UP, null); if (failed) return bs;
if ( backtracking==0 ) {
bs = new ValueBoundarySpec(Direction.PRECEDING, null, BoundarySpec.UNBOUNDED_AMOUNT);
}
}
break;
case 2 :
// QSpecBuilder2.g:205:3: ^( FOLLOWING UNBOUNDED )
{
match(input,FOLLOWING,FOLLOW_FOLLOWING_in_valuesboundary979); if (failed) return bs;
match(input, Token.DOWN, null); if (failed) return bs;
match(input,UNBOUNDED,FOLLOW_UNBOUNDED_in_valuesboundary981); if (failed) return bs;
match(input, Token.UP, null); if (failed) return bs;
if ( backtracking==0 ) {
bs = new ValueBoundarySpec(Direction.FOLLOWING, null, BoundarySpec.UNBOUNDED_AMOUNT);
}
}
break;
case 3 :
// QSpecBuilder2.g:206:3: CURRENT
{
match(input,CURRENT,FOLLOW_CURRENT_in_valuesboundary990); if (failed) return bs;
if ( backtracking==0 ) {
bs = new CurrentRowSpec();
}
}
break;
case 4 :
// QSpecBuilder2.g:207:3: ^( LESS e= expression n= Number )
{
match(input,LESS,FOLLOW_LESS_in_valuesboundary999); if (failed) return bs;
match(input, Token.DOWN, null); if (failed) return bs;
pushFollow(FOLLOW_expression_in_valuesboundary1003);
e=expression();
_fsp--;
if (failed) return bs;
n=(CommonTree)input.LT(1);
match(input,Number,FOLLOW_Number_in_valuesboundary1007); if (failed) return bs;
match(input, Token.UP, null); if (failed) return bs;
if ( backtracking==0 ) {
bs = new ValueBoundarySpec(Direction.PRECEDING, e, Integer.parseInt(n.getText()));
}
}
break;
case 5 :
// QSpecBuilder2.g:208:3: ^( MORE e= expression n= Number )
{
match(input,MORE,FOLLOW_MORE_in_valuesboundary1017); if (failed) return bs;
match(input, Token.DOWN, null); if (failed) return bs;
pushFollow(FOLLOW_expression_in_valuesboundary1021);
e=expression();
_fsp--;
if (failed) return bs;
n=(CommonTree)input.LT(1);
match(input,Number,FOLLOW_Number_in_valuesboundary1025); if (failed) return bs;
match(input, Token.UP, null); if (failed) return bs;
if ( backtracking==0 ) {
bs = new ValueBoundarySpec(Direction.PRECEDING, e, Integer.parseInt(n.getText()));
}
}
break;