left=shiftExpression();
state._fsp--;
if (state.failed) return result;
if ( state.backtracking==0 ) { if( buildDescr ) {
if ( (left!=null?((DRL5Expressions.shiftExpression_return)left).result:null) == null ) {
result = new AtomicExprDescr( (left!=null?input.toString(left.start,left.stop):null) );
} else if ( (left!=null?((DRL5Expressions.shiftExpression_return)left).result:null) instanceof AtomicExprDescr ) {
if ( (left!=null?input.toString(left.start,left.stop):null).equals(((AtomicExprDescr)(left!=null?((DRL5Expressions.shiftExpression_return)left).result:null)).getExpression()) ) {
result = (left!=null?((DRL5Expressions.shiftExpression_return)left).result:null);
} else {
result = new AtomicExprDescr( (left!=null?input.toString(left.start,left.stop):null) ) ;
}
} else if ( (left!=null?((DRL5Expressions.shiftExpression_return)left).result:null) instanceof BindingDescr ) {
if ( (left!=null?input.toString(left.start,left.stop):null).equals(((BindingDescr)(left!=null?((DRL5Expressions.shiftExpression_return)left).result:null)).getExpression()) ) {
result = (left!=null?((DRL5Expressions.shiftExpression_return)left).result:null);
} else {