// $ANTLR : "Emfatic.g" -> "EmfaticLexer.java"$

package org.eclipse.emf.emfatic.core.lang.gen.parser;
import org.eclipse.emf.emfatic.core.lang.gen.ast.*;
import org.eclipse.gymnast.runtime.core.parser.*;
import org.eclipse.gymnast.runtime.core.ast.*;

public interface EmfaticParserTokenTypes {
	int EOF = 1;
	int NULL_TREE_LOOKAHEAD = 3;
	int LITERAL_package = 4;
	int SEMI = 5;
	int ID = 6;
	int DOT = 7;
	int DOLLAR = 8;
	int STRING_LITERAL = 9;
	int AT = 10;
	int LPAREN = 11;
	int RPAREN = 12;
	int COMMA = 13;
	int EQUALS = 14;
	int LITERAL_import = 15;
	int LCURLY = 16;
	int RCURLY = 17;
	int LITERAL_extends = 18;
	int COLON = 19;
	int LITERAL_abstract = 20;
	int LITERAL_class = 21;
	int LITERAL_interface = 22;
	int LT = 23;
	int GT = 24;
	int AMP = 25;
	int QMARK = 26;
	int LITERAL_super = 27;
	int LITERAL_attr = 28;
	int LSQUARE = 29;
	int RSQUARE = 30;
	int DOT_DOT = 31;
	int STAR = 32;
	int PLUS = 33;
	int INT_LITERAL = 34;
	int HASH = 35;
	int LITERAL_ref = 36;
	int LITERAL_val = 37;
	int BANG = 38;
	int LITERAL_readonly = 39;
	int LITERAL_volatile = 40;
	int LITERAL_transient = 41;
	int LITERAL_unsettable = 42;
	int LITERAL_derived = 43;
	int LITERAL_unique = 44;
	int LITERAL_ordered = 45;
	int LITERAL_resolve = 46;
	int LITERAL_id = 47;
	int LITERAL_true = 48;
	int LITERAL_false = 49;
	int MINUS = 50;
	int CHAR_LITERAL = 51;
	int LITERAL_op = 52;
	int LITERAL_throws = 53;
	int LITERAL_void = 54;
	int LITERAL_datatype = 55;
	int LITERAL_enum = 56;
	int LITERAL_mapentry = 57;
	int MINUS_GT = 58;
	int GT_LT = 59;
	int LT_GT = 60;
	int ESC = 61;
	int DIGIT = 62;
	int WS = 63;
	int SINGLE_LINE_COMMENT = 64;
	int MULTI_LINE_COMMENT = 65;
}
