summaryrefslogtreecommitdiff
path: root/trunk/ext/ripper/eventids2.c
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/ext/ripper/eventids2.c')
-rw-r--r--trunk/ext/ripper/eventids2.c277
1 files changed, 277 insertions, 0 deletions
diff --git a/trunk/ext/ripper/eventids2.c b/trunk/ext/ripper/eventids2.c
new file mode 100644
index 0000000000..629381448a
--- /dev/null
+++ b/trunk/ext/ripper/eventids2.c
@@ -0,0 +1,277 @@
+#define tIGNORED_NL (tLAST_TOKEN + 1)
+#define tCOMMENT (tLAST_TOKEN + 2)
+#define tEMBDOC_BEG (tLAST_TOKEN + 3)
+#define tEMBDOC (tLAST_TOKEN + 4)
+#define tEMBDOC_END (tLAST_TOKEN + 5)
+#define tSP (tLAST_TOKEN + 6)
+#define tHEREDOC_BEG (tLAST_TOKEN + 7)
+#define tHEREDOC_END (tLAST_TOKEN + 8)
+#define k__END__ (tLAST_TOKEN + 9)
+
+static ID ripper_id_backref;
+static ID ripper_id_backtick;
+static ID ripper_id_comma;
+static ID ripper_id_const;
+static ID ripper_id_cvar;
+static ID ripper_id_embexpr_beg;
+static ID ripper_id_embexpr_end;
+static ID ripper_id_embvar;
+static ID ripper_id_float;
+static ID ripper_id_gvar;
+static ID ripper_id_ident;
+static ID ripper_id_int;
+static ID ripper_id_ivar;
+static ID ripper_id_kw;
+static ID ripper_id_lbrace;
+static ID ripper_id_lbracket;
+static ID ripper_id_lparen;
+static ID ripper_id_nl;
+static ID ripper_id_op;
+static ID ripper_id_period;
+static ID ripper_id_rbrace;
+static ID ripper_id_rbracket;
+static ID ripper_id_rparen;
+static ID ripper_id_semicolon;
+static ID ripper_id_symbeg;
+static ID ripper_id_tstring_beg;
+static ID ripper_id_tstring_content;
+static ID ripper_id_tstring_end;
+static ID ripper_id_words_beg;
+static ID ripper_id_qwords_beg;
+static ID ripper_id_words_sep;
+static ID ripper_id_regexp_beg;
+static ID ripper_id_regexp_end;
+static ID ripper_id_label;
+static ID ripper_id_tlambda;
+static ID ripper_id_tlambeg;
+
+static ID ripper_id_ignored_nl;
+static ID ripper_id_comment;
+static ID ripper_id_embdoc_beg;
+static ID ripper_id_embdoc;
+static ID ripper_id_embdoc_end;
+static ID ripper_id_sp;
+static ID ripper_id_heredoc_beg;
+static ID ripper_id_heredoc_end;
+static ID ripper_id___end__;
+static ID ripper_id_CHAR;
+
+#include "eventids2table.c"
+
+static void
+ripper_init_eventids2(VALUE self)
+{
+ ripper_id_backref = rb_intern("on_backref");
+ ripper_id_backtick = rb_intern("on_backtick");
+ ripper_id_comma = rb_intern("on_comma");
+ ripper_id_const = rb_intern("on_const");
+ ripper_id_cvar = rb_intern("on_cvar");
+ ripper_id_embexpr_beg = rb_intern("on_embexpr_beg");
+ ripper_id_embexpr_end = rb_intern("on_embexpr_end");
+ ripper_id_embvar = rb_intern("on_embvar");
+ ripper_id_float = rb_intern("on_float");
+ ripper_id_gvar = rb_intern("on_gvar");
+ ripper_id_ident = rb_intern("on_ident");
+ ripper_id_int = rb_intern("on_int");
+ ripper_id_ivar = rb_intern("on_ivar");
+ ripper_id_kw = rb_intern("on_kw");
+ ripper_id_lbrace = rb_intern("on_lbrace");
+ ripper_id_lbracket = rb_intern("on_lbracket");
+ ripper_id_lparen = rb_intern("on_lparen");
+ ripper_id_nl = rb_intern("on_nl");
+ ripper_id_op = rb_intern("on_op");
+ ripper_id_period = rb_intern("on_period");
+ ripper_id_rbrace = rb_intern("on_rbrace");
+ ripper_id_rbracket = rb_intern("on_rbracket");
+ ripper_id_rparen = rb_intern("on_rparen");
+ ripper_id_semicolon = rb_intern("on_semicolon");
+ ripper_id_symbeg = rb_intern("on_symbeg");
+ ripper_id_tstring_beg = rb_intern("on_tstring_beg");
+ ripper_id_tstring_content = rb_intern("on_tstring_content");
+ ripper_id_tstring_end = rb_intern("on_tstring_end");
+ ripper_id_words_beg = rb_intern("on_words_beg");
+ ripper_id_qwords_beg = rb_intern("on_qwords_beg");
+ ripper_id_words_sep = rb_intern("on_words_sep");
+ ripper_id_regexp_beg = rb_intern("on_regexp_beg");
+ ripper_id_regexp_end = rb_intern("on_regexp_end");
+ ripper_id_label = rb_intern("on_label");
+ ripper_id_tlambda = rb_intern("on_tlambda");
+ ripper_id_tlambeg = rb_intern("on_tlambeg");
+
+ ripper_id_ignored_nl = rb_intern("on_ignored_nl");
+ ripper_id_comment = rb_intern("on_comment");
+ ripper_id_embdoc_beg = rb_intern("on_embdoc_beg");
+ ripper_id_embdoc = rb_intern("on_embdoc");
+ ripper_id_embdoc_end = rb_intern("on_embdoc_end");
+ ripper_id_sp = rb_intern("on_sp");
+ ripper_id_heredoc_beg = rb_intern("on_heredoc_beg");
+ ripper_id_heredoc_end = rb_intern("on_heredoc_end");
+ ripper_id___end__ = rb_intern("on___end__");
+ ripper_id_CHAR = rb_intern("on_CHAR");
+
+ ripper_init_eventids2_table(self);
+}
+
+static const struct token_assoc {
+ int token;
+ ID *id;
+} token_to_eventid[] = {
+ {' ', &ripper_id_words_sep},
+ {'!', &ripper_id_op},
+ {'%', &ripper_id_op},
+ {'&', &ripper_id_op},
+ {'*', &ripper_id_op},
+ {'+', &ripper_id_op},
+ {'-', &ripper_id_op},
+ {'/', &ripper_id_op},
+ {'<', &ripper_id_op},
+ {'=', &ripper_id_op},
+ {'>', &ripper_id_op},
+ {'?', &ripper_id_op},
+ {'^', &ripper_id_op},
+ {'|', &ripper_id_op},
+ {'~', &ripper_id_op},
+ {':', &ripper_id_op},
+ {',', &ripper_id_comma},
+ {'.', &ripper_id_period},
+ {';', &ripper_id_semicolon},
+ {'`', &ripper_id_backtick},
+ {'\n', &ripper_id_nl},
+ {keyword_alias, &ripper_id_kw},
+ {keyword_and, &ripper_id_kw},
+ {keyword_begin, &ripper_id_kw},
+ {keyword_break, &ripper_id_kw},
+ {keyword_case, &ripper_id_kw},
+ {keyword_class, &ripper_id_kw},
+ {keyword_def, &ripper_id_kw},
+ {keyword_defined, &ripper_id_kw},
+ {keyword_do, &ripper_id_kw},
+ {keyword_do_block, &ripper_id_kw},
+ {keyword_do_cond, &ripper_id_kw},
+ {keyword_else, &ripper_id_kw},
+ {keyword_elsif, &ripper_id_kw},
+ {keyword_end, &ripper_id_kw},
+ {keyword_ensure, &ripper_id_kw},
+ {keyword_false, &ripper_id_kw},
+ {keyword_for, &ripper_id_kw},
+ {keyword_if, &ripper_id_kw},
+ {modifier_if, &ripper_id_kw},
+ {keyword_in, &ripper_id_kw},
+ {keyword_module, &ripper_id_kw},
+ {keyword_next, &ripper_id_kw},
+ {keyword_nil, &ripper_id_kw},
+ {keyword_not, &ripper_id_kw},
+ {keyword_or, &ripper_id_kw},
+ {keyword_redo, &ripper_id_kw},
+ {keyword_rescue, &ripper_id_kw},
+ {modifier_rescue, &ripper_id_kw},
+ {keyword_retry, &ripper_id_kw},
+ {keyword_return, &ripper_id_kw},
+ {keyword_self, &ripper_id_kw},
+ {keyword_super, &ripper_id_kw},
+ {keyword_then, &ripper_id_kw},
+ {keyword_true, &ripper_id_kw},
+ {keyword_undef, &ripper_id_kw},
+ {keyword_unless, &ripper_id_kw},
+ {modifier_unless, &ripper_id_kw},
+ {keyword_until, &ripper_id_kw},
+ {modifier_until, &ripper_id_kw},
+ {keyword_when, &ripper_id_kw},
+ {keyword_while, &ripper_id_kw},
+ {modifier_while, &ripper_id_kw},
+ {keyword_yield, &ripper_id_kw},
+ {keyword__FILE__, &ripper_id_kw},
+ {keyword__LINE__, &ripper_id_kw},
+ {keyword_BEGIN, &ripper_id_kw},
+ {keyword_END, &ripper_id_kw},
+ {tAMPER, &ripper_id_op},
+ {tANDOP, &ripper_id_op},
+ {tAREF, &ripper_id_op},
+ {tASET, &ripper_id_op},
+ {tASSOC, &ripper_id_op},
+ {tBACK_REF, &ripper_id_backref},
+ {tCHAR, &ripper_id_CHAR},
+ {tCMP, &ripper_id_op},
+ {tCOLON2, &ripper_id_op},
+ {tCOLON3, &ripper_id_op},
+ {tCONSTANT, &ripper_id_const},
+ {tCVAR, &ripper_id_cvar},
+ {tDOT2, &ripper_id_op},
+ {tDOT3, &ripper_id_op},
+ {tEQ, &ripper_id_op},
+ {tEQQ, &ripper_id_op},
+ {tFID, &ripper_id_ident},
+ {tFLOAT, &ripper_id_float},
+ {tGEQ, &ripper_id_op},
+ {tGVAR, &ripper_id_gvar},
+ {tIDENTIFIER, &ripper_id_ident},
+ {tINTEGER, &ripper_id_int},
+ {tIVAR, &ripper_id_ivar},
+ {tLBRACE, &ripper_id_lbrace},
+ {tLBRACE_ARG, &ripper_id_lbrace},
+ {'{', &ripper_id_lbrace},
+ {'}', &ripper_id_rbrace},
+ {tLBRACK, &ripper_id_lbracket},
+ {'[', &ripper_id_lbracket},
+ {']', &ripper_id_rbracket},
+ {tLEQ, &ripper_id_op},
+ {tLPAREN, &ripper_id_lparen},
+ {tLPAREN_ARG, &ripper_id_lparen},
+ {'(', &ripper_id_lparen},
+ {')', &ripper_id_rparen},
+ {tLSHFT, &ripper_id_op},
+ {tMATCH, &ripper_id_op},
+ {tNEQ, &ripper_id_op},
+ {tNMATCH, &ripper_id_op},
+ {tNTH_REF, &ripper_id_backref},
+ {tOP_ASGN, &ripper_id_op},
+ {tOROP, &ripper_id_op},
+ {tPOW, &ripper_id_op},
+ {tQWORDS_BEG, &ripper_id_qwords_beg},
+ {tREGEXP_BEG, &ripper_id_regexp_beg},
+ {tREGEXP_END, &ripper_id_regexp_end},
+ {tRPAREN, &ripper_id_rparen},
+ {tRSHFT, &ripper_id_op},
+ {tSTAR, &ripper_id_op},
+ {tSTRING_BEG, &ripper_id_tstring_beg},
+ {tSTRING_CONTENT, &ripper_id_tstring_content},
+ {tSTRING_DBEG, &ripper_id_embexpr_beg},
+ {tSTRING_DVAR, &ripper_id_embvar},
+ {tSTRING_END, &ripper_id_tstring_end},
+ {tSYMBEG, &ripper_id_symbeg},
+ {tUMINUS, &ripper_id_op},
+ {tUMINUS_NUM, &ripper_id_op},
+ {tUPLUS, &ripper_id_op},
+ {tWORDS_BEG, &ripper_id_words_beg},
+ {tXSTRING_BEG, &ripper_id_backtick},
+ {tLABEL, &ripper_id_label},
+ {tLAMBDA, &ripper_id_tlambda},
+ {tLAMBEG, &ripper_id_tlambeg},
+
+ /* ripper specific tokens */
+ {tIGNORED_NL, &ripper_id_ignored_nl},
+ {tCOMMENT, &ripper_id_comment},
+ {tEMBDOC_BEG, &ripper_id_embdoc_beg},
+ {tEMBDOC, &ripper_id_embdoc},
+ {tEMBDOC_END, &ripper_id_embdoc_end},
+ {tSP, &ripper_id_sp},
+ {tHEREDOC_BEG, &ripper_id_heredoc_beg},
+ {tHEREDOC_END, &ripper_id_heredoc_end},
+ {k__END__, &ripper_id___end__},
+ {0, NULL}
+};
+
+static ID
+ripper_token2eventid(int tok)
+{
+ const struct token_assoc *a;
+
+ for (a = token_to_eventid; a->id != NULL; a++) {
+ if (a->token == tok)
+ return *a->id;
+ }
+ if (tok < 256) {
+ return ripper_id_CHAR;
+ }
+ rb_raise(rb_eRuntimeError, "[Ripper FATAL] unknown token %d", tok);
+}