prism 0.15.1 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -1
  3. data/Makefile +12 -0
  4. data/README.md +3 -1
  5. data/config.yml +66 -50
  6. data/docs/configuration.md +2 -0
  7. data/docs/fuzzing.md +1 -1
  8. data/docs/javascript.md +90 -0
  9. data/docs/releasing.md +27 -0
  10. data/docs/ruby_api.md +2 -0
  11. data/docs/serialization.md +28 -29
  12. data/ext/prism/api_node.c +856 -826
  13. data/ext/prism/api_pack.c +20 -9
  14. data/ext/prism/extension.c +494 -119
  15. data/ext/prism/extension.h +1 -1
  16. data/include/prism/ast.h +3157 -747
  17. data/include/prism/defines.h +40 -8
  18. data/include/prism/diagnostic.h +36 -3
  19. data/include/prism/enc/pm_encoding.h +119 -28
  20. data/include/prism/node.h +38 -30
  21. data/include/prism/options.h +204 -0
  22. data/include/prism/pack.h +44 -33
  23. data/include/prism/parser.h +445 -199
  24. data/include/prism/prettyprint.h +26 -0
  25. data/include/prism/regexp.h +16 -2
  26. data/include/prism/util/pm_buffer.h +102 -18
  27. data/include/prism/util/pm_char.h +162 -48
  28. data/include/prism/util/pm_constant_pool.h +128 -34
  29. data/include/prism/util/pm_list.h +68 -38
  30. data/include/prism/util/pm_memchr.h +18 -3
  31. data/include/prism/util/pm_newline_list.h +71 -28
  32. data/include/prism/util/pm_state_stack.h +25 -7
  33. data/include/prism/util/pm_string.h +115 -27
  34. data/include/prism/util/pm_string_list.h +25 -6
  35. data/include/prism/util/pm_strncasecmp.h +32 -0
  36. data/include/prism/util/pm_strpbrk.h +31 -17
  37. data/include/prism/version.h +28 -3
  38. data/include/prism.h +229 -36
  39. data/lib/prism/compiler.rb +5 -5
  40. data/lib/prism/debug.rb +43 -13
  41. data/lib/prism/desugar_compiler.rb +1 -1
  42. data/lib/prism/dispatcher.rb +27 -26
  43. data/lib/prism/dsl.rb +16 -16
  44. data/lib/prism/ffi.rb +138 -61
  45. data/lib/prism/lex_compat.rb +26 -16
  46. data/lib/prism/mutation_compiler.rb +11 -11
  47. data/lib/prism/node.rb +426 -227
  48. data/lib/prism/node_ext.rb +23 -16
  49. data/lib/prism/node_inspector.rb +1 -1
  50. data/lib/prism/pack.rb +79 -40
  51. data/lib/prism/parse_result/comments.rb +7 -2
  52. data/lib/prism/parse_result/newlines.rb +4 -0
  53. data/lib/prism/parse_result.rb +157 -21
  54. data/lib/prism/pattern.rb +14 -3
  55. data/lib/prism/ripper_compat.rb +28 -10
  56. data/lib/prism/serialize.rb +935 -307
  57. data/lib/prism/visitor.rb +9 -5
  58. data/lib/prism.rb +20 -2
  59. data/prism.gemspec +11 -2
  60. data/rbi/prism.rbi +7305 -0
  61. data/rbi/prism_static.rbi +196 -0
  62. data/sig/prism.rbs +4468 -0
  63. data/sig/prism_static.rbs +123 -0
  64. data/src/diagnostic.c +56 -53
  65. data/src/enc/pm_big5.c +1 -0
  66. data/src/enc/pm_euc_jp.c +1 -0
  67. data/src/enc/pm_gbk.c +1 -0
  68. data/src/enc/pm_shift_jis.c +1 -0
  69. data/src/enc/pm_tables.c +316 -80
  70. data/src/enc/pm_unicode.c +54 -9
  71. data/src/enc/pm_windows_31j.c +1 -0
  72. data/src/node.c +357 -345
  73. data/src/options.c +170 -0
  74. data/src/prettyprint.c +7697 -1643
  75. data/src/prism.c +1964 -1125
  76. data/src/regexp.c +153 -95
  77. data/src/serialize.c +432 -397
  78. data/src/token_type.c +3 -1
  79. data/src/util/pm_buffer.c +88 -23
  80. data/src/util/pm_char.c +103 -57
  81. data/src/util/pm_constant_pool.c +52 -22
  82. data/src/util/pm_list.c +12 -4
  83. data/src/util/pm_memchr.c +5 -3
  84. data/src/util/pm_newline_list.c +25 -63
  85. data/src/util/pm_state_stack.c +9 -3
  86. data/src/util/pm_string.c +95 -85
  87. data/src/util/pm_string_list.c +14 -15
  88. data/src/util/pm_strncasecmp.c +10 -3
  89. data/src/util/pm_strpbrk.c +25 -19
  90. metadata +12 -3
  91. data/docs/prism.png +0 -0
data/include/prism/ast.h CHANGED
@@ -5,6 +5,11 @@
5
5
  /* if you are looking to modify the */
6
6
  /* template */
7
7
  /******************************************************************************/
8
+ /**
9
+ * @file ast.h
10
+ *
11
+ * The abstract syntax tree.
12
+ */
8
13
  #ifndef PRISM_AST_H
9
14
  #define PRISM_AST_H
10
15
 
@@ -16,1969 +21,4374 @@
16
21
  #include <stddef.h>
17
22
  #include <stdint.h>
18
23
 
19
- // This enum represents every type of token in the Ruby source.
24
+ /**
25
+ * This enum represents every type of token in the Ruby source.
26
+ */
20
27
  typedef enum pm_token_type {
21
- PM_TOKEN_EOF = 1, // final token in the file
22
- PM_TOKEN_MISSING, // a token that was expected but not found
23
- PM_TOKEN_NOT_PROVIDED, // a token that was not present but it is okay
24
- PM_TOKEN_AMPERSAND, // &
25
- PM_TOKEN_AMPERSAND_AMPERSAND, // &&
26
- PM_TOKEN_AMPERSAND_AMPERSAND_EQUAL, // &&=
27
- PM_TOKEN_AMPERSAND_DOT, // &.
28
- PM_TOKEN_AMPERSAND_EQUAL, // &=
29
- PM_TOKEN_BACKTICK, // `
30
- PM_TOKEN_BACK_REFERENCE, // a back reference
31
- PM_TOKEN_BANG, // ! or !@
32
- PM_TOKEN_BANG_EQUAL, // !=
33
- PM_TOKEN_BANG_TILDE, // !~
34
- PM_TOKEN_BRACE_LEFT, // {
35
- PM_TOKEN_BRACE_RIGHT, // }
36
- PM_TOKEN_BRACKET_LEFT, // [
37
- PM_TOKEN_BRACKET_LEFT_ARRAY, // [ for the beginning of an array
38
- PM_TOKEN_BRACKET_LEFT_RIGHT, // []
39
- PM_TOKEN_BRACKET_LEFT_RIGHT_EQUAL, // []=
40
- PM_TOKEN_BRACKET_RIGHT, // ]
41
- PM_TOKEN_CARET, // ^
42
- PM_TOKEN_CARET_EQUAL, // ^=
43
- PM_TOKEN_CHARACTER_LITERAL, // a character literal
44
- PM_TOKEN_CLASS_VARIABLE, // a class variable
45
- PM_TOKEN_COLON, // :
46
- PM_TOKEN_COLON_COLON, // ::
47
- PM_TOKEN_COMMA, // ,
48
- PM_TOKEN_COMMENT, // a comment
49
- PM_TOKEN_CONSTANT, // a constant
50
- PM_TOKEN_DOT, // .
51
- PM_TOKEN_DOT_DOT, // ..
52
- PM_TOKEN_DOT_DOT_DOT, // ...
53
- PM_TOKEN_EMBDOC_BEGIN, // =begin
54
- PM_TOKEN_EMBDOC_END, // =end
55
- PM_TOKEN_EMBDOC_LINE, // a line inside of embedded documentation
56
- PM_TOKEN_EMBEXPR_BEGIN, // #{
57
- PM_TOKEN_EMBEXPR_END, // }
58
- PM_TOKEN_EMBVAR, // #
59
- PM_TOKEN_EQUAL, // =
60
- PM_TOKEN_EQUAL_EQUAL, // ==
61
- PM_TOKEN_EQUAL_EQUAL_EQUAL, // ===
62
- PM_TOKEN_EQUAL_GREATER, // =>
63
- PM_TOKEN_EQUAL_TILDE, // =~
64
- PM_TOKEN_FLOAT, // a floating point number
65
- PM_TOKEN_FLOAT_IMAGINARY, // a floating pointer number with an imaginary suffix
66
- PM_TOKEN_FLOAT_RATIONAL, // a floating pointer number with a rational suffix
67
- PM_TOKEN_FLOAT_RATIONAL_IMAGINARY, // a floating pointer number with a rational and imaginary suffix
68
- PM_TOKEN_GLOBAL_VARIABLE, // a global variable
69
- PM_TOKEN_GREATER, // >
70
- PM_TOKEN_GREATER_EQUAL, // >=
71
- PM_TOKEN_GREATER_GREATER, // >>
72
- PM_TOKEN_GREATER_GREATER_EQUAL, // >>=
73
- PM_TOKEN_HEREDOC_END, // the end of a heredoc
74
- PM_TOKEN_HEREDOC_START, // the start of a heredoc
75
- PM_TOKEN_IDENTIFIER, // an identifier
76
- PM_TOKEN_IGNORED_NEWLINE, // an ignored newline
77
- PM_TOKEN_INSTANCE_VARIABLE, // an instance variable
78
- PM_TOKEN_INTEGER, // an integer (any base)
79
- PM_TOKEN_INTEGER_IMAGINARY, // an integer with an imaginary suffix
80
- PM_TOKEN_INTEGER_RATIONAL, // an integer with a rational suffix
81
- PM_TOKEN_INTEGER_RATIONAL_IMAGINARY, // an integer with a rational and imaginary suffix
82
- PM_TOKEN_KEYWORD_ALIAS, // alias
83
- PM_TOKEN_KEYWORD_AND, // and
84
- PM_TOKEN_KEYWORD_BEGIN, // begin
85
- PM_TOKEN_KEYWORD_BEGIN_UPCASE, // BEGIN
86
- PM_TOKEN_KEYWORD_BREAK, // break
87
- PM_TOKEN_KEYWORD_CASE, // case
88
- PM_TOKEN_KEYWORD_CLASS, // class
89
- PM_TOKEN_KEYWORD_DEF, // def
90
- PM_TOKEN_KEYWORD_DEFINED, // defined?
91
- PM_TOKEN_KEYWORD_DO, // do
92
- PM_TOKEN_KEYWORD_DO_LOOP, // do keyword for a predicate in a while, until, or for loop
93
- PM_TOKEN_KEYWORD_ELSE, // else
94
- PM_TOKEN_KEYWORD_ELSIF, // elsif
95
- PM_TOKEN_KEYWORD_END, // end
96
- PM_TOKEN_KEYWORD_END_UPCASE, // END
97
- PM_TOKEN_KEYWORD_ENSURE, // ensure
98
- PM_TOKEN_KEYWORD_FALSE, // false
99
- PM_TOKEN_KEYWORD_FOR, // for
100
- PM_TOKEN_KEYWORD_IF, // if
101
- PM_TOKEN_KEYWORD_IF_MODIFIER, // if in the modifier form
102
- PM_TOKEN_KEYWORD_IN, // in
103
- PM_TOKEN_KEYWORD_MODULE, // module
104
- PM_TOKEN_KEYWORD_NEXT, // next
105
- PM_TOKEN_KEYWORD_NIL, // nil
106
- PM_TOKEN_KEYWORD_NOT, // not
107
- PM_TOKEN_KEYWORD_OR, // or
108
- PM_TOKEN_KEYWORD_REDO, // redo
109
- PM_TOKEN_KEYWORD_RESCUE, // rescue
110
- PM_TOKEN_KEYWORD_RESCUE_MODIFIER, // rescue in the modifier form
111
- PM_TOKEN_KEYWORD_RETRY, // retry
112
- PM_TOKEN_KEYWORD_RETURN, // return
113
- PM_TOKEN_KEYWORD_SELF, // self
114
- PM_TOKEN_KEYWORD_SUPER, // super
115
- PM_TOKEN_KEYWORD_THEN, // then
116
- PM_TOKEN_KEYWORD_TRUE, // true
117
- PM_TOKEN_KEYWORD_UNDEF, // undef
118
- PM_TOKEN_KEYWORD_UNLESS, // unless
119
- PM_TOKEN_KEYWORD_UNLESS_MODIFIER, // unless in the modifier form
120
- PM_TOKEN_KEYWORD_UNTIL, // until
121
- PM_TOKEN_KEYWORD_UNTIL_MODIFIER, // until in the modifier form
122
- PM_TOKEN_KEYWORD_WHEN, // when
123
- PM_TOKEN_KEYWORD_WHILE, // while
124
- PM_TOKEN_KEYWORD_WHILE_MODIFIER, // while in the modifier form
125
- PM_TOKEN_KEYWORD_YIELD, // yield
126
- PM_TOKEN_KEYWORD___ENCODING__, // __ENCODING__
127
- PM_TOKEN_KEYWORD___FILE__, // __FILE__
128
- PM_TOKEN_KEYWORD___LINE__, // __LINE__
129
- PM_TOKEN_LABEL, // a label
130
- PM_TOKEN_LABEL_END, // the end of a label
131
- PM_TOKEN_LAMBDA_BEGIN, // {
132
- PM_TOKEN_LESS, // <
133
- PM_TOKEN_LESS_EQUAL, // <=
134
- PM_TOKEN_LESS_EQUAL_GREATER, // <=>
135
- PM_TOKEN_LESS_LESS, // <<
136
- PM_TOKEN_LESS_LESS_EQUAL, // <<=
137
- PM_TOKEN_METHOD_NAME, // a method name
138
- PM_TOKEN_MINUS, // -
139
- PM_TOKEN_MINUS_EQUAL, // -=
140
- PM_TOKEN_MINUS_GREATER, // ->
141
- PM_TOKEN_NEWLINE, // a newline character outside of other tokens
142
- PM_TOKEN_NUMBERED_REFERENCE, // a numbered reference to a capture group in the previous regular expression match
143
- PM_TOKEN_PARENTHESIS_LEFT, // (
144
- PM_TOKEN_PARENTHESIS_LEFT_PARENTHESES, // ( for a parentheses node
145
- PM_TOKEN_PARENTHESIS_RIGHT, // )
146
- PM_TOKEN_PERCENT, // %
147
- PM_TOKEN_PERCENT_EQUAL, // %=
148
- PM_TOKEN_PERCENT_LOWER_I, // %i
149
- PM_TOKEN_PERCENT_LOWER_W, // %w
150
- PM_TOKEN_PERCENT_LOWER_X, // %x
151
- PM_TOKEN_PERCENT_UPPER_I, // %I
152
- PM_TOKEN_PERCENT_UPPER_W, // %W
153
- PM_TOKEN_PIPE, // |
154
- PM_TOKEN_PIPE_EQUAL, // |=
155
- PM_TOKEN_PIPE_PIPE, // ||
156
- PM_TOKEN_PIPE_PIPE_EQUAL, // ||=
157
- PM_TOKEN_PLUS, // +
158
- PM_TOKEN_PLUS_EQUAL, // +=
159
- PM_TOKEN_QUESTION_MARK, // ?
160
- PM_TOKEN_REGEXP_BEGIN, // the beginning of a regular expression
161
- PM_TOKEN_REGEXP_END, // the end of a regular expression
162
- PM_TOKEN_SEMICOLON, // ;
163
- PM_TOKEN_SLASH, // /
164
- PM_TOKEN_SLASH_EQUAL, // /=
165
- PM_TOKEN_STAR, // *
166
- PM_TOKEN_STAR_EQUAL, // *=
167
- PM_TOKEN_STAR_STAR, // **
168
- PM_TOKEN_STAR_STAR_EQUAL, // **=
169
- PM_TOKEN_STRING_BEGIN, // the beginning of a string
170
- PM_TOKEN_STRING_CONTENT, // the contents of a string
171
- PM_TOKEN_STRING_END, // the end of a string
172
- PM_TOKEN_SYMBOL_BEGIN, // the beginning of a symbol
173
- PM_TOKEN_TILDE, // ~ or ~@
174
- PM_TOKEN_UAMPERSAND, // unary &
175
- PM_TOKEN_UCOLON_COLON, // unary ::
176
- PM_TOKEN_UDOT_DOT, // unary ..
177
- PM_TOKEN_UDOT_DOT_DOT, // unary ...
178
- PM_TOKEN_UMINUS, // -@
179
- PM_TOKEN_UMINUS_NUM, // -@ for a number
180
- PM_TOKEN_UPLUS, // +@
181
- PM_TOKEN_USTAR, // unary *
182
- PM_TOKEN_USTAR_STAR, // unary **
183
- PM_TOKEN_WORDS_SEP, // a separator between words in a list
184
- PM_TOKEN___END__, // marker for the point in the file at which the parser should stop
185
- PM_TOKEN_MAXIMUM, // the maximum token value
28
+ /** final token in the file */
29
+ PM_TOKEN_EOF = 1,
30
+
31
+ /** a token that was expected but not found */
32
+ PM_TOKEN_MISSING,
33
+
34
+ /** a token that was not present but it is okay */
35
+ PM_TOKEN_NOT_PROVIDED,
36
+
37
+ /** & */
38
+ PM_TOKEN_AMPERSAND,
39
+
40
+ /** && */
41
+ PM_TOKEN_AMPERSAND_AMPERSAND,
42
+
43
+ /** &&= */
44
+ PM_TOKEN_AMPERSAND_AMPERSAND_EQUAL,
45
+
46
+ /** &. */
47
+ PM_TOKEN_AMPERSAND_DOT,
48
+
49
+ /** &= */
50
+ PM_TOKEN_AMPERSAND_EQUAL,
51
+
52
+ /** ` */
53
+ PM_TOKEN_BACKTICK,
54
+
55
+ /** a back reference */
56
+ PM_TOKEN_BACK_REFERENCE,
57
+
58
+ /** ! or !@ */
59
+ PM_TOKEN_BANG,
60
+
61
+ /** != */
62
+ PM_TOKEN_BANG_EQUAL,
63
+
64
+ /** !~ */
65
+ PM_TOKEN_BANG_TILDE,
66
+
67
+ /** { */
68
+ PM_TOKEN_BRACE_LEFT,
69
+
70
+ /** } */
71
+ PM_TOKEN_BRACE_RIGHT,
72
+
73
+ /** [ */
74
+ PM_TOKEN_BRACKET_LEFT,
75
+
76
+ /** [ for the beginning of an array */
77
+ PM_TOKEN_BRACKET_LEFT_ARRAY,
78
+
79
+ /** [] */
80
+ PM_TOKEN_BRACKET_LEFT_RIGHT,
81
+
82
+ /** []= */
83
+ PM_TOKEN_BRACKET_LEFT_RIGHT_EQUAL,
84
+
85
+ /** ] */
86
+ PM_TOKEN_BRACKET_RIGHT,
87
+
88
+ /** ^ */
89
+ PM_TOKEN_CARET,
90
+
91
+ /** ^= */
92
+ PM_TOKEN_CARET_EQUAL,
93
+
94
+ /** a character literal */
95
+ PM_TOKEN_CHARACTER_LITERAL,
96
+
97
+ /** a class variable */
98
+ PM_TOKEN_CLASS_VARIABLE,
99
+
100
+ /** : */
101
+ PM_TOKEN_COLON,
102
+
103
+ /** :: */
104
+ PM_TOKEN_COLON_COLON,
105
+
106
+ /** , */
107
+ PM_TOKEN_COMMA,
108
+
109
+ /** a comment */
110
+ PM_TOKEN_COMMENT,
111
+
112
+ /** a constant */
113
+ PM_TOKEN_CONSTANT,
114
+
115
+ /** the . call operator */
116
+ PM_TOKEN_DOT,
117
+
118
+ /** the .. range operator */
119
+ PM_TOKEN_DOT_DOT,
120
+
121
+ /** the ... range operator or forwarding parameter */
122
+ PM_TOKEN_DOT_DOT_DOT,
123
+
124
+ /** =begin */
125
+ PM_TOKEN_EMBDOC_BEGIN,
126
+
127
+ /** =end */
128
+ PM_TOKEN_EMBDOC_END,
129
+
130
+ /** a line inside of embedded documentation */
131
+ PM_TOKEN_EMBDOC_LINE,
132
+
133
+ /** #{ */
134
+ PM_TOKEN_EMBEXPR_BEGIN,
135
+
136
+ /** } */
137
+ PM_TOKEN_EMBEXPR_END,
138
+
139
+ /** # */
140
+ PM_TOKEN_EMBVAR,
141
+
142
+ /** = */
143
+ PM_TOKEN_EQUAL,
144
+
145
+ /** == */
146
+ PM_TOKEN_EQUAL_EQUAL,
147
+
148
+ /** === */
149
+ PM_TOKEN_EQUAL_EQUAL_EQUAL,
150
+
151
+ /** => */
152
+ PM_TOKEN_EQUAL_GREATER,
153
+
154
+ /** =~ */
155
+ PM_TOKEN_EQUAL_TILDE,
156
+
157
+ /** a floating point number */
158
+ PM_TOKEN_FLOAT,
159
+
160
+ /** a floating pointer number with an imaginary suffix */
161
+ PM_TOKEN_FLOAT_IMAGINARY,
162
+
163
+ /** a floating pointer number with a rational suffix */
164
+ PM_TOKEN_FLOAT_RATIONAL,
165
+
166
+ /** a floating pointer number with a rational and imaginary suffix */
167
+ PM_TOKEN_FLOAT_RATIONAL_IMAGINARY,
168
+
169
+ /** a global variable */
170
+ PM_TOKEN_GLOBAL_VARIABLE,
171
+
172
+ /** > */
173
+ PM_TOKEN_GREATER,
174
+
175
+ /** >= */
176
+ PM_TOKEN_GREATER_EQUAL,
177
+
178
+ /** >> */
179
+ PM_TOKEN_GREATER_GREATER,
180
+
181
+ /** >>= */
182
+ PM_TOKEN_GREATER_GREATER_EQUAL,
183
+
184
+ /** the end of a heredoc */
185
+ PM_TOKEN_HEREDOC_END,
186
+
187
+ /** the start of a heredoc */
188
+ PM_TOKEN_HEREDOC_START,
189
+
190
+ /** an identifier */
191
+ PM_TOKEN_IDENTIFIER,
192
+
193
+ /** an ignored newline */
194
+ PM_TOKEN_IGNORED_NEWLINE,
195
+
196
+ /** an instance variable */
197
+ PM_TOKEN_INSTANCE_VARIABLE,
198
+
199
+ /** an integer (any base) */
200
+ PM_TOKEN_INTEGER,
201
+
202
+ /** an integer with an imaginary suffix */
203
+ PM_TOKEN_INTEGER_IMAGINARY,
204
+
205
+ /** an integer with a rational suffix */
206
+ PM_TOKEN_INTEGER_RATIONAL,
207
+
208
+ /** an integer with a rational and imaginary suffix */
209
+ PM_TOKEN_INTEGER_RATIONAL_IMAGINARY,
210
+
211
+ /** alias */
212
+ PM_TOKEN_KEYWORD_ALIAS,
213
+
214
+ /** and */
215
+ PM_TOKEN_KEYWORD_AND,
216
+
217
+ /** begin */
218
+ PM_TOKEN_KEYWORD_BEGIN,
219
+
220
+ /** BEGIN */
221
+ PM_TOKEN_KEYWORD_BEGIN_UPCASE,
222
+
223
+ /** break */
224
+ PM_TOKEN_KEYWORD_BREAK,
225
+
226
+ /** case */
227
+ PM_TOKEN_KEYWORD_CASE,
228
+
229
+ /** class */
230
+ PM_TOKEN_KEYWORD_CLASS,
231
+
232
+ /** def */
233
+ PM_TOKEN_KEYWORD_DEF,
234
+
235
+ /** defined? */
236
+ PM_TOKEN_KEYWORD_DEFINED,
237
+
238
+ /** do */
239
+ PM_TOKEN_KEYWORD_DO,
240
+
241
+ /** do keyword for a predicate in a while, until, or for loop */
242
+ PM_TOKEN_KEYWORD_DO_LOOP,
243
+
244
+ /** else */
245
+ PM_TOKEN_KEYWORD_ELSE,
246
+
247
+ /** elsif */
248
+ PM_TOKEN_KEYWORD_ELSIF,
249
+
250
+ /** end */
251
+ PM_TOKEN_KEYWORD_END,
252
+
253
+ /** END */
254
+ PM_TOKEN_KEYWORD_END_UPCASE,
255
+
256
+ /** ensure */
257
+ PM_TOKEN_KEYWORD_ENSURE,
258
+
259
+ /** false */
260
+ PM_TOKEN_KEYWORD_FALSE,
261
+
262
+ /** for */
263
+ PM_TOKEN_KEYWORD_FOR,
264
+
265
+ /** if */
266
+ PM_TOKEN_KEYWORD_IF,
267
+
268
+ /** if in the modifier form */
269
+ PM_TOKEN_KEYWORD_IF_MODIFIER,
270
+
271
+ /** in */
272
+ PM_TOKEN_KEYWORD_IN,
273
+
274
+ /** module */
275
+ PM_TOKEN_KEYWORD_MODULE,
276
+
277
+ /** next */
278
+ PM_TOKEN_KEYWORD_NEXT,
279
+
280
+ /** nil */
281
+ PM_TOKEN_KEYWORD_NIL,
282
+
283
+ /** not */
284
+ PM_TOKEN_KEYWORD_NOT,
285
+
286
+ /** or */
287
+ PM_TOKEN_KEYWORD_OR,
288
+
289
+ /** redo */
290
+ PM_TOKEN_KEYWORD_REDO,
291
+
292
+ /** rescue */
293
+ PM_TOKEN_KEYWORD_RESCUE,
294
+
295
+ /** rescue in the modifier form */
296
+ PM_TOKEN_KEYWORD_RESCUE_MODIFIER,
297
+
298
+ /** retry */
299
+ PM_TOKEN_KEYWORD_RETRY,
300
+
301
+ /** return */
302
+ PM_TOKEN_KEYWORD_RETURN,
303
+
304
+ /** self */
305
+ PM_TOKEN_KEYWORD_SELF,
306
+
307
+ /** super */
308
+ PM_TOKEN_KEYWORD_SUPER,
309
+
310
+ /** then */
311
+ PM_TOKEN_KEYWORD_THEN,
312
+
313
+ /** true */
314
+ PM_TOKEN_KEYWORD_TRUE,
315
+
316
+ /** undef */
317
+ PM_TOKEN_KEYWORD_UNDEF,
318
+
319
+ /** unless */
320
+ PM_TOKEN_KEYWORD_UNLESS,
321
+
322
+ /** unless in the modifier form */
323
+ PM_TOKEN_KEYWORD_UNLESS_MODIFIER,
324
+
325
+ /** until */
326
+ PM_TOKEN_KEYWORD_UNTIL,
327
+
328
+ /** until in the modifier form */
329
+ PM_TOKEN_KEYWORD_UNTIL_MODIFIER,
330
+
331
+ /** when */
332
+ PM_TOKEN_KEYWORD_WHEN,
333
+
334
+ /** while */
335
+ PM_TOKEN_KEYWORD_WHILE,
336
+
337
+ /** while in the modifier form */
338
+ PM_TOKEN_KEYWORD_WHILE_MODIFIER,
339
+
340
+ /** yield */
341
+ PM_TOKEN_KEYWORD_YIELD,
342
+
343
+ /** __ENCODING__ */
344
+ PM_TOKEN_KEYWORD___ENCODING__,
345
+
346
+ /** __FILE__ */
347
+ PM_TOKEN_KEYWORD___FILE__,
348
+
349
+ /** __LINE__ */
350
+ PM_TOKEN_KEYWORD___LINE__,
351
+
352
+ /** a label */
353
+ PM_TOKEN_LABEL,
354
+
355
+ /** the end of a label */
356
+ PM_TOKEN_LABEL_END,
357
+
358
+ /** { */
359
+ PM_TOKEN_LAMBDA_BEGIN,
360
+
361
+ /** < */
362
+ PM_TOKEN_LESS,
363
+
364
+ /** <= */
365
+ PM_TOKEN_LESS_EQUAL,
366
+
367
+ /** <=> */
368
+ PM_TOKEN_LESS_EQUAL_GREATER,
369
+
370
+ /** << */
371
+ PM_TOKEN_LESS_LESS,
372
+
373
+ /** <<= */
374
+ PM_TOKEN_LESS_LESS_EQUAL,
375
+
376
+ /** a method name */
377
+ PM_TOKEN_METHOD_NAME,
378
+
379
+ /** - */
380
+ PM_TOKEN_MINUS,
381
+
382
+ /** -= */
383
+ PM_TOKEN_MINUS_EQUAL,
384
+
385
+ /** -> */
386
+ PM_TOKEN_MINUS_GREATER,
387
+
388
+ /** a newline character outside of other tokens */
389
+ PM_TOKEN_NEWLINE,
390
+
391
+ /** a numbered reference to a capture group in the previous regular expression match */
392
+ PM_TOKEN_NUMBERED_REFERENCE,
393
+
394
+ /** ( */
395
+ PM_TOKEN_PARENTHESIS_LEFT,
396
+
397
+ /** ( for a parentheses node */
398
+ PM_TOKEN_PARENTHESIS_LEFT_PARENTHESES,
399
+
400
+ /** ) */
401
+ PM_TOKEN_PARENTHESIS_RIGHT,
402
+
403
+ /** % */
404
+ PM_TOKEN_PERCENT,
405
+
406
+ /** %= */
407
+ PM_TOKEN_PERCENT_EQUAL,
408
+
409
+ /** %i */
410
+ PM_TOKEN_PERCENT_LOWER_I,
411
+
412
+ /** %w */
413
+ PM_TOKEN_PERCENT_LOWER_W,
414
+
415
+ /** %x */
416
+ PM_TOKEN_PERCENT_LOWER_X,
417
+
418
+ /** %I */
419
+ PM_TOKEN_PERCENT_UPPER_I,
420
+
421
+ /** %W */
422
+ PM_TOKEN_PERCENT_UPPER_W,
423
+
424
+ /** | */
425
+ PM_TOKEN_PIPE,
426
+
427
+ /** |= */
428
+ PM_TOKEN_PIPE_EQUAL,
429
+
430
+ /** || */
431
+ PM_TOKEN_PIPE_PIPE,
432
+
433
+ /** ||= */
434
+ PM_TOKEN_PIPE_PIPE_EQUAL,
435
+
436
+ /** + */
437
+ PM_TOKEN_PLUS,
438
+
439
+ /** += */
440
+ PM_TOKEN_PLUS_EQUAL,
441
+
442
+ /** ? */
443
+ PM_TOKEN_QUESTION_MARK,
444
+
445
+ /** the beginning of a regular expression */
446
+ PM_TOKEN_REGEXP_BEGIN,
447
+
448
+ /** the end of a regular expression */
449
+ PM_TOKEN_REGEXP_END,
450
+
451
+ /** ; */
452
+ PM_TOKEN_SEMICOLON,
453
+
454
+ /** / */
455
+ PM_TOKEN_SLASH,
456
+
457
+ /** /= */
458
+ PM_TOKEN_SLASH_EQUAL,
459
+
460
+ /** * */
461
+ PM_TOKEN_STAR,
462
+
463
+ /** *= */
464
+ PM_TOKEN_STAR_EQUAL,
465
+
466
+ /** ** */
467
+ PM_TOKEN_STAR_STAR,
468
+
469
+ /** **= */
470
+ PM_TOKEN_STAR_STAR_EQUAL,
471
+
472
+ /** the beginning of a string */
473
+ PM_TOKEN_STRING_BEGIN,
474
+
475
+ /** the contents of a string */
476
+ PM_TOKEN_STRING_CONTENT,
477
+
478
+ /** the end of a string */
479
+ PM_TOKEN_STRING_END,
480
+
481
+ /** the beginning of a symbol */
482
+ PM_TOKEN_SYMBOL_BEGIN,
483
+
484
+ /** ~ or ~@ */
485
+ PM_TOKEN_TILDE,
486
+
487
+ /** unary & */
488
+ PM_TOKEN_UAMPERSAND,
489
+
490
+ /** unary :: */
491
+ PM_TOKEN_UCOLON_COLON,
492
+
493
+ /** unary .. operator */
494
+ PM_TOKEN_UDOT_DOT,
495
+
496
+ /** unary ... operator */
497
+ PM_TOKEN_UDOT_DOT_DOT,
498
+
499
+ /** -@ */
500
+ PM_TOKEN_UMINUS,
501
+
502
+ /** -@ for a number */
503
+ PM_TOKEN_UMINUS_NUM,
504
+
505
+ /** +@ */
506
+ PM_TOKEN_UPLUS,
507
+
508
+ /** unary * */
509
+ PM_TOKEN_USTAR,
510
+
511
+ /** unary ** */
512
+ PM_TOKEN_USTAR_STAR,
513
+
514
+ /** a separator between words in a list */
515
+ PM_TOKEN_WORDS_SEP,
516
+
517
+ /** marker for the point in the file at which the parser should stop */
518
+ PM_TOKEN___END__,
519
+
520
+ /** The maximum token value. */
521
+ PM_TOKEN_MAXIMUM,
186
522
  } pm_token_type_t;
