/* * Copyright (c) 2006-2011 Rogério Liesenfeld * This file is subject to the terms of the MIT license (see LICENSE.txt). */ package mockit.emulation.hibernate3.ast.whereClause; import mockit.emulation.hibernate3.ast.*; final class PositionalParameterExpr extends PrimaryExpr { final int index; PositionalParameterExpr(int parameterIndex) { index = parameterIndex; } public static Expr parse(Tokens tokens) { if (tokens.hasNext() && '?' == tokens.nextChar()) { int paramIndex; if (tokens.hasNext()) { try { paramIndex = Integer.parseInt(tokens.next()); } catch (NumberFormatException ignore) { tokens.pushback(); paramIndex = tokens.nextParameterIndex(); } } else { paramIndex = tokens.nextParameterIndex(); } return new PositionalParameterExpr(paramIndex); } return null; } @Override public Object evaluate(QueryEval eval) { return eval.parameters.get(index); } }