kanayago 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +15 -0
  3. data/.rubocop_todo.yml +23 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +79 -0
  6. data/Rakefile +182 -0
  7. data/ext/kanayago/ccan/check_type/check_type.h +63 -0
  8. data/ext/kanayago/ccan/container_of/container_of.h +142 -0
  9. data/ext/kanayago/ccan/list/list.h +791 -0
  10. data/ext/kanayago/ccan/str/str.h +17 -0
  11. data/ext/kanayago/constant.h +53 -0
  12. data/ext/kanayago/extconf.rb +21 -0
  13. data/ext/kanayago/id.h +347 -0
  14. data/ext/kanayago/id_table.h +39 -0
  15. data/ext/kanayago/internal/array.h +151 -0
  16. data/ext/kanayago/internal/basic_operators.h +64 -0
  17. data/ext/kanayago/internal/bignum.h +244 -0
  18. data/ext/kanayago/internal/bits.h +568 -0
  19. data/ext/kanayago/internal/compile.h +34 -0
  20. data/ext/kanayago/internal/compilers.h +107 -0
  21. data/ext/kanayago/internal/complex.h +29 -0
  22. data/ext/kanayago/internal/encoding.h +36 -0
  23. data/ext/kanayago/internal/error.h +218 -0
  24. data/ext/kanayago/internal/fixnum.h +184 -0
  25. data/ext/kanayago/internal/gc.h +322 -0
  26. data/ext/kanayago/internal/hash.h +191 -0
  27. data/ext/kanayago/internal/imemo.h +261 -0
  28. data/ext/kanayago/internal/io.h +140 -0
  29. data/ext/kanayago/internal/numeric.h +274 -0
  30. data/ext/kanayago/internal/parse.h +117 -0
  31. data/ext/kanayago/internal/rational.h +71 -0
  32. data/ext/kanayago/internal/re.h +28 -0
  33. data/ext/kanayago/internal/ruby_parser.h +125 -0
  34. data/ext/kanayago/internal/sanitizers.h +297 -0
  35. data/ext/kanayago/internal/serial.h +23 -0
  36. data/ext/kanayago/internal/static_assert.h +16 -0
  37. data/ext/kanayago/internal/string.h +186 -0
  38. data/ext/kanayago/internal/symbol.h +45 -0
  39. data/ext/kanayago/internal/thread.h +79 -0
  40. data/ext/kanayago/internal/variable.h +72 -0
  41. data/ext/kanayago/internal/vm.h +137 -0
  42. data/ext/kanayago/internal/warnings.h +16 -0
  43. data/ext/kanayago/internal.h +108 -0
  44. data/ext/kanayago/kanayago.c +420 -0
  45. data/ext/kanayago/kanayago.h +21 -0
  46. data/ext/kanayago/lex.c +302 -0
  47. data/ext/kanayago/method.h +255 -0
  48. data/ext/kanayago/node.c +440 -0
  49. data/ext/kanayago/node.h +111 -0
  50. data/ext/kanayago/node_name.inc +224 -0
  51. data/ext/kanayago/parse.c +26931 -0
  52. data/ext/kanayago/parse.h +244 -0
  53. data/ext/kanayago/parse.tmp.y +16145 -0
  54. data/ext/kanayago/parser_bits.h +564 -0
  55. data/ext/kanayago/parser_node.h +32 -0
  56. data/ext/kanayago/parser_st.c +164 -0
  57. data/ext/kanayago/parser_st.h +162 -0
  58. data/ext/kanayago/parser_value.h +106 -0
  59. data/ext/kanayago/probes.h +4 -0
  60. data/ext/kanayago/ruby_assert.h +14 -0
  61. data/ext/kanayago/ruby_atomic.h +23 -0
  62. data/ext/kanayago/ruby_parser.c +1165 -0
  63. data/ext/kanayago/rubyparser.h +1391 -0
  64. data/ext/kanayago/shape.h +234 -0
  65. data/ext/kanayago/st.c +2339 -0
  66. data/ext/kanayago/symbol.h +123 -0
  67. data/ext/kanayago/thread_pthread.h +168 -0
  68. data/ext/kanayago/universal_parser.c +230 -0
  69. data/ext/kanayago/vm_core.h +2215 -0
  70. data/ext/kanayago/vm_opts.h +67 -0
  71. data/lib/kanayago/version.rb +5 -0
  72. data/lib/kanayago.rb +11 -0
  73. data/sig/kanayago.rbs +4 -0
  74. metadata +116 -0