187
523
 
188
- // This struct represents a token in the Ruby source. We use it to track both
189
- // type and location information.
524
+ /**
525
+ * This struct represents a token in the Ruby source. We use it to track both
526
+ * type and location information.
527
+ */
190
528
  typedef struct {
529
+ /** The type of the token. */
191
530
  pm_token_type_t type;
531
+
532
+ /** A pointer to the start location of the token in the source. */
192
533
  const uint8_t *start;
534
+
535
+ /** A pointer to the end location of the token in the source. */
193
536
  const uint8_t *end;
194
537
  } pm_token_t;
195
538
 
196
- // This represents a range of bytes in the source string to which a node or
197
- // token corresponds.
539
+ /**
540
+ * This represents a range of bytes in the source string to which a node or
541
+ * token corresponds.
542
+ */
198
543
  typedef struct {
544
+ /** A pointer to the start location of the range in the source. */
199
545
  const uint8_t *start;
546
+
547
+ /** A pointer to the end location of the range in the source. */
200
548
  const uint8_t *end;
201
549
  } pm_location_t;
202
550
 
203
551
  struct pm_node;
204
552
 
553
+ /**
554
+ * A list of nodes in the source, most often used for lists of children.
555
+ */
205
556
  typedef struct pm_node_list {
206
- struct pm_node **nodes;
557
+ /** The number of nodes in the list. */
207
558
  size_t size;
559
+
560
+ /** The capacity of the list that has been allocated. */
208
561
  size_t capacity;
562
+
563
+ /** The nodes in the list. */
564
+ struct pm_node **nodes;
209
565
  } pm_node_list_t;
210
566
 
567
+ /**
568
+ * This enum represents every type of node in the Ruby syntax tree.
569
+ */
211
570
  enum pm_node_type {
571
+ /** AliasGlobalVariableNode */
212
572
  PM_ALIAS_GLOBAL_VARIABLE_NODE = 1,
573
+
574
+ /** AliasMethodNode */
213
575
  PM_ALIAS_METHOD_NODE = 2,
576
+
577
+ /** AlternationPatternNode */
214
578
  PM_ALTERNATION_PATTERN_NODE = 3,
579
+
580
+ /** AndNode */
215
581
  PM_AND_NODE = 4,
582
+
583
+ /** ArgumentsNode */
216
584
  PM_ARGUMENTS_NODE = 5,
585
+
586
+ /** ArrayNode */
217
587
  PM_ARRAY_NODE = 6,
588
+
589
+ /** ArrayPatternNode */
218
590
  PM_ARRAY_PATTERN_NODE = 7,
591
+
592
+ /** AssocNode */
219
593
  PM_ASSOC_NODE = 8,
594
+
595
+ /** AssocSplatNode */
220
596
  PM_ASSOC_SPLAT_NODE = 9,
597
+
598
+ /** BackReferenceReadNode */
221
599
  PM_BACK_REFERENCE_READ_NODE = 10,
600
+
601
+ /** BeginNode */
222
602
  PM_BEGIN_NODE = 11,
603
+
604
+ /** BlockArgumentNode */
223
605
  PM_BLOCK_ARGUMENT_NODE = 12,
606
+
607
+ /** BlockLocalVariableNode */
224
608
  PM_BLOCK_LOCAL_VARIABLE_NODE = 13,
609
+
610
+ /** BlockNode */
225
611
  PM_BLOCK_NODE = 14,
612
+
613
+ /** BlockParameterNode */
226
614
  PM_BLOCK_PARAMETER_NODE = 15,
615
+
616
+ /** BlockParametersNode */
227
617
  PM_BLOCK_PARAMETERS_NODE = 16,
618
+
619
+ /** BreakNode */
228
620
  PM_BREAK_NODE = 17,
621
+
622
+ /** CallAndWriteNode */
229
623
  PM_CALL_AND_WRITE_NODE = 18,
624
+
625
+ /** CallNode */
230
626
  PM_CALL_NODE = 19,
627
+
628
+ /** CallOperatorWriteNode */
231
629
  PM_CALL_OPERATOR_WRITE_NODE = 20,
630
+
631
+ /** CallOrWriteNode */
232
632
  PM_CALL_OR_WRITE_NODE = 21,
633
+
634
+ /** CapturePatternNode */
233
635
  PM_CAPTURE_PATTERN_NODE = 22,
636
+
637
+ /** CaseNode */
234
638
  PM_CASE_NODE = 23,
639
+
640
+ /** ClassNode */
235
641
  PM_CLASS_NODE = 24,
642
+
643
+ /** ClassVariableAndWriteNode */
236
644
  PM_CLASS_VARIABLE_AND_WRITE_NODE = 25,
645
+
646
+ /** ClassVariableOperatorWriteNode */
237
647
  PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 26,
648
+
649
+ /** ClassVariableOrWriteNode */
238
650
  PM_CLASS_VARIABLE_OR_WRITE_NODE = 27,
651
+
652
+ /** ClassVariableReadNode */
239
653
  PM_CLASS_VARIABLE_READ_NODE = 28,
654
+
655
+ /** ClassVariableTargetNode */
240
656
  PM_CLASS_VARIABLE_TARGET_NODE = 29,
657
+
658
+ /** ClassVariableWriteNode */
241
659
  PM_CLASS_VARIABLE_WRITE_NODE = 30,
660
+
661
+ /** ConstantAndWriteNode */
242
662
  PM_CONSTANT_AND_WRITE_NODE = 31,
663
+
664
+ /** ConstantOperatorWriteNode */
243
665
  PM_CONSTANT_OPERATOR_WRITE_NODE = 32,
666
+
667
+ /** ConstantOrWriteNode */
244
668
  PM_CONSTANT_OR_WRITE_NODE = 33,
669
+
670
+ /** ConstantPathAndWriteNode */
245
671
  PM_CONSTANT_PATH_AND_WRITE_NODE = 34,
672
+
673
+ /** ConstantPathNode */
246
674
  PM_CONSTANT_PATH_NODE = 35,
675
+
676
+ /** ConstantPathOperatorWriteNode */
247
677
  PM_CONSTANT_PATH_OPERATOR_WRITE_NODE = 36,
678
+
679
+ /** ConstantPathOrWriteNode */
248
680
  PM_CONSTANT_PATH_OR_WRITE_NODE = 37,
681
+
682
+ /** ConstantPathTargetNode */
249
683
  PM_CONSTANT_PATH_TARGET_NODE = 38,
684
+
685
+ /** ConstantPathWriteNode */
250
686
  PM_CONSTANT_PATH_WRITE_NODE = 39,
687
+
688
+ /** ConstantReadNode */
251
689
  PM_CONSTANT_READ_NODE = 40,
690
+
691
+ /** ConstantTargetNode */
252
692
  PM_CONSTANT_TARGET_NODE = 41,
693
+
694
+ /** ConstantWriteNode */
253
695
  PM_CONSTANT_WRITE_NODE = 42,
696
+
697
+ /** DefNode */
254
698
  PM_DEF_NODE = 43,
699
+
700
+ /** DefinedNode */
255
701
  PM_DEFINED_NODE = 44,
702
+
703
+ /** ElseNode */
256
704
  PM_ELSE_NODE = 45,
705
+
706
+ /** EmbeddedStatementsNode */
257
707
  PM_EMBEDDED_STATEMENTS_NODE = 46,
708
+
709
+ /** EmbeddedVariableNode */
258
710
  PM_EMBEDDED_VARIABLE_NODE = 47,
711
+
712
+ /** EnsureNode */
259
713
  PM_ENSURE_NODE = 48,
714
+
715
+ /** FalseNode */
260
716
  PM_FALSE_NODE = 49,
717
+
718
+ /** FindPatternNode */
261
719
  PM_FIND_PATTERN_NODE = 50,
720
+
721
+ /** FlipFlopNode */
262
722
  PM_FLIP_FLOP_NODE = 51,
723
+
724
+ /** FloatNode */
263
725
  PM_FLOAT_NODE = 52,
726
+
727
+ /** ForNode */
264
728
  PM_FOR_NODE = 53,
729
+
730
+ /** ForwardingArgumentsNode */
265
731
  PM_FORWARDING_ARGUMENTS_NODE = 54,
732
+
733
+ /** ForwardingParameterNode */
266
734
  PM_FORWARDING_PARAMETER_NODE = 55,
735
+
736
+ /** ForwardingSuperNode */
267
737
  PM_FORWARDING_SUPER_NODE = 56,
738
+
739
+ /** GlobalVariableAndWriteNode */
268
740
  PM_GLOBAL_VARIABLE_AND_WRITE_NODE = 57,
741
+
742
+ /** GlobalVariableOperatorWriteNode */
269
743
  PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 58,
744
+
745
+ /** GlobalVariableOrWriteNode */
270
746
  PM_GLOBAL_VARIABLE_OR_WRITE_NODE = 59,
747
+
748
+ /** GlobalVariableReadNode */
271
749
  PM_GLOBAL_VARIABLE_READ_NODE = 60,
750
+
751
+ /** GlobalVariableTargetNode */
272
752
  PM_GLOBAL_VARIABLE_TARGET_NODE = 61,
753
+
754
+ /** GlobalVariableWriteNode */
273
755
  PM_GLOBAL_VARIABLE_WRITE_NODE = 62,
756
+
757
+ /** HashNode */
274
758
  PM_HASH_NODE = 63,
759
+
760
+ /** HashPatternNode */
275
761
  PM_HASH_PATTERN_NODE = 64,
762
+
763
+ /** IfNode */
276
764
  PM_IF_NODE = 65,
765
+
766
+ /** ImaginaryNode */
277
767
  PM_IMAGINARY_NODE = 66,
768
+
769
+ /** ImplicitNode */
278
770
  PM_IMPLICIT_NODE = 67,
771
+
772
+ /** InNode */
279
773
  PM_IN_NODE = 68,
774
+
775
+ /** IndexAndWriteNode */
280
776
  PM_INDEX_AND_WRITE_NODE = 69,
777
+
778
+ /** IndexOperatorWriteNode */
281
779
  PM_INDEX_OPERATOR_WRITE_NODE = 70,
780
+
781
+ /** IndexOrWriteNode */
282
782
  PM_INDEX_OR_WRITE_NODE = 71,
783
+
784
+ /** InstanceVariableAndWriteNode */
283
785
  PM_INSTANCE_VARIABLE_AND_WRITE_NODE = 72,
786
+
787
+ /** InstanceVariableOperatorWriteNode */
284
788
  PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 73,
789
+
790
+ /** InstanceVariableOrWriteNode */
285
791
  PM_INSTANCE_VARIABLE_OR_WRITE_NODE = 74,
792
+
793
+ /** InstanceVariableReadNode */
286
794
  PM_INSTANCE_VARIABLE_READ_NODE = 75,
795
+
796
+ /** InstanceVariableTargetNode */
287
797
  PM_INSTANCE_VARIABLE_TARGET_NODE = 76,
798
+
799
+ /** InstanceVariableWriteNode */
288
800
  PM_INSTANCE_VARIABLE_WRITE_NODE = 77,
801
+
802
+ /** IntegerNode */
289
803
  PM_INTEGER_NODE = 78,
804
+
805
+ /** InterpolatedMatchLastLineNode */
290
806
  PM_INTERPOLATED_MATCH_LAST_LINE_NODE = 79,
807
+
808
+ /** InterpolatedRegularExpressionNode */
291
809
  PM_INTERPOLATED_REGULAR_EXPRESSION_NODE = 80,
810
+
811
+ /** InterpolatedStringNode */
292
812
  PM_INTERPOLATED_STRING_NODE = 81,
813
+
814
+ /** InterpolatedSymbolNode */
293
815
  PM_INTERPOLATED_SYMBOL_NODE = 82,
816
+
817
+ /** InterpolatedXStringNode */
294
818
  PM_INTERPOLATED_X_STRING_NODE = 83,
819
+
820
+ /** KeywordHashNode */
295
821
  PM_KEYWORD_HASH_NODE = 84,
296
- PM_KEYWORD_PARAMETER_NODE = 85,
297
- PM_KEYWORD_REST_PARAMETER_NODE = 86,
298
- PM_LAMBDA_NODE = 87,
299
- PM_LOCAL_VARIABLE_AND_WRITE_NODE = 88,
300
- PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 89,
301
- PM_LOCAL_VARIABLE_OR_WRITE_NODE = 90,
302
- PM_LOCAL_VARIABLE_READ_NODE = 91,
303
- PM_LOCAL_VARIABLE_TARGET_NODE = 92,
304
- PM_LOCAL_VARIABLE_WRITE_NODE = 93,
305
- PM_MATCH_LAST_LINE_NODE = 94,
306
- PM_MATCH_PREDICATE_NODE = 95,
307
- PM_MATCH_REQUIRED_NODE = 96,
308
- PM_MATCH_WRITE_NODE = 97,
309
- PM_MISSING_NODE = 98,
310
- PM_MODULE_NODE = 99,
311
- PM_MULTI_TARGET_NODE = 100,
312
- PM_MULTI_WRITE_NODE = 101,
313
- PM_NEXT_NODE = 102,
314
- PM_NIL_NODE = 103,
315
- PM_NO_KEYWORDS_PARAMETER_NODE = 104,
316
- PM_NUMBERED_REFERENCE_READ_NODE = 105,
822
+
823
+ /** KeywordRestParameterNode */
824
+ PM_KEYWORD_REST_PARAMETER_NODE = 85,
825
+
826
+ /** LambdaNode */
827
+ PM_LAMBDA_NODE = 86,
828
+
829
+ /** LocalVariableAndWriteNode */
830
+ PM_LOCAL_VARIABLE_AND_WRITE_NODE = 87,
831
+
832
+ /** LocalVariableOperatorWriteNode */
833
+ PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 88,
834
+
835
+ /** LocalVariableOrWriteNode */
836
+ PM_LOCAL_VARIABLE_OR_WRITE_NODE = 89,
837
+
838
+ /** LocalVariableReadNode */
839
+ PM_LOCAL_VARIABLE_READ_NODE = 90,
840
+
841
+ /** LocalVariableTargetNode */
842
+ PM_LOCAL_VARIABLE_TARGET_NODE = 91,
843
+
844
+ /** LocalVariableWriteNode */
845
+ PM_LOCAL_VARIABLE_WRITE_NODE = 92,
846
+
847
+ /** MatchLastLineNode */
848
+ PM_MATCH_LAST_LINE_NODE = 93,
849
+
850
+ /** MatchPredicateNode */
851
+ PM_MATCH_PREDICATE_NODE = 94,
852
+
853
+ /** MatchRequiredNode */
854
+ PM_MATCH_REQUIRED_NODE = 95,
855
+
856
+ /** MatchWriteNode */
857
+ PM_MATCH_WRITE_NODE = 96,
858
+
859
+ /** MissingNode */
860
+ PM_MISSING_NODE = 97,
861
+
862
+ /** ModuleNode */
863
+ PM_MODULE_NODE = 98,
864
+
865
+ /** MultiTargetNode */
866
+ PM_MULTI_TARGET_NODE = 99,
867
+
868
+ /** MultiWriteNode */
869
+ PM_MULTI_WRITE_NODE = 100,
870
+
871
+ /** NextNode */
872
+ PM_NEXT_NODE = 101,
873
+
874
+ /** NilNode */
875
+ PM_NIL_NODE = 102,
876
+
877
+ /** NoKeywordsParameterNode */
878
+ PM_NO_KEYWORDS_PARAMETER_NODE = 103,
879
+
880
+ /** NumberedReferenceReadNode */
881
+ PM_NUMBERED_REFERENCE_READ_NODE = 104,
882
+
883
+ /** OptionalKeywordParameterNode */
884
+ PM_OPTIONAL_KEYWORD_PARAMETER_NODE = 105,
885
+
886
+ /** OptionalParameterNode */
317
887
  PM_OPTIONAL_PARAMETER_NODE = 106,
888
+
889
+ /** OrNode */
318
890
  PM_OR_NODE = 107,
891
+
892
+ /** ParametersNode */
319
893
  PM_PARAMETERS_NODE = 108,
894
+
895
+ /** ParenthesesNode */
320
896
  PM_PARENTHESES_NODE = 109,
897
+
898
+ /** PinnedExpressionNode */
321
899
  PM_PINNED_EXPRESSION_NODE = 110,
900
+
901
+ /** PinnedVariableNode */
322
902
  PM_PINNED_VARIABLE_NODE = 111,
903
+
904
+ /** PostExecutionNode */
323
905
  PM_POST_EXECUTION_NODE = 112,
906
+
907
+ /** PreExecutionNode */
324
908
  PM_PRE_EXECUTION_NODE = 113,
909
+
910
+ /** ProgramNode */
325
911
  PM_PROGRAM_NODE = 114,
912
+
913
+ /** RangeNode */
326
914
  PM_RANGE_NODE = 115,
915
+
916
+ /** RationalNode */
327
917
  PM_RATIONAL_NODE = 116,
918
+
919
+ /** RedoNode */
328
920
  PM_REDO_NODE = 117,
921
+
922
+ /** RegularExpressionNode */
329
923
  PM_REGULAR_EXPRESSION_NODE = 118,
330
- PM_REQUIRED_DESTRUCTURED_PARAMETER_NODE = 119,
924
+
925
+ /** RequiredKeywordParameterNode */
926
+ PM_REQUIRED_KEYWORD_PARAMETER_NODE = 119,
927
+
928
+ /** RequiredParameterNode */
331
929
  PM_REQUIRED_PARAMETER_NODE = 120,
930
+
931
+ /** RescueModifierNode */
332
932
  PM_RESCUE_MODIFIER_NODE = 121,
933
+
934
+ /** RescueNode */
333
935
  PM_RESCUE_NODE = 122,
936
+
937
+ /** RestParameterNode */
334
938
  PM_REST_PARAMETER_NODE = 123,
939
+
940
+ /** RetryNode */
335
941
  PM_RETRY_NODE = 124,
942
+
943
+ /** ReturnNode */
336
944
  PM_RETURN_NODE = 125,
945
+
946
+ /** SelfNode */
337
947
  PM_SELF_NODE = 126,
948
+
949
+ /** SingletonClassNode */
338
950
  PM_SINGLETON_CLASS_NODE = 127,
951
+
952
+ /** SourceEncodingNode */
339
953
  PM_SOURCE_ENCODING_NODE = 128,
954
+
955
+ /** SourceFileNode */
340
956
  PM_SOURCE_FILE_NODE = 129,
957
+
958
+ /** SourceLineNode */
341
959
  PM_SOURCE_LINE_NODE = 130,
960
+
961
+ /** SplatNode */
342
962
  PM_SPLAT_NODE = 131,
963
+
964
+ /** StatementsNode */
343
965
  PM_STATEMENTS_NODE = 132,
966
+
967
+ /** StringConcatNode */
344
968
  PM_STRING_CONCAT_NODE = 133,
969
+
970
+ /** StringNode */
345
971
  PM_STRING_NODE = 134,
972
+
973
+ /** SuperNode */
346
974
  PM_SUPER_NODE = 135,
975
+
976
+ /** SymbolNode */
347
977
  PM_SYMBOL_NODE = 136,
978
+
979
+ /** TrueNode */
348
980
  PM_TRUE_NODE = 137,
981
+
982
+ /** UndefNode */
349
983
  PM_UNDEF_NODE = 138,
984
+
985
+ /** UnlessNode */
350
986
  PM_UNLESS_NODE = 139,
987
+
988
+ /** UntilNode */
351
989
  PM_UNTIL_NODE = 140,
990
+
991
+ /** WhenNode */
352
992
  PM_WHEN_NODE = 141,
993
+
994
+ /** WhileNode */
353
995
  PM_WHILE_NODE = 142,
996
+
997
+ /** XStringNode */
354
998
  PM_X_STRING_NODE = 143,
999
+
1000
+ /** YieldNode */
355
1001
  PM_YIELD_NODE = 144,
1002
+
1003
+ /** A special kind of node used for compilation. */
356
1004
  PM_SCOPE_NODE
357
1005
  };
