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