ext/ripper/eventids2.c

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

Generated on 19 Jul 2016 for Ruby by  doxygen 1.4.7