358
1006
 
1007
+ /**
1008
+ * This is the type of node embedded in the node struct. We explicitly control
1009
+ * the size of it here to avoid having the variable-width enum.
1010
+ */
359
1011
  typedef uint16_t pm_node_type_t;
1012
+
1013
+ /**
1014
+ * These are the flags embedded in the node struct. We explicitly control the
1015
+ * size of it here to avoid having the variable-width enum.
1016
+ */
360
1017
  typedef uint16_t pm_node_flags_t;
361
1018
 
362
- // We store the flags enum in every node in the tree. Some flags are common to
363
- // all nodes (the ones listed below). Others are specific to certain node types.
1019
+ /**
1020
+ * We store the flags enum in every node in the tree. Some flags are common to
1021
+ * all nodes (the ones listed below). Others are specific to certain node types.
1022
+ */
364
1023
  #define PM_NODE_FLAG_BITS (sizeof(pm_node_flags_t) * 8)
1024
+
365
1025
  static const pm_node_flags_t PM_NODE_FLAG_NEWLINE = (1 << (PM_NODE_FLAG_BITS - 1));
366
1026
  static const pm_node_flags_t PM_NODE_FLAG_STATIC_LITERAL = (1 << (PM_NODE_FLAG_BITS - 2));
367
1027
  static const pm_node_flags_t PM_NODE_FLAG_COMMON_MASK = (1 << (PM_NODE_FLAG_BITS - 1)) | (1 << (PM_NODE_FLAG_BITS - 2));
368
1028
 
369
- // For easy access, we define some macros to check node type
370
- #define PM_NODE_TYPE(node) ((enum pm_node_type)node->type)
1029
+ /**
1030
+ * Cast the type to an enum to allow the compiler to provide exhaustiveness
1031
+ * checking.
1032
+ */
1033
+ #define PM_NODE_TYPE(node) ((enum pm_node_type) node->type)
1034
+
1035
+ /**
1036
+ * Return true if the type of the given node matches the given type.
1037
+ */
371
1038
  #define PM_NODE_TYPE_P(node, type) (PM_NODE_TYPE(node) == (type))
372
1039
 
373
- // This is the overall tagged union representing a node in the syntax tree.
1040
+ /**
1041
+ * This is the base structure that represents a node in the syntax tree. It is
1042
+ * embedded into every node type.
1043
+ */
374
1044
  typedef struct pm_node {
375
- // This represents the type of the node. It somewhat maps to the nodes that
376
- // existed in the original grammar and ripper, but it's not a 1:1 mapping.
1045
+ /**
1046
+ * This represents the type of the node. It somewhat maps to the nodes that
1047
+ * existed in the original grammar and ripper, but it's not a 1:1 mapping.
1048
+ */
377
1049
  pm_node_type_t type;
378
1050
 
379
- // This represents any flags on the node
1051
+ /**
1052
+ * This represents any flags on the node. Some are common to all nodes, and
1053
+ * some are specific to the type of node.
1054
+ */
380
1055
  pm_node_flags_t flags;
381
1056
 
382
- // This is the location of the node in the source. It's a range of bytes
383
- // containing a start and an end.
1057
+ /**
1058
+ * This is the location of the node in the source. It's a range of bytes
1059
+ * containing a start and an end.
1060
+ */
384
1061
  pm_location_t location;
385
1062
  } pm_node_t;
386
1063
 
387
- // AliasGlobalVariableNode
388
- //
389
- // Type: PM_ALIAS_GLOBAL_VARIABLE_NODE
1064
+ /**
1065
+ * AliasGlobalVariableNode
1066
+ *
1067
+ * Type: PM_ALIAS_GLOBAL_VARIABLE_NODE
1068
+ *
1069
+ * @extends pm_node_t
1070
+ */
390
1071
  typedef struct pm_alias_global_variable_node {
1072
+ /** The embedded base node. */
391
1073
  pm_node_t base;
1074
+
1075
+ /** AliasGlobalVariableNode#new_name */
392
1076
  struct pm_node *new_name;
1077
+
1078
+ /** AliasGlobalVariableNode#old_name */
393
1079
  struct pm_node *old_name;
1080
+
1081
+ /** AliasGlobalVariableNode#keyword_loc */
394
1082
  pm_location_t keyword_loc;
395
1083
  } pm_alias_global_variable_node_t;
396
1084
 
397
- // AliasMethodNode
398
- //
399
- // Type: PM_ALIAS_METHOD_NODE
1085
+ /**
1086
+ * AliasMethodNode
1087
+ *
1088
+ * Type: PM_ALIAS_METHOD_NODE
1089
+ *
1090
+ * @extends pm_node_t
1091
+ */
400
1092
  typedef struct pm_alias_method_node {
1093
+ /** The embedded base node. */
401
1094
  pm_node_t base;
1095
+
1096
+ /** AliasMethodNode#new_name */
402
1097
  struct pm_node *new_name;
1098
+
1099
+ /** AliasMethodNode#old_name */
403
1100
  struct pm_node *old_name;
1101
+
1102
+ /** AliasMethodNode#keyword_loc */
404
1103
  pm_location_t keyword_loc;
405
1104
  } pm_alias_method_node_t;
406
1105
 
407
- // AlternationPatternNode
408
- //
409
- // Type: PM_ALTERNATION_PATTERN_NODE
1106
+ /**
1107
+ * AlternationPatternNode
1108
+ *
1109
+ * Type: PM_ALTERNATION_PATTERN_NODE
1110
+ *
1111
+ * @extends pm_node_t
1112
+ */
410
1113
  typedef struct pm_alternation_pattern_node {
1114
+ /** The embedded base node. */
411
1115
  pm_node_t base;
1116
+
1117
+ /** AlternationPatternNode#left */
412
1118
  struct pm_node *left;
1119
+
1120
+ /** AlternationPatternNode#right */
413
1121
  struct pm_node *right;
1122
+
1123
+ /** AlternationPatternNode#operator_loc */
414
1124
  pm_location_t operator_loc;
415
1125
  } pm_alternation_pattern_node_t;
416
1126
 
417
- // AndNode
418
- //
419
- // Type: PM_AND_NODE
1127
+ /**
1128
+ * AndNode
1129
+ *
1130
+ * Type: PM_AND_NODE
1131
+ *
1132
+ * @extends pm_node_t
1133
+ */
420
1134
  typedef struct pm_and_node {
1135
+ /** The embedded base node. */
421
1136
  pm_node_t base;
1137
+
1138
+ /** AndNode#left */
422
1139
  struct pm_node *left;
1140
+
1141
+ /** AndNode#right */
423
1142
  struct pm_node *right;
1143
+
1144
+ /** AndNode#operator_loc */
424
1145
  pm_location_t operator_loc;
425
1146
  } pm_and_node_t;
426
1147
 
427
- // ArgumentsNode
428
- //
429
- // Type: PM_ARGUMENTS_NODE
1148
+ /**
1149
+ * ArgumentsNode
1150
+ *
1151
+ * Type: PM_ARGUMENTS_NODE
1152
+ * Flags:
1153
+ * PM_ARGUMENTS_NODE_FLAGS_KEYWORD_SPLAT
1154
+ *
1155
+ * @extends pm_node_t
1156
+ */
430
1157
  typedef struct pm_arguments_node {
1158
+ /** The embedded base node. */
431
1159
  pm_node_t base;
1160
+
1161
+ /** ArgumentsNode#arguments */
432
1162
  struct pm_node_list arguments;
433
1163
  } pm_arguments_node_t;
434
1164
 
435
- // ArrayNode
436
- //
437
- // Type: PM_ARRAY_NODE
1165
+ /**
1166
+ * ArrayNode
1167
+ *
1168
+ * Type: PM_ARRAY_NODE
1169
+ *
1170
+ * @extends pm_node_t
1171
+ */
438
1172
  typedef struct pm_array_node {
1173
+ /** The embedded base node. */
439
1174
  pm_node_t base;
1175
+
1176
+ /** ArrayNode#elements */
440
1177
  struct pm_node_list elements;
1178
+
1179
+ /** ArrayNode#opening_loc */
441
1180
  pm_location_t opening_loc;
1181
+
1182
+ /** ArrayNode#closing_loc */
442
1183
  pm_location_t closing_loc;
443
1184
  } pm_array_node_t;
444
1185
 
445
- // ArrayPatternNode
446
- //
447
- // Type: PM_ARRAY_PATTERN_NODE
1186
+ /**
1187
+ * ArrayPatternNode
1188
+ *
1189
+ * Type: PM_ARRAY_PATTERN_NODE
1190
+ *
1191
+ * @extends pm_node_t
1192
+ */
448
1193
  typedef struct pm_array_pattern_node {
1194
+ /** The embedded base node. */
449
1195
  pm_node_t base;
1196
+
1197
+ /** ArrayPatternNode#constant */
450
1198
  struct pm_node *constant;
1199
+
1200
+ /** ArrayPatternNode#requireds */
451
1201
  struct pm_node_list requireds;
1202
+
1203
+ /** ArrayPatternNode#rest */
452
1204
  struct pm_node *rest;
1205
+
1206
+ /** ArrayPatternNode#posts */
453
1207
  struct pm_node_list posts;
1208
+
1209
+ /** ArrayPatternNode#opening_loc */
454
1210
  pm_location_t opening_loc;
1211
+
1212
+ /** ArrayPatternNode#closing_loc */
455
1213
  pm_location_t closing_loc;
456
1214
  } pm_array_pattern_node_t;
457
1215
 
458
- // AssocNode
459
- //
460
- // Type: PM_ASSOC_NODE
1216
+ /**
1217
+ * AssocNode
1218
+ *
1219
+ * Type: PM_ASSOC_NODE
1220
+ *
1221
+ * @extends pm_node_t
1222
+ */
461
1223
  typedef struct pm_assoc_node {
1224
+ /** The embedded base node. */
462
1225
  pm_node_t base;
1226
+
1227
+ /** AssocNode#key */
463
1228
  struct pm_node *key;
1229
+
1230
+ /** AssocNode#value */
464
1231
  struct pm_node *value;
1232
+
1233
+ /** AssocNode#operator_loc */
465
1234
  pm_location_t operator_loc;
466
1235
  } pm_assoc_node_t;
467
1236
 
468
- // AssocSplatNode
469
- //
470
- // Type: PM_ASSOC_SPLAT_NODE
1237
+ /**
1238
+ * AssocSplatNode
1239
+ *
1240
+ * Type: PM_ASSOC_SPLAT_NODE
1241
+ *
1242
+ * @extends pm_node_t
1243
+ */
471
1244
  typedef struct pm_assoc_splat_node {
1245
+ /** The embedded base node. */
472
1246
  pm_node_t base;
1247
+
1248
+ /** AssocSplatNode#value */
473
1249
  struct pm_node *value;
1250
+
1251
+ /** AssocSplatNode#operator_loc */
474
1252
  pm_location_t operator_loc;
475
1253
  } pm_assoc_splat_node_t;
476
1254
 
477
- // BackReferenceReadNode
478
- //
479
- // Type: PM_BACK_REFERENCE_READ_NODE
1255
+ /**
1256
+ * BackReferenceReadNode
1257
+ *
1258
+ * Type: PM_BACK_REFERENCE_READ_NODE
1259
+ *
1260
+ * @extends pm_node_t
1261
+ */
480
1262
  typedef struct pm_back_reference_read_node {
1263
+ /** The embedded base node. */
481
1264
  pm_node_t base;
1265
+
1266
+ /** BackReferenceReadNode#name */
482
1267
  pm_constant_id_t name;
483
1268
  } pm_back_reference_read_node_t;
484
1269
 
485
- // BeginNode
486
- //
487
- // Type: PM_BEGIN_NODE
1270
+ /**
1271
+ * BeginNode
1272
+ *
1273
+ * Type: PM_BEGIN_NODE
1274
+ *
1275
+ * @extends pm_node_t
1276
+ */
488
1277
  typedef struct pm_begin_node {
1278
+ /** The embedded base node. */
489
1279
  pm_node_t base;
1280
+
1281
+ /** BeginNode#begin_keyword_loc */
490
1282
  pm_location_t begin_keyword_loc;
1283
+
1284
+ /** BeginNode#statements */
491
1285
  struct pm_statements_node *statements;
1286
+
1287
+ /** BeginNode#rescue_clause */
492
1288
  struct pm_rescue_node *rescue_clause;
1289
+
1290
+ /** BeginNode#else_clause */
493
1291
  struct pm_else_node *else_clause;
1292
+
1293
+ /** BeginNode#ensure_clause */
494
1294
  struct pm_ensure_node *ensure_clause;
1295
+
1296
+ /** BeginNode#end_keyword_loc */
495
1297
  pm_location_t end_keyword_loc;
496
1298
  } pm_begin_node_t;
497
1299
 
498
- // BlockArgumentNode
499
- //
500
- // Type: PM_BLOCK_ARGUMENT_NODE
1300
+ /**
1301
+ * BlockArgumentNode
1302
+ *
1303
+ * Type: PM_BLOCK_ARGUMENT_NODE
1304
+ *
1305
+ * @extends pm_node_t
1306
+ */
501
1307
  typedef struct pm_block_argument_node {
1308
+ /** The embedded base node. */
502
1309
  pm_node_t base;
1310
+
1311
+ /** BlockArgumentNode#expression */
503
1312
  struct pm_node *expression;
1313
+
1314
+ /** BlockArgumentNode#operator_loc */
504
1315
  pm_location_t operator_loc;
505
1316
  } pm_block_argument_node_t;
506
1317
 
507
- // BlockLocalVariableNode
508
- //
509
- // Type: PM_BLOCK_LOCAL_VARIABLE_NODE
1318
+ /**
1319
+ * BlockLocalVariableNode
1320
+ *
1321
+ * Type: PM_BLOCK_LOCAL_VARIABLE_NODE
1322
+ *
1323
+ * @extends pm_node_t
1324
+ */
510
1325
  typedef struct pm_block_local_variable_node {
1326
+ /** The embedded base node. */
511
1327
  pm_node_t base;
1328
+
1329
+ /** BlockLocalVariableNode#name */
512
1330
  pm_constant_id_t name;
513
1331
  } pm_block_local_variable_node_t;
514
1332
 
515
- // BlockNode
516
- //
517
- // Type: PM_BLOCK_NODE
1333
+ /**
1334
+ * BlockNode
1335
+ *
1336
+ * Type: PM_BLOCK_NODE
1337
+ *
1338
+ * @extends pm_node_t
1339
+ */
518
1340
  typedef struct pm_block_node {
1341
+ /** The embedded base node. */
519
1342
  pm_node_t base;
1343
+
1344
+ /** BlockNode#locals */
520
1345
  pm_constant_id_list_t locals;
1346
+
1347
+ /** BlockNode#parameters */
521
1348
  struct pm_block_parameters_node *parameters;
1349
+
1350
+ /** BlockNode#body */
522
1351
  struct pm_node *body;
1352
+
1353
+ /** BlockNode#opening_loc */
523
1354
  pm_location_t opening_loc;
1355
+
1356
+ /** BlockNode#closing_loc */
524
1357
  pm_location_t closing_loc;
525
1358
  } pm_block_node_t;
526
1359
 
527
- // BlockParameterNode
528
- //
529
- // Type: PM_BLOCK_PARAMETER_NODE
1360
+ /**
1361
+ * BlockParameterNode
1362
+ *
1363
+ * Type: PM_BLOCK_PARAMETER_NODE
1364
+ *
1365
+ * @extends pm_node_t
1366
+ */
530
1367
  typedef struct pm_block_parameter_node {
1368
+ /** The embedded base node. */
531
1369
  pm_node_t base;
1370
+
1371
+ /** BlockParameterNode#name */
532
1372
  pm_constant_id_t name;
1373
+
1374
+ /** BlockParameterNode#name_loc */
533
1375
  pm_location_t name_loc;
1376
+
1377
+ /** BlockParameterNode#operator_loc */
534
1378
  pm_location_t operator_loc;
535
1379
  } pm_block_parameter_node_t;
536
1380
 
537
- // BlockParametersNode
538
- //
539
- // Type: PM_BLOCK_PARAMETERS_NODE
1381
+ /**
1382
+ * BlockParametersNode
1383
+ *
1384
+ * Type: PM_BLOCK_PARAMETERS_NODE
1385
+ *
1386
+ * @extends pm_node_t
1387
+ */
540
1388
  typedef struct pm_block_parameters_node {
1389
+ /** The embedded base node. */
541
1390
  pm_node_t base;
1391
+
1392
+ /** BlockParametersNode#parameters */
542
1393
  struct pm_parameters_node *parameters;
1394
+
1395
+ /** BlockParametersNode#locals */
543
1396
  struct pm_node_list locals;
1397
+
1398
+ /** BlockParametersNode#opening_loc */
544
1399
  pm_location_t opening_loc;
1400
+
1401
+ /** BlockParametersNode#closing_loc */
545
1402
  pm_location_t closing_loc;
546
1403
  } pm_block_parameters_node_t;
547
1404
 
548
- // BreakNode
549
- //
550
- // Type: PM_BREAK_NODE
1405
+ /**
1406
+ * BreakNode
1407
+ *
1408
+ * Type: PM_BREAK_NODE
1409
+ *
1410
+ * @extends pm_node_t
1411
+ */
551
1412
  typedef struct pm_break_node {
1413
+ /** The embedded base node. */
552
1414
  pm_node_t base;
1415
+
1416
+ /** BreakNode#arguments */
553
1417
  struct pm_arguments_node *arguments;
1418
+
1419
+ /** BreakNode#keyword_loc */
554
1420
  pm_location_t keyword_loc;
555
1421
  } pm_break_node_t;
556
1422
 
557
- // CallAndWriteNode
558
- //
559
- // Type: PM_CALL_AND_WRITE_NODE
560
- // Flags:
561
- // PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
562
- // PM_CALL_NODE_FLAGS_VARIABLE_CALL
1423
+ /**
1424
+ * CallAndWriteNode
1425
+ *
1426
+ * Type: PM_CALL_AND_WRITE_NODE
1427
+ * Flags:
1428
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1429
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1430
+ *
1431
+ * @extends pm_node_t
1432
+ */
563
1433
  typedef struct pm_call_and_write_node {
1434
+ /** The embedded base node. */
564
1435
  pm_node_t base;
1436
+
1437
+ /** CallAndWriteNode#receiver */
565
1438
  struct pm_node *receiver;
1439
+
1440
+ /** CallAndWriteNode#call_operator_loc */
566
1441
  pm_location_t call_operator_loc;
1442
+
1443
+ /** CallAndWriteNode#message_loc */
567
1444
  pm_location_t message_loc;
1445
+
1446
+ /** CallAndWriteNode#read_name */
568
1447
  pm_constant_id_t read_name;
1448
+
1449
+ /** CallAndWriteNode#write_name */
569
1450
  pm_constant_id_t write_name;
1451
+
1452
+ /** CallAndWriteNode#operator_loc */
570
1453
  pm_location_t operator_loc;
1454
+
1455
+ /** CallAndWriteNode#value */
571
1456
  struct pm_node *value;
572
1457
  } pm_call_and_write_node_t;
573
1458
 
574
- // CallNode
575
- //
576
- // Type: PM_CALL_NODE
577
- // Flags:
578
- // PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
579
- // PM_CALL_NODE_FLAGS_VARIABLE_CALL
1459
+ /**
1460
+ * CallNode
1461
+ *
1462
+ * Type: PM_CALL_NODE
1463
+ * Flags:
1464
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1465
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1466
+ *
1467
+ * @extends pm_node_t
1468
+ */
580
1469
  typedef struct pm_call_node {
1470
+ /** The embedded base node. */
581
1471
  pm_node_t base;
1472
+
1473
+ /** CallNode#receiver */
582
1474
  struct pm_node *receiver;
1475
+
1476
+ /** CallNode#call_operator_loc */
583
1477
  pm_location_t call_operator_loc;
1478
+
1479
+ /** CallNode#message_loc */
584
1480
  pm_location_t message_loc;
1481
+
1482
+ /** CallNode#opening_loc */
585
1483
  pm_location_t opening_loc;
1484
+
1485
+ /** CallNode#arguments */
586
1486
  struct pm_arguments_node *arguments;
1487
+
1488
+ /** CallNode#closing_loc */
587
1489
  pm_location_t closing_loc;
1490
+
1491
+ /** CallNode#block */
588
1492
  struct pm_node *block;
1493
+
1494
+ /** CallNode#name */
589
1495
  pm_constant_id_t name;
590
1496
  } pm_call_node_t;
591
1497
 
