/** * This file Copyright (c) 2005-2008 Aptana, Inc. This program is * dual-licensed under both the Aptana Public License and the GNU General * Public license. You may elect to use one or the other of these licenses. * * This program is distributed in the hope that it will be useful, but * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or * NONINFRINGEMENT. Redistribution, except as permitted by whichever of * the GPL or APL you select, is prohibited. * * 1. For the GPL license (GPL), you can redistribute and/or modify this * program under the terms of the GNU General Public License, * Version 3, as published by the Free Software Foundation. You should * have received a copy of the GNU General Public License, Version 3 along * with this program; if not, write to the Free Software Foundation, Inc., 51 * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Aptana provides a special exception to allow redistribution of this file * with certain Eclipse Public Licensed code and certain additional terms * pursuant to Section 7 of the GPL. You may view the exception and these * terms on the web at http://www.aptana.com/legal/gpl/. * * 2. For the Aptana Public License (APL), this program and the * accompanying materials are made available under the terms of the APL * v1.0 which accompanies this distribution, and is available at * http://www.aptana.com/legal/apl/. * * You may view the GPL, Aptana's exception and additional terms, and the * APL in the file titled license.html at the root of the corresponding * plugin containing this source file. * * Any modifications to this file must keep this entire header intact. */ package com.aptana.ide.editor.erb.lexing; import java.lang.reflect.Field; import org.jruby.parser.Tokens; import org.rubypeople.rdt.internal.ui.text.ruby.RubyTokenScanner; /** * @author Kevin Sawicki (ksawicki@aptana.com) */ public class RubyTokenTypes { public static final int ERROR = 0; // Keywords public static final int CLASS = 1; public static final int MODULE = 2; public static final int DEF = 3; public static final int UNDEF = 4; public static final int BEGIN = 5; public static final int RESCUE = 6; public static final int ENSURE = 7; public static final int END = 8; public static final int IF = 9; public static final int UNLESS = 10; public static final int THEN = 11; public static final int ELSEIF = 12; public static final int ELSE = 13; public static final int CASE = 14; public static final int WHEN = 15; public static final int WHILE = 16; public static final int UNTIL = 17; public static final int FOR = 18; public static final int BREAK = 19; public static final int NEXT = 20; public static final int REDO = 21; public static final int RETRY = 22; public static final int IN = 23; public static final int DO = 24; public static final int DO_COND = 25; public static final int DO_BLOCK = 26; public static final int RETURN = 27; public static final int YIELD = 28; public static final int SUPER = 29; public static final int SELF = 30; public static final int NIL = 31; public static final int TRUE = 32; public static final int FALSE = 33; public static final int AND = 34; public static final int OR = 35; public static final int NOT = 36; public static final int IF_MOD = 37; public static final int UNLESS_MOD = 38; public static final int WHILE_MOD = 39; public static final int UNTIL_MOD = 40; public static final int RESCUE_MOD = 41; public static final int ALIAS = 42; public static final int DEFINED = 43; public static final int L_BEGIN = 44; public static final int L_END = 45; public static final int __LINE__ = 46; public static final int __FILE__ = 47; // Identifiers public static final int IDENTIFIER = 48; public static final int FID = 49; public static final int GLOBAL_VARIABLE = 50; public static final int INSTANCE_VARIABLE = 51; public static final int CONSTANT = 52; public static final int CLASS_VARIABLE = 53; // Literals public static final int INTEGER = 54; public static final int FLOAT = 55; // Punctuators public static final int STRING_CONTENT = 56; public static final int STRING_BEG = 57; public static final int STRING_END = 58; public static final int STRING_DBEG = 59; public static final int STRING_DVAR = 60; public static final int XSTRING_BEG = 61; public static final int REGEXP_BEG = 62; public static final int REGEXP_END = 63; public static final int WORDS_BEG = 64; public static final int QWORDS_BEG = 65; public static final int BACK_REF = 66; public static final int BACK_REF2 = 67; public static final int NTH_REF = 68; public static final int UPLUS = 69; public static final int UMINUS = 70; public static final int UMINUS_NUM = 71; public static final int POW = 72; public static final int CMP = 73; public static final int EQ = 74; public static final int EQQ = 75; public static final int NEQ = 76; public static final int GEQ = 77; public static final int LEQ = 78; public static final int ANDOP = 79; public static final int OROP = 80; public static final int MATCH = 81; public static final int NMATCH = 82; public static final int DOT = 83; public static final int DOT2 = 84; public static final int DOT3 = 85; public static final int AREF = 86; public static final int LSHFT = 87; public static final int RSHFT = 88; public static final int COLON2 = 89; public static final int COLON3 = 90; public static final int OP_ASGN = 91; public static final int ASSOC = 92; public static final int LPAREN = 93; public static final int LPAREN2 = 94; public static final int RPAREN = 95; public static final int LPAREN_ARG = 96; public static final int LBRACK = 97; public static final int RBRACK = 98; public static final int LBRACE = 99; public static final int LBRACE_ARG = 100; public static final int STAR = 101; public static final int STAR2 = 102; public static final int AMPER = 103; public static final int AMPER2 = 104; // Identifiers public static final int SYMBOL = 105; // Punctuators public static final int TILDE = 106; public static final int PERCENT = 107; public static final int DIVIDE = 108; public static final int PLUS = 109; public static final int MINUS = 110; public static final int LT = 111; public static final int GT = 112; public static final int CARET = 113; public static final int BANG = 114; public static final int LCURLY = 115; public static final int RCURLY = 116; public static final int PIPE = 117; public static final int ASET = 118; public static final int COLON = 119; public static final int COMMA = 120; public static final int NEWLINE = 121; // Comments public static final int TASK_TAG = 122; public static final int SINGLE_LINE_COMMENT = 123; public static final int MULTI_LINE_COMMENT = 124; // Literals public static final int STRING = 125; public static final int REGEXP = 126; public static final int COMMAND = 127; public static final int CHARACTER = RubyTokenScanner.CHARACTER; // 128 public static final int TOKEN_TYPES_LENGTH = 128; protected RubyTokenTypes() { } public static String getName(int type) { switch (type) { case ERROR: return "ERROR"; case CLASS: return "CLASS"; case MODULE: return "CLASS"; case DEF: return "DEF"; case UNDEF: return "UNDEF"; case BEGIN: return "BEGIN"; case RESCUE: return "RESCUE"; case ENSURE: return "ENSURE"; case END: return "END"; case IF: return "IF"; case UNLESS: return "UNLESS"; case THEN: return "THEN"; case ELSEIF: return "ELSEIF"; case ELSE: return "ELSE"; case CASE: return "CASE"; case WHEN: return "WHEN"; case WHILE: return "WHILE"; case UNTIL: return "UNTIL"; case FOR: return "FOR"; case BREAK: return "BREAK"; case NEXT: return "NEXT"; case REDO: return "REDO"; case RETRY: return "RETRY"; case IN: return "IN"; case DO: return "DO"; case DO_COND: return "DO_COND"; case DO_BLOCK: return "DO_BLOCK"; case RETURN: return "RETURN"; case YIELD: return "YIELD"; case SUPER: return "SUPER"; case SELF: return "SELF"; case NIL: return "NIL"; case TRUE: return "TRUE"; case FALSE: return "FALSE"; case AND: return "AND"; case OR: return "OR"; case NOT: return "NOT"; case IF_MOD: return "IF_MOD"; case UNLESS_MOD: return "UNLESS_MOD"; case WHILE_MOD: return "WHILE_MOD"; case UNTIL_MOD: return "UNTIL_MOD"; case RESCUE_MOD: return "RESCUE_MOD"; case ALIAS: return "ALIAS"; case DEFINED: return "DEFINED"; case L_BEGIN: return "L_BEGIN"; case L_END: return "L_END"; case __LINE__: return "__LINE__"; case __FILE__: return "__FILE__"; case IDENTIFIER: return "IDENTIFIER"; case FID: return "FID"; case GLOBAL_VARIABLE: return "GLOBAL_VARIABLE"; case INSTANCE_VARIABLE: return "INTANCE_VARIABLE"; case CONSTANT: return "CONSTANT"; case CLASS_VARIABLE: return "CLASS_VARIABLE"; case INTEGER: return "INTEGER"; case FLOAT: return "FLOAT"; case STRING_CONTENT: return "STRING_CONTENT"; case STRING_BEG: return "STRING_BEG"; case STRING_END: return "STRING_END"; case STRING_DBEG: return "STRING_DBEG"; case STRING_DVAR: return "STRING_DVAR"; case XSTRING_BEG: return "XSTRING_BEG"; case REGEXP_BEG: return "REGEXP_BEG"; case REGEXP_END: return "REGEXP_END"; case WORDS_BEG: return "WORDS_BEG"; case QWORDS_BEG: return "QWORDS_BEG"; case BACK_REF: return "BACK_REF"; case BACK_REF2: return "BACK_REF2"; case NTH_REF: return "NTH_REF"; case UPLUS: return "UPLUS"; case UMINUS: return "UMINUS"; case UMINUS_NUM: return "UMINUS_NUM"; case POW: return "POW"; case CMP: return "CMP"; case EQ: return "EQ"; case EQQ: return "EQQ"; case NEQ: return "NEQ"; case GEQ: return "GEQ"; case LEQ: return "LEQ"; case ANDOP: return "ANDOP"; case OROP: return "OROP"; case MATCH: return "MATCH"; case NMATCH: return "NMATCH"; case DOT: return "DOT"; case DOT2: return "DOT2"; case DOT3: return "DOT3"; case AREF: return "AREF"; case LSHFT: return "LSHFT"; case RSHFT: return "RSHFT"; case COLON2: return "COLON2"; case COLON3: return "COLON3"; case OP_ASGN: return "OP_ASGN"; case ASSOC: return "ASSOC"; case LPAREN: return "LPAREN"; case LPAREN2: return "LPAREN2"; case RPAREN: return "RPAREN"; case LPAREN_ARG: return "LPAREN_ARG"; case LBRACK: return "LBRACK"; case RBRACK: return "RBRACK"; case LBRACE: return "LBRACE"; case LBRACE_ARG: return "LBRACE_ARG"; case STAR: return "STAR"; case STAR2: return "STAR2"; case AMPER: return "AMPER"; case AMPER2: return "AMPER2"; case SYMBOL: return "SYMBOL"; case TILDE: return "TILDE"; case PERCENT: return "PERCENT"; case DIVIDE: return "DIVIDE"; case PLUS: return "PLUS"; case MINUS: return "MINUS"; case LT: return "LT"; case GT: return "GT"; case CARET: return "CARET"; case BANG: return "BANG"; case LCURLY: return "LCURLY"; case RCURLY: return "RCURLY"; case PIPE: return "PIPE"; case ASET: return "ASET"; case COMMA: return "COMMA"; case COLON: return "COLON"; case NEWLINE: return "NEWLINE"; case TASK_TAG: return "TASK_TAG"; case SINGLE_LINE_COMMENT: return "SINGLE_LINE_COMMENT"; case MULTI_LINE_COMMENT: return "MULTI_LINE_COMMENT"; case STRING: return "STRING"; case REGEXP: return "REGULAR_EXPRESSION"; case COMMAND: return "COMMAND"; case CHARACTER: return "CHARACTER"; default: return "<unknown>"; //$NON-NLS-1$ } } public static int getOurTokenType(int jrubyTokenType) { switch (jrubyTokenType) { case Tokens.yyErrorCode: return ERROR; case Tokens.kCLASS: return CLASS; case Tokens.kMODULE: return MODULE; case Tokens.kDEF: return DEF; case Tokens.kUNDEF: return UNDEF; case Tokens.kBEGIN: return BEGIN; case Tokens.kRESCUE: return RESCUE; case Tokens.kENSURE: return ENSURE; case Tokens.kEND: return END; case Tokens.kIF: return IF; case Tokens.kUNLESS: return UNLESS; case Tokens.kTHEN: return THEN; case Tokens.kELSIF: return ELSEIF; case Tokens.kELSE: return ELSE; case Tokens.kCASE: return CASE; case Tokens.kWHEN: return WHEN; case Tokens.kWHILE: return WHILE; case Tokens.kUNTIL: return UNTIL; case Tokens.kFOR: return FOR; case Tokens.kBREAK: return BREAK; case Tokens.kNEXT: return NEXT; case Tokens.kREDO: return REDO; case Tokens.kRETRY: return RETRY; case Tokens.kIN: return IN; case Tokens.kDO: return DO; case Tokens.kDO_COND: return DO_COND; case Tokens.kDO_BLOCK: return DO_BLOCK; case Tokens.kRETURN: return RETURN; case Tokens.kYIELD: return YIELD; case Tokens.kSUPER: return SUPER; case Tokens.kSELF: return SELF; case Tokens.kNIL: return NIL; case Tokens.kTRUE: return TRUE; case Tokens.kFALSE: return FALSE; case Tokens.kAND: return AND; case Tokens.kOR: return OR; case Tokens.kNOT: return NOT; case Tokens.kIF_MOD: return IF_MOD; case Tokens.kUNLESS_MOD: return UNLESS_MOD; case Tokens.kWHILE_MOD: return WHILE_MOD; case Tokens.kUNTIL_MOD: return UNTIL_MOD; case Tokens.kRESCUE_MOD: return RESCUE_MOD; case Tokens.kALIAS: return ALIAS; case Tokens.kDEFINED: return DEFINED; case Tokens.klBEGIN: return L_BEGIN; case Tokens.klEND: return L_END; case Tokens.k__LINE__: return __LINE__; case Tokens.k__FILE__: return __FILE__; case Tokens.tIDENTIFIER: return IDENTIFIER; case Tokens.tFID: // methods ending in '!' or '?' return FID; case Tokens.tGVAR: return GLOBAL_VARIABLE; case Tokens.tIVAR: return INSTANCE_VARIABLE; case Tokens.tCONSTANT: return CONSTANT; case Tokens.tCVAR: return CLASS_VARIABLE; case Tokens.tINTEGER: return INTEGER; case Tokens.tFLOAT: return FLOAT; case Tokens.tSTRING_CONTENT: return STRING_CONTENT; case Tokens.tSTRING_BEG: return STRING_BEG; case Tokens.tSTRING_END: return STRING_END; case Tokens.tSTRING_DBEG: return STRING_DBEG; case Tokens.tSTRING_DVAR: return STRING_DVAR; case Tokens.tREGEXP_BEG: return REGEXP_BEG; case Tokens.tREGEXP_END: return REGEXP_END; case Tokens.tWORDS_BEG: return WORDS_BEG; case Tokens.tQWORDS_BEG: return QWORDS_BEG; case Tokens.tBACK_REF: return BACK_REF; case Tokens.tBACK_REF2: return BACK_REF2; case Tokens.tNTH_REF: return NTH_REF; case Tokens.tUPLUS: return UPLUS; case Tokens.tUMINUS: return UMINUS; case Tokens.tUMINUS_NUM: return UMINUS_NUM; case Tokens.tPOW: return POW; case Tokens.tCMP: return CMP; case Tokens.tEQ: case 61: return EQ; case Tokens.tEQQ: return EQQ; case Tokens.tNEQ: return NEQ; case Tokens.tGEQ: return GEQ; case Tokens.tLEQ: return LEQ; case Tokens.tANDOP: return ANDOP; case Tokens.tOROP: return OROP; case Tokens.tMATCH: return MATCH; case Tokens.tNMATCH: return NMATCH; case Tokens.tDOT: return DOT; case Tokens.tDOT2: return DOT2; case Tokens.tDOT3: return DOT3; case Tokens.tAREF: return AREF; case Tokens.tASET: return ASET; case Tokens.tLSHFT: return LSHFT; case Tokens.tRSHFT: return RSHFT; case Tokens.tCOLON2: return COLON2; case Tokens.tCOLON3: return COLON3; case Tokens.tOP_ASGN: return OP_ASGN; case Tokens.tASSOC: return ASSOC; case Tokens.tLPAREN: return LPAREN; case Tokens.tLPAREN2: return LPAREN2; case Tokens.tRPAREN: return RPAREN; case Tokens.tLPAREN_ARG: return LPAREN_ARG; case Tokens.tLBRACK: return LBRACK; case Tokens.tRBRACK: return RBRACK; case Tokens.tLBRACE: return LBRACE; case Tokens.tLBRACE_ARG: return LBRACE_ARG; case Tokens.tSTAR: return STAR; case Tokens.tSTAR2: return STAR2; case Tokens.tAMPER: return AMPER; case Tokens.tAMPER2: return AMPER2; case Tokens.tSYMBEG: return SYMBOL; case Tokens.tTILDE: return TILDE; case Tokens.tPERCENT: return PERCENT; case Tokens.tDIVIDE: return DIVIDE; case Tokens.tPLUS: return PLUS; case Tokens.tMINUS: return MINUS; case Tokens.tLT: return LT; case Tokens.tGT: return GT; case Tokens.tCARET: return CARET; case Tokens.tBANG: return BANG; case Tokens.tLCURLY: return LCURLY; case Tokens.tRCURLY: return RCURLY; case Tokens.tPIPE: return PIPE; case 10: return NEWLINE; case 44: return COMMA; case 58: return COLON; case TASK_TAG: return TASK_TAG; case SINGLE_LINE_COMMENT: return SINGLE_LINE_COMMENT; case MULTI_LINE_COMMENT: return MULTI_LINE_COMMENT; case STRING: return STRING; case REGEXP: return REGEXP; case COMMAND: return COMMAND; case CHARACTER: return CHARACTER; default: return -1; } } /** * getIntValue * * @param name * @return int */ public static int getIntValue(String name) { Class c = RubyTokenTypes.class; int result = -1; try { Field f = c.getField(name); result = f.getInt(c); } // fail silently catch (SecurityException e) { } catch (NoSuchFieldException e) { } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } return result; } }