@@ -0,0 +1,244 @@
1
+ /* A Bison parser, made by Lrama 0.6.9. */
2
+
3
+ /* Bison interface for Yacc-like parsers in C
4
+
5
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6
+ Inc.
7
+
8
+ This program is free software: you can redistribute it and/or modify
9
+ it under the terms of the GNU General Public License as published by
10
+ the Free Software Foundation, either version 3 of the License, or
11
+ (at your option) any later version.
12
+
13
+ This program is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ GNU General Public License for more details.
17
+
18
+ You should have received a copy of the GNU General Public License
19
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
20
+
21
+ /* As a special exception, you may create a larger work that contains
22
+ part or all of the Bison parser skeleton and distribute that work
23
+ under terms of your choice, so long as that work isn't itself a
24
+ parser generator using the skeleton or a modified version thereof
25
+ as a parser skeleton. Alternatively, if you modify or redistribute
26
+ the parser skeleton itself, you may (at your option) remove this
27
+ special exception, which will cause the skeleton and the resulting
28
+ Bison output files to be licensed under the GNU General Public
29
+ License without this special exception.
30
+
31
+ This special exception was added by the Free Software Foundation in
32
+ version 2.2 of Bison. */
33
+
34
+ /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
35
+ especially those whose name start with YY_ or yy_. They are
36
+ private implementation details that can be changed or removed. */
37
+ #ifndef YY_YY_EXT_KANAYAGO_PARSE_H_INCLUDED
38
+ # define YY_YY_EXT_KANAYAGO_PARSE_H_INCLUDED
39
+ /* Debug traces. */
40
+ #ifndef YYDEBUG
41
+ # define YYDEBUG 0
42
+ #endif
43
+ #if YYDEBUG && !defined(yydebug)
44
+ extern int yydebug;
45
+ #endif
46
+
47
+
48
+ /* Token kinds. */
49
+ #ifndef YYTOKENTYPE
50
+ # define YYTOKENTYPE
51
+ enum yytokentype
52
+ {
53
+ YYEMPTY = -2,
54
+ END_OF_INPUT = 0, /* "end-of-input" */
55
+ YYerror = 256, /* error */
56
+ YYUNDEF = 257, /* "invalid token" */
57
+ keyword_class = 258, /* "'class'" */
58
+ keyword_module = 259, /* "'module'" */
59
+ keyword_def = 260, /* "'def'" */
60
+ keyword_undef = 261, /* "'undef'" */
61
+ keyword_begin = 262, /* "'begin'" */
62
+ keyword_rescue = 263, /* "'rescue'" */
63
+ keyword_ensure = 264, /* "'ensure'" */
64
+ keyword_end = 265, /* "'end'" */
65
+ keyword_if = 266, /* "'if'" */
66
+ keyword_unless = 267, /* "'unless'" */
67
+ keyword_then = 268, /* "'then'" */
68
+ keyword_elsif = 269, /* "'elsif'" */
69
+ keyword_else = 270, /* "'else'" */
70
+ keyword_case = 271, /* "'case'" */
71
+ keyword_when = 272, /* "'when'" */
72
+ keyword_while = 273, /* "'while'" */
73
+ keyword_until = 274, /* "'until'" */
74
+ keyword_for = 275, /* "'for'" */
75
+ keyword_break = 276, /* "'break'" */
76
+ keyword_next = 277, /* "'next'" */
77
+ keyword_redo = 278, /* "'redo'" */
78
+ keyword_retry = 279, /* "'retry'" */
79
+ keyword_in = 280, /* "'in'" */
80
+ keyword_do = 281, /* "'do'" */
81
+ keyword_do_cond = 282, /* "'do' for condition" */
82
+ keyword_do_block = 283, /* "'do' for block" */
83
+ keyword_do_LAMBDA = 284, /* "'do' for lambda" */
84
+ keyword_return = 285, /* "'return'" */
85
+ keyword_yield = 286, /* "'yield'" */
86
+ keyword_super = 287, /* "'super'" */
87
+ keyword_self = 288, /* "'self'" */
88
+ keyword_nil = 289, /* "'nil'" */
89
+ keyword_true = 290, /* "'true'" */
90
+ keyword_false = 291, /* "'false'" */
91
+ keyword_and = 292, /* "'and'" */
92
+ keyword_or = 293, /* "'or'" */
93
+ keyword_not = 294, /* "'not'" */
94
+ modifier_if = 295, /* "'if' modifier" */
95
+ modifier_unless = 296, /* "'unless' modifier" */
96
+ modifier_while = 297, /* "'while' modifier" */
97
+ modifier_until = 298, /* "'until' modifier" */
98
+ modifier_rescue = 299, /* "'rescue' modifier" */
99
+ keyword_alias = 300, /* "'alias'" */
100
+ keyword_defined = 301, /* "'defined?'" */
101
+ keyword_BEGIN = 302, /* "'BEGIN'" */
102
+ keyword_END = 303, /* "'END'" */
103
+ keyword__LINE__ = 304, /* "'__LINE__'" */
104
+ keyword__FILE__ = 305, /* "'__FILE__'" */
105
+ keyword__ENCODING__ = 306, /* "'__ENCODING__'" */
106
+ tIDENTIFIER = 307, /* "local variable or method" */
107
+ tFID = 308, /* "method" */
108
+ tGVAR = 309, /* "global variable" */
109
+ tIVAR = 310, /* "instance variable" */
110
+ tCONSTANT = 311, /* "constant" */
111
+ tCVAR = 312, /* "class variable" */
112
+ tLABEL = 313, /* "label" */
113
+ tINTEGER = 314, /* "integer literal" */
114
+ tFLOAT = 315, /* "float literal" */
115
+ tRATIONAL = 316, /* "rational literal" */
116
+ tIMAGINARY = 317, /* "imaginary literal" */
117
+ tCHAR = 318, /* "char literal" */
118
+ tNTH_REF = 319, /* "numbered reference" */
119
+ tBACK_REF = 320, /* "back reference" */
120
+ tSTRING_CONTENT = 321, /* "literal content" */
121
+ tREGEXP_END = 322, /* tREGEXP_END */
122
+ tDUMNY_END = 323, /* "dummy end" */
123
+ tSP = 324, /* "escaped space" */
124
+ tUPLUS = 132, /* "unary+" */
125
+ tUMINUS = 133, /* "unary-" */
126
+ tPOW = 134, /* "**" */
127
+ tCMP = 135, /* "<=>" */
128
+ tEQ = 140, /* "==" */
129
+ tEQQ = 141, /* "===" */
130
+ tNEQ = 142, /* "!=" */
131
+ tGEQ = 139, /* ">=" */
132
+ tLEQ = 138, /* "<=" */
133
+ tANDOP = 148, /* "&&" */
134
+ tOROP = 149, /* "||" */
135
+ tMATCH = 143, /* "=~" */
136
+ tNMATCH = 144, /* "!~" */
137
+ tDOT2 = 128, /* ".." */
138
+ tDOT3 = 129, /* "..." */
139
+ tBDOT2 = 130, /* "(.." */
140
+ tBDOT3 = 131, /* "(..." */
141
+ tAREF = 145, /* "[]" */
142
+ tASET = 146, /* "[]=" */
143
+ tLSHFT = 136, /* "<<" */
144
+ tRSHFT = 137, /* ">>" */
145
+ tANDDOT = 150, /* "&." */
146
+ tCOLON2 = 147, /* "::" */
147
+ tCOLON3 = 325, /* ":: at EXPR_BEG" */
148
+ tOP_ASGN = 326, /* "operator-assignment" */
149
+ tASSOC = 327, /* "=>" */
150
+ tLPAREN = 328, /* "(" */
151
+ tLPAREN_ARG = 329, /* "( arg" */
152
+ tRPAREN = 330, /* ")" */
153
+ tLBRACK = 331, /* "[" */
154
+ tLBRACE = 332, /* "{" */
155
+ tLBRACE_ARG = 333, /* "{ arg" */
156
+ tSTAR = 334, /* "*" */
157
+ tDSTAR = 335, /* "**arg" */
158
+ tAMPER = 336, /* "&" */
159
+ tLAMBDA = 337, /* "->" */
160
+ tSYMBEG = 338, /* "symbol literal" */
161
+ tSTRING_BEG = 339, /* "string literal" */
162
+ tXSTRING_BEG = 340, /* "backtick literal" */
163
+ tREGEXP_BEG = 341, /* "regexp literal" */
164
+ tWORDS_BEG = 342, /* "word list" */
165
+ tQWORDS_BEG = 343, /* "verbatim word list" */
166
+ tSYMBOLS_BEG = 344, /* "symbol list" */
167
+ tQSYMBOLS_BEG = 345, /* "verbatim symbol list" */
168
+ tSTRING_END = 346, /* "terminator" */
169
+ tSTRING_DEND = 347, /* "'}'" */
170
+ tSTRING_DBEG = 348, /* "'#{'" */
171
+ tSTRING_DVAR = 349, /* tSTRING_DVAR */
172
+ tLAMBEG = 350, /* tLAMBEG */
173
+ tLABEL_END = 351, /* tLABEL_END */
174
+ tIGNORED_NL = 352, /* tIGNORED_NL */
175
+ tCOMMENT = 353, /* tCOMMENT */
176
+ tEMBDOC_BEG = 354, /* tEMBDOC_BEG */
177
+ tEMBDOC = 355, /* tEMBDOC */
178
+ tEMBDOC_END = 356, /* tEMBDOC_END */
179
+ tHEREDOC_BEG = 357, /* tHEREDOC_BEG */
180
+ tHEREDOC_END = 358, /* tHEREDOC_END */
181
+ k__END__ = 359, /* k__END__ */
182
+ tLOWEST = 360, /* tLOWEST */
183
+ tUMINUS_NUM = 361, /* tUMINUS_NUM */
184
+ tLAST_TOKEN = 362 /* tLAST_TOKEN */
185
+ };
186
+ typedef enum yytokentype yytoken_kind_t;
187
+ #endif
188
+
189
+ /* Value type. */
190
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
191
+ union YYSTYPE
192
+ {
193
+ #line 2696 "ext/kanayago/parse.tmp.y"
194
+
195
+ NODE *node;
196
+ rb_node_fcall_t *node_fcall;
197
+ rb_node_args_t *node_args;
198
+ rb_node_args_aux_t *node_args_aux;
199
+ rb_node_opt_arg_t *node_opt_arg;
200
+ rb_node_kw_arg_t *node_kw_arg;
201
+ rb_node_block_pass_t *node_block_pass;
202
+ rb_node_masgn_t *node_masgn;
203
+ rb_node_def_temp_t *node_def_temp;
204
+ rb_node_exits_t *node_exits;
205
+ ID id;
206
+ int num;
207
+ st_table *tbl;
208
+ st_table *labels;
209
+ const struct vtable *vars;
210
+ struct rb_strterm_struct *strterm;
211
+ struct lex_context ctxt;
212
+ enum lex_state_e state;
213
+
214
+ #line 215 "ext/kanayago/parse.h"
215
+
216
+ };
217
+ typedef union YYSTYPE YYSTYPE;
218
+ # define YYSTYPE_IS_TRIVIAL 1
219
+ # define YYSTYPE_IS_DECLARED 1
220
+ #endif
221
+
222
+ /* Location type. */
223
+ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
224
+ typedef struct YYLTYPE YYLTYPE;
225
+ struct YYLTYPE
226
+ {
227
+ int first_line;
228
+ int first_column;
229
+ int last_line;
230
+ int last_column;
231
+ };
232
+ # define YYLTYPE_IS_DECLARED 1
233
+ # define YYLTYPE_IS_TRIVIAL 1
234
+ #endif
235
+
236
+
237
+
238
+
239
+ int yyparse (struct parser_params *p);
240
+
241
+
242
+
243
+ #endif /* !YY_YY_EXT_KANAYAGO_PARSE_H_INCLUDED */
244
+