592
- // CallOperatorWriteNode
593
- //
594
- // Type: PM_CALL_OPERATOR_WRITE_NODE
595
- // Flags:
596
- // PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
597
- // PM_CALL_NODE_FLAGS_VARIABLE_CALL
1498
+ /**
1499
+ * CallOperatorWriteNode
1500
+ *
1501
+ * Type: PM_CALL_OPERATOR_WRITE_NODE
1502
+ * Flags:
1503
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1504
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1505
+ *
1506
+ * @extends pm_node_t
1507
+ */
598
1508
  typedef struct pm_call_operator_write_node {
1509
+ /** The embedded base node. */
599
1510
  pm_node_t base;
1511
+
1512
+ /** CallOperatorWriteNode#receiver */
600
1513
  struct pm_node *receiver;
1514
+
1515
+ /** CallOperatorWriteNode#call_operator_loc */
601
1516
  pm_location_t call_operator_loc;
1517
+
1518
+ /** CallOperatorWriteNode#message_loc */
602
1519
  pm_location_t message_loc;
1520
+
1521
+ /** CallOperatorWriteNode#read_name */
603
1522
  pm_constant_id_t read_name;
1523
+
1524
+ /** CallOperatorWriteNode#write_name */
604
1525
  pm_constant_id_t write_name;
1526
+
1527
+ /** CallOperatorWriteNode#operator */
605
1528
  pm_constant_id_t operator;
1529
+
1530
+ /** CallOperatorWriteNode#operator_loc */
606
1531
  pm_location_t operator_loc;
1532
+
1533
+ /** CallOperatorWriteNode#value */
607
1534
  struct pm_node *value;
608
1535
  } pm_call_operator_write_node_t;
609
1536
 
610
- // CallOrWriteNode
611
- //
612
- // Type: PM_CALL_OR_WRITE_NODE
613
- // Flags:
614
- // PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
615
- // PM_CALL_NODE_FLAGS_VARIABLE_CALL
1537
+ /**
1538
+ * CallOrWriteNode
1539
+ *
1540
+ * Type: PM_CALL_OR_WRITE_NODE
1541
+ * Flags:
1542
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1543
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1544
+ *
1545
+ * @extends pm_node_t
1546
+ */
616
1547
  typedef struct pm_call_or_write_node {
1548
+ /** The embedded base node. */
617
1549
  pm_node_t base;
1550
+
1551
+ /** CallOrWriteNode#receiver */
618
1552
  struct pm_node *receiver;
1553
+
1554
+ /** CallOrWriteNode#call_operator_loc */
619
1555
  pm_location_t call_operator_loc;
1556
+
1557
+ /** CallOrWriteNode#message_loc */
620
1558
  pm_location_t message_loc;
1559
+
1560
+ /** CallOrWriteNode#read_name */
621
1561
  pm_constant_id_t read_name;
1562
+
1563
+ /** CallOrWriteNode#write_name */
622
1564
  pm_constant_id_t write_name;
1565
+
1566
+ /** CallOrWriteNode#operator_loc */
623
1567
  pm_location_t operator_loc;
1568
+
1569
+ /** CallOrWriteNode#value */
624
1570
  struct pm_node *value;
625
1571
  } pm_call_or_write_node_t;
626
1572
 
627
- // CapturePatternNode
628
- //
629
- // Type: PM_CAPTURE_PATTERN_NODE
1573
+ /**
1574
+ * CapturePatternNode
1575
+ *
1576
+ * Type: PM_CAPTURE_PATTERN_NODE
1577
+ *
1578
+ * @extends pm_node_t
1579
+ */
630
1580
  typedef struct pm_capture_pattern_node {
1581
+ /** The embedded base node. */
631
1582
  pm_node_t base;
1583
+
1584
+ /** CapturePatternNode#value */
632
1585
  struct pm_node *value;
1586
+
1587
+ /** CapturePatternNode#target */
633
1588
  struct pm_node *target;
1589
+
1590
+ /** CapturePatternNode#operator_loc */
634
1591
  pm_location_t operator_loc;
635
1592
  } pm_capture_pattern_node_t;
636
1593
 
637
- // CaseNode
638
- //
639
- // Type: PM_CASE_NODE
1594
+ /**
1595
+ * CaseNode
1596
+ *
1597
+ * Type: PM_CASE_NODE
1598
+ *
1599
+ * @extends pm_node_t
1600
+ */
640
1601
  typedef struct pm_case_node {
1602
+ /** The embedded base node. */
641
1603
  pm_node_t base;
1604
+
1605
+ /** CaseNode#predicate */
642
1606
  struct pm_node *predicate;
1607
+
1608
+ /** CaseNode#conditions */
643
1609
  struct pm_node_list conditions;
1610
+
1611
+ /** CaseNode#consequent */
644
1612
  struct pm_else_node *consequent;
1613
+
1614
+ /** CaseNode#case_keyword_loc */
645
1615
  pm_location_t case_keyword_loc;
1616
+
1617
+ /** CaseNode#end_keyword_loc */
646
1618
  pm_location_t end_keyword_loc;
647
1619
  } pm_case_node_t;
648
1620
 
649
- // ClassNode
650
- //
651
- // Type: PM_CLASS_NODE
1621
+ /**
1622
+ * ClassNode
1623
+ *
1624
+ * Type: PM_CLASS_NODE
1625
+ *
1626
+ * @extends pm_node_t
1627
+ */
652
1628
  typedef struct pm_class_node {
1629
+ /** The embedded base node. */
653
1630
  pm_node_t base;
1631
+
1632
+ /** ClassNode#locals */
654
1633
  pm_constant_id_list_t locals;
1634
+
1635
+ /** ClassNode#class_keyword_loc */
655
1636
  pm_location_t class_keyword_loc;
1637
+
1638
+ /** ClassNode#constant_path */
656
1639
  struct pm_node *constant_path;
1640
+
1641
+ /** ClassNode#inheritance_operator_loc */
657
1642
  pm_location_t inheritance_operator_loc;
1643
+
1644
+ /** ClassNode#superclass */
658
1645
  struct pm_node *superclass;
1646
+
1647
+ /** ClassNode#body */
659
1648
  struct pm_node *body;
1649
+
1650
+ /** ClassNode#end_keyword_loc */
660
1651
  pm_location_t end_keyword_loc;
1652
+
1653
+ /** ClassNode#name */
661
1654
  pm_constant_id_t name;
662
1655
  } pm_class_node_t;
663
1656
 
664
- // ClassVariableAndWriteNode
665
- //
666
- // Type: PM_CLASS_VARIABLE_AND_WRITE_NODE
1657
+ /**
1658
+ * ClassVariableAndWriteNode
1659
+ *
1660
+ * Type: PM_CLASS_VARIABLE_AND_WRITE_NODE
1661
+ *
1662
+ * @extends pm_node_t
1663
+ */
667
1664
  typedef struct pm_class_variable_and_write_node {
1665
+ /** The embedded base node. */
668
1666
  pm_node_t base;
1667
+
1668
+ /** ClassVariableAndWriteNode#name */
669
1669
  pm_constant_id_t name;
1670
+
1671
+ /** ClassVariableAndWriteNode#name_loc */
670
1672
  pm_location_t name_loc;
1673
+
1674
+ /** ClassVariableAndWriteNode#operator_loc */
671
1675
  pm_location_t operator_loc;
1676
+
1677
+ /** ClassVariableAndWriteNode#value */
672
1678
  struct pm_node *value;
673
1679
  } pm_class_variable_and_write_node_t;
674
1680
 
675
- // ClassVariableOperatorWriteNode
676
- //
677
- // Type: PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE
1681
+ /**
1682
+ * ClassVariableOperatorWriteNode
1683
+ *
1684
+ * Type: PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE
1685
+ *
1686
+ * @extends pm_node_t
1687
+ */
678
1688
  typedef struct pm_class_variable_operator_write_node {
1689
+ /** The embedded base node. */
679
1690
  pm_node_t base;
1691
+
1692
+ /** ClassVariableOperatorWriteNode#name */
680
1693
  pm_constant_id_t name;
1694
+
1695
+ /** ClassVariableOperatorWriteNode#name_loc */
681
1696
  pm_location_t name_loc;
1697
+
1698
+ /** ClassVariableOperatorWriteNode#operator_loc */
682
1699
  pm_location_t operator_loc;
1700
+
1701
+ /** ClassVariableOperatorWriteNode#value */
683
1702
  struct pm_node *value;
1703
+
1704
+ /** ClassVariableOperatorWriteNode#operator */
684
1705
  pm_constant_id_t operator;
685
1706
  } pm_class_variable_operator_write_node_t;
686
1707
 
687
- // ClassVariableOrWriteNode
688
- //
689
- // Type: PM_CLASS_VARIABLE_OR_WRITE_NODE
1708
+ /**
1709
+ * ClassVariableOrWriteNode
1710
+ *
1711
+ * Type: PM_CLASS_VARIABLE_OR_WRITE_NODE
1712
+ *
1713
+ * @extends pm_node_t
1714
+ */
690
1715
  typedef struct pm_class_variable_or_write_node {
1716
+ /** The embedded base node. */
691
1717
  pm_node_t base;
1718
+
1719
+ /** ClassVariableOrWriteNode#name */
692
1720
  pm_constant_id_t name;
1721
+
1722
+ /** ClassVariableOrWriteNode#name_loc */
693
1723
  pm_location_t name_loc;
1724
+
1725
+ /** ClassVariableOrWriteNode#operator_loc */
694
1726
  pm_location_t operator_loc;
1727
+
1728
+ /** ClassVariableOrWriteNode#value */
695
1729
  struct pm_node *value;
696
1730
  } pm_class_variable_or_write_node_t;
697
1731
 
698
- // ClassVariableReadNode
699
- //
700
- // Type: PM_CLASS_VARIABLE_READ_NODE
1732
+ /**
1733
+ * ClassVariableReadNode
1734
+ *
1735
+ * Type: PM_CLASS_VARIABLE_READ_NODE
1736
+ *
1737
+ * @extends pm_node_t
1738
+ */
701
1739
  typedef struct pm_class_variable_read_node {
1740
+ /** The embedded base node. */
702
1741
  pm_node_t base;
1742
+
1743
+ /** ClassVariableReadNode#name */
703
1744
  pm_constant_id_t name;
704
1745
  } pm_class_variable_read_node_t;
705
1746
 
706
- // ClassVariableTargetNode
707
- //
708
- // Type: PM_CLASS_VARIABLE_TARGET_NODE
1747
+ /**
1748
+ * ClassVariableTargetNode
1749
+ *
1750
+ * Type: PM_CLASS_VARIABLE_TARGET_NODE
1751
+ *
1752
+ * @extends pm_node_t
1753
+ */
709
1754
  typedef struct pm_class_variable_target_node {
1755
+ /** The embedded base node. */
710
1756
  pm_node_t base;
1757
+
1758
+ /** ClassVariableTargetNode#name */
711
1759
  pm_constant_id_t name;
712
1760
  } pm_class_variable_target_node_t;
713
1761
 
714
- // ClassVariableWriteNode
715
- //
716
- // Type: PM_CLASS_VARIABLE_WRITE_NODE
1762
+ /**
1763
+ * ClassVariableWriteNode
1764
+ *
1765
+ * Type: PM_CLASS_VARIABLE_WRITE_NODE
1766
+ *
1767
+ * @extends pm_node_t
1768
+ */
717
1769
  typedef struct pm_class_variable_write_node {
1770
+ /** The embedded base node. */
718
1771
  pm_node_t base;
1772
+
1773
+ /** ClassVariableWriteNode#name */
719
1774
  pm_constant_id_t name;
1775
+
1776
+ /** ClassVariableWriteNode#name_loc */
720
1777
  pm_location_t name_loc;
1778
+
1779
+ /** ClassVariableWriteNode#value */
721
1780
  struct pm_node *value;
1781
+
1782
+ /** ClassVariableWriteNode#operator_loc */
722
1783
  pm_location_t operator_loc;
723
1784
  } pm_class_variable_write_node_t;
724
1785
 
725
- // ConstantAndWriteNode
726
- //
727
- // Type: PM_CONSTANT_AND_WRITE_NODE
1786
+ /**
1787
+ * ConstantAndWriteNode
1788
+ *
1789
+ * Type: PM_CONSTANT_AND_WRITE_NODE
1790
+ *
1791
+ * @extends pm_node_t
1792
+ */
728
1793
  typedef struct pm_constant_and_write_node {
1794
+ /** The embedded base node. */
729
1795
  pm_node_t base;
1796
+
1797
+ /** ConstantAndWriteNode#name */
730
1798
  pm_constant_id_t name;
1799
+
1800
+ /** ConstantAndWriteNode#name_loc */
731
1801
  pm_location_t name_loc;
1802
+
1803
+ /** ConstantAndWriteNode#operator_loc */
732
1804
  pm_location_t operator_loc;
1805
+
1806
+ /** ConstantAndWriteNode#value */
733
1807
  struct pm_node *value;
734
1808
  } pm_constant_and_write_node_t;
735
1809
 
736
- // ConstantOperatorWriteNode
737
- //
738
- // Type: PM_CONSTANT_OPERATOR_WRITE_NODE
1810
+ /**
1811
+ * ConstantOperatorWriteNode
1812
+ *
1813
+ * Type: PM_CONSTANT_OPERATOR_WRITE_NODE
1814
+ *
1815
+ * @extends pm_node_t
1816
+ */
739
1817
  typedef struct pm_constant_operator_write_node {
1818
+ /** The embedded base node. */
740
1819
  pm_node_t base;
1820
+
1821
+ /** ConstantOperatorWriteNode#name */
741
1822
  pm_constant_id_t name;
1823
+
1824
+ /** ConstantOperatorWriteNode#name_loc */
742
1825
  pm_location_t name_loc;
1826
+
1827
+ /** ConstantOperatorWriteNode#operator_loc */
743
1828
  pm_location_t operator_loc;
1829
+
1830
+ /** ConstantOperatorWriteNode#value */
744
1831
  struct pm_node *value;
1832
+
1833
+ /** ConstantOperatorWriteNode#operator */
745
1834
  pm_constant_id_t operator;
746
1835
  } pm_constant_operator_write_node_t;
747
1836
 
748
- // ConstantOrWriteNode
749
- //
750
- // Type: PM_CONSTANT_OR_WRITE_NODE
1837
+ /**
1838
+ * ConstantOrWriteNode
1839
+ *
1840
+ * Type: PM_CONSTANT_OR_WRITE_NODE
1841
+ *
1842
+ * @extends pm_node_t
1843
+ */
751
1844
  typedef struct pm_constant_or_write_node {
1845
+ /** The embedded base node. */
752
1846
  pm_node_t base;
1847
+
1848
+ /** ConstantOrWriteNode#name */
753
1849
  pm_constant_id_t name;
1850
+
1851
+ /** ConstantOrWriteNode#name_loc */
754
1852
  pm_location_t name_loc;
1853
+
1854
+ /** ConstantOrWriteNode#operator_loc */
755
1855
  pm_location_t operator_loc;
1856
+
1857
+ /** ConstantOrWriteNode#value */
756
1858
  struct pm_node *value;
757
1859
  } pm_constant_or_write_node_t;
758
1860
 
759
- // ConstantPathAndWriteNode
760
- //
761
- // Type: PM_CONSTANT_PATH_AND_WRITE_NODE
1861
+ /**
1862
+ * ConstantPathAndWriteNode
1863
+ *
1864
+ * Type: PM_CONSTANT_PATH_AND_WRITE_NODE
1865
+ *
1866
+ * @extends pm_node_t
1867
+ */
762
1868
  typedef struct pm_constant_path_and_write_node {
1869
+ /** The embedded base node. */
763
1870
  pm_node_t base;
1871
+
1872
+ /** ConstantPathAndWriteNode#target */
764
1873
  struct pm_constant_path_node *target;
1874
+
1875
+ /** ConstantPathAndWriteNode#operator_loc */
765
1876
  pm_location_t operator_loc;
1877
+
1878
+ /** ConstantPathAndWriteNode#value */
766
1879
  struct pm_node *value;
767
1880
  } pm_constant_path_and_write_node_t;
768
1881
 
769
- // ConstantPathNode
770
- //
771
- // Type: PM_CONSTANT_PATH_NODE
1882
+ /**
1883
+ * ConstantPathNode
1884
+ *
1885
+ * Type: PM_CONSTANT_PATH_NODE
1886
+ *
1887
+ * @extends pm_node_t
1888
+ */
772
1889
  typedef struct pm_constant_path_node {
1890
+ /** The embedded base node. */
773
1891
  pm_node_t base;
1892
+
1893
+ /** ConstantPathNode#parent */
774
1894
  struct pm_node *parent;
1895
+
1896
+ /** ConstantPathNode#child */
775
1897
  struct pm_node *child;
1898
+
1899
+ /** ConstantPathNode#delimiter_loc */
776
1900
  pm_location_t delimiter_loc;
777
1901
  } pm_constant_path_node_t;
778
1902
 
779
- // ConstantPathOperatorWriteNode
780
- //
781
- // Type: PM_CONSTANT_PATH_OPERATOR_WRITE_NODE
1903
+ /**
1904
+ * ConstantPathOperatorWriteNode
1905
+ *
1906
+ * Type: PM_CONSTANT_PATH_OPERATOR_WRITE_NODE
1907
+ *
1908
+ * @extends pm_node_t
1909
+ */
782
1910
  typedef struct pm_constant_path_operator_write_node {
1911
+ /** The embedded base node. */
783
1912
  pm_node_t base;
1913
+
1914
+ /** ConstantPathOperatorWriteNode#target */
784
1915
  struct pm_constant_path_node *target;
1916
+
1917
+ /** ConstantPathOperatorWriteNode#operator_loc */
785
1918
  pm_location_t operator_loc;
1919
+
1920
+ /** ConstantPathOperatorWriteNode#value */
786
1921
  struct pm_node *value;
1922
+
1923
+ /** ConstantPathOperatorWriteNode#operator */
787
1924
  pm_constant_id_t operator;
788
1925
  } pm_constant_path_operator_write_node_t;
789
1926
 
790
- // ConstantPathOrWriteNode
791
- //
792
- // Type: PM_CONSTANT_PATH_OR_WRITE_NODE
1927
+ /**
1928
+ * ConstantPathOrWriteNode
1929
+ *
1930
+ * Type: PM_CONSTANT_PATH_OR_WRITE_NODE
1931
+ *
1932
+ * @extends pm_node_t
1933
+ */
793
1934
  typedef struct pm_constant_path_or_write_node {
1935
+ /** The embedded base node. */
794
1936
  pm_node_t base;
1937
+
1938
+ /** ConstantPathOrWriteNode#target */
795
1939
  struct pm_constant_path_node *target;
1940
+
1941
+ /** ConstantPathOrWriteNode#operator_loc */
796
1942
  pm_location_t operator_loc;
1943
+
1944
+ /** ConstantPathOrWriteNode#value */
797
1945
  struct pm_node *value;
798
1946
  } pm_constant_path_or_write_node_t;
799
1947
 
800
- // ConstantPathTargetNode
801
- //
802
- // Type: PM_CONSTANT_PATH_TARGET_NODE
1948
+ /**
1949
+ * ConstantPathTargetNode
1950
+ *
1951
+ * Type: PM_CONSTANT_PATH_TARGET_NODE
1952
+ *
1953
+ * @extends pm_node_t
1954
+ */
803
1955
  typedef struct pm_constant_path_target_node {
1956
+ /** The embedded base node. */
804
1957
  pm_node_t base;
1958
+
1959
+ /** ConstantPathTargetNode#parent */
805
1960
  struct pm_node *parent;
1961
+
1962
+ /** ConstantPathTargetNode#child */
806
1963
  struct pm_node *child;
1964
+
1965
+ /** ConstantPathTargetNode#delimiter_loc */
807
1966
  pm_location_t delimiter_loc;
808
1967
  } pm_constant_path_target_node_t;
809
1968
 
810
- // ConstantPathWriteNode
811
- //
812
- // Type: PM_CONSTANT_PATH_WRITE_NODE
1969
+ /**
1970
+ * ConstantPathWriteNode
1971
+ *
1972
+ * Type: PM_CONSTANT_PATH_WRITE_NODE
1973
+ *
1974
+ * @extends pm_node_t
1975
+ */
813
1976
  typedef struct pm_constant_path_write_node {
1977
+ /** The embedded base node. */
814
1978
  pm_node_t base;
1979
+
1980
+ /** ConstantPathWriteNode#target */
815
1981
  struct pm_constant_path_node *target;
1982
+
1983
+ /** ConstantPathWriteNode#operator_loc */
816
1984
  pm_location_t operator_loc;
1985
+
1986
+ /** ConstantPathWriteNode#value */
817
1987
  struct pm_node *value;
818
1988
  } pm_constant_path_write_node_t;
819
1989
 
820
- // ConstantReadNode
821
- //
822
- // Type: PM_CONSTANT_READ_NODE
1990
+ /**
1991
+ * ConstantReadNode
1992
+ *
1993
+ * Type: PM_CONSTANT_READ_NODE
1994
+ *
1995
+ * @extends pm_node_t
1996
+ */
823
1997
  typedef struct pm_constant_read_node {
1998
+ /** The embedded base node. */
824
1999
  pm_node_t base;
2000
+
2001
+ /** ConstantReadNode#name */
825
2002
  pm_constant_id_t name;
826
2003
  } pm_constant_read_node_t;
827
2004
 
828
- // ConstantTargetNode
829
- //
830
- // Type: PM_CONSTANT_TARGET_NODE
2005
+ /**
2006
+ * ConstantTargetNode
2007
+ *
2008
+ * Type: PM_CONSTANT_TARGET_NODE
2009
+ *
2010
+ * @extends pm_node_t
2011
+ */
831
2012
  typedef struct pm_constant_target_node {
2013
+ /** The embedded base node. */
832
2014
  pm_node_t base;
2015
+
2016
+ /** ConstantTargetNode#name */
833
2017
  pm_constant_id_t name;
834
2018
  } pm_constant_target_node_t;
835
2019
 
836
- // ConstantWriteNode
837
- //
838
- // Type: PM_CONSTANT_WRITE_NODE
2020
+ /**
2021
+ * ConstantWriteNode
2022
+ *
2023
+ * Type: PM_CONSTANT_WRITE_NODE
2024
+ *
2025
+ * @extends pm_node_t
2026
+ */
839
2027
  typedef struct pm_constant_write_node {
2028
+ /** The embedded base node. */
840
2029
  pm_node_t base;
2030
+
2031
+ /** ConstantWriteNode#name */
841
2032
  pm_constant_id_t name;
2033
+
2034
+ /** ConstantWriteNode#name_loc */
842
2035
  pm_location_t name_loc;
2036
+
2037
+ /** ConstantWriteNode#value */
843
2038
  struct pm_node *value;
2039
+
2040
+ /** ConstantWriteNode#operator_loc */
844
2041
  pm_location_t operator_loc;
845
2042
  } pm_constant_write_node_t;
846
2043
 
847
- // DefNode
848
- //
849
- // Type: PM_DEF_NODE
2044
+ /**
2045
+ * DefNode
2046
+ *
2047
+ * Type: PM_DEF_NODE
2048
+ *
2049
+ * @extends pm_node_t
2050
+ */
850
2051
  typedef struct pm_def_node {
2052
+ /** The embedded base node. */
851
2053
  pm_node_t base;
2054
+
2055
+ /** DefNode#name */
852
2056
  pm_constant_id_t name;
2057
+
2058
+ /** DefNode#name_loc */
853
2059
  pm_location_t name_loc;
2060
+
2061
+ /** DefNode#receiver */
854
2062
  struct pm_node *receiver;
2063
+
2064
+ /** DefNode#parameters */
855
2065
  struct pm_parameters_node *parameters;
2066
+
2067
+ /** DefNode#body */
856
2068
  struct pm_node *body;
2069
+
2070
+ /** DefNode#locals */
857
2071
  pm_constant_id_list_t locals;
2072
+
2073
+ /** DefNode#def_keyword_loc */
858
2074
  pm_location_t def_keyword_loc;
2075
+
2076
+ /** DefNode#operator_loc */
859
2077
  pm_location_t operator_loc;
2078
+
2079
+ /** DefNode#lparen_loc */
860
2080
  pm_location_t lparen_loc;
2081
+
2082
+ /** DefNode#rparen_loc */
861
2083
  pm_location_t rparen_loc;
2084
+
2085
+ /** DefNode#equal_loc */
862
2086
  pm_location_t equal_loc;
2087
+
2088
+ /** DefNode#end_keyword_loc */
863
2089
  pm_location_t end_keyword_loc;
864
2090
  } pm_def_node_t;
865
2091
 
866
- // DefinedNode
867
- //
868
- // Type: PM_DEFINED_NODE
2092
+ /**
2093
+ * DefinedNode
2094
+ *
2095
+ * Type: PM_DEFINED_NODE
2096
+ *
2097
+ * @extends pm_node_t
2098
+ */
869
2099
  typedef struct pm_defined_node {
2100
+ /** The embedded base node. */
870
2101
  pm_node_t base;
2102
+
2103
+ /** DefinedNode#lparen_loc */
871
2104
  pm_location_t lparen_loc;
2105
+
2106
+ /** DefinedNode#value */
872
2107
  struct pm_node *value;
2108
+
2109
+ /** DefinedNode#rparen_loc */
873
2110
  pm_location_t rparen_loc;
2111
+
2112
+ /** DefinedNode#keyword_loc */
874
2113
  pm_location_t keyword_loc;
875
2114
  } pm_defined_node_t;
