/******************************************************************************* * Copyright (c) 2007 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.el.internal.core.parser.rule; import org.jboss.tools.common.el.core.parser.IRule; import org.jboss.tools.common.el.core.parser.Tokenizer; import org.jboss.tools.common.el.internal.core.parser.token.ArgEndTokenDescription; import org.jboss.tools.common.el.internal.core.parser.token.ArrayEndTokenDescription; import org.jboss.tools.common.el.internal.core.parser.token.EndELTokenDescription; import org.jboss.tools.common.el.internal.core.parser.token.ExprEndTokenDescription; import org.jboss.tools.common.el.internal.core.parser.token.ParamEndTokenDescription; import org.jboss.tools.common.el.internal.core.parser.token.StartELTokenDescription; /** * * @author V. Kabanovich * */ public class ErrorRecoveryRule implements IRule { public static ErrorRecoveryRule INSTANCE = new ErrorRecoveryRule(); public int getFinalState(int state, int token) { switch (token) { case EndELTokenDescription.END_EL: return BasicStates.STATE_EXPECTING_EL; case StartELTokenDescription.START_EL: return BasicStates.STATE_EXPECTING_EXPRESSION; case ArgEndTokenDescription.ARG_END: case ParamEndTokenDescription.PARAM_END: case ArrayEndTokenDescription.ARRAY_END: return BasicStates.STATE_EXPECTING_CALL_AFTER_METHOD; case ExprEndTokenDescription.EXPR_END: return BasicStates.STATE_EXPECTING_CALL; // STATE_EXPECTING_OPERATION; } return 0; } public int[] getStartStates() { return new int[]{BasicStates.STATE_ERROR}; } public int[] getTokenTypes(int state) { return new int[]{ ArgEndTokenDescription.ARG_END, ArrayEndTokenDescription.ARRAY_END, ParamEndTokenDescription.PARAM_END, ExprEndTokenDescription.EXPR_END, EndELTokenDescription.END_EL, StartELTokenDescription.START_EL }; } public String getProblem(int state, Tokenizer tokenizer) { // Other rules already reported a problem. return null; } }