_t = __t341;
_t = __t349;
	public final Expression  numericExpr(AST _t,		PathExpr path	) throws RecognitionException, PermissionDeniedException,EXistException,XPathException {		Expression step;				AST numericExpr_AST_in = (AST)_t;					step= null;			PathExpr left= new PathExpr(context);			PathExpr right= new PathExpr(context);						if (_t==null) _t=ASTNULL;		switch ( _t.getType()) {		case PLUS:		{			AST __t337 = _t;			AST tmp75_AST_in = (AST)_t;			match(_t,PLUS);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			step=expr(_t,right);			_t = _retTree;			_t = __t337;			_t = _t.getNextSibling();								OpNumeric op= new OpNumeric(context, left, right, Constants.PLUS);					path.addPath(op);					step= op;							break;		}		case MINUS:		{			AST __t338 = _t;			AST tmp76_AST_in = (AST)_t;			match(_t,MINUS);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			step=expr(_t,right);			_t = _retTree;			_t = __t338;			_t = _t.getNextSibling();								OpNumeric op= new OpNumeric(context, left, right, Constants.MINUS);					path.addPath(op);					step= op;							break;		}		case UNARY_MINUS:		{			AST __t339 = _t;			AST tmp77_AST_in = (AST)_t;			match(_t,UNARY_MINUS);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			_t = __t339;			_t = _t.getNextSibling();								UnaryExpr unary= new UnaryExpr(context, Constants.MINUS);					unary.add(left);					path.addPath(unary);					step= unary;							break;		}		case UNARY_PLUS:		{			AST __t340 = _t;			AST tmp78_AST_in = (AST)_t;			match(_t,UNARY_PLUS);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			_t = __t340;			_t = _t.getNextSibling();								UnaryExpr unary= new UnaryExpr(context, Constants.PLUS);					unary.add(left);					path.addPath(unary);					step= unary;							break;		}		case LITERAL_div:		{			AST __t341 = _t;			AST tmp79_AST_in = (AST)_t;			match(_t,LITERAL_div);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			step=expr(_t,right);			_t = _retTree;			_t = __t341;			_t = _t.getNextSibling();								OpNumeric op= new OpNumeric(context, left, right, Constants.DIV);					path.addPath(op);					step= op;							break;		}		case LITERAL_idiv:		{			AST __t342 = _t;			AST tmp80_AST_in = (AST)_t;			match(_t,LITERAL_idiv);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			step=expr(_t,right);			_t = _retTree;			_t = __t342;			_t = _t.getNextSibling();								OpNumeric op= new OpNumeric(context, left, right, Constants.IDIV);					path.addPath(op);					step= op;							break;		}		case LITERAL_mod:		{			AST __t343 = _t;			AST tmp81_AST_in = (AST)_t;			match(_t,LITERAL_mod);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			step=expr(_t,right);			_t = _retTree;			_t = __t343;			_t = _t.getNextSibling();								OpNumeric op= new OpNumeric(context, left, right, Constants.MOD);					path.addPath(op);					step= op;							break;		}		case STAR:		{			AST __t344 = _t;			AST tmp82_AST_in = (AST)_t;			match(_t,STAR);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			step=expr(_t,right);			_t = _retTree;			_t = __t344;			_t = _t.getNextSibling();								OpNumeric op= new OpNumeric(context, left, right, Constants.MULT);					path.addPath(op);					step= op;							break;		}		default:		{			throw new NoViableAltException(_t);		}		}		_retTree = _t;		return step;	}