876
2115
 
877
- // ElseNode
878
- //
879
- // Type: PM_ELSE_NODE
2116
+ /**
2117
+ * ElseNode
2118
+ *
2119
+ * Type: PM_ELSE_NODE
2120
+ *
2121
+ * @extends pm_node_t
2122
+ */
880
2123
  typedef struct pm_else_node {
2124
+ /** The embedded base node. */
881
2125
  pm_node_t base;
2126
+
2127
+ /** ElseNode#else_keyword_loc */
882
2128
  pm_location_t else_keyword_loc;
2129
+
2130
+ /** ElseNode#statements */
883
2131
  struct pm_statements_node *statements;
2132
+
2133
+ /** ElseNode#end_keyword_loc */
884
2134
  pm_location_t end_keyword_loc;
885
2135
  } pm_else_node_t;
886
2136
 
887
- // EmbeddedStatementsNode
888
- //
889
- // Type: PM_EMBEDDED_STATEMENTS_NODE
2137
+ /**
2138
+ * EmbeddedStatementsNode
2139
+ *
2140
+ * Type: PM_EMBEDDED_STATEMENTS_NODE
2141
+ *
2142
+ * @extends pm_node_t
2143
+ */
890
2144
  typedef struct pm_embedded_statements_node {
2145
+ /** The embedded base node. */
891
2146
  pm_node_t base;
2147
+
2148
+ /** EmbeddedStatementsNode#opening_loc */
892
2149
  pm_location_t opening_loc;
2150
+
2151
+ /** EmbeddedStatementsNode#statements */
893
2152
  struct pm_statements_node *statements;
2153
+
2154
+ /** EmbeddedStatementsNode#closing_loc */
894
2155
  pm_location_t closing_loc;
895
2156
  } pm_embedded_statements_node_t;
896
2157
 
897
- // EmbeddedVariableNode
898
- //
899
- // Type: PM_EMBEDDED_VARIABLE_NODE
2158
+ /**
2159
+ * EmbeddedVariableNode
2160
+ *
2161
+ * Type: PM_EMBEDDED_VARIABLE_NODE
2162
+ *
2163
+ * @extends pm_node_t
2164
+ */
900
2165
  typedef struct pm_embedded_variable_node {
2166
+ /** The embedded base node. */
901
2167
  pm_node_t base;
2168
+
2169
+ /** EmbeddedVariableNode#operator_loc */
902
2170
  pm_location_t operator_loc;
2171
+
2172
+ /** EmbeddedVariableNode#variable */
903
2173
  struct pm_node *variable;
904
2174
  } pm_embedded_variable_node_t;
905
2175
 
906
- // EnsureNode
907
- //
908
- // Type: PM_ENSURE_NODE
2176
+ /**
2177
+ * EnsureNode
2178
+ *
2179
+ * Type: PM_ENSURE_NODE
2180
+ *
2181
+ * @extends pm_node_t
2182
+ */
909
2183
  typedef struct pm_ensure_node {
2184
+ /** The embedded base node. */
910
2185
  pm_node_t base;
2186
+
2187
+ /** EnsureNode#ensure_keyword_loc */
911
2188
  pm_location_t ensure_keyword_loc;
2189
+
2190
+ /** EnsureNode#statements */
912
2191
  struct pm_statements_node *statements;
2192
+
2193
+ /** EnsureNode#end_keyword_loc */
913
2194
  pm_location_t end_keyword_loc;
914
2195
  } pm_ensure_node_t;
915
2196
 
916
- // FalseNode
917
- //
918
- // Type: PM_FALSE_NODE
2197
+ /**
2198
+ * FalseNode
2199
+ *
2200
+ * Type: PM_FALSE_NODE
2201
+ *
2202
+ * @extends pm_node_t
2203
+ */
919
2204
  typedef struct pm_false_node {
2205
+ /** The embedded base node. */
920
2206
  pm_node_t base;
921
2207
  } pm_false_node_t;
922
2208
 
923
- // FindPatternNode
924
- //
925
- // Type: PM_FIND_PATTERN_NODE
2209
+ /**
2210
+ * FindPatternNode
2211
+ *
2212
+ * Type: PM_FIND_PATTERN_NODE
2213
+ *
2214
+ * @extends pm_node_t
2215
+ */
926
2216
  typedef struct pm_find_pattern_node {
2217
+ /** The embedded base node. */
927
2218
  pm_node_t base;
2219
+
2220
+ /** FindPatternNode#constant */
928
2221
  struct pm_node *constant;
2222
+
2223
+ /** FindPatternNode#left */
929
2224
  struct pm_node *left;
2225
+
2226
+ /** FindPatternNode#requireds */
930
2227
  struct pm_node_list requireds;
2228
+
2229
+ /** FindPatternNode#right */
931
2230
  struct pm_node *right;
2231
+
2232
+ /** FindPatternNode#opening_loc */
932
2233
  pm_location_t opening_loc;
2234
+
2235
+ /** FindPatternNode#closing_loc */
933
2236
  pm_location_t closing_loc;
934
2237
  } pm_find_pattern_node_t;
935
2238
 
936
- // FlipFlopNode
937
- //
938
- // Type: PM_FLIP_FLOP_NODE
939
- // Flags:
940
- // PM_RANGE_FLAGS_EXCLUDE_END
2239
+ /**
2240
+ * FlipFlopNode
2241
+ *
2242
+ * Type: PM_FLIP_FLOP_NODE
2243
+ * Flags:
2244
+ * PM_RANGE_FLAGS_EXCLUDE_END
2245
+ *
2246
+ * @extends pm_node_t
2247
+ */
941
2248
  typedef struct pm_flip_flop_node {
2249
+ /** The embedded base node. */
942
2250
  pm_node_t base;
2251
+
2252
+ /** FlipFlopNode#left */
943
2253
  struct pm_node *left;
2254
+
2255
+ /** FlipFlopNode#right */
944
2256
  struct pm_node *right;
2257
+
2258
+ /** FlipFlopNode#operator_loc */
945
2259
  pm_location_t operator_loc;
946
2260
  } pm_flip_flop_node_t;
947
2261
 
948
- // FloatNode
949
- //
950
- // Type: PM_FLOAT_NODE
2262
+ /**
2263
+ * FloatNode
2264
+ *
2265
+ * Type: PM_FLOAT_NODE
2266
+ *
2267
+ * @extends pm_node_t
2268
+ */
951
2269
  typedef struct pm_float_node {
2270
+ /** The embedded base node. */
952
2271
  pm_node_t base;
953
2272
  } pm_float_node_t;
954
2273
 
955
- // ForNode
956
- //
957
- // Type: PM_FOR_NODE
2274
+ /**
2275
+ * ForNode
2276
+ *
2277
+ * Type: PM_FOR_NODE
2278
+ *
2279
+ * @extends pm_node_t
2280
+ */
958
2281
  typedef struct pm_for_node {
2282
+ /** The embedded base node. */
959
2283
  pm_node_t base;
2284
+
2285
+ /** ForNode#index */
960
2286
  struct pm_node *index;
2287
+
2288
+ /** ForNode#collection */
961
2289
  struct pm_node *collection;
2290
+
2291
+ /** ForNode#statements */
962
2292
  struct pm_statements_node *statements;
2293
+
2294
+ /** ForNode#for_keyword_loc */
963
2295
  pm_location_t for_keyword_loc;
2296
+
2297
+ /** ForNode#in_keyword_loc */
964
2298
  pm_location_t in_keyword_loc;
2299
+
2300
+ /** ForNode#do_keyword_loc */
965
2301
  pm_location_t do_keyword_loc;
2302
+
2303
+ /** ForNode#end_keyword_loc */
966
2304
  pm_location_t end_keyword_loc;
967
2305
  } pm_for_node_t;
968
2306
 
969
- // ForwardingArgumentsNode
970
- //
971
- // Type: PM_FORWARDING_ARGUMENTS_NODE
2307
+ /**
2308
+ * ForwardingArgumentsNode
2309
+ *
2310
+ * Type: PM_FORWARDING_ARGUMENTS_NODE
2311
+ *
2312
+ * @extends pm_node_t
2313
+ */
972
2314
  typedef struct pm_forwarding_arguments_node {
2315
+ /** The embedded base node. */
973
2316
  pm_node_t base;
974
2317
  } pm_forwarding_arguments_node_t;
975
2318
 
976
- // ForwardingParameterNode
977
- //
978
- // Type: PM_FORWARDING_PARAMETER_NODE
2319
+ /**
2320
+ * ForwardingParameterNode
2321
+ *
2322
+ * Type: PM_FORWARDING_PARAMETER_NODE
2323
+ *
2324
+ * @extends pm_node_t
2325
+ */
979
2326
  typedef struct pm_forwarding_parameter_node {
2327
+ /** The embedded base node. */
980
2328
  pm_node_t base;
981
2329
  } pm_forwarding_parameter_node_t;
982
2330
 
983
- // ForwardingSuperNode
984
- //
985
- // Type: PM_FORWARDING_SUPER_NODE
2331
+ /**
2332
+ * ForwardingSuperNode
2333
+ *
2334
+ * Type: PM_FORWARDING_SUPER_NODE
2335
+ *
2336
+ * @extends pm_node_t
2337
+ */
986
2338
  typedef struct pm_forwarding_super_node {
2339
+ /** The embedded base node. */
987
2340
  pm_node_t base;
2341
+
2342
+ /** ForwardingSuperNode#block */
988
2343
  struct pm_block_node *block;
989
2344
  } pm_forwarding_super_node_t;
990
2345
 
991
- // GlobalVariableAndWriteNode
992
- //
993
- // Type: PM_GLOBAL_VARIABLE_AND_WRITE_NODE
2346
+ /**
2347
+ * GlobalVariableAndWriteNode
2348
+ *
2349
+ * Type: PM_GLOBAL_VARIABLE_AND_WRITE_NODE
2350
+ *
2351
+ * @extends pm_node_t
2352
+ */
994
2353
  typedef struct pm_global_variable_and_write_node {
2354
+ /** The embedded base node. */
995
2355
  pm_node_t base;
2356
+
2357
+ /** GlobalVariableAndWriteNode#name */
996
2358
  pm_constant_id_t name;
2359
+
2360
+ /** GlobalVariableAndWriteNode#name_loc */
997
2361
  pm_location_t name_loc;
2362
+
2363
+ /** GlobalVariableAndWriteNode#operator_loc */
998
2364
  pm_location_t operator_loc;
2365
+
2366
+ /** GlobalVariableAndWriteNode#value */
999
2367
  struct pm_node *value;
1000
2368
  } pm_global_variable_and_write_node_t;
1001
2369
 
1002
- // GlobalVariableOperatorWriteNode
1003
- //
1004
- // Type: PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE
2370
+ /**
2371
+ * GlobalVariableOperatorWriteNode
2372
+ *
2373
+ * Type: PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE
2374
+ *
2375
+ * @extends pm_node_t
2376
+ */
1005
2377
  typedef struct pm_global_variable_operator_write_node {
2378
+ /** The embedded base node. */
1006
2379
  pm_node_t base;
2380
+
2381
+ /** GlobalVariableOperatorWriteNode#name */
1007
2382
  pm_constant_id_t name;
2383
+
2384
+ /** GlobalVariableOperatorWriteNode#name_loc */
1008
2385
  pm_location_t name_loc;
2386
+
2387
+ /** GlobalVariableOperatorWriteNode#operator_loc */
1009
2388
  pm_location_t operator_loc;
2389
+
2390
+ /** GlobalVariableOperatorWriteNode#value */
1010
2391
  struct pm_node *value;
2392
+
2393
+ /** GlobalVariableOperatorWriteNode#operator */
1011
2394
  pm_constant_id_t operator;
1012
2395
  } pm_global_variable_operator_write_node_t;
1013
2396
 
1014
- // GlobalVariableOrWriteNode
1015
- //
1016
- // Type: PM_GLOBAL_VARIABLE_OR_WRITE_NODE
2397
+ /**
2398
+ * GlobalVariableOrWriteNode
2399
+ *
2400
+ * Type: PM_GLOBAL_VARIABLE_OR_WRITE_NODE
2401
+ *
2402
+ * @extends pm_node_t
2403
+ */
1017
2404
  typedef struct pm_global_variable_or_write_node {
2405
+ /** The embedded base node. */
1018
2406
  pm_node_t base;
2407
+
2408
+ /** GlobalVariableOrWriteNode#name */
1019
2409
  pm_constant_id_t name;
2410
+
2411
+ /** GlobalVariableOrWriteNode#name_loc */
1020
2412
  pm_location_t name_loc;
2413
+
2414
+ /** GlobalVariableOrWriteNode#operator_loc */
1021
2415
  pm_location_t operator_loc;
2416
+
2417
+ /** GlobalVariableOrWriteNode#value */
1022
2418
  struct pm_node *value;
1023
2419
  } pm_global_variable_or_write_node_t;
1024
2420
 
1025
- // GlobalVariableReadNode
1026
- //
1027
- // Type: PM_GLOBAL_VARIABLE_READ_NODE
2421
+ /**
2422
+ * GlobalVariableReadNode
2423
+ *
2424
+ * Type: PM_GLOBAL_VARIABLE_READ_NODE
2425
+ *
2426
+ * @extends pm_node_t
2427
+ */
1028
2428
  typedef struct pm_global_variable_read_node {
2429
+ /** The embedded base node. */
1029
2430
  pm_node_t base;
2431
+
2432
+ /** GlobalVariableReadNode#name */
1030
2433
  pm_constant_id_t name;
1031
2434
  } pm_global_variable_read_node_t;
1032
2435
 
1033
- // GlobalVariableTargetNode
1034
- //
1035
- // Type: PM_GLOBAL_VARIABLE_TARGET_NODE
2436
+ /**
2437
+ * GlobalVariableTargetNode
2438
+ *
2439
+ * Type: PM_GLOBAL_VARIABLE_TARGET_NODE
2440
+ *
2441
+ * @extends pm_node_t
2442
+ */
1036
2443
  typedef struct pm_global_variable_target_node {
2444
+ /** The embedded base node. */
1037
2445
  pm_node_t base;
2446
+
2447
+ /** GlobalVariableTargetNode#name */
1038
2448
  pm_constant_id_t name;
1039
2449
  } pm_global_variable_target_node_t;
1040
2450
 
1041
- // GlobalVariableWriteNode
1042
- //
1043
- // Type: PM_GLOBAL_VARIABLE_WRITE_NODE
2451
+ /**
2452
+ * GlobalVariableWriteNode
2453
+ *
2454
+ * Type: PM_GLOBAL_VARIABLE_WRITE_NODE
2455
+ *
2456
+ * @extends pm_node_t
2457
+ */
1044
2458
  typedef struct pm_global_variable_write_node {
2459
+ /** The embedded base node. */
1045
2460
  pm_node_t base;
2461
+
2462
+ /** GlobalVariableWriteNode#name */
1046
2463
  pm_constant_id_t name;
2464
+
2465
+ /** GlobalVariableWriteNode#name_loc */
1047
2466
  pm_location_t name_loc;
2467
+
2468
+ /** GlobalVariableWriteNode#value */
1048
2469
  struct pm_node *value;
2470
+
2471
+ /** GlobalVariableWriteNode#operator_loc */
1049
2472
  pm_location_t operator_loc;
1050
2473
  } pm_global_variable_write_node_t;
1051
2474
 
1052
- // HashNode
1053
- //
1054
- // Type: PM_HASH_NODE
2475
+ /**
2476
+ * HashNode
2477
+ *
2478
+ * Type: PM_HASH_NODE
2479
+ *
2480
+ * @extends pm_node_t
2481
+ */
1055
2482
  typedef struct pm_hash_node {
2483
+ /** The embedded base node. */
1056
2484
  pm_node_t base;
2485
+
2486
+ /** HashNode#opening_loc */
1057
2487
  pm_location_t opening_loc;
2488
+
2489
+ /** HashNode#elements */
1058
2490
  struct pm_node_list elements;
2491
+
2492
+ /** HashNode#closing_loc */
1059
2493
  pm_location_t closing_loc;
1060
2494
  } pm_hash_node_t;
1061
2495
 
1062
- // HashPatternNode
1063
- //
1064
- // Type: PM_HASH_PATTERN_NODE
2496
+ /**
2497
+ * HashPatternNode
2498
+ *
2499
+ * Type: PM_HASH_PATTERN_NODE
2500
+ *
2501
+ * @extends pm_node_t
2502
+ */
1065
2503
  typedef struct pm_hash_pattern_node {
2504
+ /** The embedded base node. */
1066
2505
  pm_node_t base;
2506
+
2507
+ /** HashPatternNode#constant */
1067
2508
  struct pm_node *constant;
1068
- struct pm_node_list assocs;
1069
- struct pm_node *kwrest;
2509
+
2510
+ /** HashPatternNode#elements */
2511
+ struct pm_node_list elements;
2512
+
2513
+ /** HashPatternNode#rest */
2514
+ struct pm_node *rest;
2515
+
2516
+ /** HashPatternNode#opening_loc */
1070
2517
  pm_location_t opening_loc;
2518
+
2519
+ /** HashPatternNode#closing_loc */
1071
2520
  pm_location_t closing_loc;
1072
2521
  } pm_hash_pattern_node_t;
1073
2522
 
1074
- // IfNode
1075
- //
1076
- // Type: PM_IF_NODE
2523
+ /**
2524
+ * IfNode
2525
+ *
2526
+ * Type: PM_IF_NODE
2527
+ *
2528
+ * @extends pm_node_t
2529
+ */
1077
2530
  typedef struct pm_if_node {
2531
+ /** The embedded base node. */
1078
2532
  pm_node_t base;
2533
+
2534
+ /** IfNode#if_keyword_loc */
1079
2535
  pm_location_t if_keyword_loc;
2536
+
2537
+ /** IfNode#predicate */
1080
2538
  struct pm_node *predicate;
2539
+
2540
+ /** IfNode#statements */
1081
2541
  struct pm_statements_node *statements;
2542
+
2543
+ /** IfNode#consequent */
1082
2544
  struct pm_node *consequent;
2545
+
2546
+ /** IfNode#end_keyword_loc */
1083
2547
  pm_location_t end_keyword_loc;
1084
2548
  } pm_if_node_t;
1085
2549
 
1086
- // ImaginaryNode
1087
- //
1088
- // Type: PM_IMAGINARY_NODE
2550
+ /**
2551
+ * ImaginaryNode
2552
+ *
2553
+ * Type: PM_IMAGINARY_NODE
2554
+ *
2555
+ * @extends pm_node_t
2556
+ */
1089
2557
  typedef struct pm_imaginary_node {
2558
+ /** The embedded base node. */
1090
2559
  pm_node_t base;
2560
+
2561
+ /** ImaginaryNode#numeric */
1091
2562
  struct pm_node *numeric;
1092
2563
  } pm_imaginary_node_t;
1093
2564
 
1094
- // ImplicitNode
1095
- //
1096
- // Type: PM_IMPLICIT_NODE
2565
+ /**
2566
+ * ImplicitNode
2567
+ *
2568
+ * Type: PM_IMPLICIT_NODE
2569
+ *
2570
+ * @extends pm_node_t
2571
+ */
1097
2572
  typedef struct pm_implicit_node {
2573
+ /** The embedded base node. */
1098
2574
  pm_node_t base;
2575
+
2576
+ /** ImplicitNode#value */
1099
2577
  struct pm_node *value;
1100
2578
  } pm_implicit_node_t;
1101
2579
 
1102
- // InNode
1103
- //
1104
- // Type: PM_IN_NODE
2580
+ /**
2581
+ * InNode
2582
+ *
2583
+ * Type: PM_IN_NODE
2584
+ *
2585
+ * @extends pm_node_t
2586
+ */
1105
2587
  typedef struct pm_in_node {
2588
+ /** The embedded base node. */
1106
2589
  pm_node_t base;
2590
+
2591
+ /** InNode#pattern */
1107
2592
  struct pm_node *pattern;
2593
+
2594
+ /** InNode#statements */
1108
2595
  struct pm_statements_node *statements;
2596
+
2597
+ /** InNode#in_loc */
1109
2598
  pm_location_t in_loc;
2599
+
2600
+ /** InNode#then_loc */
1110
2601
  pm_location_t then_loc;
1111
2602
  } pm_in_node_t;
1112
2603
 
1113
- // IndexAndWriteNode
1114
- //
1115
- // Type: PM_INDEX_AND_WRITE_NODE
1116
- // Flags:
1117
- // PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1118
- // PM_CALL_NODE_FLAGS_VARIABLE_CALL
2604
+ /**
2605
+ * IndexAndWriteNode
2606
+ *
2607
+ * Type: PM_INDEX_AND_WRITE_NODE
2608
+ * Flags:
2609
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
2610
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
2611
+ *
2612
+ * @extends pm_node_t
2613
+ */
1119
2614
  typedef struct pm_index_and_write_node {
2615
+ /** The embedded base node. */
1120
2616
  pm_node_t base;
2617
+
2618
+ /** IndexAndWriteNode#receiver */
1121
2619
  struct pm_node *receiver;
2620
+
2621
+ /** IndexAndWriteNode#call_operator_loc */
1122
2622
  pm_location_t call_operator_loc;
2623
+
2624
+ /** IndexAndWriteNode#opening_loc */
1123
2625
  pm_location_t opening_loc;
2626
+
2627
+ /** IndexAndWriteNode#arguments */
1124
2628
  struct pm_arguments_node *arguments;
2629
+
2630
+ /** IndexAndWriteNode#closing_loc */
1125
2631
  pm_location_t closing_loc;
2632
+
2633
+ /** IndexAndWriteNode#block */
1126
2634
  struct pm_node *block;
2635
+
2636
+ /** IndexAndWriteNode#operator_loc */
1127
2637
  pm_location_t operator_loc;
2638
+
2639
+ /** IndexAndWriteNode#value */
1128
2640
  struct pm_node *value;
1129
2641
  } pm_index_and_write_node_t;
1130
2642
 
1131
- // IndexOperatorWriteNode
1132
- //
1133
- // Type: PM_INDEX_OPERATOR_WRITE_NODE
1134
- // Flags:
1135
- // PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1136
- // PM_CALL_NODE_FLAGS_VARIABLE_CALL
2643
+ /**
2644
+ * IndexOperatorWriteNode
2645
+ *
2646
+ * Type: PM_INDEX_OPERATOR_WRITE_NODE
2647
+ * Flags:
2648
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
2649
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
2650
+ *
2651
+ * @extends pm_node_t
2652
+ */
1137
2653
  typedef struct pm_index_operator_write_node {
2654
+ /** The embedded base node. */
1138
2655
  pm_node_t base;
2656
+
2657
+ /** IndexOperatorWriteNode#receiver */
1139
2658
  struct pm_node *receiver;
2659
+
2660
+ /** IndexOperatorWriteNode#call_operator_loc */
1140
2661
  pm_location_t call_operator_loc;
2662
+
2663
+ /** IndexOperatorWriteNode#opening_loc */
1141
2664
  pm_location_t opening_loc;
2665
+
2666
+ /** IndexOperatorWriteNode#arguments */
1142
2667
  struct pm_arguments_node *arguments;
2668
+
2669
+ /** IndexOperatorWriteNode#closing_loc */
1143
2670
  pm_location_t closing_loc;
2671
+
2672
+ /** IndexOperatorWriteNode#block */
1144
2673
  struct pm_node *block;
2674
+
2675
+ /** IndexOperatorWriteNode#operator */
1145
2676
  pm_constant_id_t operator;
2677
+
2678
+ /** IndexOperatorWriteNode#operator_loc */
1146
2679
  pm_location_t operator_loc;
2680
+
2681
+ /** IndexOperatorWriteNode#value */
1147
2682
  struct pm_node *value;
1148
2683
  } pm_index_operator_write_node_t;
1149
2684
 
