/******************************************************************************* * Copyright (c) 2011 Bruno Medeiros and other Contributors. * All rights reserved. This program and the accompanying materials * are 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: * Bruno Medeiros - initial API and implementation *******************************************************************************/ package melnorme.lang.tooling.ast; import dtool.ast.declarations.AttribLinkage.Linkage; import dtool.ast.statements.StatementScope.ScopeTypes; import dtool.parser.DeeTokens; import melnorme.lang.tooling.LANG_SPECIFIC; import melnorme.lang.tooling.common.ParserError; import melnorme.utilbox.misc.StringUtil; @LANG_SPECIFIC public enum ParserErrorTypes { INVALID_TOKEN_CHARACTERS { @Override public String getUserMessage(ParserError pe) { return "Invalid token characters \"" + pe.msgErrorSource + "\", delete these characters."; } }, MALFORMED_TOKEN { @Override public String getUserMessage(ParserError pe) { return "Error during tokenization: " + pe.msgErrorSource; } }, EXPECTED_TOKEN { @Override public String getUserMessage(ParserError pe) { DeeTokens expToken = (DeeTokens) pe.msgData; return "Syntax error on token \"" + pe.msgErrorSource + "\", expected " + expToken + " after."; } }, EXPECTED_RULE { @Override public String getUserMessage(ParserError pe) { return "Unexpected token after \"" + pe.msgErrorSource + "\", while trying to parse " + pe.msgData + "."; } }, SYNTAX_ERROR { @Override public String getUserMessage(ParserError pe) { return "Unexpected token \"" + pe.msgErrorSource + "\", while trying to parse " + pe.msgData + "."; } }, EXP_MUST_HAVE_PARENTHESES { @Override public String getUserMessage(ParserError pe) { return "Expression " + pe.msgErrorSource + " must be parenthesized when next to operator: " + pe.msgData + "."; } }, TYPE_USED_AS_EXP_VALUE { @Override public String getUserMessage(ParserError pe) { return "The type " + pe.msgErrorSource + " cannot be used as an expression value."; } }, INIT_USED_IN_EXP { @Override public String getUserMessage(ParserError pe) { return "The initializer " + pe.msgErrorSource + " cannot be used as part of an expression."; } }, NO_CHAINED_TPL_SINGLE_ARG { @Override public String getUserMessage(ParserError pe) { return "The template '!' single argument " + pe.msgErrorSource + " cannot be used next to other template '!' single arguments."; } }, INVALID_EXTERN_ID { @Override public String getUserMessage(ParserError pe) { return "Invalid linkage specifier \"" + pe.msgErrorSource + "\", valid ones are: " + StringUtil.collToString(Linkage.values(), ",") + "."; } }, INVALID_SCOPE_ID { @Override public String getUserMessage(ParserError pe) { return "Invalid scope specifier \"" + pe.msgErrorSource + "\", must be one of: " + StringUtil.collToString(ScopeTypes.values(), ",") + "."; } }, INVALID_TRAITS_ID { @Override public String getUserMessage(ParserError pe) { return "Invalid traits id \"" + pe.msgErrorSource + "\"."; } }, LAST_CATCH { @Override public String getUserMessage(ParserError pe) { return "Catch without parameter must be last catch (and only one per try statement). "; } }, ; public abstract String getUserMessage(ParserError pe); }