Ruby 3.5.0dev (2025-11-03 revision 4a3d8346a6d0e068508631541f6bc43e8b154ea1)
ast.h
1/* :markup: markdown */
2
3/*----------------------------------------------------------------------------*/
4/* This file is generated by the templates/template.rb script and should not */
5/* be modified manually. See */
6/* templates/include/prism/ast.h.erb */
7/* if you are looking to modify the */
8/* template */
9/*----------------------------------------------------------------------------*/
10
13#ifndef PRISM_AST_H
14#define PRISM_AST_H
15
16#include "prism/defines.h"
20
21#include <assert.h>
22#include <stddef.h>
23#include <stdint.h>
24
28typedef enum pm_token_type {
30 PM_TOKEN_EOF = 1,
31
33 PM_TOKEN_BRACE_RIGHT,
34
36 PM_TOKEN_COMMA,
37
39 PM_TOKEN_EMBEXPR_END,
40
42 PM_TOKEN_KEYWORD_DO,
43
45 PM_TOKEN_KEYWORD_ELSE,
46
48 PM_TOKEN_KEYWORD_ELSIF,
49
51 PM_TOKEN_KEYWORD_END,
52
54 PM_TOKEN_KEYWORD_ENSURE,
55
57 PM_TOKEN_KEYWORD_IN,
58
60 PM_TOKEN_KEYWORD_RESCUE,
61
63 PM_TOKEN_KEYWORD_THEN,
64
66 PM_TOKEN_KEYWORD_WHEN,
67
69 PM_TOKEN_NEWLINE,
70
72 PM_TOKEN_PARENTHESIS_RIGHT,
73
75 PM_TOKEN_SEMICOLON,
76
78 PM_TOKEN_AMPERSAND,
79
81 PM_TOKEN_AMPERSAND_AMPERSAND,
82
84 PM_TOKEN_AMPERSAND_AMPERSAND_EQUAL,
85
87 PM_TOKEN_AMPERSAND_DOT,
88
90 PM_TOKEN_AMPERSAND_EQUAL,
91
93 PM_TOKEN_BACKTICK,
94
96 PM_TOKEN_BACK_REFERENCE,
97
99 PM_TOKEN_BANG,
100
102 PM_TOKEN_BANG_EQUAL,
103
105 PM_TOKEN_BANG_TILDE,
106
108 PM_TOKEN_BRACE_LEFT,
109
111 PM_TOKEN_BRACKET_LEFT,
112
114 PM_TOKEN_BRACKET_LEFT_ARRAY,
115
117 PM_TOKEN_BRACKET_LEFT_RIGHT,
118
120 PM_TOKEN_BRACKET_LEFT_RIGHT_EQUAL,
121
123 PM_TOKEN_BRACKET_RIGHT,
124
126 PM_TOKEN_CARET,
127
129 PM_TOKEN_CARET_EQUAL,
130
132 PM_TOKEN_CHARACTER_LITERAL,
133
135 PM_TOKEN_CLASS_VARIABLE,
136
138 PM_TOKEN_COLON,
139
141 PM_TOKEN_COLON_COLON,
142
144 PM_TOKEN_COMMENT,
145
147 PM_TOKEN_CONSTANT,
148
150 PM_TOKEN_DOT,
151
153 PM_TOKEN_DOT_DOT,
154
156 PM_TOKEN_DOT_DOT_DOT,
157
159 PM_TOKEN_EMBDOC_BEGIN,
160
162 PM_TOKEN_EMBDOC_END,
163
165 PM_TOKEN_EMBDOC_LINE,
166
168 PM_TOKEN_EMBEXPR_BEGIN,
169
171 PM_TOKEN_EMBVAR,
172
174 PM_TOKEN_EQUAL,
175
177 PM_TOKEN_EQUAL_EQUAL,
178
180 PM_TOKEN_EQUAL_EQUAL_EQUAL,
181
183 PM_TOKEN_EQUAL_GREATER,
184
186 PM_TOKEN_EQUAL_TILDE,
187
189 PM_TOKEN_FLOAT,
190
192 PM_TOKEN_FLOAT_IMAGINARY,
193
195 PM_TOKEN_FLOAT_RATIONAL,
196
198 PM_TOKEN_FLOAT_RATIONAL_IMAGINARY,
199
201 PM_TOKEN_GLOBAL_VARIABLE,
202
204 PM_TOKEN_GREATER,
205
207 PM_TOKEN_GREATER_EQUAL,
208
210 PM_TOKEN_GREATER_GREATER,
211
213 PM_TOKEN_GREATER_GREATER_EQUAL,
214
216 PM_TOKEN_HEREDOC_END,
217
219 PM_TOKEN_HEREDOC_START,
220
222 PM_TOKEN_IDENTIFIER,
223
225 PM_TOKEN_IGNORED_NEWLINE,
226
228 PM_TOKEN_INSTANCE_VARIABLE,
229
231 PM_TOKEN_INTEGER,
232
234 PM_TOKEN_INTEGER_IMAGINARY,
235
237 PM_TOKEN_INTEGER_RATIONAL,
238
240 PM_TOKEN_INTEGER_RATIONAL_IMAGINARY,
241
243 PM_TOKEN_KEYWORD_ALIAS,
244
246 PM_TOKEN_KEYWORD_AND,
247
249 PM_TOKEN_KEYWORD_BEGIN,
250
252 PM_TOKEN_KEYWORD_BEGIN_UPCASE,
253
255 PM_TOKEN_KEYWORD_BREAK,
256
258 PM_TOKEN_KEYWORD_CASE,
259
261 PM_TOKEN_KEYWORD_CLASS,
262
264 PM_TOKEN_KEYWORD_DEF,
265
267 PM_TOKEN_KEYWORD_DEFINED,
268
270 PM_TOKEN_KEYWORD_DO_LOOP,
271
273 PM_TOKEN_KEYWORD_END_UPCASE,
274
276 PM_TOKEN_KEYWORD_FALSE,
277
279 PM_TOKEN_KEYWORD_FOR,
280
282 PM_TOKEN_KEYWORD_IF,
283
285 PM_TOKEN_KEYWORD_IF_MODIFIER,
286
288 PM_TOKEN_KEYWORD_MODULE,
289
291 PM_TOKEN_KEYWORD_NEXT,
292
294 PM_TOKEN_KEYWORD_NIL,
295
297 PM_TOKEN_KEYWORD_NOT,
298
300 PM_TOKEN_KEYWORD_OR,
301
303 PM_TOKEN_KEYWORD_REDO,
304
306 PM_TOKEN_KEYWORD_RESCUE_MODIFIER,
307
309 PM_TOKEN_KEYWORD_RETRY,
310
312 PM_TOKEN_KEYWORD_RETURN,
313
315 PM_TOKEN_KEYWORD_SELF,
316
318 PM_TOKEN_KEYWORD_SUPER,
319
321 PM_TOKEN_KEYWORD_TRUE,
322
324 PM_TOKEN_KEYWORD_UNDEF,
325
327 PM_TOKEN_KEYWORD_UNLESS,
328
330 PM_TOKEN_KEYWORD_UNLESS_MODIFIER,
331
333 PM_TOKEN_KEYWORD_UNTIL,
334
336 PM_TOKEN_KEYWORD_UNTIL_MODIFIER,
337
339 PM_TOKEN_KEYWORD_WHILE,
340
342 PM_TOKEN_KEYWORD_WHILE_MODIFIER,
343
345 PM_TOKEN_KEYWORD_YIELD,
346
348 PM_TOKEN_KEYWORD___ENCODING__,
349
351 PM_TOKEN_KEYWORD___FILE__,
352
354 PM_TOKEN_KEYWORD___LINE__,
355
357 PM_TOKEN_LABEL,
358
360 PM_TOKEN_LABEL_END,
361
363 PM_TOKEN_LAMBDA_BEGIN,
364
366 PM_TOKEN_LESS,
367
369 PM_TOKEN_LESS_EQUAL,
370
372 PM_TOKEN_LESS_EQUAL_GREATER,
373
375 PM_TOKEN_LESS_LESS,
376
378 PM_TOKEN_LESS_LESS_EQUAL,
379
381 PM_TOKEN_METHOD_NAME,
382
384 PM_TOKEN_MINUS,
385
387 PM_TOKEN_MINUS_EQUAL,
388
390 PM_TOKEN_MINUS_GREATER,
391
393 PM_TOKEN_NUMBERED_REFERENCE,
394
396 PM_TOKEN_PARENTHESIS_LEFT,
397
399 PM_TOKEN_PARENTHESIS_LEFT_PARENTHESES,
400
402 PM_TOKEN_PERCENT,
403
405 PM_TOKEN_PERCENT_EQUAL,
406
408 PM_TOKEN_PERCENT_LOWER_I,
409
411 PM_TOKEN_PERCENT_LOWER_W,
412
414 PM_TOKEN_PERCENT_LOWER_X,
415
417 PM_TOKEN_PERCENT_UPPER_I,
418
420 PM_TOKEN_PERCENT_UPPER_W,
421
423 PM_TOKEN_PIPE,
424
426 PM_TOKEN_PIPE_EQUAL,
427
429 PM_TOKEN_PIPE_PIPE,
430
432 PM_TOKEN_PIPE_PIPE_EQUAL,
433
435 PM_TOKEN_PLUS,
436
438 PM_TOKEN_PLUS_EQUAL,
439
441 PM_TOKEN_QUESTION_MARK,
442
444 PM_TOKEN_REGEXP_BEGIN,
445
447 PM_TOKEN_REGEXP_END,
448
450 PM_TOKEN_SLASH,
451
453 PM_TOKEN_SLASH_EQUAL,
454
456 PM_TOKEN_STAR,
457
459 PM_TOKEN_STAR_EQUAL,
460
462 PM_TOKEN_STAR_STAR,
463
465 PM_TOKEN_STAR_STAR_EQUAL,
466
468 PM_TOKEN_STRING_BEGIN,
469
471 PM_TOKEN_STRING_CONTENT,
472
474 PM_TOKEN_STRING_END,
475
477 PM_TOKEN_SYMBOL_BEGIN,
478
480 PM_TOKEN_TILDE,
481
483 PM_TOKEN_UAMPERSAND,
484
486 PM_TOKEN_UCOLON_COLON,
487
489 PM_TOKEN_UDOT_DOT,
490
492 PM_TOKEN_UDOT_DOT_DOT,
493
495 PM_TOKEN_UMINUS,
496
498 PM_TOKEN_UMINUS_NUM,
499
501 PM_TOKEN_UPLUS,
502
504 PM_TOKEN_USTAR,
505
507 PM_TOKEN_USTAR_STAR,
508
510 PM_TOKEN_WORDS_SEP,
511
513 PM_TOKEN___END__,
514
516 PM_TOKEN_MISSING,
517
519 PM_TOKEN_NOT_PROVIDED,
520
522 PM_TOKEN_MAXIMUM,
523} pm_token_type_t;
524
529typedef struct {
531 pm_token_type_t type;
532
534 const uint8_t *start;
535
537 const uint8_t *end;
538} pm_token_t;
539
544typedef struct {
546 const uint8_t *start;
547
549 const uint8_t *end;
551
552struct pm_node;
553
557typedef struct pm_node_list {
559 size_t size;
560
562 size_t capacity;
563
565 struct pm_node **nodes;
567
571enum pm_node_type {
573 PM_ALIAS_GLOBAL_VARIABLE_NODE = 1,
574
576 PM_ALIAS_METHOD_NODE = 2,
577
579 PM_ALTERNATION_PATTERN_NODE = 3,
580
582 PM_AND_NODE = 4,
583
585 PM_ARGUMENTS_NODE = 5,
586
588 PM_ARRAY_NODE = 6,
589
591 PM_ARRAY_PATTERN_NODE = 7,
592
594 PM_ASSOC_NODE = 8,
595
597 PM_ASSOC_SPLAT_NODE = 9,
598
600 PM_BACK_REFERENCE_READ_NODE = 10,
601
603 PM_BEGIN_NODE = 11,
604
606 PM_BLOCK_ARGUMENT_NODE = 12,
607
609 PM_BLOCK_LOCAL_VARIABLE_NODE = 13,
610
612 PM_BLOCK_NODE = 14,
613
615 PM_BLOCK_PARAMETER_NODE = 15,
616
618 PM_BLOCK_PARAMETERS_NODE = 16,
619
621 PM_BREAK_NODE = 17,
622
624 PM_CALL_AND_WRITE_NODE = 18,
625
627 PM_CALL_NODE = 19,
628
630 PM_CALL_OPERATOR_WRITE_NODE = 20,
631
633 PM_CALL_OR_WRITE_NODE = 21,
634
636 PM_CALL_TARGET_NODE = 22,
637
639 PM_CAPTURE_PATTERN_NODE = 23,
640
642 PM_CASE_MATCH_NODE = 24,
643
645 PM_CASE_NODE = 25,
646
648 PM_CLASS_NODE = 26,
649
651 PM_CLASS_VARIABLE_AND_WRITE_NODE = 27,
652
654 PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 28,
655
657 PM_CLASS_VARIABLE_OR_WRITE_NODE = 29,
658
660 PM_CLASS_VARIABLE_READ_NODE = 30,
661
663 PM_CLASS_VARIABLE_TARGET_NODE = 31,
664
666 PM_CLASS_VARIABLE_WRITE_NODE = 32,
667
669 PM_CONSTANT_AND_WRITE_NODE = 33,
670
672 PM_CONSTANT_OPERATOR_WRITE_NODE = 34,
673
675 PM_CONSTANT_OR_WRITE_NODE = 35,
676
678 PM_CONSTANT_PATH_AND_WRITE_NODE = 36,
679
681 PM_CONSTANT_PATH_NODE = 37,
682
684 PM_CONSTANT_PATH_OPERATOR_WRITE_NODE = 38,
685
687 PM_CONSTANT_PATH_OR_WRITE_NODE = 39,
688
690 PM_CONSTANT_PATH_TARGET_NODE = 40,
691
693 PM_CONSTANT_PATH_WRITE_NODE = 41,
694
696 PM_CONSTANT_READ_NODE = 42,
697
699 PM_CONSTANT_TARGET_NODE = 43,
700
702 PM_CONSTANT_WRITE_NODE = 44,
703
705 PM_DEF_NODE = 45,
706
708 PM_DEFINED_NODE = 46,
709
711 PM_ELSE_NODE = 47,
712
714 PM_EMBEDDED_STATEMENTS_NODE = 48,
715
717 PM_EMBEDDED_VARIABLE_NODE = 49,
718
720 PM_ENSURE_NODE = 50,
721
723 PM_FALSE_NODE = 51,
724
726 PM_FIND_PATTERN_NODE = 52,
727
729 PM_FLIP_FLOP_NODE = 53,
730
732 PM_FLOAT_NODE = 54,
733
735 PM_FOR_NODE = 55,
736
738 PM_FORWARDING_ARGUMENTS_NODE = 56,
739
741 PM_FORWARDING_PARAMETER_NODE = 57,
742
744 PM_FORWARDING_SUPER_NODE = 58,
745
747 PM_GLOBAL_VARIABLE_AND_WRITE_NODE = 59,
748
750 PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 60,
751
753 PM_GLOBAL_VARIABLE_OR_WRITE_NODE = 61,
754
756 PM_GLOBAL_VARIABLE_READ_NODE = 62,
757
759 PM_GLOBAL_VARIABLE_TARGET_NODE = 63,
760
762 PM_GLOBAL_VARIABLE_WRITE_NODE = 64,
763
765 PM_HASH_NODE = 65,
766
768 PM_HASH_PATTERN_NODE = 66,
769
771 PM_IF_NODE = 67,
772
774 PM_IMAGINARY_NODE = 68,
775
777 PM_IMPLICIT_NODE = 69,
778
780 PM_IMPLICIT_REST_NODE = 70,
781
783 PM_IN_NODE = 71,
784
786 PM_INDEX_AND_WRITE_NODE = 72,
787
789 PM_INDEX_OPERATOR_WRITE_NODE = 73,
790
792 PM_INDEX_OR_WRITE_NODE = 74,
793
795 PM_INDEX_TARGET_NODE = 75,
796
798 PM_INSTANCE_VARIABLE_AND_WRITE_NODE = 76,
799
801 PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 77,
802
804 PM_INSTANCE_VARIABLE_OR_WRITE_NODE = 78,
805
807 PM_INSTANCE_VARIABLE_READ_NODE = 79,
808
810 PM_INSTANCE_VARIABLE_TARGET_NODE = 80,
811
813 PM_INSTANCE_VARIABLE_WRITE_NODE = 81,
814
816 PM_INTEGER_NODE = 82,
817
819 PM_INTERPOLATED_MATCH_LAST_LINE_NODE = 83,
820
822 PM_INTERPOLATED_REGULAR_EXPRESSION_NODE = 84,
823
825 PM_INTERPOLATED_STRING_NODE = 85,
826
828 PM_INTERPOLATED_SYMBOL_NODE = 86,
829
831 PM_INTERPOLATED_X_STRING_NODE = 87,
832
834 PM_IT_LOCAL_VARIABLE_READ_NODE = 88,
835
837 PM_IT_PARAMETERS_NODE = 89,
838
840 PM_KEYWORD_HASH_NODE = 90,
841
843 PM_KEYWORD_REST_PARAMETER_NODE = 91,
844
846 PM_LAMBDA_NODE = 92,
847
849 PM_LOCAL_VARIABLE_AND_WRITE_NODE = 93,
850
852 PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 94,
853
855 PM_LOCAL_VARIABLE_OR_WRITE_NODE = 95,
856
858 PM_LOCAL_VARIABLE_READ_NODE = 96,
859
861 PM_LOCAL_VARIABLE_TARGET_NODE = 97,
862
864 PM_LOCAL_VARIABLE_WRITE_NODE = 98,
865
867 PM_MATCH_LAST_LINE_NODE = 99,
868
870 PM_MATCH_PREDICATE_NODE = 100,
871
873 PM_MATCH_REQUIRED_NODE = 101,
874
876 PM_MATCH_WRITE_NODE = 102,
877
879 PM_MISSING_NODE = 103,
880
882 PM_MODULE_NODE = 104,
883
885 PM_MULTI_TARGET_NODE = 105,
886
888 PM_MULTI_WRITE_NODE = 106,
889
891 PM_NEXT_NODE = 107,
892
894 PM_NIL_NODE = 108,
895
897 PM_NO_KEYWORDS_PARAMETER_NODE = 109,
898
900 PM_NUMBERED_PARAMETERS_NODE = 110,
901
903 PM_NUMBERED_REFERENCE_READ_NODE = 111,
904
906 PM_OPTIONAL_KEYWORD_PARAMETER_NODE = 112,
907
909 PM_OPTIONAL_PARAMETER_NODE = 113,
910
912 PM_OR_NODE = 114,
913
915 PM_PARAMETERS_NODE = 115,
916
918 PM_PARENTHESES_NODE = 116,
919
921 PM_PINNED_EXPRESSION_NODE = 117,
922
924 PM_PINNED_VARIABLE_NODE = 118,
925
927 PM_POST_EXECUTION_NODE = 119,
928
930 PM_PRE_EXECUTION_NODE = 120,
931
933 PM_PROGRAM_NODE = 121,
934
936 PM_RANGE_NODE = 122,
937
939 PM_RATIONAL_NODE = 123,
940
942 PM_REDO_NODE = 124,
943
945 PM_REGULAR_EXPRESSION_NODE = 125,
946
948 PM_REQUIRED_KEYWORD_PARAMETER_NODE = 126,
949
951 PM_REQUIRED_PARAMETER_NODE = 127,
952
954 PM_RESCUE_MODIFIER_NODE = 128,
955
957 PM_RESCUE_NODE = 129,
958
960 PM_REST_PARAMETER_NODE = 130,
961
963 PM_RETRY_NODE = 131,
964
966 PM_RETURN_NODE = 132,
967
969 PM_SELF_NODE = 133,
970
972 PM_SHAREABLE_CONSTANT_NODE = 134,
973
975 PM_SINGLETON_CLASS_NODE = 135,
976
978 PM_SOURCE_ENCODING_NODE = 136,
979
981 PM_SOURCE_FILE_NODE = 137,
982
984 PM_SOURCE_LINE_NODE = 138,
985
987 PM_SPLAT_NODE = 139,
988
990 PM_STATEMENTS_NODE = 140,
991
993 PM_STRING_NODE = 141,
994
996 PM_SUPER_NODE = 142,
997
999 PM_SYMBOL_NODE = 143,
1000
1002 PM_TRUE_NODE = 144,
1003
1005 PM_UNDEF_NODE = 145,
1006
1008 PM_UNLESS_NODE = 146,
1009
1011 PM_UNTIL_NODE = 147,
1012
1014 PM_WHEN_NODE = 148,
1015
1017 PM_WHILE_NODE = 149,
1018
1020 PM_X_STRING_NODE = 150,
1021
1023 PM_YIELD_NODE = 151,
1024
1026 PM_SCOPE_NODE
1027};
1028
1033typedef uint16_t pm_node_type_t;
1034
1039typedef uint16_t pm_node_flags_t;
1040
1045static const pm_node_flags_t PM_NODE_FLAG_NEWLINE = 0x1;
1046static const pm_node_flags_t PM_NODE_FLAG_STATIC_LITERAL = 0x2;
1047
1052#define PM_NODE_TYPE(node) ((enum pm_node_type) (node)->type)
1053
1057#define PM_NODE_TYPE_P(node, type) (PM_NODE_TYPE(node) == (type))
1058
1062#define PM_NODE_FLAG_P(node, flag) ((((pm_node_t *)(node))->flags & (flag)) != 0)
1063
1068typedef struct pm_node {
1073 pm_node_type_t type;
1074
1079 pm_node_flags_t flags;
1080
1085 uint32_t node_id;
1086
1092} pm_node_t;
1093
1141
1201
1249
1262typedef struct pm_and_node {
1265
1266
1278 struct pm_node *left;
1279
1292
1303
1338
1390
1486
1543
1581
1610
1690
1728
1759
1831
1885
1963
2001
2095
2235
2339
2433
2505
2553
2623
2693
2781
2839
2882
2920
2949
2972
3034
3072
3115
3153
3186
3253
3291
3324
3362
3419
3448
3471
3533
3612
3650
3683
3716
3744
3781
3794typedef struct pm_false_node {
3797
3799
3901
3937
3950typedef struct pm_float_node {
3953
3954
3960 double value;
3962
4052
4072
4091
4114
4152
4195
4233
4262
4285
4347
4398
4490
4602
4625
4644typedef struct pm_implicit_node {
4647
4648
4654
4681
4719
4783
4852
4916
4973
5011
5054
5092
5121
5144
5206
5237
5283
5329
5366
5399
5432
5450
5468
5494
5531
5579
5622
5670
5713
5759
5790
5869
5920
5953
6040
6068
6083
6131
6219
6322
6350
6363typedef struct pm_nil_node {
6366
6368
6397
6420
6451
6488
6530
6543typedef struct pm_or_node {
6546
6547
6559 struct pm_node *left;
6560
6573
6583} pm_or_node_t;
6584
6638
6674
6732
6770
6808
6846
6871
6929
6971
6984typedef struct pm_redo_node {
6987
6989
7040
7072
7099
7132
7190
7227
7240typedef struct pm_retry_node {
7243
7245
7273
7286typedef struct pm_self_node {
7289
7291
7322
7370
7388
7419
7437
7465
7488
7538
7584
7630
7643typedef struct pm_true_node {
7646
7648
7676
7764
7813
7853
7902
7944
7982
7986typedef enum pm_arguments_node_flags {
7988 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING = 4,
7989
7991 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS = 8,
7992
7994 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT = 16,
7995
7997 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT = 32,
7998
8000 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS = 64,
8001
8002 PM_ARGUMENTS_NODE_FLAGS_LAST,
8003} pm_arguments_node_flags_t;
8004
8008typedef enum pm_array_node_flags {
8010 PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT = 4,
8011
8012 PM_ARRAY_NODE_FLAGS_LAST,
8013} pm_array_node_flags_t;
8014
8018typedef enum pm_call_node_flags {
8020 PM_CALL_NODE_FLAGS_SAFE_NAVIGATION = 4,
8021
8023 PM_CALL_NODE_FLAGS_VARIABLE_CALL = 8,
8024
8026 PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE = 16,
8027
8029 PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY = 32,
8030
8031 PM_CALL_NODE_FLAGS_LAST,
8032} pm_call_node_flags_t;
8033
8037typedef enum pm_encoding_flags {
8039 PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING = 4,
8040
8042 PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING = 8,
8043
8044 PM_ENCODING_FLAGS_LAST,
8045} pm_encoding_flags_t;
8046
8050typedef enum pm_integer_base_flags {
8052 PM_INTEGER_BASE_FLAGS_BINARY = 4,
8053
8055 PM_INTEGER_BASE_FLAGS_DECIMAL = 8,
8056
8058 PM_INTEGER_BASE_FLAGS_OCTAL = 16,
8059
8061 PM_INTEGER_BASE_FLAGS_HEXADECIMAL = 32,
8062
8063 PM_INTEGER_BASE_FLAGS_LAST,
8064} pm_integer_base_flags_t;
8065
8069typedef enum pm_interpolated_string_node_flags {
8071 PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN = 4,
8072
8074 PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE = 8,
8075
8076 PM_INTERPOLATED_STRING_NODE_FLAGS_LAST,
8077} pm_interpolated_string_node_flags_t;
8078
8082typedef enum pm_keyword_hash_node_flags {
8084 PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS = 4,
8085
8086 PM_KEYWORD_HASH_NODE_FLAGS_LAST,
8087} pm_keyword_hash_node_flags_t;
8088
8092typedef enum pm_loop_flags {
8094 PM_LOOP_FLAGS_BEGIN_MODIFIER = 4,
8095
8096 PM_LOOP_FLAGS_LAST,
8097} pm_loop_flags_t;
8098
8102typedef enum pm_parameter_flags {
8104 PM_PARAMETER_FLAGS_REPEATED_PARAMETER = 4,
8105
8106 PM_PARAMETER_FLAGS_LAST,
8107} pm_parameter_flags_t;
8108
8112typedef enum pm_parentheses_node_flags {
8114 PM_PARENTHESES_NODE_FLAGS_MULTIPLE_STATEMENTS = 4,
8115
8116 PM_PARENTHESES_NODE_FLAGS_LAST,
8117} pm_parentheses_node_flags_t;
8118
8122typedef enum pm_range_flags {
8124 PM_RANGE_FLAGS_EXCLUDE_END = 4,
8125
8126 PM_RANGE_FLAGS_LAST,
8127} pm_range_flags_t;
8128
8132typedef enum pm_regular_expression_flags {
8134 PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 4,
8135
8137 PM_REGULAR_EXPRESSION_FLAGS_EXTENDED = 8,
8138
8140 PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 16,
8141
8143 PM_REGULAR_EXPRESSION_FLAGS_ONCE = 32,
8144
8146 PM_REGULAR_EXPRESSION_FLAGS_EUC_JP = 64,
8147
8149 PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 128,
8150
8152 PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 256,
8153
8155 PM_REGULAR_EXPRESSION_FLAGS_UTF_8 = 512,
8156
8158 PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING = 1024,
8159
8161 PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING = 2048,
8162
8164 PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING = 4096,
8165
8166 PM_REGULAR_EXPRESSION_FLAGS_LAST,
8167} pm_regular_expression_flags_t;
8168
8172typedef enum pm_shareable_constant_node_flags {
8174 PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL = 4,
8175
8177 PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING = 8,
8178
8180 PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY = 16,
8181
8182 PM_SHAREABLE_CONSTANT_NODE_FLAGS_LAST,
8183} pm_shareable_constant_node_flags_t;
8184
8188typedef enum pm_string_flags {
8190 PM_STRING_FLAGS_FORCED_UTF8_ENCODING = 4,
8191
8193 PM_STRING_FLAGS_FORCED_BINARY_ENCODING = 8,
8194
8196 PM_STRING_FLAGS_FROZEN = 16,
8197
8199 PM_STRING_FLAGS_MUTABLE = 32,
8200
8201 PM_STRING_FLAGS_LAST,
8202} pm_string_flags_t;
8203
8207typedef enum pm_symbol_flags {
8209 PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING = 4,
8210
8212 PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING = 8,
8213
8215 PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING = 16,
8216
8217 PM_SYMBOL_FLAGS_LAST,
8218} pm_symbol_flags_t;
8219
8226#define PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS 0
8227
8228#endif
A data structure that stores a set of strings.
uint32_t pm_constant_id_t
A constant id is a unique identifier for a constant in the constant pool.
This module provides functions for working with arbitrary-sized integers.
A generic string type that can have various ownership semantics.
Macro definitions used throughout the prism library.
AliasGlobalVariableNode.
Definition ast.h:1106
struct pm_node * old_name
AliasGlobalVariableNode::old_name.
Definition ast.h:1129
pm_node_t base
The embedded base node.
Definition ast.h:1108
struct pm_node * new_name
AliasGlobalVariableNode::new_name.
Definition ast.h:1119
pm_location_t keyword_loc
AliasGlobalVariableNode::keyword_loc.
Definition ast.h:1139
AliasMethodNode.
Definition ast.h:1154
struct pm_node * old_name
AliasMethodNode::old_name.
Definition ast.h:1189
struct pm_node * new_name
AliasMethodNode::new_name.
Definition ast.h:1173
pm_node_t base
The embedded base node.
Definition ast.h:1156
pm_location_t keyword_loc
AliasMethodNode::keyword_loc.
Definition ast.h:1199
AlternationPatternNode.
Definition ast.h:1214
pm_location_t operator_loc
AlternationPatternNode::operator_loc.
Definition ast.h:1247
struct pm_node * left
AlternationPatternNode::left.
Definition ast.h:1227
struct pm_node * right
AlternationPatternNode::right.
Definition ast.h:1237
pm_node_t base
The embedded base node.
Definition ast.h:1216
AndNode.
Definition ast.h:1262
struct pm_node * left
AndNode::left.
Definition ast.h:1278
struct pm_node * right
AndNode::right.
Definition ast.h:1291
pm_location_t operator_loc
AndNode::operator_loc.
Definition ast.h:1301
pm_node_t base
The embedded base node.
Definition ast.h:1264
ArgumentsNode.
Definition ast.h:1323
pm_node_t base
The embedded base node.
Definition ast.h:1325
struct pm_node_list arguments
ArgumentsNode::arguments.
Definition ast.h:1336
ArrayNode.
Definition ast.h:1354
pm_node_t base
The embedded base node.
Definition ast.h:1356
pm_location_t closing_loc
ArrayNode::closing_loc.
Definition ast.h:1388
struct pm_node_list elements
ArrayNode::elements.
Definition ast.h:1364
pm_location_t opening_loc
ArrayNode::opening_loc.
Definition ast.h:1376
ArrayPatternNode.
Definition ast.h:1415
struct pm_node_list requireds
ArrayPatternNode::requireds.
Definition ast.h:1444
struct pm_node * rest
ArrayPatternNode::rest.
Definition ast.h:1454
struct pm_node * constant
ArrayPatternNode::constant.
Definition ast.h:1434
pm_location_t opening_loc
ArrayPatternNode::opening_loc.
Definition ast.h:1474
pm_node_t base
The embedded base node.
Definition ast.h:1417
pm_location_t closing_loc
ArrayPatternNode::closing_loc.
Definition ast.h:1484
struct pm_node_list posts
ArrayPatternNode::posts.
Definition ast.h:1464
AssocNode.
Definition ast.h:1499
pm_node_t base
The embedded base node.
Definition ast.h:1501
struct pm_node * value
AssocNode::value.
Definition ast.h:1531
struct pm_node * key
AssocNode::key.
Definition ast.h:1518
pm_location_t operator_loc
AssocNode::operator_loc.
Definition ast.h:1541
AssocSplatNode.
Definition ast.h:1556
struct pm_node * value
AssocSplatNode::value.
Definition ast.h:1569
pm_node_t base
The embedded base node.
Definition ast.h:1558
pm_location_t operator_loc
AssocSplatNode::operator_loc.
Definition ast.h:1579
BackReferenceReadNode.
Definition ast.h:1594
pm_constant_id_t name
BackReferenceReadNode::name.
Definition ast.h:1608
pm_node_t base
The embedded base node.
Definition ast.h:1596
BeginNode.
Definition ast.h:1625
struct pm_ensure_node * ensure_clause
BeginNode::ensure_clause.
Definition ast.h:1678
struct pm_rescue_node * rescue_clause
BeginNode::rescue_clause.
Definition ast.h:1658
struct pm_statements_node * statements
BeginNode::statements.
Definition ast.h:1648
pm_node_t base
The embedded base node.
Definition ast.h:1627
pm_location_t end_keyword_loc
BeginNode::end_keyword_loc.
Definition ast.h:1688
pm_location_t begin_keyword_loc
BeginNode::begin_keyword_loc.
Definition ast.h:1638
struct pm_else_node * else_clause
BeginNode::else_clause.
Definition ast.h:1668
BlockArgumentNode.
Definition ast.h:1703
pm_node_t base
The embedded base node.
Definition ast.h:1705
struct pm_node * expression
BlockArgumentNode::expression.
Definition ast.h:1716
pm_location_t operator_loc
BlockArgumentNode::operator_loc.
Definition ast.h:1726
BlockLocalVariableNode.
Definition ast.h:1744
pm_node_t base
The embedded base node.
Definition ast.h:1746
pm_constant_id_t name
BlockLocalVariableNode::name.
Definition ast.h:1757
BlockNode.
Definition ast.h:1772
pm_node_t base
The embedded base node.
Definition ast.h:1774
pm_location_t closing_loc
BlockNode::closing_loc.
Definition ast.h:1829
struct pm_node * parameters
BlockNode::parameters.
Definition ast.h:1799
pm_location_t opening_loc
BlockNode::opening_loc.
Definition ast.h:1819
struct pm_node * body
BlockNode::body.
Definition ast.h:1809
pm_constant_id_list_t locals
BlockNode::locals.
Definition ast.h:1785
BlockParameterNode.
Definition ast.h:1848
pm_location_t operator_loc
BlockParameterNode::operator_loc.
Definition ast.h:1883
pm_location_t name_loc
BlockParameterNode::name_loc.
Definition ast.h:1872
pm_constant_id_t name
BlockParameterNode::name.
Definition ast.h:1862
pm_node_t base
The embedded base node.
Definition ast.h:1850
BlockParametersNode.
Definition ast.h:1902
struct pm_parameters_node * parameters
BlockParametersNode::parameters.
Definition ast.h:1919
pm_node_t base
The embedded base node.
Definition ast.h:1904
struct pm_node_list locals
BlockParametersNode::locals.
Definition ast.h:1933
pm_location_t closing_loc
BlockParametersNode::closing_loc.
Definition ast.h:1961
pm_location_t opening_loc
BlockParametersNode::opening_loc.
Definition ast.h:1947
BreakNode.
Definition ast.h:1976
struct pm_arguments_node * arguments
BreakNode::arguments.
Definition ast.h:1989
pm_location_t keyword_loc
BreakNode::keyword_loc.
Definition ast.h:1999
pm_node_t base
The embedded base node.
Definition ast.h:1978
CallAndWriteNode.
Definition ast.h:2020
pm_location_t operator_loc
CallAndWriteNode::operator_loc.
Definition ast.h:2083
struct pm_node * value
CallAndWriteNode::value.
Definition ast.h:2093
pm_node_t base
The embedded base node.
Definition ast.h:2022
pm_location_t call_operator_loc
CallAndWriteNode::call_operator_loc.
Definition ast.h:2043
pm_location_t message_loc
CallAndWriteNode::message_loc.
Definition ast.h:2053
pm_constant_id_t read_name
CallAndWriteNode::read_name.
Definition ast.h:2063
pm_constant_id_t write_name
CallAndWriteNode::write_name.
Definition ast.h:2073
struct pm_node * receiver
CallAndWriteNode::receiver.
Definition ast.h:2033
CallNode.
Definition ast.h:2129
pm_location_t opening_loc
CallNode::opening_loc.
Definition ast.h:2190
pm_location_t closing_loc
CallNode::closing_loc.
Definition ast.h:2210
struct pm_node * receiver
CallNode::receiver.
Definition ast.h:2148
pm_constant_id_t name
CallNode::name.
Definition ast.h:2171
pm_node_t base
The embedded base node.
Definition ast.h:2131
pm_location_t equal_loc
CallNode::equal_loc.
Definition ast.h:2223
pm_location_t call_operator_loc
CallNode::call_operator_loc.
Definition ast.h:2161
pm_location_t message_loc
CallNode::message_loc.
Definition ast.h:2181
struct pm_arguments_node * arguments
CallNode::arguments.
Definition ast.h:2200
struct pm_node * block
CallNode::block.
Definition ast.h:2233
CallOperatorWriteNode.
Definition ast.h:2254
pm_constant_id_t read_name
CallOperatorWriteNode::read_name.
Definition ast.h:2297
pm_constant_id_t binary_operator
CallOperatorWriteNode::binary_operator.
Definition ast.h:2317
pm_location_t binary_operator_loc
CallOperatorWriteNode::binary_operator_loc.
Definition ast.h:2327
struct pm_node * receiver
CallOperatorWriteNode::receiver.
Definition ast.h:2267
pm_node_t base
The embedded base node.
Definition ast.h:2256
pm_constant_id_t write_name
CallOperatorWriteNode::write_name.
Definition ast.h:2307
pm_location_t message_loc
CallOperatorWriteNode::message_loc.
Definition ast.h:2287
struct pm_node * value
CallOperatorWriteNode::value.
Definition ast.h:2337
pm_location_t call_operator_loc
CallOperatorWriteNode::call_operator_loc.
Definition ast.h:2277
CallOrWriteNode.
Definition ast.h:2358
pm_location_t operator_loc
CallOrWriteNode::operator_loc.
Definition ast.h:2421
pm_location_t call_operator_loc
CallOrWriteNode::call_operator_loc.
Definition ast.h:2381
pm_node_t base
The embedded base node.
Definition ast.h:2360
struct pm_node * receiver
CallOrWriteNode::receiver.
Definition ast.h:2371
struct pm_node * value
CallOrWriteNode::value.
Definition ast.h:2431
pm_constant_id_t write_name
CallOrWriteNode::write_name.
Definition ast.h:2411
pm_constant_id_t read_name
CallOrWriteNode::read_name.
Definition ast.h:2401
pm_location_t message_loc
CallOrWriteNode::message_loc.
Definition ast.h:2391
CallTargetNode.
Definition ast.h:2460
pm_node_t base
The embedded base node.
Definition ast.h:2462
pm_constant_id_t name
CallTargetNode::name.
Definition ast.h:2493
struct pm_node * receiver
CallTargetNode::receiver.
Definition ast.h:2473
pm_location_t call_operator_loc
CallTargetNode::call_operator_loc.
Definition ast.h:2483
pm_location_t message_loc
CallTargetNode::message_loc.
Definition ast.h:2503
CapturePatternNode.
Definition ast.h:2518
struct pm_local_variable_target_node * target
CapturePatternNode::target.
Definition ast.h:2541
pm_location_t operator_loc
CapturePatternNode::operator_loc.
Definition ast.h:2551
struct pm_node * value
CapturePatternNode::value.
Definition ast.h:2531
pm_node_t base
The embedded base node.
Definition ast.h:2520
CaseMatchNode.
Definition ast.h:2568
pm_location_t end_keyword_loc
CaseMatchNode::end_keyword_loc.
Definition ast.h:2621
struct pm_node_list conditions
CaseMatchNode::conditions.
Definition ast.h:2591
pm_node_t base
The embedded base node.
Definition ast.h:2570
pm_location_t case_keyword_loc
CaseMatchNode::case_keyword_loc.
Definition ast.h:2611
struct pm_else_node * else_clause
CaseMatchNode::else_clause.
Definition ast.h:2601
struct pm_node * predicate
CaseMatchNode::predicate.
Definition ast.h:2581
CaseNode.
Definition ast.h:2638
struct pm_node * predicate
CaseNode::predicate.
Definition ast.h:2651
struct pm_else_node * else_clause
CaseNode::else_clause.
Definition ast.h:2671
struct pm_node_list conditions
CaseNode::conditions.
Definition ast.h:2661
pm_node_t base
The embedded base node.
Definition ast.h:2640
pm_location_t case_keyword_loc
CaseNode::case_keyword_loc.
Definition ast.h:2681
pm_location_t end_keyword_loc
CaseNode::end_keyword_loc.
Definition ast.h:2691
ClassNode.
Definition ast.h:2706
pm_location_t class_keyword_loc
ClassNode::class_keyword_loc.
Definition ast.h:2724
pm_location_t end_keyword_loc
ClassNode::end_keyword_loc.
Definition ast.h:2770
struct pm_node * constant_path
ClassNode::constant_path.
Definition ast.h:2729
pm_constant_id_list_t locals
ClassNode::locals.
Definition ast.h:2714
pm_location_t inheritance_operator_loc
ClassNode::inheritance_operator_loc.
Definition ast.h:2739
pm_constant_id_t name
ClassNode::name.
Definition ast.h:2779
pm_node_t base
The embedded base node.
Definition ast.h:2708
struct pm_node * body
ClassNode::body.
Definition ast.h:2760
struct pm_node * superclass
ClassNode::superclass.
Definition ast.h:2749
ClassVariableAndWriteNode.
Definition ast.h:2794
struct pm_node * value
ClassVariableAndWriteNode::value.
Definition ast.h:2837
pm_constant_id_t name
ClassVariableAndWriteNode::name.
Definition ast.h:2807
pm_location_t operator_loc
ClassVariableAndWriteNode::operator_loc.
Definition ast.h:2827
pm_node_t base
The embedded base node.
Definition ast.h:2796
pm_location_t name_loc
ClassVariableAndWriteNode::name_loc.
Definition ast.h:2817
ClassVariableOperatorWriteNode.
Definition ast.h:2852
pm_node_t base
The embedded base node.
Definition ast.h:2854
pm_constant_id_t name
ClassVariableOperatorWriteNode::name.
Definition ast.h:2860
pm_location_t name_loc
ClassVariableOperatorWriteNode::name_loc.
Definition ast.h:2865
pm_constant_id_t binary_operator
ClassVariableOperatorWriteNode::binary_operator.
Definition ast.h:2880
struct pm_node * value
ClassVariableOperatorWriteNode::value.
Definition ast.h:2875
pm_location_t binary_operator_loc
ClassVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:2870
ClassVariableOrWriteNode.
Definition ast.h:2895
pm_node_t base
The embedded base node.
Definition ast.h:2897
pm_location_t name_loc
ClassVariableOrWriteNode::name_loc.
Definition ast.h:2908
pm_location_t operator_loc
ClassVariableOrWriteNode::operator_loc.
Definition ast.h:2913
pm_constant_id_t name
ClassVariableOrWriteNode::name.
Definition ast.h:2903
struct pm_node * value
ClassVariableOrWriteNode::value.
Definition ast.h:2918
ClassVariableReadNode.
Definition ast.h:2933
pm_node_t base
The embedded base node.
Definition ast.h:2935
pm_constant_id_t name
ClassVariableReadNode::name.
Definition ast.h:2947
ClassVariableTargetNode.
Definition ast.h:2962
pm_node_t base
The embedded base node.
Definition ast.h:2964
pm_constant_id_t name
ClassVariableTargetNode::name.
Definition ast.h:2970
ClassVariableWriteNode.
Definition ast.h:2985
pm_location_t name_loc
ClassVariableWriteNode::name_loc.
Definition ast.h:3009
pm_node_t base
The embedded base node.
Definition ast.h:2987
struct pm_node * value
ClassVariableWriteNode::value.
Definition ast.h:3022
pm_location_t operator_loc
ClassVariableWriteNode::operator_loc.
Definition ast.h:3032
pm_constant_id_t name
ClassVariableWriteNode::name.
Definition ast.h:2999
ConstantAndWriteNode.
Definition ast.h:3047
pm_location_t operator_loc
ConstantAndWriteNode::operator_loc.
Definition ast.h:3065
pm_location_t name_loc
ConstantAndWriteNode::name_loc.
Definition ast.h:3060
pm_constant_id_t name
ConstantAndWriteNode::name.
Definition ast.h:3055
struct pm_node * value
ConstantAndWriteNode::value.
Definition ast.h:3070
pm_node_t base
The embedded base node.
Definition ast.h:3049
A list of constant IDs.
ConstantOperatorWriteNode.
Definition ast.h:3085
pm_constant_id_t name
ConstantOperatorWriteNode::name.
Definition ast.h:3093
pm_location_t name_loc
ConstantOperatorWriteNode::name_loc.
Definition ast.h:3098
pm_constant_id_t binary_operator
ConstantOperatorWriteNode::binary_operator.
Definition ast.h:3113
pm_location_t binary_operator_loc
ConstantOperatorWriteNode::binary_operator_loc.
Definition ast.h:3103
struct pm_node * value
ConstantOperatorWriteNode::value.
Definition ast.h:3108
pm_node_t base
The embedded base node.
Definition ast.h:3087
ConstantOrWriteNode.
Definition ast.h:3128
pm_location_t operator_loc
ConstantOrWriteNode::operator_loc.
Definition ast.h:3146
pm_location_t name_loc
ConstantOrWriteNode::name_loc.
Definition ast.h:3141
pm_constant_id_t name
ConstantOrWriteNode::name.
Definition ast.h:3136
pm_node_t base
The embedded base node.
Definition ast.h:3130
struct pm_node * value
ConstantOrWriteNode::value.
Definition ast.h:3151
ConstantPathAndWriteNode.
Definition ast.h:3166
pm_node_t base
The embedded base node.
Definition ast.h:3168
struct pm_constant_path_node * target
ConstantPathAndWriteNode::target.
Definition ast.h:3174
pm_location_t operator_loc
ConstantPathAndWriteNode::operator_loc.
Definition ast.h:3179
struct pm_node * value
ConstantPathAndWriteNode::value.
Definition ast.h:3184
ConstantPathNode.
Definition ast.h:3199
pm_location_t delimiter_loc
ConstantPathNode::delimiter_loc.
Definition ast.h:3238
pm_node_t base
The embedded base node.
Definition ast.h:3201
pm_location_t name_loc
ConstantPathNode::name_loc.
Definition ast.h:3251
pm_constant_id_t name
ConstantPathNode::name.
Definition ast.h:3225
struct pm_node * parent
ConstantPathNode::parent.
Definition ast.h:3218
ConstantPathOperatorWriteNode.
Definition ast.h:3266
struct pm_constant_path_node * target
ConstantPathOperatorWriteNode::target.
Definition ast.h:3274
struct pm_node * value
ConstantPathOperatorWriteNode::value.
Definition ast.h:3284
pm_constant_id_t binary_operator
ConstantPathOperatorWriteNode::binary_operator.
Definition ast.h:3289
pm_node_t base
The embedded base node.
Definition ast.h:3268
pm_location_t binary_operator_loc
ConstantPathOperatorWriteNode::binary_operator_loc.
Definition ast.h:3279
ConstantPathOrWriteNode.
Definition ast.h:3304
pm_location_t operator_loc
ConstantPathOrWriteNode::operator_loc.
Definition ast.h:3317
pm_node_t base
The embedded base node.
Definition ast.h:3306
struct pm_node * value
ConstantPathOrWriteNode::value.
Definition ast.h:3322
struct pm_constant_path_node * target
ConstantPathOrWriteNode::target.
Definition ast.h:3312
ConstantPathTargetNode.
Definition ast.h:3337
pm_node_t base
The embedded base node.
Definition ast.h:3339
struct pm_node * parent
ConstantPathTargetNode::parent.
Definition ast.h:3345
pm_location_t delimiter_loc
ConstantPathTargetNode::delimiter_loc.
Definition ast.h:3355
pm_constant_id_t name
ConstantPathTargetNode::name.
Definition ast.h:3350
pm_location_t name_loc
ConstantPathTargetNode::name_loc.
Definition ast.h:3360
ConstantPathWriteNode.
Definition ast.h:3381
struct pm_constant_path_node * target
ConstantPathWriteNode::target.
Definition ast.h:3397
pm_location_t operator_loc
ConstantPathWriteNode::operator_loc.
Definition ast.h:3407
pm_node_t base
The embedded base node.
Definition ast.h:3383
struct pm_node * value
ConstantPathWriteNode::value.
Definition ast.h:3417
ConstantReadNode.
Definition ast.h:3432
pm_node_t base
The embedded base node.
Definition ast.h:3434
pm_constant_id_t name
ConstantReadNode::name.
Definition ast.h:3446
ConstantTargetNode.
Definition ast.h:3461
pm_node_t base
The embedded base node.
Definition ast.h:3463
pm_constant_id_t name
ConstantTargetNode::name.
Definition ast.h:3469
ConstantWriteNode.
Definition ast.h:3484
pm_node_t base
The embedded base node.
Definition ast.h:3486
struct pm_node * value
ConstantWriteNode::value.
Definition ast.h:3521
pm_constant_id_t name
ConstantWriteNode::name.
Definition ast.h:3498
pm_location_t name_loc
ConstantWriteNode::name_loc.
Definition ast.h:3508
pm_location_t operator_loc
ConstantWriteNode::operator_loc.
Definition ast.h:3531
DefNode.
Definition ast.h:3547
struct pm_parameters_node * parameters
DefNode::parameters.
Definition ast.h:3570
pm_location_t end_keyword_loc
DefNode::end_keyword_loc.
Definition ast.h:3610
pm_constant_id_t name
DefNode::name.
Definition ast.h:3555
pm_location_t name_loc
DefNode::name_loc.
Definition ast.h:3560
pm_location_t rparen_loc
DefNode::rparen_loc.
Definition ast.h:3600
struct pm_node * body
DefNode::body.
Definition ast.h:3575
pm_location_t equal_loc
DefNode::equal_loc.
Definition ast.h:3605
pm_location_t def_keyword_loc
DefNode::def_keyword_loc.
Definition ast.h:3585
struct pm_node * receiver
DefNode::receiver.
Definition ast.h:3565
pm_node_t base
The embedded base node.
Definition ast.h:3549
pm_location_t lparen_loc
DefNode::lparen_loc.
Definition ast.h:3595
pm_location_t operator_loc
DefNode::operator_loc.
Definition ast.h:3590
pm_constant_id_list_t locals
DefNode::locals.
Definition ast.h:3580
DefinedNode.
Definition ast.h:3625
pm_location_t lparen_loc
DefinedNode::lparen_loc.
Definition ast.h:3633
pm_node_t base
The embedded base node.
Definition ast.h:3627
pm_location_t rparen_loc
DefinedNode::rparen_loc.
Definition ast.h:3643
pm_location_t keyword_loc
DefinedNode::keyword_loc.
Definition ast.h:3648
struct pm_node * value
DefinedNode::value.
Definition ast.h:3638
ElseNode.
Definition ast.h:3663
struct pm_statements_node * statements
ElseNode::statements.
Definition ast.h:3676
pm_location_t else_keyword_loc
ElseNode::else_keyword_loc.
Definition ast.h:3671
pm_node_t base
The embedded base node.
Definition ast.h:3665
pm_location_t end_keyword_loc
ElseNode::end_keyword_loc.
Definition ast.h:3681
EmbeddedStatementsNode.
Definition ast.h:3696
pm_location_t closing_loc
EmbeddedStatementsNode::closing_loc.
Definition ast.h:3714
struct pm_statements_node * statements
EmbeddedStatementsNode::statements.
Definition ast.h:3709
pm_node_t base
The embedded base node.
Definition ast.h:3698
pm_location_t opening_loc
EmbeddedStatementsNode::opening_loc.
Definition ast.h:3704
EmbeddedVariableNode.
Definition ast.h:3729
struct pm_node * variable
EmbeddedVariableNode::variable.
Definition ast.h:3742
pm_location_t operator_loc
EmbeddedVariableNode::operator_loc.
Definition ast.h:3737
pm_node_t base
The embedded base node.
Definition ast.h:3731
EnsureNode.
Definition ast.h:3761
struct pm_statements_node * statements
EnsureNode::statements.
Definition ast.h:3774
pm_node_t base
The embedded base node.
Definition ast.h:3763
pm_location_t ensure_keyword_loc
EnsureNode::ensure_keyword_loc.
Definition ast.h:3769
pm_location_t end_keyword_loc
EnsureNode::end_keyword_loc.
Definition ast.h:3779
FalseNode.
Definition ast.h:3794
pm_node_t base
The embedded base node.
Definition ast.h:3796
FindPatternNode.
Definition ast.h:3821
struct pm_node * constant
FindPatternNode::constant.
Definition ast.h:3834
struct pm_node * right
FindPatternNode::right.
Definition ast.h:3873
pm_location_t opening_loc
FindPatternNode::opening_loc.
Definition ast.h:3886
pm_node_t base
The embedded base node.
Definition ast.h:3823
struct pm_node_list requireds
FindPatternNode::requireds.
Definition ast.h:3860
struct pm_splat_node * left
FindPatternNode::left.
Definition ast.h:3847
pm_location_t closing_loc
FindPatternNode::closing_loc.
Definition ast.h:3899
FlipFlopNode.
Definition ast.h:3917
pm_node_t base
The embedded base node.
Definition ast.h:3919
pm_location_t operator_loc
FlipFlopNode::operator_loc.
Definition ast.h:3935
struct pm_node * left
FlipFlopNode::left.
Definition ast.h:3925
struct pm_node * right
FlipFlopNode::right.
Definition ast.h:3930
FloatNode.
Definition ast.h:3950
double value
FloatNode::value.
Definition ast.h:3960
pm_node_t base
The embedded base node.
Definition ast.h:3952
ForNode.
Definition ast.h:3975
struct pm_statements_node * statements
ForNode::statements.
Definition ast.h:4010
struct pm_node * index
ForNode::index.
Definition ast.h:3988
struct pm_node * collection
ForNode::collection.
Definition ast.h:3998
pm_node_t base
The embedded base node.
Definition ast.h:3977
pm_location_t end_keyword_loc
ForNode::end_keyword_loc.
Definition ast.h:4050
pm_location_t for_keyword_loc
ForNode::for_keyword_loc.
Definition ast.h:4020
pm_location_t do_keyword_loc
ForNode::do_keyword_loc.
Definition ast.h:4040
pm_location_t in_keyword_loc
ForNode::in_keyword_loc.
Definition ast.h:4030
ForwardingArgumentsNode.
Definition ast.h:4067
pm_node_t base
The embedded base node.
Definition ast.h:4069
ForwardingParameterNode.
Definition ast.h:4086
pm_node_t base
The embedded base node.
Definition ast.h:4088
ForwardingSuperNode.
Definition ast.h:4104
pm_node_t base
The embedded base node.
Definition ast.h:4106
struct pm_block_node * block
ForwardingSuperNode::block.
Definition ast.h:4112
GlobalVariableAndWriteNode.
Definition ast.h:4127
pm_location_t operator_loc
GlobalVariableAndWriteNode::operator_loc.
Definition ast.h:4145
pm_node_t base
The embedded base node.
Definition ast.h:4129
pm_location_t name_loc
GlobalVariableAndWriteNode::name_loc.
Definition ast.h:4140
struct pm_node * value
GlobalVariableAndWriteNode::value.
Definition ast.h:4150
pm_constant_id_t name
GlobalVariableAndWriteNode::name.
Definition ast.h:4135
GlobalVariableOperatorWriteNode.
Definition ast.h:4165
pm_constant_id_t name
GlobalVariableOperatorWriteNode::name.
Definition ast.h:4173
pm_constant_id_t binary_operator
GlobalVariableOperatorWriteNode::binary_operator.
Definition ast.h:4193
struct pm_node * value
GlobalVariableOperatorWriteNode::value.
Definition ast.h:4188
pm_location_t name_loc
GlobalVariableOperatorWriteNode::name_loc.
Definition ast.h:4178
pm_node_t base
The embedded base node.
Definition ast.h:4167
pm_location_t binary_operator_loc
GlobalVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:4183
GlobalVariableOrWriteNode.
Definition ast.h:4208
pm_constant_id_t name
GlobalVariableOrWriteNode::name.
Definition ast.h:4216
pm_location_t name_loc
GlobalVariableOrWriteNode::name_loc.
Definition ast.h:4221
pm_node_t base
The embedded base node.
Definition ast.h:4210
pm_location_t operator_loc
GlobalVariableOrWriteNode::operator_loc.
Definition ast.h:4226
struct pm_node * value
GlobalVariableOrWriteNode::value.
Definition ast.h:4231
GlobalVariableReadNode.
Definition ast.h:4246
pm_node_t base
The embedded base node.
Definition ast.h:4248
pm_constant_id_t name
GlobalVariableReadNode::name.
Definition ast.h:4260
GlobalVariableTargetNode.
Definition ast.h:4275
pm_constant_id_t name
GlobalVariableTargetNode::name.
Definition ast.h:4283
pm_node_t base
The embedded base node.
Definition ast.h:4277
GlobalVariableWriteNode.
Definition ast.h:4298
struct pm_node * value
GlobalVariableWriteNode::value.
Definition ast.h:4335
pm_location_t name_loc
GlobalVariableWriteNode::name_loc.
Definition ast.h:4322
pm_location_t operator_loc
GlobalVariableWriteNode::operator_loc.
Definition ast.h:4345
pm_constant_id_t name
GlobalVariableWriteNode::name.
Definition ast.h:4312
pm_node_t base
The embedded base node.
Definition ast.h:4300
HashNode.
Definition ast.h:4360
struct pm_node_list elements
HashNode::elements.
Definition ast.h:4386
pm_node_t base
The embedded base node.
Definition ast.h:4362
pm_location_t closing_loc
HashNode::closing_loc.
Definition ast.h:4396
pm_location_t opening_loc
HashNode::opening_loc.
Definition ast.h:4373
HashPatternNode.
Definition ast.h:4420
struct pm_node_list elements
HashPatternNode::elements.
Definition ast.h:4446
pm_location_t opening_loc
HashPatternNode::opening_loc.
Definition ast.h:4475
pm_node_t base
The embedded base node.
Definition ast.h:4422
struct pm_node * rest
HashPatternNode::rest.
Definition ast.h:4462
pm_location_t closing_loc
HashPatternNode::closing_loc.
Definition ast.h:4488
struct pm_node * constant
HashPatternNode::constant.
Definition ast.h:4436
IfNode.
Definition ast.h:4509
struct pm_node * predicate
IfNode::predicate.
Definition ast.h:4542
pm_location_t end_keyword_loc
IfNode::end_keyword_loc.
Definition ast.h:4600
pm_location_t if_keyword_loc
IfNode::if_keyword_loc.
Definition ast.h:4524
struct pm_statements_node * statements
IfNode::statements.
Definition ast.h:4569
pm_node_t base
The embedded base node.
Definition ast.h:4511
struct pm_node * subsequent
IfNode::subsequent.
Definition ast.h:4588
pm_location_t then_keyword_loc
IfNode::then_keyword_loc.
Definition ast.h:4555
ImaginaryNode.
Definition ast.h:4615
struct pm_node * numeric
ImaginaryNode::numeric.
Definition ast.h:4623
pm_node_t base
The embedded base node.
Definition ast.h:4617
ImplicitNode.
Definition ast.h:4644
struct pm_node * value
ImplicitNode::value.
Definition ast.h:4652
pm_node_t base
The embedded base node.
Definition ast.h:4646
ImplicitRestNode.
Definition ast.h:4676
pm_node_t base
The embedded base node.
Definition ast.h:4678
InNode.
Definition ast.h:4694
struct pm_statements_node * statements
InNode::statements.
Definition ast.h:4707
struct pm_node * pattern
InNode::pattern.
Definition ast.h:4702
pm_node_t base
The embedded base node.
Definition ast.h:4696
pm_location_t then_loc
InNode::then_loc.
Definition ast.h:4717
pm_location_t in_loc
InNode::in_loc.
Definition ast.h:4712
IndexAndWriteNode.
Definition ast.h:4738
struct pm_arguments_node * arguments
IndexAndWriteNode::arguments.
Definition ast.h:4761
struct pm_node * receiver
IndexAndWriteNode::receiver.
Definition ast.h:4746
pm_node_t base
The embedded base node.
Definition ast.h:4740
struct pm_block_argument_node * block
IndexAndWriteNode::block.
Definition ast.h:4771
struct pm_node * value
IndexAndWriteNode::value.
Definition ast.h:4781
pm_location_t operator_loc
IndexAndWriteNode::operator_loc.
Definition ast.h:4776
pm_location_t closing_loc
IndexAndWriteNode::closing_loc.
Definition ast.h:4766
pm_location_t opening_loc
IndexAndWriteNode::opening_loc.
Definition ast.h:4756
pm_location_t call_operator_loc
IndexAndWriteNode::call_operator_loc.
Definition ast.h:4751
IndexOperatorWriteNode.
Definition ast.h:4802
pm_node_t base
The embedded base node.
Definition ast.h:4804
struct pm_block_argument_node * block
IndexOperatorWriteNode::block.
Definition ast.h:4835
pm_location_t binary_operator_loc
IndexOperatorWriteNode::binary_operator_loc.
Definition ast.h:4845
struct pm_node * value
IndexOperatorWriteNode::value.
Definition ast.h:4850
pm_location_t opening_loc
IndexOperatorWriteNode::opening_loc.
Definition ast.h:4820
pm_location_t call_operator_loc
IndexOperatorWriteNode::call_operator_loc.
Definition ast.h:4815
pm_location_t closing_loc
IndexOperatorWriteNode::closing_loc.
Definition ast.h:4830
struct pm_arguments_node * arguments
IndexOperatorWriteNode::arguments.
Definition ast.h:4825
pm_constant_id_t binary_operator
IndexOperatorWriteNode::binary_operator.
Definition ast.h:4840
struct pm_node * receiver
IndexOperatorWriteNode::receiver.
Definition ast.h:4810
IndexOrWriteNode.
Definition ast.h:4871
pm_location_t closing_loc
IndexOrWriteNode::closing_loc.
Definition ast.h:4899
pm_location_t call_operator_loc
IndexOrWriteNode::call_operator_loc.
Definition ast.h:4884
pm_node_t base
The embedded base node.
Definition ast.h:4873
struct pm_block_argument_node * block
IndexOrWriteNode::block.
Definition ast.h:4904
pm_location_t operator_loc
IndexOrWriteNode::operator_loc.
Definition ast.h:4909
struct pm_node * receiver
IndexOrWriteNode::receiver.
Definition ast.h:4879
pm_location_t opening_loc
IndexOrWriteNode::opening_loc.
Definition ast.h:4889
struct pm_node * value
IndexOrWriteNode::value.
Definition ast.h:4914
struct pm_arguments_node * arguments
IndexOrWriteNode::arguments.
Definition ast.h:4894
IndexTargetNode.
Definition ast.h:4943
pm_node_t base
The embedded base node.
Definition ast.h:4945
struct pm_node * receiver
IndexTargetNode::receiver.
Definition ast.h:4951
pm_location_t closing_loc
IndexTargetNode::closing_loc.
Definition ast.h:4966
struct pm_arguments_node * arguments
IndexTargetNode::arguments.
Definition ast.h:4961
pm_location_t opening_loc
IndexTargetNode::opening_loc.
Definition ast.h:4956
struct pm_block_argument_node * block
IndexTargetNode::block.
Definition ast.h:4971
InstanceVariableAndWriteNode.
Definition ast.h:4986
pm_location_t operator_loc
InstanceVariableAndWriteNode::operator_loc.
Definition ast.h:5004
pm_location_t name_loc
InstanceVariableAndWriteNode::name_loc.
Definition ast.h:4999
struct pm_node * value
InstanceVariableAndWriteNode::value.
Definition ast.h:5009
pm_node_t base
The embedded base node.
Definition ast.h:4988
pm_constant_id_t name
InstanceVariableAndWriteNode::name.
Definition ast.h:4994
InstanceVariableOperatorWriteNode.
Definition ast.h:5024
struct pm_node * value
InstanceVariableOperatorWriteNode::value.
Definition ast.h:5047
pm_constant_id_t binary_operator
InstanceVariableOperatorWriteNode::binary_operator.
Definition ast.h:5052
pm_location_t binary_operator_loc
InstanceVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:5042
pm_constant_id_t name
InstanceVariableOperatorWriteNode::name.
Definition ast.h:5032
pm_node_t base
The embedded base node.
Definition ast.h:5026
pm_location_t name_loc
InstanceVariableOperatorWriteNode::name_loc.
Definition ast.h:5037
InstanceVariableOrWriteNode.
Definition ast.h:5067
pm_location_t operator_loc
InstanceVariableOrWriteNode::operator_loc.
Definition ast.h:5085
struct pm_node * value
InstanceVariableOrWriteNode::value.
Definition ast.h:5090
pm_node_t base
The embedded base node.
Definition ast.h:5069
pm_location_t name_loc
InstanceVariableOrWriteNode::name_loc.
Definition ast.h:5080
pm_constant_id_t name
InstanceVariableOrWriteNode::name.
Definition ast.h:5075
InstanceVariableReadNode.
Definition ast.h:5105
pm_constant_id_t name
InstanceVariableReadNode::name.
Definition ast.h:5119
pm_node_t base
The embedded base node.
Definition ast.h:5107
InstanceVariableTargetNode.
Definition ast.h:5134
pm_constant_id_t name
InstanceVariableTargetNode::name.
Definition ast.h:5142
pm_node_t base
The embedded base node.
Definition ast.h:5136
InstanceVariableWriteNode.
Definition ast.h:5157
pm_location_t operator_loc
InstanceVariableWriteNode::operator_loc.
Definition ast.h:5204
pm_constant_id_t name
InstanceVariableWriteNode::name.
Definition ast.h:5171
pm_node_t base
The embedded base node.
Definition ast.h:5159
struct pm_node * value
InstanceVariableWriteNode::value.
Definition ast.h:5194
pm_location_t name_loc
InstanceVariableWriteNode::name_loc.
Definition ast.h:5181
IntegerNode.
Definition ast.h:5225
pm_integer_t value
IntegerNode::value.
Definition ast.h:5235
pm_node_t base
The embedded base node.
Definition ast.h:5227
A structure represents an arbitrary-sized integer.
Definition pm_integer.h:20
InterpolatedMatchLastLineNode.
Definition ast.h:5263
pm_node_t base
The embedded base node.
Definition ast.h:5265
pm_location_t closing_loc
InterpolatedMatchLastLineNode::closing_loc.
Definition ast.h:5281
struct pm_node_list parts
InterpolatedMatchLastLineNode::parts.
Definition ast.h:5276
pm_location_t opening_loc
InterpolatedMatchLastLineNode::opening_loc.
Definition ast.h:5271
InterpolatedRegularExpressionNode.
Definition ast.h:5309
pm_location_t opening_loc
InterpolatedRegularExpressionNode::opening_loc.
Definition ast.h:5317
struct pm_node_list parts
InterpolatedRegularExpressionNode::parts.
Definition ast.h:5322
pm_node_t base
The embedded base node.
Definition ast.h:5311
pm_location_t closing_loc
InterpolatedRegularExpressionNode::closing_loc.
Definition ast.h:5327
InterpolatedStringNode.
Definition ast.h:5346
pm_node_t base
The embedded base node.
Definition ast.h:5348
pm_location_t closing_loc
InterpolatedStringNode::closing_loc.
Definition ast.h:5364
pm_location_t opening_loc
InterpolatedStringNode::opening_loc.
Definition ast.h:5354
struct pm_node_list parts
InterpolatedStringNode::parts.
Definition ast.h:5359
InterpolatedSymbolNode.
Definition ast.h:5379
struct pm_node_list parts
InterpolatedSymbolNode::parts.
Definition ast.h:5392
pm_location_t closing_loc
InterpolatedSymbolNode::closing_loc.
Definition ast.h:5397
pm_location_t opening_loc
InterpolatedSymbolNode::opening_loc.
Definition ast.h:5387
pm_node_t base
The embedded base node.
Definition ast.h:5381
InterpolatedXStringNode.
Definition ast.h:5412
pm_location_t opening_loc
InterpolatedXStringNode::opening_loc.
Definition ast.h:5420
pm_location_t closing_loc
InterpolatedXStringNode::closing_loc.
Definition ast.h:5430
pm_node_t base
The embedded base node.
Definition ast.h:5414
struct pm_node_list parts
InterpolatedXStringNode::parts.
Definition ast.h:5425
ItLocalVariableReadNode.
Definition ast.h:5445
pm_node_t base
The embedded base node.
Definition ast.h:5447
ItParametersNode.
Definition ast.h:5463
pm_node_t base
The embedded base node.
Definition ast.h:5465
KeywordHashNode.
Definition ast.h:5484
pm_node_t base
The embedded base node.
Definition ast.h:5486
struct pm_node_list elements
KeywordHashNode::elements.
Definition ast.h:5492
KeywordRestParameterNode.
Definition ast.h:5511
pm_node_t base
The embedded base node.
Definition ast.h:5513
pm_constant_id_t name
KeywordRestParameterNode::name.
Definition ast.h:5519
pm_location_t operator_loc
KeywordRestParameterNode::operator_loc.
Definition ast.h:5529
pm_location_t name_loc
KeywordRestParameterNode::name_loc.
Definition ast.h:5524
LambdaNode.
Definition ast.h:5544
pm_location_t closing_loc
LambdaNode::closing_loc.
Definition ast.h:5567
pm_node_t base
The embedded base node.
Definition ast.h:5546
struct pm_node * body
LambdaNode::body.
Definition ast.h:5577
pm_location_t opening_loc
LambdaNode::opening_loc.
Definition ast.h:5562
struct pm_node * parameters
LambdaNode::parameters.
Definition ast.h:5572
pm_location_t operator_loc
LambdaNode::operator_loc.
Definition ast.h:5557
pm_constant_id_list_t locals
LambdaNode::locals.
Definition ast.h:5552
LocalVariableAndWriteNode.
Definition ast.h:5592
pm_constant_id_t name
LocalVariableAndWriteNode::name.
Definition ast.h:5615
pm_node_t base
The embedded base node.
Definition ast.h:5594
uint32_t depth
LocalVariableAndWriteNode::depth.
Definition ast.h:5620
pm_location_t operator_loc
LocalVariableAndWriteNode::operator_loc.
Definition ast.h:5605
struct pm_node * value
LocalVariableAndWriteNode::value.
Definition ast.h:5610
pm_location_t name_loc
LocalVariableAndWriteNode::name_loc.
Definition ast.h:5600
LocalVariableOperatorWriteNode.
Definition ast.h:5635
uint32_t depth
LocalVariableOperatorWriteNode::depth.
Definition ast.h:5668
pm_constant_id_t binary_operator
LocalVariableOperatorWriteNode::binary_operator.
Definition ast.h:5663
pm_node_t base
The embedded base node.
Definition ast.h:5637
struct pm_node * value
LocalVariableOperatorWriteNode::value.
Definition ast.h:5653
pm_location_t name_loc
LocalVariableOperatorWriteNode::name_loc.
Definition ast.h:5643
pm_location_t binary_operator_loc
LocalVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:5648
pm_constant_id_t name
LocalVariableOperatorWriteNode::name.
Definition ast.h:5658
LocalVariableOrWriteNode.
Definition ast.h:5683
uint32_t depth
LocalVariableOrWriteNode::depth.
Definition ast.h:5711
pm_location_t operator_loc
LocalVariableOrWriteNode::operator_loc.
Definition ast.h:5696
struct pm_node * value
LocalVariableOrWriteNode::value.
Definition ast.h:5701
pm_node_t base
The embedded base node.
Definition ast.h:5685
pm_constant_id_t name
LocalVariableOrWriteNode::name.
Definition ast.h:5706
pm_location_t name_loc
LocalVariableOrWriteNode::name_loc.
Definition ast.h:5691
LocalVariableReadNode.
Definition ast.h:5726
uint32_t depth
LocalVariableReadNode::depth.
Definition ast.h:5757
pm_constant_id_t name
LocalVariableReadNode::name.
Definition ast.h:5744
pm_node_t base
The embedded base node.
Definition ast.h:5728
LocalVariableTargetNode.
Definition ast.h:5775
uint32_t depth
LocalVariableTargetNode::depth.
Definition ast.h:5788
pm_constant_id_t name
LocalVariableTargetNode::name.
Definition ast.h:5783
pm_node_t base
The embedded base node.
Definition ast.h:5777
LocalVariableWriteNode.
Definition ast.h:5803
pm_location_t operator_loc
LocalVariableWriteNode::operator_loc.
Definition ast.h:5867
pm_location_t name_loc
LocalVariableWriteNode::name_loc.
Definition ast.h:5840
pm_node_t base
The embedded base node.
Definition ast.h:5805
struct pm_node * value
LocalVariableWriteNode::value.
Definition ast.h:5857
uint32_t depth
LocalVariableWriteNode::depth.
Definition ast.h:5830
pm_constant_id_t name
LocalVariableWriteNode::name.
Definition ast.h:5817
This represents a range of bytes in the source string to which a node or token corresponds.
Definition ast.h:544
const uint8_t * start
A pointer to the start location of the range in the source.
Definition ast.h:546
const uint8_t * end
A pointer to the end location of the range in the source.
Definition ast.h:549
MatchLastLineNode.
Definition ast.h:5895
pm_location_t content_loc
MatchLastLineNode::content_loc.
Definition ast.h:5908
pm_location_t opening_loc
MatchLastLineNode::opening_loc.
Definition ast.h:5903
pm_location_t closing_loc
MatchLastLineNode::closing_loc.
Definition ast.h:5913
pm_string_t unescaped
MatchLastLineNode::unescaped.
Definition ast.h:5918
pm_node_t base
The embedded base node.
Definition ast.h:5897
MatchPredicateNode.
Definition ast.h:5933
pm_location_t operator_loc
MatchPredicateNode::operator_loc.
Definition ast.h:5951
struct pm_node * pattern
MatchPredicateNode::pattern.
Definition ast.h:5946
struct pm_node * value
MatchPredicateNode::value.
Definition ast.h:5941
pm_node_t base
The embedded base node.
Definition ast.h:5935
MatchRequiredNode.
Definition ast.h:5966
pm_node_t base
The embedded base node.
Definition ast.h:5968
pm_location_t operator_loc
MatchRequiredNode::operator_loc.
Definition ast.h:6038
struct pm_node * value
MatchRequiredNode::value.
Definition ast.h:5979
struct pm_node * pattern
MatchRequiredNode::pattern.
Definition ast.h:6028
MatchWriteNode.
Definition ast.h:6053
pm_node_t base
The embedded base node.
Definition ast.h:6055
struct pm_node_list targets
MatchWriteNode::targets.
Definition ast.h:6066
struct pm_call_node * call
MatchWriteNode::call.
Definition ast.h:6061
MissingNode.
Definition ast.h:6078
pm_node_t base
The embedded base node.
Definition ast.h:6080
ModuleNode.
Definition ast.h:6096
pm_location_t end_keyword_loc
ModuleNode::end_keyword_loc.
Definition ast.h:6124
struct pm_node * constant_path
ModuleNode::constant_path.
Definition ast.h:6114
struct pm_node * body
ModuleNode::body.
Definition ast.h:6119
pm_constant_id_list_t locals
ModuleNode::locals.
Definition ast.h:6104
pm_node_t base
The embedded base node.
Definition ast.h:6098
pm_location_t module_keyword_loc
ModuleNode::module_keyword_loc.
Definition ast.h:6109
pm_constant_id_t name
ModuleNode::name.
Definition ast.h:6129
MultiTargetNode.
Definition ast.h:6149
pm_node_t base
The embedded base node.
Definition ast.h:6151
pm_location_t lparen_loc
MultiTargetNode::lparen_loc.
Definition ast.h:6207
struct pm_node_list lefts
MultiTargetNode::lefts.
Definition ast.h:6167
struct pm_node * rest
MultiTargetNode::rest.
Definition ast.h:6187
pm_location_t rparen_loc
MultiTargetNode::rparen_loc.
Definition ast.h:6217
struct pm_node_list rights
MultiTargetNode::rights.
Definition ast.h:6197
MultiWriteNode.
Definition ast.h:6232
pm_location_t rparen_loc
MultiWriteNode::rparen_loc.
Definition ast.h:6300
struct pm_node * value
MultiWriteNode::value.
Definition ast.h:6320
struct pm_node * rest
MultiWriteNode::rest.
Definition ast.h:6270
struct pm_node_list rights
MultiWriteNode::rights.
Definition ast.h:6280
pm_location_t operator_loc
MultiWriteNode::operator_loc.
Definition ast.h:6310
pm_location_t lparen_loc
MultiWriteNode::lparen_loc.
Definition ast.h:6290
struct pm_node_list lefts
MultiWriteNode::lefts.
Definition ast.h:6250
pm_node_t base
The embedded base node.
Definition ast.h:6234
NextNode.
Definition ast.h:6335
struct pm_arguments_node * arguments
NextNode::arguments.
Definition ast.h:6343
pm_node_t base
The embedded base node.
Definition ast.h:6337
pm_location_t keyword_loc
NextNode::keyword_loc.
Definition ast.h:6348
NilNode.
Definition ast.h:6363
pm_node_t base
The embedded base node.
Definition ast.h:6365
NoKeywordsParameterNode.
Definition ast.h:6382
pm_location_t keyword_loc
NoKeywordsParameterNode::keyword_loc.
Definition ast.h:6395
pm_location_t operator_loc
NoKeywordsParameterNode::operator_loc.
Definition ast.h:6390
pm_node_t base
The embedded base node.
Definition ast.h:6384
A list of nodes in the source, most often used for lists of children.
Definition ast.h:557
size_t size
The number of nodes in the list.
Definition ast.h:559
struct pm_node ** nodes
The nodes in the list.
Definition ast.h:565
size_t capacity
The capacity of the list that has been allocated.
Definition ast.h:562
This is the base structure that represents a node in the syntax tree.
Definition ast.h:1068
pm_node_type_t type
This represents the type of the node.
Definition ast.h:1073
uint32_t node_id
The unique identifier for this node, which is deterministic based on the source.
Definition ast.h:1085
pm_node_flags_t flags
This represents any flags on the node.
Definition ast.h:1079
pm_location_t location
This is the location of the node in the source.
Definition ast.h:1091
NumberedParametersNode.
Definition ast.h:6410
pm_node_t base
The embedded base node.
Definition ast.h:6412
uint8_t maximum
NumberedParametersNode::maximum.
Definition ast.h:6418
NumberedReferenceReadNode.
Definition ast.h:6433
pm_node_t base
The embedded base node.
Definition ast.h:6435
uint32_t number
NumberedReferenceReadNode::number.
Definition ast.h:6449
OptionalKeywordParameterNode.
Definition ast.h:6468
pm_node_t base
The embedded base node.
Definition ast.h:6470
pm_constant_id_t name
OptionalKeywordParameterNode::name.
Definition ast.h:6476
struct pm_node * value
OptionalKeywordParameterNode::value.
Definition ast.h:6486
pm_location_t name_loc
OptionalKeywordParameterNode::name_loc.
Definition ast.h:6481
OptionalParameterNode.
Definition ast.h:6505
pm_location_t name_loc
OptionalParameterNode::name_loc.
Definition ast.h:6518
struct pm_node * value
OptionalParameterNode::value.
Definition ast.h:6528
pm_constant_id_t name
OptionalParameterNode::name.
Definition ast.h:6513
pm_node_t base
The embedded base node.
Definition ast.h:6507
pm_location_t operator_loc
OptionalParameterNode::operator_loc.
Definition ast.h:6523
OrNode.
Definition ast.h:6543
struct pm_node * left
OrNode::left.
Definition ast.h:6559
struct pm_node * right
OrNode::right.
Definition ast.h:6572
pm_node_t base
The embedded base node.
Definition ast.h:6545
pm_location_t operator_loc
OrNode::operator_loc.
Definition ast.h:6582
ParametersNode.
Definition ast.h:6598
struct pm_node * rest
ParametersNode::rest.
Definition ast.h:6616
struct pm_node_list requireds
ParametersNode::requireds.
Definition ast.h:6606
struct pm_block_parameter_node * block
ParametersNode::block.
Definition ast.h:6636
struct pm_node_list optionals
ParametersNode::optionals.
Definition ast.h:6611
struct pm_node_list posts
ParametersNode::posts.
Definition ast.h:6621
pm_node_t base
The embedded base node.
Definition ast.h:6600
struct pm_node * keyword_rest
ParametersNode::keyword_rest.
Definition ast.h:6631
struct pm_node_list keywords
ParametersNode::keywords.
Definition ast.h:6626
ParenthesesNode.
Definition ast.h:6654
struct pm_node * body
ParenthesesNode::body.
Definition ast.h:6662
pm_location_t closing_loc
ParenthesesNode::closing_loc.
Definition ast.h:6672
pm_node_t base
The embedded base node.
Definition ast.h:6656
pm_location_t opening_loc
ParenthesesNode::opening_loc.
Definition ast.h:6667
PinnedExpressionNode.
Definition ast.h:6687
pm_node_t base
The embedded base node.
Definition ast.h:6689
pm_location_t rparen_loc
PinnedExpressionNode::rparen_loc.
Definition ast.h:6730
struct pm_node * expression
PinnedExpressionNode::expression.
Definition ast.h:6700
pm_location_t lparen_loc
PinnedExpressionNode::lparen_loc.
Definition ast.h:6720
pm_location_t operator_loc
PinnedExpressionNode::operator_loc.
Definition ast.h:6710
PinnedVariableNode.
Definition ast.h:6745
struct pm_node * variable
PinnedVariableNode::variable.
Definition ast.h:6758
pm_node_t base
The embedded base node.
Definition ast.h:6747
pm_location_t operator_loc
PinnedVariableNode::operator_loc.
Definition ast.h:6768
PostExecutionNode.
Definition ast.h:6783
pm_location_t closing_loc
PostExecutionNode::closing_loc.
Definition ast.h:6806
struct pm_statements_node * statements
PostExecutionNode::statements.
Definition ast.h:6791
pm_node_t base
The embedded base node.
Definition ast.h:6785
pm_location_t opening_loc
PostExecutionNode::opening_loc.
Definition ast.h:6801
pm_location_t keyword_loc
PostExecutionNode::keyword_loc.
Definition ast.h:6796
PreExecutionNode.
Definition ast.h:6821
struct pm_statements_node * statements
PreExecutionNode::statements.
Definition ast.h:6829
pm_location_t closing_loc
PreExecutionNode::closing_loc.
Definition ast.h:6844
pm_location_t opening_loc
PreExecutionNode::opening_loc.
Definition ast.h:6839
pm_node_t base
The embedded base node.
Definition ast.h:6823
pm_location_t keyword_loc
PreExecutionNode::keyword_loc.
Definition ast.h:6834
ProgramNode.
Definition ast.h:6856
struct pm_statements_node * statements
ProgramNode::statements.
Definition ast.h:6869
pm_node_t base
The embedded base node.
Definition ast.h:6858
pm_constant_id_list_t locals
ProgramNode::locals.
Definition ast.h:6864
RangeNode.
Definition ast.h:6890
struct pm_node * right
RangeNode::right.
Definition ast.h:6920
pm_location_t operator_loc
RangeNode::operator_loc.
Definition ast.h:6927
pm_node_t base
The embedded base node.
Definition ast.h:6892
struct pm_node * left
RangeNode::left.
Definition ast.h:6906
RationalNode.
Definition ast.h:6948
pm_node_t base
The embedded base node.
Definition ast.h:6950
pm_integer_t denominator
RationalNode::denominator.
Definition ast.h:6969
pm_integer_t numerator
RationalNode::numerator.
Definition ast.h:6960
RedoNode.
Definition ast.h:6984
pm_node_t base
The embedded base node.
Definition ast.h:6986
RegularExpressionNode.
Definition ast.h:7015
pm_location_t closing_loc
RegularExpressionNode::closing_loc.
Definition ast.h:7033
pm_node_t base
The embedded base node.
Definition ast.h:7017
pm_string_t unescaped
RegularExpressionNode::unescaped.
Definition ast.h:7038
pm_location_t opening_loc
RegularExpressionNode::opening_loc.
Definition ast.h:7023
pm_location_t content_loc
RegularExpressionNode::content_loc.
Definition ast.h:7028
RequiredKeywordParameterNode.
Definition ast.h:7057
pm_location_t name_loc
RequiredKeywordParameterNode::name_loc.
Definition ast.h:7070
pm_node_t base
The embedded base node.
Definition ast.h:7059
pm_constant_id_t name
RequiredKeywordParameterNode::name.
Definition ast.h:7065
RequiredParameterNode.
Definition ast.h:7089
pm_constant_id_t name
RequiredParameterNode::name.
Definition ast.h:7097
pm_node_t base
The embedded base node.
Definition ast.h:7091
RescueModifierNode.
Definition ast.h:7112
pm_node_t base
The embedded base node.
Definition ast.h:7114
struct pm_node * rescue_expression
RescueModifierNode::rescue_expression.
Definition ast.h:7130
pm_location_t keyword_loc
RescueModifierNode::keyword_loc.
Definition ast.h:7125
struct pm_node * expression
RescueModifierNode::expression.
Definition ast.h:7120
RescueNode.
Definition ast.h:7150
pm_location_t keyword_loc
RescueNode::keyword_loc.
Definition ast.h:7158
struct pm_rescue_node * subsequent
RescueNode::subsequent.
Definition ast.h:7188
pm_location_t then_keyword_loc
RescueNode::then_keyword_loc.
Definition ast.h:7178
pm_location_t operator_loc
RescueNode::operator_loc.
Definition ast.h:7168
struct pm_node * reference
RescueNode::reference.
Definition ast.h:7173
struct pm_node_list exceptions
RescueNode::exceptions.
Definition ast.h:7163
struct pm_statements_node * statements
RescueNode::statements.
Definition ast.h:7183
pm_node_t base
The embedded base node.
Definition ast.h:7152
RestParameterNode.
Definition ast.h:7207
pm_constant_id_t name
RestParameterNode::name.
Definition ast.h:7215
pm_location_t name_loc
RestParameterNode::name_loc.
Definition ast.h:7220
pm_node_t base
The embedded base node.
Definition ast.h:7209
pm_location_t operator_loc
RestParameterNode::operator_loc.
Definition ast.h:7225
RetryNode.
Definition ast.h:7240
pm_node_t base
The embedded base node.
Definition ast.h:7242
ReturnNode.
Definition ast.h:7258
pm_location_t keyword_loc
ReturnNode::keyword_loc.
Definition ast.h:7266
pm_node_t base
The embedded base node.
Definition ast.h:7260
struct pm_arguments_node * arguments
ReturnNode::arguments.
Definition ast.h:7271
SelfNode.
Definition ast.h:7286
pm_node_t base
The embedded base node.
Definition ast.h:7288
ShareableConstantNode.
Definition ast.h:7310
struct pm_node * write
ShareableConstantNode::write.
Definition ast.h:7320
pm_node_t base
The embedded base node.
Definition ast.h:7312
SingletonClassNode.
Definition ast.h:7335
pm_node_t base
The embedded base node.
Definition ast.h:7337
pm_constant_id_list_t locals
SingletonClassNode::locals.
Definition ast.h:7343
pm_location_t operator_loc
SingletonClassNode::operator_loc.
Definition ast.h:7353
struct pm_node * expression
SingletonClassNode::expression.
Definition ast.h:7358
pm_location_t end_keyword_loc
SingletonClassNode::end_keyword_loc.
Definition ast.h:7368
pm_location_t class_keyword_loc
SingletonClassNode::class_keyword_loc.
Definition ast.h:7348
struct pm_node * body
SingletonClassNode::body.
Definition ast.h:7363
SourceEncodingNode.
Definition ast.h:7383
pm_node_t base
The embedded base node.
Definition ast.h:7385
SourceFileNode.
Definition ast.h:7407
pm_string_t filepath
SourceFileNode::filepath.
Definition ast.h:7417
pm_node_t base
The embedded base node.
Definition ast.h:7409
SourceLineNode.
Definition ast.h:7432
pm_node_t base
The embedded base node.
Definition ast.h:7434
SplatNode.
Definition ast.h:7450
struct pm_node * expression
SplatNode::expression.
Definition ast.h:7463
pm_node_t base
The embedded base node.
Definition ast.h:7452
pm_location_t operator_loc
SplatNode::operator_loc.
Definition ast.h:7458
StatementsNode.
Definition ast.h:7478
struct pm_node_list body
StatementsNode::body.
Definition ast.h:7486
pm_node_t base
The embedded base node.
Definition ast.h:7480
StringNode.
Definition ast.h:7513
pm_node_t base
The embedded base node.
Definition ast.h:7515
pm_string_t unescaped
StringNode::unescaped.
Definition ast.h:7536
pm_location_t content_loc
StringNode::content_loc.
Definition ast.h:7526
pm_location_t closing_loc
StringNode::closing_loc.
Definition ast.h:7531
pm_location_t opening_loc
StringNode::opening_loc.
Definition ast.h:7521
A generic string type that can have various ownership semantics.
Definition pm_string.h:33
SuperNode.
Definition ast.h:7554
struct pm_arguments_node * arguments
SuperNode::arguments.
Definition ast.h:7572
pm_location_t lparen_loc
SuperNode::lparen_loc.
Definition ast.h:7567
pm_node_t base
The embedded base node.
Definition ast.h:7556
pm_location_t keyword_loc
SuperNode::keyword_loc.
Definition ast.h:7562
pm_location_t rparen_loc
SuperNode::rparen_loc.
Definition ast.h:7577
struct pm_node * block
SuperNode::block.
Definition ast.h:7582
SymbolNode.
Definition ast.h:7605
pm_location_t opening_loc
SymbolNode::opening_loc.
Definition ast.h:7613
pm_location_t value_loc
SymbolNode::value_loc.
Definition ast.h:7618
pm_location_t closing_loc
SymbolNode::closing_loc.
Definition ast.h:7623
pm_string_t unescaped
SymbolNode::unescaped.
Definition ast.h:7628
pm_node_t base
The embedded base node.
Definition ast.h:7607
This struct represents a token in the Ruby source.
Definition ast.h:529
const uint8_t * end
A pointer to the end location of the token in the source.
Definition ast.h:537
const uint8_t * start
A pointer to the start location of the token in the source.
Definition ast.h:534
pm_token_type_t type
The type of the token.
Definition ast.h:531
TrueNode.
Definition ast.h:7643
pm_node_t base
The embedded base node.
Definition ast.h:7645
UndefNode.
Definition ast.h:7661
pm_node_t base
The embedded base node.
Definition ast.h:7663
pm_location_t keyword_loc
UndefNode::keyword_loc.
Definition ast.h:7674
struct pm_node_list names
UndefNode::names.
Definition ast.h:7669
UnlessNode.
Definition ast.h:7692
pm_location_t keyword_loc
UnlessNode::keyword_loc.
Definition ast.h:7708
pm_location_t then_keyword_loc
UnlessNode::then_keyword_loc.
Definition ast.h:7731
pm_location_t end_keyword_loc
UnlessNode::end_keyword_loc.
Definition ast.h:7762
pm_node_t base
The embedded base node.
Definition ast.h:7694
struct pm_statements_node * statements
UnlessNode::statements.
Definition ast.h:7742
struct pm_node * predicate
UnlessNode::predicate.
Definition ast.h:7721
struct pm_else_node * else_clause
UnlessNode::else_clause.
Definition ast.h:7752
UntilNode.
Definition ast.h:7783
struct pm_statements_node * statements
UntilNode::statements.
Definition ast.h:7811
pm_location_t closing_loc
UntilNode::closing_loc.
Definition ast.h:7801
struct pm_node * predicate
UntilNode::predicate.
Definition ast.h:7806
pm_location_t keyword_loc
UntilNode::keyword_loc.
Definition ast.h:7791
pm_node_t base
The embedded base node.
Definition ast.h:7785
pm_location_t do_keyword_loc
UntilNode::do_keyword_loc.
Definition ast.h:7796
WhenNode.
Definition ast.h:7828
struct pm_statements_node * statements
WhenNode::statements.
Definition ast.h:7851
pm_node_t base
The embedded base node.
Definition ast.h:7830
pm_location_t then_keyword_loc
WhenNode::then_keyword_loc.
Definition ast.h:7846
pm_location_t keyword_loc
WhenNode::keyword_loc.
Definition ast.h:7836
struct pm_node_list conditions
WhenNode::conditions.
Definition ast.h:7841
WhileNode.
Definition ast.h:7872
pm_location_t closing_loc
WhileNode::closing_loc.
Definition ast.h:7890
pm_location_t keyword_loc
WhileNode::keyword_loc.
Definition ast.h:7880
struct pm_statements_node * statements
WhileNode::statements.
Definition ast.h:7900
pm_node_t base
The embedded base node.
Definition ast.h:7874
pm_location_t do_keyword_loc
WhileNode::do_keyword_loc.
Definition ast.h:7885
struct pm_node * predicate
WhileNode::predicate.
Definition ast.h:7895
XStringNode.
Definition ast.h:7919
pm_location_t closing_loc
XStringNode::closing_loc.
Definition ast.h:7937
pm_location_t opening_loc
XStringNode::opening_loc.
Definition ast.h:7927
pm_location_t content_loc
XStringNode::content_loc.
Definition ast.h:7932
pm_string_t unescaped
XStringNode::unescaped.
Definition ast.h:7942
pm_node_t base
The embedded base node.
Definition ast.h:7921
YieldNode.
Definition ast.h:7957
pm_location_t keyword_loc
YieldNode::keyword_loc.
Definition ast.h:7965
pm_location_t lparen_loc
YieldNode::lparen_loc.
Definition ast.h:7970
pm_node_t base
The embedded base node.
Definition ast.h:7959
pm_location_t rparen_loc
YieldNode::rparen_loc.
Definition ast.h:7980
struct pm_arguments_node * arguments
YieldNode::arguments.
Definition ast.h:7975