1150
- // IndexOrWriteNode
1151
- //
1152
- // Type: PM_INDEX_OR_WRITE_NODE
1153
- // Flags:
1154
- // PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1155
- // PM_CALL_NODE_FLAGS_VARIABLE_CALL
2685
+ /**
2686
+ * IndexOrWriteNode
2687
+ *
2688
+ * Type: PM_INDEX_OR_WRITE_NODE
2689
+ * Flags:
2690
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
2691
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
2692
+ *
2693
+ * @extends pm_node_t
2694
+ */
1156
2695
  typedef struct pm_index_or_write_node {
2696
+ /** The embedded base node. */
1157
2697
  pm_node_t base;
2698
+
2699
+ /** IndexOrWriteNode#receiver */
1158
2700
  struct pm_node *receiver;
2701
+
2702
+ /** IndexOrWriteNode#call_operator_loc */
1159
2703
  pm_location_t call_operator_loc;
2704
+
2705
+ /** IndexOrWriteNode#opening_loc */
1160
2706
  pm_location_t opening_loc;
2707
+
2708
+ /** IndexOrWriteNode#arguments */
1161
2709
  struct pm_arguments_node *arguments;
2710
+
2711
+ /** IndexOrWriteNode#closing_loc */
1162
2712
  pm_location_t closing_loc;
2713
+
2714
+ /** IndexOrWriteNode#block */
1163
2715
  struct pm_node *block;
2716
+
2717
+ /** IndexOrWriteNode#operator_loc */
1164
2718
  pm_location_t operator_loc;
2719
+
2720
+ /** IndexOrWriteNode#value */
1165
2721
  struct pm_node *value;
1166
2722
  } pm_index_or_write_node_t;
1167
2723
 
1168
- // InstanceVariableAndWriteNode
1169
- //
1170
- // Type: PM_INSTANCE_VARIABLE_AND_WRITE_NODE
2724
+ /**
2725
+ * InstanceVariableAndWriteNode
2726
+ *
2727
+ * Type: PM_INSTANCE_VARIABLE_AND_WRITE_NODE
2728
+ *
2729
+ * @extends pm_node_t
2730
+ */
1171
2731
  typedef struct pm_instance_variable_and_write_node {
2732
+ /** The embedded base node. */
1172
2733
  pm_node_t base;
2734
+
2735
+ /** InstanceVariableAndWriteNode#name */
1173
2736
  pm_constant_id_t name;
2737
+
2738
+ /** InstanceVariableAndWriteNode#name_loc */
1174
2739
  pm_location_t name_loc;
2740
+
2741
+ /** InstanceVariableAndWriteNode#operator_loc */
1175
2742
  pm_location_t operator_loc;
2743
+
2744
+ /** InstanceVariableAndWriteNode#value */
1176
2745
  struct pm_node *value;
1177
2746
  } pm_instance_variable_and_write_node_t;
1178
2747
 
1179
- // InstanceVariableOperatorWriteNode
1180
- //
1181
- // Type: PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE
2748
+ /**
2749
+ * InstanceVariableOperatorWriteNode
2750
+ *
2751
+ * Type: PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE
2752
+ *
2753
+ * @extends pm_node_t
2754
+ */
1182
2755
  typedef struct pm_instance_variable_operator_write_node {
2756
+ /** The embedded base node. */
1183
2757
  pm_node_t base;
2758
+
2759
+ /** InstanceVariableOperatorWriteNode#name */
1184
2760
  pm_constant_id_t name;
2761
+
2762
+ /** InstanceVariableOperatorWriteNode#name_loc */
1185
2763
  pm_location_t name_loc;
2764
+
2765
+ /** InstanceVariableOperatorWriteNode#operator_loc */
1186
2766
  pm_location_t operator_loc;
2767
+
2768
+ /** InstanceVariableOperatorWriteNode#value */
1187
2769
  struct pm_node *value;
2770
+
2771
+ /** InstanceVariableOperatorWriteNode#operator */
1188
2772
  pm_constant_id_t operator;
1189
2773
  } pm_instance_variable_operator_write_node_t;
1190
2774
 
1191
- // InstanceVariableOrWriteNode
1192
- //
1193
- // Type: PM_INSTANCE_VARIABLE_OR_WRITE_NODE
2775
+ /**
2776
+ * InstanceVariableOrWriteNode
2777
+ *
2778
+ * Type: PM_INSTANCE_VARIABLE_OR_WRITE_NODE
2779
+ *
2780
+ * @extends pm_node_t
2781
+ */
1194
2782
  typedef struct pm_instance_variable_or_write_node {
2783
+ /** The embedded base node. */
1195
2784
  pm_node_t base;
2785
+
2786
+ /** InstanceVariableOrWriteNode#name */
1196
2787
  pm_constant_id_t name;
2788
+
2789
+ /** InstanceVariableOrWriteNode#name_loc */
1197
2790
  pm_location_t name_loc;
2791
+
2792
+ /** InstanceVariableOrWriteNode#operator_loc */
1198
2793
  pm_location_t operator_loc;
2794
+
2795
+ /** InstanceVariableOrWriteNode#value */
1199
2796
  struct pm_node *value;
1200
2797
  } pm_instance_variable_or_write_node_t;
1201
2798
 
1202
- // InstanceVariableReadNode
1203
- //
1204
- // Type: PM_INSTANCE_VARIABLE_READ_NODE
2799
+ /**
2800
+ * InstanceVariableReadNode
2801
+ *
2802
+ * Type: PM_INSTANCE_VARIABLE_READ_NODE
2803
+ *
2804
+ * @extends pm_node_t
2805
+ */
1205
2806
  typedef struct pm_instance_variable_read_node {
2807
+ /** The embedded base node. */
1206
2808
  pm_node_t base;
2809
+
2810
+ /** InstanceVariableReadNode#name */
1207
2811
  pm_constant_id_t name;
1208
2812
  } pm_instance_variable_read_node_t;
1209
2813
 
1210
- // InstanceVariableTargetNode
1211
- //
1212
- // Type: PM_INSTANCE_VARIABLE_TARGET_NODE
2814
+ /**
2815
+ * InstanceVariableTargetNode
2816
+ *
2817
+ * Type: PM_INSTANCE_VARIABLE_TARGET_NODE
2818
+ *
2819
+ * @extends pm_node_t
2820
+ */
1213
2821
  typedef struct pm_instance_variable_target_node {
2822
+ /** The embedded base node. */
1214
2823
  pm_node_t base;
2824
+
2825
+ /** InstanceVariableTargetNode#name */
1215
2826
  pm_constant_id_t name;
1216
2827
  } pm_instance_variable_target_node_t;
1217
2828
 
1218
- // InstanceVariableWriteNode
1219
- //
1220
- // Type: PM_INSTANCE_VARIABLE_WRITE_NODE
2829
+ /**
2830
+ * InstanceVariableWriteNode
2831
+ *
2832
+ * Type: PM_INSTANCE_VARIABLE_WRITE_NODE
2833
+ *
2834
+ * @extends pm_node_t
2835
+ */
1221
2836
  typedef struct pm_instance_variable_write_node {
2837
+ /** The embedded base node. */
1222
2838
  pm_node_t base;
2839
+
2840
+ /** InstanceVariableWriteNode#name */
1223
2841
  pm_constant_id_t name;
2842
+
2843
+ /** InstanceVariableWriteNode#name_loc */
1224
2844
  pm_location_t name_loc;
2845
+
2846
+ /** InstanceVariableWriteNode#value */
1225
2847
  struct pm_node *value;
2848
+
2849
+ /** InstanceVariableWriteNode#operator_loc */
1226
2850
  pm_location_t operator_loc;
1227
2851
  } pm_instance_variable_write_node_t;
1228
2852
 
1229
- // IntegerNode
1230
- //
1231
- // Type: PM_INTEGER_NODE
1232
- // Flags:
1233
- // PM_INTEGER_BASE_FLAGS_BINARY
1234
- // PM_INTEGER_BASE_FLAGS_OCTAL
1235
- // PM_INTEGER_BASE_FLAGS_DECIMAL
1236
- // PM_INTEGER_BASE_FLAGS_HEXADECIMAL
2853
+ /**
2854
+ * IntegerNode
2855
+ *
2856
+ * Type: PM_INTEGER_NODE
2857
+ * Flags:
2858
+ * PM_INTEGER_BASE_FLAGS_BINARY
2859
+ * PM_INTEGER_BASE_FLAGS_OCTAL
2860
+ * PM_INTEGER_BASE_FLAGS_DECIMAL
2861
+ * PM_INTEGER_BASE_FLAGS_HEXADECIMAL
2862
+ *
2863
+ * @extends pm_node_t
2864
+ */
1237
2865
  typedef struct pm_integer_node {
2866
+ /** The embedded base node. */
1238
2867
  pm_node_t base;
1239
2868
  } pm_integer_node_t;
1240
2869
 
1241
- // InterpolatedMatchLastLineNode
1242
- //
1243
- // Type: PM_INTERPOLATED_MATCH_LAST_LINE_NODE
1244
- // Flags:
1245
- // PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
1246
- // PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
1247
- // PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
1248
- // PM_REGULAR_EXPRESSION_FLAGS_ONCE
1249
- // PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
1250
- // PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
1251
- // PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
1252
- // PM_REGULAR_EXPRESSION_FLAGS_UTF_8
2870
+ /**
2871
+ * InterpolatedMatchLastLineNode
2872
+ *
2873
+ * Type: PM_INTERPOLATED_MATCH_LAST_LINE_NODE
2874
+ * Flags:
2875
+ * PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
2876
+ * PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
2877
+ * PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
2878
+ * PM_REGULAR_EXPRESSION_FLAGS_ONCE
2879
+ * PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
2880
+ * PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
2881
+ * PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
2882
+ * PM_REGULAR_EXPRESSION_FLAGS_UTF_8
2883
+ *
2884
+ * @extends pm_node_t
2885
+ */
1253
2886
  typedef struct pm_interpolated_match_last_line_node {
2887
+ /** The embedded base node. */
1254
2888
  pm_node_t base;
2889
+
2890
+ /** InterpolatedMatchLastLineNode#opening_loc */
1255
2891
  pm_location_t opening_loc;
2892
+
2893
+ /** InterpolatedMatchLastLineNode#parts */
1256
2894
  struct pm_node_list parts;
2895
+
2896
+ /** InterpolatedMatchLastLineNode#closing_loc */
1257
2897
  pm_location_t closing_loc;
1258
2898
  } pm_interpolated_match_last_line_node_t;
1259
2899
 
1260
- // InterpolatedRegularExpressionNode
1261
- //
1262
- // Type: PM_INTERPOLATED_REGULAR_EXPRESSION_NODE
1263
- // Flags:
1264
- // PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
1265
- // PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
1266
- // PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
1267
- // PM_REGULAR_EXPRESSION_FLAGS_ONCE
1268
- // PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
1269
- // PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
1270
- // PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
1271
- // PM_REGULAR_EXPRESSION_FLAGS_UTF_8
2900
+ /**
2901
+ * InterpolatedRegularExpressionNode
2902
+ *
2903
+ * Type: PM_INTERPOLATED_REGULAR_EXPRESSION_NODE
2904
+ * Flags:
2905
+ * PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
2906
+ * PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
2907
+ * PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
2908
+ * PM_REGULAR_EXPRESSION_FLAGS_ONCE
2909
+ * PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
2910
+ * PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
2911
+ * PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
2912
+ * PM_REGULAR_EXPRESSION_FLAGS_UTF_8
2913
+ *
2914
+ * @extends pm_node_t
2915
+ */
1272
2916
  typedef struct pm_interpolated_regular_expression_node {
2917
+ /** The embedded base node. */
1273
2918
  pm_node_t base;
2919
+
2920
+ /** InterpolatedRegularExpressionNode#opening_loc */
1274
2921
  pm_location_t opening_loc;
2922
+
2923
+ /** InterpolatedRegularExpressionNode#parts */
1275
2924
  struct pm_node_list parts;
2925
+
2926
+ /** InterpolatedRegularExpressionNode#closing_loc */
1276
2927
  pm_location_t closing_loc;
1277
2928
  } pm_interpolated_regular_expression_node_t;
1278
2929
 
1279
- // InterpolatedStringNode
1280
- //
1281
- // Type: PM_INTERPOLATED_STRING_NODE
2930
+ /**
2931
+ * InterpolatedStringNode
2932
+ *
2933
+ * Type: PM_INTERPOLATED_STRING_NODE
2934
+ *
2935
+ * @extends pm_node_t
2936
+ */
1282
2937
  typedef struct pm_interpolated_string_node {
2938
+ /** The embedded base node. */
1283
2939
  pm_node_t base;
2940
+
2941
+ /** InterpolatedStringNode#opening_loc */
1284
2942
  pm_location_t opening_loc;
2943
+
2944
+ /** InterpolatedStringNode#parts */
1285
2945
  struct pm_node_list parts;
2946
+
2947
+ /** InterpolatedStringNode#closing_loc */
1286
2948
  pm_location_t closing_loc;
1287
2949
  } pm_interpolated_string_node_t;
1288
2950
 
1289
- // InterpolatedSymbolNode
1290
- //
1291
- // Type: PM_INTERPOLATED_SYMBOL_NODE
2951
+ /**
2952
+ * InterpolatedSymbolNode
2953
+ *
2954
+ * Type: PM_INTERPOLATED_SYMBOL_NODE
2955
+ *
2956
+ * @extends pm_node_t
2957
+ */
1292
2958
  typedef struct pm_interpolated_symbol_node {
2959
+ /** The embedded base node. */
1293
2960
  pm_node_t base;
2961
+
2962
+ /** InterpolatedSymbolNode#opening_loc */
1294
2963
  pm_location_t opening_loc;
2964
+
2965
+ /** InterpolatedSymbolNode#parts */
1295
2966
  struct pm_node_list parts;
2967
+
2968
+ /** InterpolatedSymbolNode#closing_loc */
1296
2969
  pm_location_t closing_loc;
1297
2970
  } pm_interpolated_symbol_node_t;
1298
2971
 
1299
- // InterpolatedXStringNode
1300
- //
1301
- // Type: PM_INTERPOLATED_X_STRING_NODE
2972
+ /**
2973
+ * InterpolatedXStringNode
2974
+ *
2975
+ * Type: PM_INTERPOLATED_X_STRING_NODE
2976
+ *
2977
+ * @extends pm_node_t
2978
+ */
1302
2979
  typedef struct pm_interpolated_x_string_node {
2980
+ /** The embedded base node. */
1303
2981
  pm_node_t base;
2982
+
2983
+ /** InterpolatedXStringNode#opening_loc */
1304
2984
  pm_location_t opening_loc;
2985
+
2986
+ /** InterpolatedXStringNode#parts */
1305
2987
  struct pm_node_list parts;
2988
+
2989
+ /** InterpolatedXStringNode#closing_loc */
1306
2990
  pm_location_t closing_loc;
1307
2991
  } pm_interpolated_x_string_node_t;
1308
2992
 
1309
- // KeywordHashNode
1310
- //
1311
- // Type: PM_KEYWORD_HASH_NODE
2993
+ /**
2994
+ * KeywordHashNode
2995
+ *
2996
+ * Type: PM_KEYWORD_HASH_NODE
2997
+ *
2998
+ * @extends pm_node_t
2999
+ */
1312
3000
  typedef struct pm_keyword_hash_node {
3001
+ /** The embedded base node. */
1313
3002
  pm_node_t base;
3003
+
3004
+ /** KeywordHashNode#elements */
1314
3005
  struct pm_node_list elements;
1315
3006
  } pm_keyword_hash_node_t;
1316
3007
 
1317
- // KeywordParameterNode
1318
- //
1319
- // Type: PM_KEYWORD_PARAMETER_NODE
1320
- typedef struct pm_keyword_parameter_node {
1321
- pm_node_t base;
1322
- pm_constant_id_t name;
1323
- pm_location_t name_loc;
1324
- struct pm_node *value;
1325
- } pm_keyword_parameter_node_t;
1326
-
1327
- // KeywordRestParameterNode
1328
- //
1329
- // Type: PM_KEYWORD_REST_PARAMETER_NODE
3008
+ /**
3009
+ * KeywordRestParameterNode
3010
+ *
3011
+ * Type: PM_KEYWORD_REST_PARAMETER_NODE
3012
+ *
3013
+ * @extends pm_node_t
3014
+ */
1330
3015
  typedef struct pm_keyword_rest_parameter_node {
3016
+ /** The embedded base node. */
1331
3017
  pm_node_t base;
3018
+
3019
+ /** KeywordRestParameterNode#name */
1332
3020
  pm_constant_id_t name;
3021
+
3022
+ /** KeywordRestParameterNode#name_loc */
1333
3023
  pm_location_t name_loc;
3024
+
3025
+ /** KeywordRestParameterNode#operator_loc */
1334
3026
  pm_location_t operator_loc;
1335
3027
  } pm_keyword_rest_parameter_node_t;
1336
3028
 
1337
- // LambdaNode
1338
- //
1339
- // Type: PM_LAMBDA_NODE
3029
+ /**
3030
+ * LambdaNode
3031
+ *
3032
+ * Type: PM_LAMBDA_NODE
3033
+ *
3034
+ * @extends pm_node_t
3035
+ */
1340
3036
  typedef struct pm_lambda_node {
3037
+ /** The embedded base node. */
1341
3038
  pm_node_t base;
3039
+
3040
+ /** LambdaNode#locals */
1342
3041
  pm_constant_id_list_t locals;
3042
+
3043
+ /** LambdaNode#operator_loc */
1343
3044
  pm_location_t operator_loc;
3045
+
3046
+ /** LambdaNode#opening_loc */
1344
3047
  pm_location_t opening_loc;
3048
+
3049
+ /** LambdaNode#closing_loc */
1345
3050
  pm_location_t closing_loc;
3051
+
3052
+ /** LambdaNode#parameters */
1346
3053
  struct pm_block_parameters_node *parameters;
3054
+
3055
+ /** LambdaNode#body */
1347
3056
  struct pm_node *body;
1348
3057
  } pm_lambda_node_t;
1349
3058
 
1350
- // LocalVariableAndWriteNode
1351
- //
1352
- // Type: PM_LOCAL_VARIABLE_AND_WRITE_NODE
3059
+ /**
3060
+ * LocalVariableAndWriteNode
3061
+ *
3062
+ * Type: PM_LOCAL_VARIABLE_AND_WRITE_NODE
3063
+ *
3064
+ * @extends pm_node_t
3065
+ */
1353
3066
  typedef struct pm_local_variable_and_write_node {
3067
+ /** The embedded base node. */
1354
3068
  pm_node_t base;
3069
+
3070
+ /** LocalVariableAndWriteNode#name_loc */
1355
3071
  pm_location_t name_loc;
3072
+
3073
+ /** LocalVariableAndWriteNode#operator_loc */
1356
3074
  pm_location_t operator_loc;
3075
+
3076
+ /** LocalVariableAndWriteNode#value */
1357
3077
  struct pm_node *value;
3078
+
3079
+ /** LocalVariableAndWriteNode#name */
1358
3080
  pm_constant_id_t name;
3081
+
3082
+ /** LocalVariableAndWriteNode#depth */
1359
3083
  uint32_t depth;
1360
3084
  } pm_local_variable_and_write_node_t;
1361
3085
 
1362
- // LocalVariableOperatorWriteNode
1363
- //
1364
- // Type: PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE
3086
+ /**
3087
+ * LocalVariableOperatorWriteNode
3088
+ *
3089
+ * Type: PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE
3090
+ *
3091
+ * @extends pm_node_t
3092
+ */
1365
3093
  typedef struct pm_local_variable_operator_write_node {
3094
+ /** The embedded base node. */
1366
3095
  pm_node_t base;
3096
+
3097
+ /** LocalVariableOperatorWriteNode#name_loc */
1367
3098
  pm_location_t name_loc;
3099
+
3100
+ /** LocalVariableOperatorWriteNode#operator_loc */
1368
3101
  pm_location_t operator_loc;
3102
+
3103
+ /** LocalVariableOperatorWriteNode#value */
1369
3104
  struct pm_node *value;
3105
+
3106
+ /** LocalVariableOperatorWriteNode#name */
1370
3107
  pm_constant_id_t name;
3108
+
3109
+ /** LocalVariableOperatorWriteNode#operator */
1371
3110
  pm_constant_id_t operator;
3111
+
3112
+ /** LocalVariableOperatorWriteNode#depth */
1372
3113
  uint32_t depth;
1373
3114
  } pm_local_variable_operator_write_node_t;
1374
3115
 
1375
- // LocalVariableOrWriteNode
1376
- //
1377
- // Type: PM_LOCAL_VARIABLE_OR_WRITE_NODE
3116
+ /**
3117
+ * LocalVariableOrWriteNode
3118
+ *
3119
+ * Type: PM_LOCAL_VARIABLE_OR_WRITE_NODE
3120
+ *
3121
+ * @extends pm_node_t
3122
+ */
1378
3123
  typedef struct pm_local_variable_or_write_node {
3124
+ /** The embedded base node. */
1379
3125
  pm_node_t base;
3126
+
3127
+ /** LocalVariableOrWriteNode#name_loc */
1380
3128
  pm_location_t name_loc;
3129
+
3130
+ /** LocalVariableOrWriteNode#operator_loc */
1381
3131
  pm_location_t operator_loc;
3132
+
3133
+ /** LocalVariableOrWriteNode#value */
1382
3134
  struct pm_node *value;
3135
+
3136
+ /** LocalVariableOrWriteNode#name */
1383
3137
  pm_constant_id_t name;
3138
+
3139
+ /** LocalVariableOrWriteNode#depth */
1384
3140
  uint32_t depth;
1385
3141
  } pm_local_variable_or_write_node_t;
1386
3142
 
1387
- // LocalVariableReadNode
1388
- //
1389
- // Type: PM_LOCAL_VARIABLE_READ_NODE
3143
+ /**
3144
+ * LocalVariableReadNode
3145
+ *
3146
+ * Type: PM_LOCAL_VARIABLE_READ_NODE
3147
+ *
3148
+ * @extends pm_node_t
3149
+ */
1390
3150
  typedef struct pm_local_variable_read_node {
3151
+ /** The embedded base node. */
1391
3152
  pm_node_t base;
3153
+
3154
+ /** LocalVariableReadNode#name */
1392
3155
  pm_constant_id_t name;
3156
+
3157
+ /** LocalVariableReadNode#depth */
1393
3158
  uint32_t depth;
1394
3159
  } pm_local_variable_read_node_t;
1395
3160
 
1396
- // LocalVariableTargetNode
1397
- //
1398
- // Type: PM_LOCAL_VARIABLE_TARGET_NODE
3161
+ /**
3162
+ * LocalVariableTargetNode
3163
+ *
3164
+ * Type: PM_LOCAL_VARIABLE_TARGET_NODE
3165
+ *
3166
+ * @extends pm_node_t
3167
+ */
1399
3168
  typedef struct pm_local_variable_target_node {
3169
+ /** The embedded base node. */
1400
3170
  pm_node_t base;
3171
+
3172
+ /** LocalVariableTargetNode#name */
1401
3173
  pm_constant_id_t name;
3174
+
3175
+ /** LocalVariableTargetNode#depth */
1402
3176
  uint32_t depth;
1403
3177
  } pm_local_variable_target_node_t;
1404
3178
 
1405
- // LocalVariableWriteNode
1406
- //
1407
- // Type: PM_LOCAL_VARIABLE_WRITE_NODE
3179
+ /**
3180
+ * LocalVariableWriteNode
3181
+ *
3182
+ * Type: PM_LOCAL_VARIABLE_WRITE_NODE
3183
+ *
3184
+ * @extends pm_node_t
3185
+ */
1408
3186
  typedef struct pm_local_variable_write_node {
3187
+ /** The embedded base node. */
1409
3188
  pm_node_t base;
3189
+
3190
+ /** LocalVariableWriteNode#name */
1410
3191
  pm_constant_id_t name;
3192
+
3193
+ /** LocalVariableWriteNode#depth */
1411
3194
  uint32_t depth;
3195
+
3196
+ /** LocalVariableWriteNode#name_loc */
1412
3197
  pm_location_t name_loc;
3198
+
3199
+ /** LocalVariableWriteNode#value */
1413
3200
  struct pm_node *value;
3201
+
3202
+ /** LocalVariableWriteNode#operator_loc */
1414
3203
  pm_location_t operator_loc;
1415
3204
  } pm_local_variable_write_node_t;
1416
3205
 
1417
- // MatchLastLineNode
1418
- //
1419
- // Type: PM_MATCH_LAST_LINE_NODE
1420
- // Flags:
1421
- // PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
1422
- // PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
1423
- // PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
1424
- // PM_REGULAR_EXPRESSION_FLAGS_ONCE
1425
- // PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
1426
- // PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
1427
- // PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
1428
- // PM_REGULAR_EXPRESSION_FLAGS_UTF_8
3206
+ /**
3207
+ * MatchLastLineNode
3208
+ *
3209
+ * Type: PM_MATCH_LAST_LINE_NODE
3210
+ * Flags:
3211
+ * PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
3212
+ * PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
3213
+ * PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
3214
+ * PM_REGULAR_EXPRESSION_FLAGS_ONCE
3215
+ * PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
3216
+ * PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
3217
+ * PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
3218
+ * PM_REGULAR_EXPRESSION_FLAGS_UTF_8
3219
+ *
3220
+ * @extends pm_node_t
3221
+ */
1429
3222
  typedef struct pm_match_last_line_node {
3223
+ /** The embedded base node. */
1430
3224
  pm_node_t base;
3225
+
3226
+ /** MatchLastLineNode#opening_loc */
1431
3227
  pm_location_t opening_loc;
3228
+
3229
+ /** MatchLastLineNode#content_loc */
1432
3230
  pm_location_t content_loc;
3231
+
3232
+ /** MatchLastLineNode#closing_loc */
1433
3233
  pm_location_t closing_loc;
3234
+
3235
+ /** MatchLastLineNode#unescaped */
1434
3236
  pm_string_t unescaped;
1435
3237
  } pm_match_last_line_node_t;
