00001 #define tIGNORED_NL (tLAST_TOKEN + 1)
00002 #define tCOMMENT (tLAST_TOKEN + 2)
00003 #define tEMBDOC_BEG (tLAST_TOKEN + 3)
00004 #define tEMBDOC (tLAST_TOKEN + 4)
00005 #define tEMBDOC_END (tLAST_TOKEN + 5)
00006 #define tSP (tLAST_TOKEN + 6)
00007 #define tHEREDOC_BEG (tLAST_TOKEN + 7)
00008 #define tHEREDOC_END (tLAST_TOKEN + 8)
00009 #define k__END__ (tLAST_TOKEN + 9)
00010
00011 static ID ripper_id_backref;
00012 static ID ripper_id_backtick;
00013 static ID ripper_id_comma;
00014 static ID ripper_id_const;
00015 static ID ripper_id_cvar;
00016 static ID ripper_id_embexpr_beg;
00017 static ID ripper_id_embexpr_end;
00018 static ID ripper_id_embvar;
00019 static ID ripper_id_float;
00020 static ID ripper_id_gvar;
00021 static ID ripper_id_ident;
00022 static ID ripper_id_int;
00023 static ID ripper_id_ivar;
00024 static ID ripper_id_kw;
00025 static ID ripper_id_lbrace;
00026 static ID ripper_id_lbracket;
00027 static ID ripper_id_lparen;
00028 static ID ripper_id_nl;
00029 static ID ripper_id_op;
00030 static ID ripper_id_period;
00031 static ID ripper_id_rbrace;
00032 static ID ripper_id_rbracket;
00033 static ID ripper_id_rparen;
00034 static ID ripper_id_semicolon;
00035 static ID ripper_id_symbeg;
00036 static ID ripper_id_tstring_beg;
00037 static ID ripper_id_tstring_content;
00038 static ID ripper_id_tstring_end;
00039 static ID ripper_id_words_beg;
00040 static ID ripper_id_qwords_beg;
00041 static ID ripper_id_words_sep;
00042 static ID ripper_id_regexp_beg;
00043 static ID ripper_id_regexp_end;
00044 static ID ripper_id_label;
00045 static ID ripper_id_tlambda;
00046 static ID ripper_id_tlambeg;
00047
00048 static ID ripper_id_ignored_nl;
00049 static ID ripper_id_comment;
00050 static ID ripper_id_embdoc_beg;
00051 static ID ripper_id_embdoc;
00052 static ID ripper_id_embdoc_end;
00053 static ID ripper_id_sp;
00054 static ID ripper_id_heredoc_beg;
00055 static ID ripper_id_heredoc_end;
00056 static ID ripper_id___end__;
00057 static ID ripper_id_CHAR;
00058
00059 #include "eventids2table.c"
00060
00061 static void
00062 ripper_init_eventids2(VALUE self)
00063 {
00064 ripper_id_backref = rb_intern_const("on_backref");
00065 ripper_id_backtick = rb_intern_const("on_backtick");
00066 ripper_id_comma = rb_intern_const("on_comma");
00067 ripper_id_const = rb_intern_const("on_const");
00068 ripper_id_cvar = rb_intern_const("on_cvar");
00069 ripper_id_embexpr_beg = rb_intern_const("on_embexpr_beg");
00070 ripper_id_embexpr_end = rb_intern_const("on_embexpr_end");
00071 ripper_id_embvar = rb_intern_const("on_embvar");
00072 ripper_id_float = rb_intern_const("on_float");
00073 ripper_id_gvar = rb_intern_const("on_gvar");
00074 ripper_id_ident = rb_intern_const("on_ident");
00075 ripper_id_int = rb_intern_const("on_int");
00076 ripper_id_ivar = rb_intern_const("on_ivar");
00077 ripper_id_kw = rb_intern_const("on_kw");
00078 ripper_id_lbrace = rb_intern_const("on_lbrace");
00079 ripper_id_lbracket = rb_intern_const("on_lbracket");
00080 ripper_id_lparen = rb_intern_const("on_lparen");
00081 ripper_id_nl = rb_intern_const("on_nl");
00082 ripper_id_op = rb_intern_const("on_op");
00083 ripper_id_period = rb_intern_const("on_period");
00084 ripper_id_rbrace = rb_intern_const("on_rbrace");
00085 ripper_id_rbracket = rb_intern_const("on_rbracket");
00086 ripper_id_rparen = rb_intern_const("on_rparen");
00087 ripper_id_semicolon = rb_intern_const("on_semicolon");
00088 ripper_id_symbeg = rb_intern_const("on_symbeg");
00089 ripper_id_tstring_beg = rb_intern_const("on_tstring_beg");
00090 ripper_id_tstring_content = rb_intern_const("on_tstring_content");
00091 ripper_id_tstring_end = rb_intern_const("on_tstring_end");
00092 ripper_id_words_beg = rb_intern_const("on_words_beg");
00093 ripper_id_qwords_beg = rb_intern_const("on_qwords_beg");
00094 ripper_id_words_sep = rb_intern_const("on_words_sep");
00095 ripper_id_regexp_beg = rb_intern_const("on_regexp_beg");
00096 ripper_id_regexp_end = rb_intern_const("on_regexp_end");
00097 ripper_id_label = rb_intern_const("on_label");
00098 ripper_id_tlambda = rb_intern_const("on_tlambda");
00099 ripper_id_tlambeg = rb_intern_const("on_tlambeg");
00100
00101 ripper_id_ignored_nl = rb_intern_const("on_ignored_nl");
00102 ripper_id_comment = rb_intern_const("on_comment");
00103 ripper_id_embdoc_beg = rb_intern_const("on_embdoc_beg");
00104 ripper_id_embdoc = rb_intern_const("on_embdoc");
00105 ripper_id_embdoc_end = rb_intern_const("on_embdoc_end");
00106 ripper_id_sp = rb_intern_const("on_sp");
00107 ripper_id_heredoc_beg = rb_intern_const("on_heredoc_beg");
00108 ripper_id_heredoc_end = rb_intern_const("on_heredoc_end");
00109 ripper_id___end__ = rb_intern_const("on___end__");
00110 ripper_id_CHAR = rb_intern_const("on_CHAR");
00111
00112 ripper_init_eventids2_table(self);
00113 }
00114
00115 static const struct token_assoc {
00116 int token;
00117 ID *id;
00118 } token_to_eventid[] = {
00119 {' ', &ripper_id_words_sep},
00120 {'!', &ripper_id_op},
00121 {'%', &ripper_id_op},
00122 {'&', &ripper_id_op},
00123 {'*', &ripper_id_op},
00124 {'+', &ripper_id_op},
00125 {'-', &ripper_id_op},
00126 {'/', &ripper_id_op},
00127 {'<', &ripper_id_op},
00128 {'=', &ripper_id_op},
00129 {'>', &ripper_id_op},
00130 {'?', &ripper_id_op},
00131 {'^', &ripper_id_op},
00132 {'|', &ripper_id_op},
00133 {'~', &ripper_id_op},
00134 {':', &ripper_id_op},
00135 {',', &ripper_id_comma},
00136 {'.', &ripper_id_period},
00137 {';', &ripper_id_semicolon},
00138 {'`', &ripper_id_backtick},
00139 {'\n', &ripper_id_nl},
00140 {keyword_alias, &ripper_id_kw},
00141 {keyword_and, &ripper_id_kw},
00142 {keyword_begin, &ripper_id_kw},
00143 {keyword_break, &ripper_id_kw},
00144 {keyword_case, &ripper_id_kw},
00145 {keyword_class, &ripper_id_kw},
00146 {keyword_def, &ripper_id_kw},
00147 {keyword_defined, &ripper_id_kw},
00148 {keyword_do, &ripper_id_kw},
00149 {keyword_do_block, &ripper_id_kw},
00150 {keyword_do_cond, &ripper_id_kw},
00151 {keyword_else, &ripper_id_kw},
00152 {keyword_elsif, &ripper_id_kw},
00153 {keyword_end, &ripper_id_kw},
00154 {keyword_ensure, &ripper_id_kw},
00155 {keyword_false, &ripper_id_kw},
00156 {keyword_for, &ripper_id_kw},
00157 {keyword_if, &ripper_id_kw},
00158 {modifier_if, &ripper_id_kw},
00159 {keyword_in, &ripper_id_kw},
00160 {keyword_module, &ripper_id_kw},
00161 {keyword_next, &ripper_id_kw},
00162 {keyword_nil, &ripper_id_kw},
00163 {keyword_not, &ripper_id_kw},
00164 {keyword_or, &ripper_id_kw},
00165 {keyword_redo, &ripper_id_kw},
00166 {keyword_rescue, &ripper_id_kw},
00167 {modifier_rescue, &ripper_id_kw},
00168 {keyword_retry, &ripper_id_kw},
00169 {keyword_return, &ripper_id_kw},
00170 {keyword_self, &ripper_id_kw},
00171 {keyword_super, &ripper_id_kw},
00172 {keyword_then, &ripper_id_kw},
00173 {keyword_true, &ripper_id_kw},
00174 {keyword_undef, &ripper_id_kw},
00175 {keyword_unless, &ripper_id_kw},
00176 {modifier_unless, &ripper_id_kw},
00177 {keyword_until, &ripper_id_kw},
00178 {modifier_until, &ripper_id_kw},
00179 {keyword_when, &ripper_id_kw},
00180 {keyword_while, &ripper_id_kw},
00181 {modifier_while, &ripper_id_kw},
00182 {keyword_yield, &ripper_id_kw},
00183 {keyword__FILE__, &ripper_id_kw},
00184 {keyword__LINE__, &ripper_id_kw},
00185 {keyword__ENCODING__, &ripper_id_kw},
00186 {keyword_BEGIN, &ripper_id_kw},
00187 {keyword_END, &ripper_id_kw},
00188 {keyword_do_LAMBDA, &ripper_id_kw},
00189 {tAMPER, &ripper_id_op},
00190 {tANDOP, &ripper_id_op},
00191 {tAREF, &ripper_id_op},
00192 {tASET, &ripper_id_op},
00193 {tASSOC, &ripper_id_op},
00194 {tBACK_REF, &ripper_id_backref},
00195 {tCHAR, &ripper_id_CHAR},
00196 {tCMP, &ripper_id_op},
00197 {tCOLON2, &ripper_id_op},
00198 {tCOLON3, &ripper_id_op},
00199 {tCONSTANT, &ripper_id_const},
00200 {tCVAR, &ripper_id_cvar},
00201 {tDOT2, &ripper_id_op},
00202 {tDOT3, &ripper_id_op},
00203 {tEQ, &ripper_id_op},
00204 {tEQQ, &ripper_id_op},
00205 {tFID, &ripper_id_ident},
00206 {tFLOAT, &ripper_id_float},
00207 {tGEQ, &ripper_id_op},
00208 {tGVAR, &ripper_id_gvar},
00209 {tIDENTIFIER, &ripper_id_ident},
00210 {tINTEGER, &ripper_id_int},
00211 {tIVAR, &ripper_id_ivar},
00212 {tLBRACE, &ripper_id_lbrace},
00213 {tLBRACE_ARG, &ripper_id_lbrace},
00214 {'{', &ripper_id_lbrace},
00215 {'}', &ripper_id_rbrace},
00216 {tLBRACK, &ripper_id_lbracket},
00217 {'[', &ripper_id_lbracket},
00218 {']', &ripper_id_rbracket},
00219 {tLEQ, &ripper_id_op},
00220 {tLPAREN, &ripper_id_lparen},
00221 {tLPAREN_ARG, &ripper_id_lparen},
00222 {'(', &ripper_id_lparen},
00223 {')', &ripper_id_rparen},
00224 {tLSHFT, &ripper_id_op},
00225 {tMATCH, &ripper_id_op},
00226 {tNEQ, &ripper_id_op},
00227 {tNMATCH, &ripper_id_op},
00228 {tNTH_REF, &ripper_id_backref},
00229 {tOP_ASGN, &ripper_id_op},
00230 {tOROP, &ripper_id_op},
00231 {tPOW, &ripper_id_op},
00232 {tQWORDS_BEG, &ripper_id_qwords_beg},
00233 {tREGEXP_BEG, &ripper_id_regexp_beg},
00234 {tREGEXP_END, &ripper_id_regexp_end},
00235 {tRPAREN, &ripper_id_rparen},
00236 {tRSHFT, &ripper_id_op},
00237 {tSTAR, &ripper_id_op},
00238 {tSTRING_BEG, &ripper_id_tstring_beg},
00239 {tSTRING_CONTENT, &ripper_id_tstring_content},
00240 {tSTRING_DBEG, &ripper_id_embexpr_beg},
00241 {tSTRING_DVAR, &ripper_id_embvar},
00242 {tSTRING_END, &ripper_id_tstring_end},
00243 {tSYMBEG, &ripper_id_symbeg},
00244 {tUMINUS, &ripper_id_op},
00245 {tUMINUS_NUM, &ripper_id_op},
00246 {tUPLUS, &ripper_id_op},
00247 {tWORDS_BEG, &ripper_id_words_beg},
00248 {tXSTRING_BEG, &ripper_id_backtick},
00249 {tLABEL, &ripper_id_label},
00250 {tLAMBDA, &ripper_id_tlambda},
00251 {tLAMBEG, &ripper_id_tlambeg},
00252
00253
00254 {tIGNORED_NL, &ripper_id_ignored_nl},
00255 {tCOMMENT, &ripper_id_comment},
00256 {tEMBDOC_BEG, &ripper_id_embdoc_beg},
00257 {tEMBDOC, &ripper_id_embdoc},
00258 {tEMBDOC_END, &ripper_id_embdoc_end},
00259 {tSP, &ripper_id_sp},
00260 {tHEREDOC_BEG, &ripper_id_heredoc_beg},
00261 {tHEREDOC_END, &ripper_id_heredoc_end},
00262 {k__END__, &ripper_id___end__},
00263 {0, NULL}
00264 };
00265
00266 static ID
00267 ripper_token2eventid(int tok)
00268 {
00269 const struct token_assoc *a;
00270
00271 for (a = token_to_eventid; a->id != NULL; a++) {
00272 if (a->token == tok)
00273 return *a->id;
00274 }
00275 if (tok < 256) {
00276 return ripper_id_CHAR;
00277 }
00278 rb_raise(rb_eRuntimeError, "[Ripper FATAL] unknown token %d", tok);
00279 }
00280