Ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a25176072e02db9254f0e0c84c805cd)
eventids2.c
Go to the documentation of this file.
1enum {
10};
11
12typedef struct {
54
66
67static ripper_scanner_ids_t ripper_scanner_ids;
68
69#include "eventids2table.c"
70
71static void
72ripper_init_eventids2(void)
73{
74#define set_id2(name) ripper_scanner_ids.ripper_id_##name = rb_intern_const("on_"#name)
75 set_id2(backref);
76 set_id2(backtick);
77 set_id2(comma);
78 set_id2(const);
79 set_id2(cvar);
80 set_id2(embexpr_beg);
81 set_id2(embexpr_end);
82 set_id2(embvar);
83 set_id2(float);
84 set_id2(gvar);
85 set_id2(ident);
86 set_id2(imaginary);
87 set_id2(int);
88 set_id2(ivar);
89 set_id2(kw);
90 set_id2(lbrace);
91 set_id2(lbracket);
92 set_id2(lparen);
93 set_id2(nl);
94 set_id2(op);
95 set_id2(period);
96 set_id2(rbrace);
97 set_id2(rbracket);
98 set_id2(rparen);
99 set_id2(semicolon);
100 set_id2(symbeg);
101 set_id2(tstring_beg);
102 set_id2(tstring_content);
103 set_id2(tstring_end);
104 set_id2(words_beg);
105 set_id2(qwords_beg);
106 set_id2(qsymbols_beg);
107 set_id2(symbols_beg);
108 set_id2(words_sep);
109 set_id2(rational);
110 set_id2(regexp_beg);
111 set_id2(regexp_end);
112 set_id2(label);
113 set_id2(label_end);
114 set_id2(tlambda);
115 set_id2(tlambeg);
116
117 set_id2(ignored_nl);
118 set_id2(comment);
119 set_id2(embdoc_beg);
120 set_id2(embdoc);
121 set_id2(embdoc_end);
122 set_id2(sp);
123 set_id2(heredoc_beg);
124 set_id2(heredoc_end);
125 set_id2(__end__);
126 set_id2(CHAR);
127}
128
129STATIC_ASSERT(k__END___range, k__END__ < SHRT_MAX);
130STATIC_ASSERT(ripper_scanner_ids_size, sizeof(ripper_scanner_ids) < SHRT_MAX);
131
132static ID
133ripper_token2eventid(enum yytokentype tok)
134{
135#define O(member) (int)offsetof(ripper_scanner_ids_t, ripper_id_##member)+1
136 static const unsigned short offsets[] = {
137 [' '] = O(words_sep),
138 ['!'] = O(op),
139 ['%'] = O(op),
140 ['&'] = O(op),
141 ['*'] = O(op),
142 ['+'] = O(op),
143 ['-'] = O(op),
144 ['/'] = O(op),
145 ['<'] = O(op),
146 ['='] = O(op),
147 ['>'] = O(op),
148 ['?'] = O(op),
149 ['^'] = O(op),
150 ['|'] = O(op),
151 ['~'] = O(op),
152 [':'] = O(op),
153 [','] = O(comma),
154 ['.'] = O(period),
155 [';'] = O(semicolon),
156 ['`'] = O(backtick),
157 ['\n'] = O(nl),
158 [keyword_alias] = O(kw),
159 [keyword_and] = O(kw),
160 [keyword_begin] = O(kw),
161 [keyword_break] = O(kw),
162 [keyword_case] = O(kw),
163 [keyword_class] = O(kw),
164 [keyword_def] = O(kw),
165 [keyword_defined] = O(kw),
166 [keyword_do] = O(kw),
167 [keyword_do_block] = O(kw),
168 [keyword_do_cond] = O(kw),
169 [keyword_else] = O(kw),
170 [keyword_elsif] = O(kw),
171 [keyword_end] = O(kw),
172 [keyword_ensure] = O(kw),
173 [keyword_false] = O(kw),
174 [keyword_for] = O(kw),
175 [keyword_if] = O(kw),
176 [modifier_if] = O(kw),
177 [keyword_in] = O(kw),
178 [keyword_module] = O(kw),
179 [keyword_next] = O(kw),
180 [keyword_nil] = O(kw),
181 [keyword_not] = O(kw),
182 [keyword_or] = O(kw),
183 [keyword_redo] = O(kw),
184 [keyword_rescue] = O(kw),
185 [modifier_rescue] = O(kw),
186 [keyword_retry] = O(kw),
187 [keyword_return] = O(kw),
188 [keyword_self] = O(kw),
189 [keyword_super] = O(kw),
190 [keyword_then] = O(kw),
191 [keyword_true] = O(kw),
192 [keyword_undef] = O(kw),
193 [keyword_unless] = O(kw),
194 [modifier_unless] = O(kw),
195 [keyword_until] = O(kw),
196 [modifier_until] = O(kw),
197 [keyword_when] = O(kw),
198 [keyword_while] = O(kw),
199 [modifier_while] = O(kw),
200 [keyword_yield] = O(kw),
201 [keyword__FILE__] = O(kw),
202 [keyword__LINE__] = O(kw),
203 [keyword__ENCODING__] = O(kw),
204 [keyword_BEGIN] = O(kw),
205 [keyword_END] = O(kw),
206 [keyword_do_LAMBDA] = O(kw),
207 [tAMPER] = O(op),
208 [tANDOP] = O(op),
209 [tAREF] = O(op),
210 [tASET] = O(op),
211 [tASSOC] = O(op),
212 [tBACK_REF] = O(backref),
213 [tCHAR] = O(CHAR),
214 [tCMP] = O(op),
215 [tCOLON2] = O(op),
216 [tCOLON3] = O(op),
217 [tCONSTANT] = O(const),
218 [tCVAR] = O(cvar),
219 [tDOT2] = O(op),
220 [tDOT3] = O(op),
221 [tBDOT2] = O(op),
222 [tBDOT3] = O(op),
223 [tEQ] = O(op),
224 [tEQQ] = O(op),
225 [tFID] = O(ident),
226 [tFLOAT] = O(float),
227 [tGEQ] = O(op),
228 [tGVAR] = O(gvar),
229 [tIDENTIFIER] = O(ident),
230 [tIMAGINARY] = O(imaginary),
231 [tINTEGER] = O(int),
232 [tIVAR] = O(ivar),
233 [tLBRACE] = O(lbrace),
234 [tLBRACE_ARG] = O(lbrace),
235 ['{'] = O(lbrace),
236 ['}'] = O(rbrace),
237 [tLBRACK] = O(lbracket),
238 ['['] = O(lbracket),
239 [']'] = O(rbracket),
240 [tLEQ] = O(op),
241 [tLPAREN] = O(lparen),
242 [tLPAREN_ARG] = O(lparen),
243 ['('] = O(lparen),
244 [')'] = O(rparen),
245 [tLSHFT] = O(op),
246 [tMATCH] = O(op),
247 [tNEQ] = O(op),
248 [tNMATCH] = O(op),
249 [tNTH_REF] = O(backref),
250 [tOP_ASGN] = O(op),
251 [tOROP] = O(op),
252 [tPOW] = O(op),
253 [tQWORDS_BEG] = O(qwords_beg),
254 [tQSYMBOLS_BEG] = O(qsymbols_beg),
255 [tSYMBOLS_BEG] = O(symbols_beg),
256 [tRATIONAL] = O(rational),
257 [tREGEXP_BEG] = O(regexp_beg),
258 [tREGEXP_END] = O(regexp_end),
259 [tRPAREN] = O(rparen),
260 [tRSHFT] = O(op),
261 [tSTAR] = O(op),
262 [tDSTAR] = O(op),
263 [tANDDOT] = O(op),
264 [tSTRING_BEG] = O(tstring_beg),
265 [tSTRING_CONTENT] = O(tstring_content),
266 [tSTRING_DBEG] = O(embexpr_beg),
267 [tSTRING_DEND] = O(embexpr_end),
268 [tSTRING_DVAR] = O(embvar),
269 [tSTRING_END] = O(tstring_end),
270 [tSYMBEG] = O(symbeg),
271 [tUMINUS] = O(op),
272 [tUMINUS_NUM] = O(op),
273 [tUPLUS] = O(op),
274 [tWORDS_BEG] = O(words_beg),
275 [tXSTRING_BEG] = O(backtick),
276 [tLABEL] = O(label),
277 [tLABEL_END] = O(label_end),
278 [tLAMBDA] = O(tlambda),
279 [tLAMBEG] = O(tlambeg),
280
281 /* ripper specific tokens */
282 [tIGNORED_NL] = O(ignored_nl),
283 [tCOMMENT] = O(comment),
284 [tEMBDOC_BEG] = O(embdoc_beg),
285 [tEMBDOC] = O(embdoc),
286 [tEMBDOC_END] = O(embdoc_end),
287 [tSP] = O(sp),
288 [tHEREDOC_BEG] = O(heredoc_beg),
289 [tHEREDOC_END] = O(heredoc_end),
290 [k__END__] = O(__end__),
291 };
292#undef O
293
294 int i = (int)tok;
295 if (i >= 0 && i < numberof(offsets) && (i = offsets[i]) > 0) {
296 return *(const ID *)((const char *)&ripper_scanner_ids-1+i);
297 }
298 /* 128..256 are used as operator tokens */
299 if (tok < 128) {
300 return ripper_scanner_ids.ripper_id_CHAR;
301 }
302 rb_raise(rb_eRuntimeError, "[Ripper FATAL] unknown token %d", tok);
303
305}
@ tHEREDOC_END
Definition: eventids2.c:8
@ tEMBDOC
Definition: eventids2.c:5
@ tEMBDOC_END
Definition: eventids2.c:6
@ tIGNORED_NL
Definition: eventids2.c:2
@ k__END__
Definition: eventids2.c:9
@ tHEREDOC_BEG
Definition: eventids2.c:7
@ tEMBDOC_BEG
Definition: eventids2.c:4
@ tCOMMENT
Definition: eventids2.c:3
#define set_id2(name)
#define O(member)
STATIC_ASSERT(k__END___range, k__END__< SHRT_MAX)
void rb_raise(VALUE exc, const char *fmt,...)
Definition: error.c:2671
VALUE rb_eRuntimeError
Definition: error.c:922
yytokentype
Definition: parse.h:51
@ tBACK_REF
Definition: parse.h:115
@ tGEQ
Definition: parse.h:126
@ keyword_alias
Definition: parse.h:95
@ tLPAREN_ARG
Definition: parse.h:146
@ tBDOT3
Definition: parse.h:135
@ tWORDS_BEG
Definition: parse.h:159
@ tAMPER
Definition: parse.h:153
@ keyword_do_cond
Definition: parse.h:77
@ keyword_do_block
Definition: parse.h:78
@ keyword_defined
Definition: parse.h:96
@ tLPAREN
Definition: parse.h:145
@ tASET
Definition: parse.h:137
@ tSTRING_DEND
Definition: parse.h:164
@ tNMATCH
Definition: parse.h:131
@ tCHAR
Definition: parse.h:113
@ keyword_return
Definition: parse.h:80
@ tCONSTANT
Definition: parse.h:106
@ tMATCH
Definition: parse.h:130
@ tFLOAT
Definition: parse.h:110
@ tANDDOT
Definition: parse.h:140
@ tLABEL_END
Definition: parse.h:168
@ tNEQ
Definition: parse.h:125
@ tDOT2
Definition: parse.h:132
@ tEQ
Definition: parse.h:123
@ keyword_module
Definition: parse.h:54
@ tLAMBEG
Definition: parse.h:167
@ tCOLON2
Definition: parse.h:141
@ tCVAR
Definition: parse.h:107
@ tSTRING_DVAR
Definition: parse.h:166
@ keyword_undef
Definition: parse.h:56
@ tLEQ
Definition: parse.h:127
@ tLBRACE
Definition: parse.h:149
@ keyword_redo
Definition: parse.h:73
@ tSTRING_CONTENT
Definition: parse.h:116
@ keyword_false
Definition: parse.h:86
@ keyword_class
Definition: parse.h:53
@ keyword_ensure
Definition: parse.h:59
@ keyword_end
Definition: parse.h:60
@ keyword_and
Definition: parse.h:87
@ keyword_when
Definition: parse.h:67
@ tASSOC
Definition: parse.h:144
@ keyword_retry
Definition: parse.h:74
@ tSYMBOLS_BEG
Definition: parse.h:161
@ tLBRACE_ARG
Definition: parse.h:150
@ tREGEXP_END
Definition: parse.h:117
@ keyword_or
Definition: parse.h:88
@ keyword__ENCODING__
Definition: parse.h:101
@ keyword_do
Definition: parse.h:76
@ keyword_rescue
Definition: parse.h:58
@ keyword_END
Definition: parse.h:98
@ tLSHFT
Definition: parse.h:138
@ tUMINUS
Definition: parse.h:120
@ tBDOT2
Definition: parse.h:134
@ keyword_next
Definition: parse.h:72
@ modifier_if
Definition: parse.h:90
@ tSYMBEG
Definition: parse.h:155
@ keyword_nil
Definition: parse.h:84
@ tLABEL
Definition: parse.h:108
@ tSTAR
Definition: parse.h:151
@ tCMP
Definition: parse.h:122
@ keyword_if
Definition: parse.h:61
@ keyword_BEGIN
Definition: parse.h:97
@ tIMAGINARY
Definition: parse.h:112
@ tRSHFT
Definition: parse.h:139
@ tSTRING_DBEG
Definition: parse.h:165
@ tNTH_REF
Definition: parse.h:114
@ tINTEGER
Definition: parse.h:109
@ tSTRING_BEG
Definition: parse.h:156
@ tXSTRING_BEG
Definition: parse.h:157
@ tIVAR
Definition: parse.h:105
@ keyword_then
Definition: parse.h:63
@ modifier_while
Definition: parse.h:92
@ tQSYMBOLS_BEG
Definition: parse.h:162
@ keyword_def
Definition: parse.h:55
@ tDOT3
Definition: parse.h:133
@ keyword__FILE__
Definition: parse.h:100
@ tIDENTIFIER
Definition: parse.h:102
@ keyword_super
Definition: parse.h:82
@ tOP_ASGN
Definition: parse.h:143
@ keyword_while
Definition: parse.h:68
@ tGVAR
Definition: parse.h:104
@ tPOW
Definition: parse.h:121
@ keyword_true
Definition: parse.h:85
@ keyword__LINE__
Definition: parse.h:99
@ keyword_else
Definition: parse.h:65
@ tSTRING_END
Definition: parse.h:163
@ keyword_in
Definition: parse.h:75
@ modifier_unless
Definition: parse.h:91
@ tEQQ
Definition: parse.h:124
@ tRATIONAL
Definition: parse.h:111
@ tUMINUS_NUM
Definition: parse.h:170
@ keyword_unless
Definition: parse.h:62
@ tDSTAR
Definition: parse.h:152
@ tANDOP
Definition: parse.h:128
@ keyword_do_LAMBDA
Definition: parse.h:79
@ tCOLON3
Definition: parse.h:142
@ keyword_for
Definition: parse.h:70
@ modifier_rescue
Definition: parse.h:94
@ tFID
Definition: parse.h:103
@ keyword_not
Definition: parse.h:89
@ tAREF
Definition: parse.h:136
@ keyword_begin
Definition: parse.h:57
@ keyword_self
Definition: parse.h:83
@ tRPAREN
Definition: parse.h:147
@ keyword_break
Definition: parse.h:71
@ keyword_until
Definition: parse.h:69
@ keyword_case
Definition: parse.h:66
@ tSP
Definition: parse.h:118
@ tOROP
Definition: parse.h:129
@ keyword_yield
Definition: parse.h:81
@ tLBRACK
Definition: parse.h:148
@ tQWORDS_BEG
Definition: parse.h:160
@ tREGEXP_BEG
Definition: parse.h:158
@ modifier_until
Definition: parse.h:93
@ tLAST_TOKEN
Definition: parse.h:171
@ tLAMBDA
Definition: parse.h:154
@ keyword_elsif
Definition: parse.h:64
@ tUPLUS
Definition: parse.h:119
#define SHRT_MAX
#define numberof(array)
uint32_t i
#define UNREACHABLE_RETURN(val)
__inline__ int
unsigned long ID
#define tok(p)
Definition: ripper.c:13259