1436
3238
 
1437
- // MatchPredicateNode
1438
- //
1439
- // Type: PM_MATCH_PREDICATE_NODE
3239
+ /**
3240
+ * MatchPredicateNode
3241
+ *
3242
+ * Type: PM_MATCH_PREDICATE_NODE
3243
+ *
3244
+ * @extends pm_node_t
3245
+ */
1440
3246
  typedef struct pm_match_predicate_node {
3247
+ /** The embedded base node. */
1441
3248
  pm_node_t base;
3249
+
3250
+ /** MatchPredicateNode#value */
1442
3251
  struct pm_node *value;
3252
+
3253
+ /** MatchPredicateNode#pattern */
1443
3254
  struct pm_node *pattern;
3255
+
3256
+ /** MatchPredicateNode#operator_loc */
1444
3257
  pm_location_t operator_loc;
1445
3258
  } pm_match_predicate_node_t;
1446
3259
 
1447
- // MatchRequiredNode
1448
- //
1449
- // Type: PM_MATCH_REQUIRED_NODE
3260
+ /**
3261
+ * MatchRequiredNode
3262
+ *
3263
+ * Type: PM_MATCH_REQUIRED_NODE
3264
+ *
3265
+ * @extends pm_node_t
3266
+ */
1450
3267
  typedef struct pm_match_required_node {
3268
+ /** The embedded base node. */
1451
3269
  pm_node_t base;
3270
+
3271
+ /** MatchRequiredNode#value */
1452
3272
  struct pm_node *value;
3273
+
3274
+ /** MatchRequiredNode#pattern */
1453
3275
  struct pm_node *pattern;
3276
+
3277
+ /** MatchRequiredNode#operator_loc */
1454
3278
  pm_location_t operator_loc;
1455
3279
  } pm_match_required_node_t;
1456
3280
 
1457
- // MatchWriteNode
1458
- //
1459
- // Type: PM_MATCH_WRITE_NODE
3281
+ /**
3282
+ * MatchWriteNode
3283
+ *
3284
+ * Type: PM_MATCH_WRITE_NODE
3285
+ *
3286
+ * @extends pm_node_t
3287
+ */
1460
3288
  typedef struct pm_match_write_node {
3289
+ /** The embedded base node. */
1461
3290
  pm_node_t base;
3291
+
3292
+ /** MatchWriteNode#call */
1462
3293
  struct pm_call_node *call;
3294
+
3295
+ /** MatchWriteNode#locals */
1463
3296
  pm_constant_id_list_t locals;
1464
3297
  } pm_match_write_node_t;
1465
3298
 
1466
- // MissingNode
1467
- //
1468
- // Type: PM_MISSING_NODE
3299
+ /**
3300
+ * MissingNode
3301
+ *
3302
+ * Type: PM_MISSING_NODE
3303
+ *
3304
+ * @extends pm_node_t
3305
+ */
1469
3306
  typedef struct pm_missing_node {
3307
+ /** The embedded base node. */
1470
3308
  pm_node_t base;
1471
3309
  } pm_missing_node_t;
1472
3310
 
1473
- // ModuleNode
1474
- //
1475
- // Type: PM_MODULE_NODE
3311
+ /**
3312
+ * ModuleNode
3313
+ *
3314
+ * Type: PM_MODULE_NODE
3315
+ *
3316
+ * @extends pm_node_t
3317
+ */
1476
3318
  typedef struct pm_module_node {
3319
+ /** The embedded base node. */
1477
3320
  pm_node_t base;
3321
+
3322
+ /** ModuleNode#locals */
1478
3323
  pm_constant_id_list_t locals;
3324
+
3325
+ /** ModuleNode#module_keyword_loc */
1479
3326
  pm_location_t module_keyword_loc;
3327
+
3328
+ /** ModuleNode#constant_path */
1480
3329
  struct pm_node *constant_path;
3330
+
3331
+ /** ModuleNode#body */
1481
3332
  struct pm_node *body;
3333
+
3334
+ /** ModuleNode#end_keyword_loc */
1482
3335
  pm_location_t end_keyword_loc;
3336
+
3337
+ /** ModuleNode#name */
1483
3338
  pm_constant_id_t name;
1484
3339
  } pm_module_node_t;
1485
3340
 
1486
- // MultiTargetNode
1487
- //
1488
- // Type: PM_MULTI_TARGET_NODE
3341
+ /**
3342
+ * MultiTargetNode
3343
+ *
3344
+ * Type: PM_MULTI_TARGET_NODE
3345
+ *
3346
+ * @extends pm_node_t
3347
+ */
1489
3348
  typedef struct pm_multi_target_node {
3349
+ /** The embedded base node. */
1490
3350
  pm_node_t base;
1491
- struct pm_node_list targets;
3351
+
3352
+ /** MultiTargetNode#lefts */
3353
+ struct pm_node_list lefts;
3354
+
3355
+ /** MultiTargetNode#rest */
3356
+ struct pm_node *rest;
3357
+
3358
+ /** MultiTargetNode#rights */
3359
+ struct pm_node_list rights;
3360
+
3361
+ /** MultiTargetNode#lparen_loc */
1492
3362
  pm_location_t lparen_loc;
3363
+
3364
+ /** MultiTargetNode#rparen_loc */
1493
3365
  pm_location_t rparen_loc;
1494
3366
  } pm_multi_target_node_t;
1495
3367
 
1496
- // MultiWriteNode
1497
- //
1498
- // Type: PM_MULTI_WRITE_NODE
3368
+ /**
3369
+ * MultiWriteNode
3370
+ *
3371
+ * Type: PM_MULTI_WRITE_NODE
3372
+ *
3373
+ * @extends pm_node_t
3374
+ */
1499
3375
  typedef struct pm_multi_write_node {
3376
+ /** The embedded base node. */
1500
3377
  pm_node_t base;
1501
- struct pm_node_list targets;
3378
+
3379
+ /** MultiWriteNode#lefts */
3380
+ struct pm_node_list lefts;
3381
+
3382
+ /** MultiWriteNode#rest */
3383
+ struct pm_node *rest;
3384
+
3385
+ /** MultiWriteNode#rights */
3386
+ struct pm_node_list rights;
3387
+
3388
+ /** MultiWriteNode#lparen_loc */
1502
3389
  pm_location_t lparen_loc;
3390
+
3391
+ /** MultiWriteNode#rparen_loc */
1503
3392
  pm_location_t rparen_loc;
3393
+
3394
+ /** MultiWriteNode#operator_loc */
1504
3395
  pm_location_t operator_loc;
3396
+
3397
+ /** MultiWriteNode#value */
1505
3398
  struct pm_node *value;
1506
3399
  } pm_multi_write_node_t;
1507
3400
 
1508
- // NextNode
1509
- //
1510
- // Type: PM_NEXT_NODE
3401
+ /**
3402
+ * NextNode
3403
+ *
3404
+ * Type: PM_NEXT_NODE
3405
+ *
3406
+ * @extends pm_node_t
3407
+ */
1511
3408
  typedef struct pm_next_node {
3409
+ /** The embedded base node. */
1512
3410
  pm_node_t base;
3411
+
3412
+ /** NextNode#arguments */
1513
3413
  struct pm_arguments_node *arguments;
3414
+
3415
+ /** NextNode#keyword_loc */
1514
3416
  pm_location_t keyword_loc;
1515
3417
  } pm_next_node_t;
1516
3418
 
1517
- // NilNode
1518
- //
1519
- // Type: PM_NIL_NODE
3419
+ /**
3420
+ * NilNode
3421
+ *
3422
+ * Type: PM_NIL_NODE
3423
+ *
3424
+ * @extends pm_node_t
3425
+ */
1520
3426
  typedef struct pm_nil_node {
3427
+ /** The embedded base node. */
1521
3428
  pm_node_t base;
1522
3429
  } pm_nil_node_t;
1523
3430
 
1524
- // NoKeywordsParameterNode
1525
- //
1526
- // Type: PM_NO_KEYWORDS_PARAMETER_NODE
3431
+ /**
3432
+ * NoKeywordsParameterNode
3433
+ *
3434
+ * Type: PM_NO_KEYWORDS_PARAMETER_NODE
3435
+ *
3436
+ * @extends pm_node_t
3437
+ */
1527
3438
  typedef struct pm_no_keywords_parameter_node {
3439
+ /** The embedded base node. */
1528
3440
  pm_node_t base;
3441
+
3442
+ /** NoKeywordsParameterNode#operator_loc */
1529
3443
  pm_location_t operator_loc;
3444
+
3445
+ /** NoKeywordsParameterNode#keyword_loc */
1530
3446
  pm_location_t keyword_loc;
1531
3447
  } pm_no_keywords_parameter_node_t;
1532
3448
 
1533
- // NumberedReferenceReadNode
1534
- //
1535
- // Type: PM_NUMBERED_REFERENCE_READ_NODE
3449
+ /**
3450
+ * NumberedReferenceReadNode
3451
+ *
3452
+ * Type: PM_NUMBERED_REFERENCE_READ_NODE
3453
+ *
3454
+ * @extends pm_node_t
3455
+ */
1536
3456
  typedef struct pm_numbered_reference_read_node {
3457
+ /** The embedded base node. */
1537
3458
  pm_node_t base;
3459
+
3460
+ /** NumberedReferenceReadNode#number */
1538
3461
  uint32_t number;
1539
3462
  } pm_numbered_reference_read_node_t;
1540
3463
 
1541
- // OptionalParameterNode
1542
- //
1543
- // Type: PM_OPTIONAL_PARAMETER_NODE
3464
+ /**
3465
+ * OptionalKeywordParameterNode
3466
+ *
3467
+ * Type: PM_OPTIONAL_KEYWORD_PARAMETER_NODE
3468
+ *
3469
+ * @extends pm_node_t
3470
+ */
3471
+ typedef struct pm_optional_keyword_parameter_node {
3472
+ /** The embedded base node. */
3473
+ pm_node_t base;
3474
+
3475
+ /** OptionalKeywordParameterNode#name */
3476
+ pm_constant_id_t name;
3477
+
3478
+ /** OptionalKeywordParameterNode#name_loc */
3479
+ pm_location_t name_loc;
3480
+
3481
+ /** OptionalKeywordParameterNode#value */
3482
+ struct pm_node *value;
3483
+ } pm_optional_keyword_parameter_node_t;
3484
+
3485
+ /**
3486
+ * OptionalParameterNode
3487
+ *
3488
+ * Type: PM_OPTIONAL_PARAMETER_NODE
3489
+ *
3490
+ * @extends pm_node_t
3491
+ */
1544
3492
  typedef struct pm_optional_parameter_node {
3493
+ /** The embedded base node. */
1545
3494
  pm_node_t base;
3495
+
3496
+ /** OptionalParameterNode#name */
1546
3497
  pm_constant_id_t name;
3498
+
3499
+ /** OptionalParameterNode#name_loc */
1547
3500
  pm_location_t name_loc;
3501
+
3502
+ /** OptionalParameterNode#operator_loc */
1548
3503
  pm_location_t operator_loc;
3504
+
3505
+ /** OptionalParameterNode#value */
1549
3506
  struct pm_node *value;
1550
3507
  } pm_optional_parameter_node_t;
1551
3508
 
1552
- // OrNode
1553
- //
1554
- // Type: PM_OR_NODE
3509
+ /**
3510
+ * OrNode
3511
+ *
3512
+ * Type: PM_OR_NODE
3513
+ *
3514
+ * @extends pm_node_t
3515
+ */
1555
3516
  typedef struct pm_or_node {
3517
+ /** The embedded base node. */
1556
3518
  pm_node_t base;
3519
+
3520
+ /** OrNode#left */
1557
3521
  struct pm_node *left;
3522
+
3523
+ /** OrNode#right */
1558
3524
  struct pm_node *right;
3525
+
3526
+ /** OrNode#operator_loc */
1559
3527
  pm_location_t operator_loc;
1560
3528
  } pm_or_node_t;
1561
3529
 
1562
- // ParametersNode
1563
- //
1564
- // Type: PM_PARAMETERS_NODE
3530
+ /**
3531
+ * ParametersNode
3532
+ *
3533
+ * Type: PM_PARAMETERS_NODE
3534
+ *
3535
+ * @extends pm_node_t
3536
+ */
1565
3537
  typedef struct pm_parameters_node {
3538
+ /** The embedded base node. */
1566
3539
  pm_node_t base;
3540
+
3541
+ /** ParametersNode#requireds */
1567
3542
  struct pm_node_list requireds;
3543
+
3544
+ /** ParametersNode#optionals */
1568
3545
  struct pm_node_list optionals;
3546
+
3547
+ /** ParametersNode#rest */
1569
3548
  struct pm_rest_parameter_node *rest;
3549
+
3550
+ /** ParametersNode#posts */
1570
3551
  struct pm_node_list posts;
3552
+
3553
+ /** ParametersNode#keywords */
1571
3554
  struct pm_node_list keywords;
3555
+
3556
+ /** ParametersNode#keyword_rest */
1572
3557
  struct pm_node *keyword_rest;
3558
+
3559
+ /** ParametersNode#block */
1573
3560
  struct pm_block_parameter_node *block;
1574
3561
  } pm_parameters_node_t;
1575
3562
 
1576
- // ParenthesesNode
1577
- //
1578
- // Type: PM_PARENTHESES_NODE
3563
+ /**
3564
+ * ParenthesesNode
3565
+ *
3566
+ * Type: PM_PARENTHESES_NODE
3567
+ *
3568
+ * @extends pm_node_t
3569
+ */
1579
3570
  typedef struct pm_parentheses_node {
3571
+ /** The embedded base node. */
1580
3572
  pm_node_t base;
3573
+
3574
+ /** ParenthesesNode#body */
1581
3575
  struct pm_node *body;
3576
+
3577
+ /** ParenthesesNode#opening_loc */
1582
3578
  pm_location_t opening_loc;
3579
+
3580
+ /** ParenthesesNode#closing_loc */
1583
3581
  pm_location_t closing_loc;
1584
3582
  } pm_parentheses_node_t;
1585
3583
 
1586
- // PinnedExpressionNode
1587
- //
1588
- // Type: PM_PINNED_EXPRESSION_NODE
3584
+ /**
3585
+ * PinnedExpressionNode
3586
+ *
3587
+ * Type: PM_PINNED_EXPRESSION_NODE
3588
+ *
3589
+ * @extends pm_node_t
3590
+ */
1589
3591
  typedef struct pm_pinned_expression_node {
3592
+ /** The embedded base node. */
1590
3593
  pm_node_t base;
3594
+
3595
+ /** PinnedExpressionNode#expression */
1591
3596
  struct pm_node *expression;
3597
+
3598
+ /** PinnedExpressionNode#operator_loc */
1592
3599
  pm_location_t operator_loc;
3600
+
3601
+ /** PinnedExpressionNode#lparen_loc */
1593
3602
  pm_location_t lparen_loc;
3603
+
3604
+ /** PinnedExpressionNode#rparen_loc */
1594
3605
  pm_location_t rparen_loc;
1595
3606
  } pm_pinned_expression_node_t;
1596
3607
 
1597
- // PinnedVariableNode
1598
- //
1599
- // Type: PM_PINNED_VARIABLE_NODE
3608
+ /**
3609
+ * PinnedVariableNode
3610
+ *
3611
+ * Type: PM_PINNED_VARIABLE_NODE
3612
+ *
3613
+ * @extends pm_node_t
3614
+ */
1600
3615
  typedef struct pm_pinned_variable_node {
3616
+ /** The embedded base node. */
1601
3617
  pm_node_t base;
3618
+
3619
+ /** PinnedVariableNode#variable */
1602
3620
  struct pm_node *variable;
3621
+
3622
+ /** PinnedVariableNode#operator_loc */
1603
3623
  pm_location_t operator_loc;
1604
3624
  } pm_pinned_variable_node_t;
1605
3625
 
1606
- // PostExecutionNode
1607
- //
1608
- // Type: PM_POST_EXECUTION_NODE
3626
+ /**
3627
+ * PostExecutionNode
3628
+ *
3629
+ * Type: PM_POST_EXECUTION_NODE
3630
+ *
3631
+ * @extends pm_node_t
3632
+ */
1609
3633
  typedef struct pm_post_execution_node {
3634
+ /** The embedded base node. */
1610
3635
  pm_node_t base;
3636
+
3637
+ /** PostExecutionNode#statements */
1611
3638
  struct pm_statements_node *statements;
3639
+
3640
+ /** PostExecutionNode#keyword_loc */
1612
3641
  pm_location_t keyword_loc;
3642
+
3643
+ /** PostExecutionNode#opening_loc */
1613
3644
  pm_location_t opening_loc;
3645
+
3646
+ /** PostExecutionNode#closing_loc */
1614
3647
  pm_location_t closing_loc;
1615
3648
  } pm_post_execution_node_t;
1616
3649
 
1617
- // PreExecutionNode
1618
- //
1619
- // Type: PM_PRE_EXECUTION_NODE
3650
+ /**
3651
+ * PreExecutionNode
3652
+ *
3653
+ * Type: PM_PRE_EXECUTION_NODE
3654
+ *
3655
+ * @extends pm_node_t
3656
+ */
1620
3657
  typedef struct pm_pre_execution_node {
3658
+ /** The embedded base node. */
1621
3659
  pm_node_t base;
3660
+
3661
+ /** PreExecutionNode#statements */
1622
3662
  struct pm_statements_node *statements;
3663
+
3664
+ /** PreExecutionNode#keyword_loc */
1623
3665
  pm_location_t keyword_loc;
3666
+
3667
+ /** PreExecutionNode#opening_loc */
1624
3668
  pm_location_t opening_loc;
3669
+
3670
+ /** PreExecutionNode#closing_loc */
1625
3671
  pm_location_t closing_loc;
1626
3672
  } pm_pre_execution_node_t;
1627
3673
 
1628
- // ProgramNode
1629
- //
1630
- // Type: PM_PROGRAM_NODE
3674
+ /**
3675
+ * ProgramNode
3676
+ *
3677
+ * Type: PM_PROGRAM_NODE
3678
+ *
3679
+ * @extends pm_node_t
3680
+ */
1631
3681
  typedef struct pm_program_node {
3682
+ /** The embedded base node. */
1632
3683
  pm_node_t base;
3684
+
3685
+ /** ProgramNode#locals */
1633
3686
  pm_constant_id_list_t locals;
3687
+
3688
+ /** ProgramNode#statements */
1634
3689
  struct pm_statements_node *statements;
1635
3690
  } pm_program_node_t;
1636
3691
 
1637
- // RangeNode
1638
- //
1639
- // Type: PM_RANGE_NODE
1640
- // Flags:
1641
- // PM_RANGE_FLAGS_EXCLUDE_END
3692
+ /**
3693
+ * RangeNode
3694
+ *
3695
+ * Type: PM_RANGE_NODE
3696
+ * Flags:
3697
+ * PM_RANGE_FLAGS_EXCLUDE_END
3698
+ *
3699
+ * @extends pm_node_t
3700
+ */
1642
3701
  typedef struct pm_range_node {
3702
+ /** The embedded base node. */
1643
3703
  pm_node_t base;
3704
+
3705
+ /** RangeNode#left */
1644
3706
  struct pm_node *left;
3707
+
3708
+ /** RangeNode#right */
1645
3709
  struct pm_node *right;
3710
+
3711
+ /** RangeNode#operator_loc */
1646
3712
  pm_location_t operator_loc;
1647
3713
  } pm_range_node_t;
1648
3714
 
1649
- // RationalNode
1650
- //
1651
- // Type: PM_RATIONAL_NODE
3715
+ /**
3716
+ * RationalNode
3717
+ *
3718
+ * Type: PM_RATIONAL_NODE
3719
+ *
3720
+ * @extends pm_node_t
3721
+ */
1652
3722
  typedef struct pm_rational_node {
3723
+ /** The embedded base node. */
1653
3724
  pm_node_t base;
3725
+
3726
+ /** RationalNode#numeric */
1654
3727
  struct pm_node *numeric;
1655
3728
  } pm_rational_node_t;
1656
3729
 
1657
- // RedoNode
1658
- //
1659
- // Type: PM_REDO_NODE
3730
+ /**
3731
+ * RedoNode
3732
+ *
3733
+ * Type: PM_REDO_NODE
3734
+ *
3735
+ * @extends pm_node_t
3736
+ */
1660
3737
  typedef struct pm_redo_node {
3738
+ /** The embedded base node. */
1661
3739
  pm_node_t base;
1662
3740
  } pm_redo_node_t;
1663
3741
 
1664
- // RegularExpressionNode
1665
- //
1666
- // Type: PM_REGULAR_EXPRESSION_NODE
1667
- // Flags:
1668
- // PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
1669
- // PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
1670
- // PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
1671
- // PM_REGULAR_EXPRESSION_FLAGS_ONCE
1672
- // PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
1673
- // PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
1674
- // PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
1675
- // PM_REGULAR_EXPRESSION_FLAGS_UTF_8
3742
+ /**
3743
+ * RegularExpressionNode
3744
+ *
3745
+ * Type: PM_REGULAR_EXPRESSION_NODE
3746
+ * Flags:
3747
+ * PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
3748
+ * PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
3749
+ * PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
3750
+ * PM_REGULAR_EXPRESSION_FLAGS_ONCE
3751
+ * PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
3752
+ * PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
3753
+ * PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
3754
+ * PM_REGULAR_EXPRESSION_FLAGS_UTF_8
3755
+ *
3756
+ * @extends pm_node_t
3757
+ */
1676
3758
  typedef struct pm_regular_expression_node {
3759
+ /** The embedded base node. */
1677
3760
  pm_node_t base;
3761
+
3762
+ /** RegularExpressionNode#opening_loc */
1678
3763
  pm_location_t opening_loc;
3764
+
3765
+ /** RegularExpressionNode#content_loc */
1679
3766
  pm_location_t content_loc;
3767
+
3768
+ /** RegularExpressionNode#closing_loc */
1680
3769
  pm_location_t closing_loc;
3770
+
3771
+ /** RegularExpressionNode#unescaped */
1681
3772
  pm_string_t unescaped;
1682
3773
  } pm_regular_expression_node_t;
1683
3774
 
1684
- // RequiredDestructuredParameterNode
1685
- //
1686
- // Type: PM_REQUIRED_DESTRUCTURED_PARAMETER_NODE
1687
- typedef struct pm_required_destructured_parameter_node {
3775
+ /**
3776
+ * RequiredKeywordParameterNode
3777
+ *
3778
+ * Type: PM_REQUIRED_KEYWORD_PARAMETER_NODE
3779
+ *
3780
+ * @extends pm_node_t
3781
+ */
3782
+ typedef struct pm_required_keyword_parameter_node {
3783
+ /** The embedded base node. */
1688
3784
  pm_node_t base;
1689
- struct pm_node_list parameters;
1690
- pm_location_t opening_loc;
1691
- pm_location_t closing_loc;
1692
- } pm_required_destructured_parameter_node_t;
1693
3785
 
1694
- // RequiredParameterNode
1695
- //
1696
- // Type: PM_REQUIRED_PARAMETER_NODE
3786
+ /** RequiredKeywordParameterNode#name */
3787
+ pm_constant_id_t name;
3788
+
3789
+ /** RequiredKeywordParameterNode#name_loc */
3790
+ pm_location_t name_loc;
3791
+ } pm_required_keyword_parameter_node_t;
3792
+
3793
+ /**
3794
+ * RequiredParameterNode
3795
+ *
3796
+ * Type: PM_REQUIRED_PARAMETER_NODE
3797
+ *
3798
+ * @extends pm_node_t
3799
+ */
1697
3800
  typedef struct pm_required_parameter_node {
3801
+ /** The embedded base node. */
1698
3802
  pm_node_t base;
3803
+
3804
+ /** RequiredParameterNode#name */
1699
3805
  pm_constant_id_t name;
1700
3806
  } pm_required_parameter_node_t;
1701
3807
 
1702
- // RescueModifierNode
1703
- //
1704
- // Type: PM_RESCUE_MODIFIER_NODE
3808
+ /**
3809
+ * RescueModifierNode
3810
+ *
3811
+ * Type: PM_RESCUE_MODIFIER_NODE
3812
+ *
3813
+ * @extends pm_node_t
3814
+ */
1705
3815
  typedef struct pm_rescue_modifier_node {
3816
+ /** The embedded base node. */
1706
3817
  pm_node_t base;
3818
+
3819
+ /** RescueModifierNode#expression */
1707
3820
  struct pm_node *expression;
3821
+
3822
+ /** RescueModifierNode#keyword_loc */
1708
3823
  pm_location_t keyword_loc;
3824
+
3825
+ /** RescueModifierNode#rescue_expression */
1709
3826
  struct pm_node *rescue_expression;
1710
3827
  } pm_rescue_modifier_node_t;
