case LPAREN: { match(LPAREN); if ( inputState.guessing==0 ) { path = new PathExpr(pool); } or_expr(path); match(RPAREN); if ( inputState.guessing==0 ) {  expr.addPath(path);  } break; }
	public final Expression  primary_expr(		PathExpr expr	) throws RecognitionException, TokenStreamException, PermissionDeniedException,EXistException {		Expression step;				Token  l = null;		Token  i = null;					step = null;			PathExpr path = null;						switch ( LA(1)) {		case LITERAL_text:		case 32:		case 33:		case LITERAL_contains:		case LITERAL_match:		case LITERAL_near:		case FUNC:		{			step=function_call(expr);			break;		}		case CONST:		{			l = LT(1);			match(CONST);			if ( inputState.guessing==0 ) {										step = new Literal(l.getText());						expr.add(step);								}			break;		}		case INT:		{			i = LT(1);			match(INT);			if ( inputState.guessing==0 ) {										step = new IntNumber(Double.parseDouble(i.getText()));						expr.add(step);								}			break;		}		case LPAREN:		{			match(LPAREN);			if ( inputState.guessing==0 ) {				path = new PathExpr(pool);			}			or_expr(path);			match(RPAREN);			if ( inputState.guessing==0 ) {										expr.addPath(path);								}			break;		}		default:		{			throw new NoViableAltException(LT(1), getFilename());		}		}		return step;	}