1711
3828
 
1712
- // RescueNode
1713
- //
1714
- // Type: PM_RESCUE_NODE
3829
+ /**
3830
+ * RescueNode
3831
+ *
3832
+ * Type: PM_RESCUE_NODE
3833
+ *
3834
+ * @extends pm_node_t
3835
+ */
1715
3836
  typedef struct pm_rescue_node {
3837
+ /** The embedded base node. */
1716
3838
  pm_node_t base;
3839
+
3840
+ /** RescueNode#keyword_loc */
1717
3841
  pm_location_t keyword_loc;
3842
+
3843
+ /** RescueNode#exceptions */
1718
3844
  struct pm_node_list exceptions;
3845
+
3846
+ /** RescueNode#operator_loc */
1719
3847
  pm_location_t operator_loc;
3848
+
3849
+ /** RescueNode#reference */
1720
3850
  struct pm_node *reference;
3851
+
3852
+ /** RescueNode#statements */
1721
3853
  struct pm_statements_node *statements;
3854
+
3855
+ /** RescueNode#consequent */
1722
3856
  struct pm_rescue_node *consequent;
1723
3857
  } pm_rescue_node_t;
1724
3858
 
1725
- // RestParameterNode
1726
- //
1727
- // Type: PM_REST_PARAMETER_NODE
3859
+ /**
3860
+ * RestParameterNode
3861
+ *
3862
+ * Type: PM_REST_PARAMETER_NODE
3863
+ *
3864
+ * @extends pm_node_t
3865
+ */
1728
3866
  typedef struct pm_rest_parameter_node {
3867
+ /** The embedded base node. */
1729
3868
  pm_node_t base;
3869
+
3870
+ /** RestParameterNode#name */
1730
3871
  pm_constant_id_t name;
3872
+
3873
+ /** RestParameterNode#name_loc */
1731
3874
  pm_location_t name_loc;
3875
+
3876
+ /** RestParameterNode#operator_loc */
1732
3877
  pm_location_t operator_loc;
1733
3878
  } pm_rest_parameter_node_t;
1734
3879
 
1735
- // RetryNode
1736
- //
1737
- // Type: PM_RETRY_NODE
3880
+ /**
3881
+ * RetryNode
3882
+ *
3883
+ * Type: PM_RETRY_NODE
3884
+ *
3885
+ * @extends pm_node_t
3886
+ */
1738
3887
  typedef struct pm_retry_node {
3888
+ /** The embedded base node. */
1739
3889
  pm_node_t base;
1740
3890
  } pm_retry_node_t;
1741
3891
 
1742
- // ReturnNode
1743
- //
1744
- // Type: PM_RETURN_NODE
3892
+ /**
3893
+ * ReturnNode
3894
+ *
3895
+ * Type: PM_RETURN_NODE
3896
+ *
3897
+ * @extends pm_node_t
3898
+ */
1745
3899
  typedef struct pm_return_node {
3900
+ /** The embedded base node. */
1746
3901
  pm_node_t base;
3902
+
3903
+ /** ReturnNode#keyword_loc */
1747
3904
  pm_location_t keyword_loc;
3905
+
3906
+ /** ReturnNode#arguments */
1748
3907
  struct pm_arguments_node *arguments;
1749
3908
  } pm_return_node_t;
1750
3909
 
1751
- // SelfNode
1752
- //
1753
- // Type: PM_SELF_NODE
3910
+ /**
3911
+ * SelfNode
3912
+ *
3913
+ * Type: PM_SELF_NODE
3914
+ *
3915
+ * @extends pm_node_t
3916
+ */
1754
3917
  typedef struct pm_self_node {
3918
+ /** The embedded base node. */
1755
3919
  pm_node_t base;
1756
3920
  } pm_self_node_t;
1757
3921
 
1758
- // SingletonClassNode
1759
- //
1760
- // Type: PM_SINGLETON_CLASS_NODE
3922
+ /**
3923
+ * SingletonClassNode
3924
+ *
3925
+ * Type: PM_SINGLETON_CLASS_NODE
3926
+ *
3927
+ * @extends pm_node_t
3928
+ */
1761
3929
  typedef struct pm_singleton_class_node {
3930
+ /** The embedded base node. */
1762
3931
  pm_node_t base;
3932
+
3933
+ /** SingletonClassNode#locals */
1763
3934
  pm_constant_id_list_t locals;
3935
+
3936
+ /** SingletonClassNode#class_keyword_loc */
1764
3937
  pm_location_t class_keyword_loc;
3938
+
3939
+ /** SingletonClassNode#operator_loc */
1765
3940
  pm_location_t operator_loc;
3941
+
3942
+ /** SingletonClassNode#expression */
1766
3943
  struct pm_node *expression;
3944
+
3945
+ /** SingletonClassNode#body */
1767
3946
  struct pm_node *body;
3947
+
3948
+ /** SingletonClassNode#end_keyword_loc */
1768
3949
  pm_location_t end_keyword_loc;
1769
3950
  } pm_singleton_class_node_t;
1770
3951
 
1771
- // SourceEncodingNode
1772
- //
1773
- // Type: PM_SOURCE_ENCODING_NODE
3952
+ /**
3953
+ * SourceEncodingNode
3954
+ *
3955
+ * Type: PM_SOURCE_ENCODING_NODE
3956
+ *
3957
+ * @extends pm_node_t
3958
+ */
1774
3959
  typedef struct pm_source_encoding_node {
3960
+ /** The embedded base node. */
1775
3961
  pm_node_t base;
1776
3962
  } pm_source_encoding_node_t;
1777
3963
 
1778
- // SourceFileNode
1779
- //
1780
- // Type: PM_SOURCE_FILE_NODE
3964
+ /**
3965
+ * SourceFileNode
3966
+ *
3967
+ * Type: PM_SOURCE_FILE_NODE
3968
+ *
3969
+ * @extends pm_node_t
3970
+ */
1781
3971
  typedef struct pm_source_file_node {
3972
+ /** The embedded base node. */
1782
3973
  pm_node_t base;
3974
+
3975
+ /** SourceFileNode#filepath */
1783
3976
  pm_string_t filepath;
1784
3977
  } pm_source_file_node_t;
1785
3978
 
1786
- // SourceLineNode
1787
- //
1788
- // Type: PM_SOURCE_LINE_NODE
3979
+ /**
3980
+ * SourceLineNode
3981
+ *
3982
+ * Type: PM_SOURCE_LINE_NODE
3983
+ *
3984
+ * @extends pm_node_t
3985
+ */
1789
3986
  typedef struct pm_source_line_node {
3987
+ /** The embedded base node. */
1790
3988
  pm_node_t base;
1791
3989
  } pm_source_line_node_t;
1792
3990
 
1793
- // SplatNode
1794
- //
1795
- // Type: PM_SPLAT_NODE
3991
+ /**
3992
+ * SplatNode
3993
+ *
3994
+ * Type: PM_SPLAT_NODE
3995
+ *
3996
+ * @extends pm_node_t
3997
+ */
1796
3998
  typedef struct pm_splat_node {
3999
+ /** The embedded base node. */
1797
4000
  pm_node_t base;
4001
+
4002
+ /** SplatNode#operator_loc */
1798
4003
  pm_location_t operator_loc;
4004
+
4005
+ /** SplatNode#expression */
1799
4006
  struct pm_node *expression;
1800
4007
  } pm_splat_node_t;
1801
4008
 
1802
- // StatementsNode
1803
- //
1804
- // Type: PM_STATEMENTS_NODE
4009
+ /**
4010
+ * StatementsNode
4011
+ *
4012
+ * Type: PM_STATEMENTS_NODE
4013
+ *
4014
+ * @extends pm_node_t
4015
+ */
1805
4016
  typedef struct pm_statements_node {
4017
+ /** The embedded base node. */
1806
4018
  pm_node_t base;
4019
+
4020
+ /** StatementsNode#body */
1807
4021
  struct pm_node_list body;
1808
4022
  } pm_statements_node_t;
1809
4023
 
1810
- // StringConcatNode
1811
- //
1812
- // Type: PM_STRING_CONCAT_NODE
4024
+ /**
4025
+ * StringConcatNode
4026
+ *
4027
+ * Type: PM_STRING_CONCAT_NODE
4028
+ *
4029
+ * @extends pm_node_t
4030
+ */
1813
4031
  typedef struct pm_string_concat_node {
4032
+ /** The embedded base node. */
1814
4033
  pm_node_t base;
4034
+
4035
+ /** StringConcatNode#left */
1815
4036
  struct pm_node *left;
4037
+
4038
+ /** StringConcatNode#right */
1816
4039
  struct pm_node *right;
1817
4040
  } pm_string_concat_node_t;
1818
4041
 
1819
- // StringNode
1820
- //
1821
- // Type: PM_STRING_NODE
1822
- // Flags:
1823
- // PM_STRING_FLAGS_FROZEN
4042
+ /**
4043
+ * StringNode
4044
+ *
4045
+ * Type: PM_STRING_NODE
4046
+ * Flags:
4047
+ * PM_STRING_FLAGS_FROZEN
4048
+ *
4049
+ * @extends pm_node_t
4050
+ */
1824
4051
  typedef struct pm_string_node {
4052
+ /** The embedded base node. */
1825
4053
  pm_node_t base;
4054
+
4055
+ /** StringNode#opening_loc */
1826
4056
  pm_location_t opening_loc;
4057
+
4058
+ /** StringNode#content_loc */
1827
4059
  pm_location_t content_loc;
4060
+
4061
+ /** StringNode#closing_loc */
1828
4062
  pm_location_t closing_loc;
4063
+
4064
+ /** StringNode#unescaped */
1829
4065
  pm_string_t unescaped;
1830
4066
  } pm_string_node_t;
1831
4067
 
1832
- // SuperNode
1833
- //
1834
- // Type: PM_SUPER_NODE
4068
+ /**
4069
+ * SuperNode
4070
+ *
4071
+ * Type: PM_SUPER_NODE
4072
+ *
4073
+ * @extends pm_node_t
4074
+ */
1835
4075
  typedef struct pm_super_node {
4076
+ /** The embedded base node. */
1836
4077
  pm_node_t base;
4078
+
4079
+ /** SuperNode#keyword_loc */
1837
4080
  pm_location_t keyword_loc;
4081
+
4082
+ /** SuperNode#lparen_loc */
1838
4083
  pm_location_t lparen_loc;
4084
+
4085
+ /** SuperNode#arguments */
1839
4086
  struct pm_arguments_node *arguments;
4087
+
4088
+ /** SuperNode#rparen_loc */
1840
4089
  pm_location_t rparen_loc;
4090
+
4091
+ /** SuperNode#block */
1841
4092
  struct pm_node *block;
1842
4093
  } pm_super_node_t;
1843
4094
 
1844
- // SymbolNode
1845
- //
1846
- // Type: PM_SYMBOL_NODE
4095
+ /**
4096
+ * SymbolNode
4097
+ *
4098
+ * Type: PM_SYMBOL_NODE
4099
+ *
4100
+ * @extends pm_node_t
4101
+ */
1847
4102
  typedef struct pm_symbol_node {
4103
+ /** The embedded base node. */
1848
4104
  pm_node_t base;
4105
+
4106
+ /** SymbolNode#opening_loc */
1849
4107
  pm_location_t opening_loc;
4108
+
4109
+ /** SymbolNode#value_loc */
1850
4110
  pm_location_t value_loc;
4111
+
4112
+ /** SymbolNode#closing_loc */
1851
4113
  pm_location_t closing_loc;
4114
+
4115
+ /** SymbolNode#unescaped */
1852
4116
  pm_string_t unescaped;
1853
4117
  } pm_symbol_node_t;
1854
4118
 
1855
- // TrueNode
1856
- //
1857
- // Type: PM_TRUE_NODE
4119
+ /**
4120
+ * TrueNode
4121
+ *
4122
+ * Type: PM_TRUE_NODE
4123
+ *
4124
+ * @extends pm_node_t
4125
+ */
1858
4126
  typedef struct pm_true_node {
4127
+ /** The embedded base node. */
1859
4128
  pm_node_t base;
1860
4129
  } pm_true_node_t;
1861
4130
 
1862
- // UndefNode
1863
- //
1864
- // Type: PM_UNDEF_NODE
4131
+ /**
4132
+ * UndefNode
4133
+ *
4134
+ * Type: PM_UNDEF_NODE
4135
+ *
4136
+ * @extends pm_node_t
4137
+ */
1865
4138
  typedef struct pm_undef_node {
4139
+ /** The embedded base node. */
1866
4140
  pm_node_t base;
4141
+
4142
+ /** UndefNode#names */
1867
4143
  struct pm_node_list names;
4144
+
4145
+ /** UndefNode#keyword_loc */
1868
4146
  pm_location_t keyword_loc;
1869
4147
  } pm_undef_node_t;
1870
4148
 
1871
- // UnlessNode
1872
- //
1873
- // Type: PM_UNLESS_NODE
4149
+ /**
4150
+ * UnlessNode
4151
+ *
4152
+ * Type: PM_UNLESS_NODE
4153
+ *
4154
+ * @extends pm_node_t
4155
+ */
1874
4156
  typedef struct pm_unless_node {
4157
+ /** The embedded base node. */
1875
4158
  pm_node_t base;
4159
+
4160
+ /** UnlessNode#keyword_loc */
1876
4161
  pm_location_t keyword_loc;
4162
+
4163
+ /** UnlessNode#predicate */
1877
4164
  struct pm_node *predicate;
4165
+
4166
+ /** UnlessNode#statements */
1878
4167
  struct pm_statements_node *statements;
4168
+
4169
+ /** UnlessNode#consequent */
1879
4170
  struct pm_else_node *consequent;
4171
+
4172
+ /** UnlessNode#end_keyword_loc */
1880
4173
  pm_location_t end_keyword_loc;
1881
4174
  } pm_unless_node_t;
1882
4175
 
1883
- // UntilNode
1884
- //
1885
- // Type: PM_UNTIL_NODE
1886
- // Flags:
1887
- // PM_LOOP_FLAGS_BEGIN_MODIFIER
4176
+ /**
4177
+ * UntilNode
4178
+ *
4179
+ * Type: PM_UNTIL_NODE
4180
+ * Flags:
4181
+ * PM_LOOP_FLAGS_BEGIN_MODIFIER
4182
+ *
4183
+ * @extends pm_node_t
4184
+ */
1888
4185
  typedef struct pm_until_node {
4186
+ /** The embedded base node. */
1889
4187
  pm_node_t base;
4188
+
4189
+ /** UntilNode#keyword_loc */
1890
4190
  pm_location_t keyword_loc;
4191
+
4192
+ /** UntilNode#closing_loc */
1891
4193
  pm_location_t closing_loc;
4194
+
4195
+ /** UntilNode#predicate */
1892
4196
  struct pm_node *predicate;
4197
+
4198
+ /** UntilNode#statements */
1893
4199
  struct pm_statements_node *statements;
1894
4200
  } pm_until_node_t;
1895
4201
 
1896
- // WhenNode
1897
- //
1898
- // Type: PM_WHEN_NODE
4202
+ /**
4203
+ * WhenNode
4204
+ *
4205
+ * Type: PM_WHEN_NODE
4206
+ *
4207
+ * @extends pm_node_t
4208
+ */
1899
4209
  typedef struct pm_when_node {
4210
+ /** The embedded base node. */
1900
4211
  pm_node_t base;
4212
+
4213
+ /** WhenNode#keyword_loc */
1901
4214
  pm_location_t keyword_loc;
4215
+
4216
+ /** WhenNode#conditions */
1902
4217
  struct pm_node_list conditions;
4218
+
4219
+ /** WhenNode#statements */
1903
4220
  struct pm_statements_node *statements;
1904
4221
  } pm_when_node_t;
1905
4222
 
1906
- // WhileNode
1907
- //
1908
- // Type: PM_WHILE_NODE
1909
- // Flags:
1910
- // PM_LOOP_FLAGS_BEGIN_MODIFIER
4223
+ /**
4224
+ * WhileNode
4225
+ *
4226
+ * Type: PM_WHILE_NODE
4227
+ * Flags:
4228
+ * PM_LOOP_FLAGS_BEGIN_MODIFIER
4229
+ *
4230
+ * @extends pm_node_t
4231
+ */
1911
4232
  typedef struct pm_while_node {
4233
+ /** The embedded base node. */
1912
4234
  pm_node_t base;
4235
+
4236
+ /** WhileNode#keyword_loc */
1913
4237
  pm_location_t keyword_loc;
4238
+
4239
+ /** WhileNode#closing_loc */
1914
4240
  pm_location_t closing_loc;
4241
+
4242
+ /** WhileNode#predicate */
1915
4243
  struct pm_node *predicate;
4244
+
4245
+ /** WhileNode#statements */
1916
4246
  struct pm_statements_node *statements;
1917
4247
  } pm_while_node_t;
1918
4248
 
1919
- // XStringNode
1920
- //
1921
- // Type: PM_X_STRING_NODE
4249
+ /**
4250
+ * XStringNode
4251
+ *
4252
+ * Type: PM_X_STRING_NODE
4253
+ *
4254
+ * @extends pm_node_t
4255
+ */
1922
4256
  typedef struct pm_x_string_node {
4257
+ /** The embedded base node. */
1923
4258
  pm_node_t base;
4259
+
4260
+ /** XStringNode#opening_loc */
1924
4261
  pm_location_t opening_loc;
4262
+
4263
+ /** XStringNode#content_loc */
1925
4264
  pm_location_t content_loc;
4265
+
4266
+ /** XStringNode#closing_loc */
1926
4267
  pm_location_t closing_loc;
4268
+
4269
+ /** XStringNode#unescaped */
1927
4270
  pm_string_t unescaped;
1928
4271
  } pm_x_string_node_t;
1929
4272
 
1930
- // YieldNode
1931
- //
1932
- // Type: PM_YIELD_NODE
4273
+ /**
4274
+ * YieldNode
4275
+ *
4276
+ * Type: PM_YIELD_NODE
4277
+ *
4278
+ * @extends pm_node_t
4279
+ */
1933
4280
  typedef struct pm_yield_node {
4281
+ /** The embedded base node. */
1934
4282
  pm_node_t base;
4283
+
4284
+ /** YieldNode#keyword_loc */
1935
4285
  pm_location_t keyword_loc;
4286
+
4287
+ /** YieldNode#lparen_loc */
1936
4288
  pm_location_t lparen_loc;
4289
+
4290
+ /** YieldNode#arguments */
1937
4291
  struct pm_arguments_node *arguments;
4292
+
4293
+ /** YieldNode#rparen_loc */
1938
4294
  pm_location_t rparen_loc;
1939
4295
  } pm_yield_node_t;
1940
4296
 
1941
- // CallNodeFlags
4297
+ /**
4298
+ * Flags for arguments nodes.
4299
+ */
4300
+ typedef enum pm_arguments_node_flags {
4301
+ /** if arguments contain keyword splat */
4302
+ PM_ARGUMENTS_NODE_FLAGS_KEYWORD_SPLAT = 1,
4303
+ } pm_arguments_node_flags_t;
4304
+
4305
+ /**
4306
+ * Flags for call nodes.
4307
+ */
1942
4308
  typedef enum pm_call_node_flags {
1943
- PM_CALL_NODE_FLAGS_SAFE_NAVIGATION = 1 << 0,
1944
- PM_CALL_NODE_FLAGS_VARIABLE_CALL = 1 << 1,
4309
+ /** &. operator */
4310
+ PM_CALL_NODE_FLAGS_SAFE_NAVIGATION = 1,
4311
+
4312
+ /** a call that could have been a local variable */
4313
+ PM_CALL_NODE_FLAGS_VARIABLE_CALL = 2,
1945
4314
  } pm_call_node_flags_t;
1946
4315
 
1947
- // IntegerBaseFlags
4316
+ /**
4317
+ * Flags for integer nodes that correspond to the base of the integer.
4318
+ */
1948
4319
  typedef enum pm_integer_base_flags {
1949
- PM_INTEGER_BASE_FLAGS_BINARY = 1 << 0,
1950
- PM_INTEGER_BASE_FLAGS_OCTAL = 1 << 1,
1951
- PM_INTEGER_BASE_FLAGS_DECIMAL = 1 << 2,
1952
- PM_INTEGER_BASE_FLAGS_HEXADECIMAL = 1 << 3,
4320
+ /** 0b prefix */
4321
+ PM_INTEGER_BASE_FLAGS_BINARY = 1,
4322
+
4323
+ /** 0o or 0 prefix */
4324
+ PM_INTEGER_BASE_FLAGS_OCTAL = 2,
4325
+
4326
+ /** 0d or no prefix */
4327
+ PM_INTEGER_BASE_FLAGS_DECIMAL = 4,
4328
+
4329
+ /** 0x prefix */
4330
+ PM_INTEGER_BASE_FLAGS_HEXADECIMAL = 8,
1953
4331
  } pm_integer_base_flags_t;
1954
4332
 
1955
- // LoopFlags
4333
+ /**
4334
+ * Flags for while and until loop nodes.
4335
+ */
1956
4336
  typedef enum pm_loop_flags {
1957
- PM_LOOP_FLAGS_BEGIN_MODIFIER = 1 << 0,
4337
+ /** a loop after a begin statement, so the body is executed first before the condition */
4338
+ PM_LOOP_FLAGS_BEGIN_MODIFIER = 1,
1958
4339
  } pm_loop_flags_t;
1959
4340
 
1960
- // RangeFlags
4341
+ /**
4342
+ * Flags for range and flip-flop nodes.
4343
+ */
1961
4344
  typedef enum pm_range_flags {
1962
- PM_RANGE_FLAGS_EXCLUDE_END = 1 << 0,
4345
+ /** ... operator */
4346
+ PM_RANGE_FLAGS_EXCLUDE_END = 1,
1963
4347
  } pm_range_flags_t;
1964
4348
 
1965
- // RegularExpressionFlags
4349
+ /**
4350
+ * Flags for regular expression and match last line nodes.
4351
+ */
1966
4352
  typedef enum pm_regular_expression_flags {
1967
- PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 1 << 0,
1968
- PM_REGULAR_EXPRESSION_FLAGS_EXTENDED = 1 << 1,
1969
- PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 1 << 2,
1970
- PM_REGULAR_EXPRESSION_FLAGS_ONCE = 1 << 3,
1971
- PM_REGULAR_EXPRESSION_FLAGS_EUC_JP = 1 << 4,
1972
- PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 1 << 5,
1973
- PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 1 << 6,
1974
- PM_REGULAR_EXPRESSION_FLAGS_UTF_8 = 1 << 7,
4353
+ /** i - ignores the case of characters when matching */
4354
+ PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 1,
4355
+
4356
+ /** x - ignores whitespace and allows comments in regular expressions */
4357
+ PM_REGULAR_EXPRESSION_FLAGS_EXTENDED = 2,
4358
+
4359
+ /** m - allows $ to match the end of lines within strings */
4360
+ PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 4,
4361
+
4362
+ /** o - only interpolates values into the regular expression once */
4363
+ PM_REGULAR_EXPRESSION_FLAGS_ONCE = 8,
4364
+
4365
+ /** e - forces the EUC-JP encoding */
4366
+ PM_REGULAR_EXPRESSION_FLAGS_EUC_JP = 16,
4367
+
4368
+ /** n - forces the ASCII-8BIT encoding */
4369
+ PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 32,
4370
+
4371
+ /** s - forces the Windows-31J encoding */
4372
+ PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 64,
4373
+
4374
+ /** u - forces the UTF-8 encoding */
4375
+ PM_REGULAR_EXPRESSION_FLAGS_UTF_8 = 128,
1975
4376
  } pm_regular_expression_flags_t;
1976
4377
 
1977
- // StringFlags
4378
+ /**
4379
+ * Flags for string nodes.
4380
+ */
1978
4381
  typedef enum pm_string_flags {
1979
- PM_STRING_FLAGS_FROZEN = 1 << 0,
4382
+ /** frozen by virtue of a `frozen_string_literal` comment */
4383
+ PM_STRING_FLAGS_FROZEN = 1,
1980
4384
  } pm_string_flags_t;
1981
4385
 
4386
+ /**
4387
+ * When we're serializing to Java, we want to skip serializing the location
4388
+ * fields as they won't be used by JRuby or TruffleRuby. This boolean allows us
4389
+ * to specify that through the environment. It will never be true except for in
4390
+ * those build systems.
4391
+ */
1982
4392
  #define PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS false
1983
4393
 
1984
- #endif // PRISM_AST_H
4394
+ #endif