Ruby 4.0.0dev (2025-11-27 revision 67a14e94c6d3f5c30221da2659cb2e5604ce5c6f)
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_PIPE,
76
78 PM_TOKEN_SEMICOLON,
79
81 PM_TOKEN_AMPERSAND,
82
84 PM_TOKEN_AMPERSAND_AMPERSAND,
85
87 PM_TOKEN_AMPERSAND_AMPERSAND_EQUAL,
88
90 PM_TOKEN_AMPERSAND_DOT,
91
93 PM_TOKEN_AMPERSAND_EQUAL,
94
96 PM_TOKEN_BACKTICK,
97
99 PM_TOKEN_BACK_REFERENCE,
100
102 PM_TOKEN_BANG,
103
105 PM_TOKEN_BANG_EQUAL,
106
108 PM_TOKEN_BANG_TILDE,
109
111 PM_TOKEN_BRACE_LEFT,
112
114 PM_TOKEN_BRACKET_LEFT,
115
117 PM_TOKEN_BRACKET_LEFT_ARRAY,
118
120 PM_TOKEN_BRACKET_LEFT_RIGHT,
121
123 PM_TOKEN_BRACKET_LEFT_RIGHT_EQUAL,
124
126 PM_TOKEN_BRACKET_RIGHT,
127
129 PM_TOKEN_CARET,
130
132 PM_TOKEN_CARET_EQUAL,
133
135 PM_TOKEN_CHARACTER_LITERAL,
136
138 PM_TOKEN_CLASS_VARIABLE,
139
141 PM_TOKEN_COLON,
142
144 PM_TOKEN_COLON_COLON,
145
147 PM_TOKEN_COMMENT,
148
150 PM_TOKEN_CONSTANT,
151
153 PM_TOKEN_DOT,
154
156 PM_TOKEN_DOT_DOT,
157
159 PM_TOKEN_DOT_DOT_DOT,
160
162 PM_TOKEN_EMBDOC_BEGIN,
163
165 PM_TOKEN_EMBDOC_END,
166
168 PM_TOKEN_EMBDOC_LINE,
169
171 PM_TOKEN_EMBEXPR_BEGIN,
172
174 PM_TOKEN_EMBVAR,
175
177 PM_TOKEN_EQUAL,
178
180 PM_TOKEN_EQUAL_EQUAL,
181
183 PM_TOKEN_EQUAL_EQUAL_EQUAL,
184
186 PM_TOKEN_EQUAL_GREATER,
187
189 PM_TOKEN_EQUAL_TILDE,
190
192 PM_TOKEN_FLOAT,
193
195 PM_TOKEN_FLOAT_IMAGINARY,
196
198 PM_TOKEN_FLOAT_RATIONAL,
199
201 PM_TOKEN_FLOAT_RATIONAL_IMAGINARY,
202
204 PM_TOKEN_GLOBAL_VARIABLE,
205
207 PM_TOKEN_GREATER,
208
210 PM_TOKEN_GREATER_EQUAL,
211
213 PM_TOKEN_GREATER_GREATER,
214
216 PM_TOKEN_GREATER_GREATER_EQUAL,
217
219 PM_TOKEN_HEREDOC_END,
220
222 PM_TOKEN_HEREDOC_START,
223
225 PM_TOKEN_IDENTIFIER,
226
228 PM_TOKEN_IGNORED_NEWLINE,
229
231 PM_TOKEN_INSTANCE_VARIABLE,
232
234 PM_TOKEN_INTEGER,
235
237 PM_TOKEN_INTEGER_IMAGINARY,
238
240 PM_TOKEN_INTEGER_RATIONAL,
241
243 PM_TOKEN_INTEGER_RATIONAL_IMAGINARY,
244
246 PM_TOKEN_KEYWORD_ALIAS,
247
249 PM_TOKEN_KEYWORD_AND,
250
252 PM_TOKEN_KEYWORD_BEGIN,
253
255 PM_TOKEN_KEYWORD_BEGIN_UPCASE,
256
258 PM_TOKEN_KEYWORD_BREAK,
259
261 PM_TOKEN_KEYWORD_CASE,
262
264 PM_TOKEN_KEYWORD_CLASS,
265
267 PM_TOKEN_KEYWORD_DEF,
268
270 PM_TOKEN_KEYWORD_DEFINED,
271
273 PM_TOKEN_KEYWORD_DO_LOOP,
274
276 PM_TOKEN_KEYWORD_END_UPCASE,
277
279 PM_TOKEN_KEYWORD_FALSE,
280
282 PM_TOKEN_KEYWORD_FOR,
283
285 PM_TOKEN_KEYWORD_IF,
286
288 PM_TOKEN_KEYWORD_IF_MODIFIER,
289
291 PM_TOKEN_KEYWORD_MODULE,
292
294 PM_TOKEN_KEYWORD_NEXT,
295
297 PM_TOKEN_KEYWORD_NIL,
298
300 PM_TOKEN_KEYWORD_NOT,
301
303 PM_TOKEN_KEYWORD_OR,
304
306 PM_TOKEN_KEYWORD_REDO,
307
309 PM_TOKEN_KEYWORD_RESCUE_MODIFIER,
310
312 PM_TOKEN_KEYWORD_RETRY,
313
315 PM_TOKEN_KEYWORD_RETURN,
316
318 PM_TOKEN_KEYWORD_SELF,
319
321 PM_TOKEN_KEYWORD_SUPER,
322
324 PM_TOKEN_KEYWORD_TRUE,
325
327 PM_TOKEN_KEYWORD_UNDEF,
328
330 PM_TOKEN_KEYWORD_UNLESS,
331
333 PM_TOKEN_KEYWORD_UNLESS_MODIFIER,
334
336 PM_TOKEN_KEYWORD_UNTIL,
337
339 PM_TOKEN_KEYWORD_UNTIL_MODIFIER,
340
342 PM_TOKEN_KEYWORD_WHILE,
343
345 PM_TOKEN_KEYWORD_WHILE_MODIFIER,
346
348 PM_TOKEN_KEYWORD_YIELD,
349
351 PM_TOKEN_KEYWORD___ENCODING__,
352
354 PM_TOKEN_KEYWORD___FILE__,
355
357 PM_TOKEN_KEYWORD___LINE__,
358
360 PM_TOKEN_LABEL,
361
363 PM_TOKEN_LABEL_END,
364
366 PM_TOKEN_LAMBDA_BEGIN,
367
369 PM_TOKEN_LESS,
370
372 PM_TOKEN_LESS_EQUAL,
373
375 PM_TOKEN_LESS_EQUAL_GREATER,
376
378 PM_TOKEN_LESS_LESS,
379
381 PM_TOKEN_LESS_LESS_EQUAL,
382
384 PM_TOKEN_METHOD_NAME,
385
387 PM_TOKEN_MINUS,
388
390 PM_TOKEN_MINUS_EQUAL,
391
393 PM_TOKEN_MINUS_GREATER,
394
396 PM_TOKEN_NUMBERED_REFERENCE,
397
399 PM_TOKEN_PARENTHESIS_LEFT,
400
402 PM_TOKEN_PARENTHESIS_LEFT_PARENTHESES,
403
405 PM_TOKEN_PERCENT,
406
408 PM_TOKEN_PERCENT_EQUAL,
409
411 PM_TOKEN_PERCENT_LOWER_I,
412
414 PM_TOKEN_PERCENT_LOWER_W,
415
417 PM_TOKEN_PERCENT_LOWER_X,
418
420 PM_TOKEN_PERCENT_UPPER_I,
421
423 PM_TOKEN_PERCENT_UPPER_W,
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
4121
4159
4202
4240
4269
4292
4354
4405
4497
4609
4632
4651typedef struct pm_implicit_node {
4654
4655
4661
4688
4726
4790
4859
4923
4980
5018
5061
5099
5128
5151
5213
5244
5290
5336
5373
5406
5439
5457
5475
5501
5538
5586
5629
5677
5720
5766
5797
5876
5927
5960
6047
6075
6090
6138
6226
6329
6357
6370typedef struct pm_nil_node {
6373
6375
6404
6427
6458
6495
6537
6550typedef struct pm_or_node {
6553
6554
6566 struct pm_node *left;
6567
6580
6590} pm_or_node_t;
6591
6645
6681
6739
6777
6815
6853
6878
6936
6978
6991typedef struct pm_redo_node {
6994
6996
7047
7079
7106
7139
7197
7234
7247typedef struct pm_retry_node {
7250
7252
7280
7293typedef struct pm_self_node {
7296
7298
7329
7377
7395
7426
7444
7472
7495
7545
7595
7641
7654typedef struct pm_true_node {
7657
7659
7687
7775
7824
7864
7913
7955
7993
7997typedef enum pm_arguments_node_flags {
7999 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING = 4,
8000
8002 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS = 8,
8003
8005 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT = 16,
8006
8008 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT = 32,
8009
8011 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS = 64,
8012
8013 PM_ARGUMENTS_NODE_FLAGS_LAST,
8014} pm_arguments_node_flags_t;
8015
8019typedef enum pm_array_node_flags {
8021 PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT = 4,
8022
8023 PM_ARRAY_NODE_FLAGS_LAST,
8024} pm_array_node_flags_t;
8025
8029typedef enum pm_call_node_flags {
8031 PM_CALL_NODE_FLAGS_SAFE_NAVIGATION = 4,
8032
8034 PM_CALL_NODE_FLAGS_VARIABLE_CALL = 8,
8035
8037 PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE = 16,
8038
8040 PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY = 32,
8041
8042 PM_CALL_NODE_FLAGS_LAST,
8043} pm_call_node_flags_t;
8044
8048typedef enum pm_encoding_flags {
8050 PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING = 4,
8051
8053 PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING = 8,
8054
8055 PM_ENCODING_FLAGS_LAST,
8056} pm_encoding_flags_t;
8057
8061typedef enum pm_integer_base_flags {
8063 PM_INTEGER_BASE_FLAGS_BINARY = 4,
8064
8066 PM_INTEGER_BASE_FLAGS_DECIMAL = 8,
8067
8069 PM_INTEGER_BASE_FLAGS_OCTAL = 16,
8070
8072 PM_INTEGER_BASE_FLAGS_HEXADECIMAL = 32,
8073
8074 PM_INTEGER_BASE_FLAGS_LAST,
8075} pm_integer_base_flags_t;
8076
8080typedef enum pm_interpolated_string_node_flags {
8082 PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN = 4,
8083
8085 PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE = 8,
8086
8087 PM_INTERPOLATED_STRING_NODE_FLAGS_LAST,
8088} pm_interpolated_string_node_flags_t;
8089
8093typedef enum pm_keyword_hash_node_flags {
8095 PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS = 4,
8096
8097 PM_KEYWORD_HASH_NODE_FLAGS_LAST,
8098} pm_keyword_hash_node_flags_t;
8099
8103typedef enum pm_loop_flags {
8105 PM_LOOP_FLAGS_BEGIN_MODIFIER = 4,
8106
8107 PM_LOOP_FLAGS_LAST,
8108} pm_loop_flags_t;
8109
8113typedef enum pm_parameter_flags {
8115 PM_PARAMETER_FLAGS_REPEATED_PARAMETER = 4,
8116
8117 PM_PARAMETER_FLAGS_LAST,
8118} pm_parameter_flags_t;
8119
8123typedef enum pm_parentheses_node_flags {
8125 PM_PARENTHESES_NODE_FLAGS_MULTIPLE_STATEMENTS = 4,
8126
8127 PM_PARENTHESES_NODE_FLAGS_LAST,
8128} pm_parentheses_node_flags_t;
8129
8133typedef enum pm_range_flags {
8135 PM_RANGE_FLAGS_EXCLUDE_END = 4,
8136
8137 PM_RANGE_FLAGS_LAST,
8138} pm_range_flags_t;
8139
8143typedef enum pm_regular_expression_flags {
8145 PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 4,
8146
8148 PM_REGULAR_EXPRESSION_FLAGS_EXTENDED = 8,
8149
8151 PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 16,
8152
8154 PM_REGULAR_EXPRESSION_FLAGS_ONCE = 32,
8155
8157 PM_REGULAR_EXPRESSION_FLAGS_EUC_JP = 64,
8158
8160 PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 128,
8161
8163 PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 256,
8164
8166 PM_REGULAR_EXPRESSION_FLAGS_UTF_8 = 512,
8167
8169 PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING = 1024,
8170
8172 PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING = 2048,
8173
8175 PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING = 4096,
8176
8177 PM_REGULAR_EXPRESSION_FLAGS_LAST,
8178} pm_regular_expression_flags_t;
8179
8183typedef enum pm_shareable_constant_node_flags {
8185 PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL = 4,
8186
8188 PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING = 8,
8189
8191 PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY = 16,
8192
8193 PM_SHAREABLE_CONSTANT_NODE_FLAGS_LAST,
8194} pm_shareable_constant_node_flags_t;
8195
8199typedef enum pm_string_flags {
8201 PM_STRING_FLAGS_FORCED_UTF8_ENCODING = 4,
8202
8204 PM_STRING_FLAGS_FORCED_BINARY_ENCODING = 8,
8205
8207 PM_STRING_FLAGS_FROZEN = 16,
8208
8210 PM_STRING_FLAGS_MUTABLE = 32,
8211
8212 PM_STRING_FLAGS_LAST,
8213} pm_string_flags_t;
8214
8218typedef enum pm_symbol_flags {
8220 PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING = 4,
8221
8223 PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING = 8,
8224
8226 PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING = 16,
8227
8228 PM_SYMBOL_FLAGS_LAST,
8229} pm_symbol_flags_t;
8230
8237#define PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS 0
8238
8239#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:4109
pm_node_t base
The embedded base node.
Definition ast.h:4111
struct pm_block_node * block
ForwardingSuperNode::block.
Definition ast.h:4119
GlobalVariableAndWriteNode.
Definition ast.h:4134
pm_location_t operator_loc
GlobalVariableAndWriteNode::operator_loc.
Definition ast.h:4152
pm_node_t base
The embedded base node.
Definition ast.h:4136
pm_location_t name_loc
GlobalVariableAndWriteNode::name_loc.
Definition ast.h:4147
struct pm_node * value
GlobalVariableAndWriteNode::value.
Definition ast.h:4157
pm_constant_id_t name
GlobalVariableAndWriteNode::name.
Definition ast.h:4142
GlobalVariableOperatorWriteNode.
Definition ast.h:4172
pm_constant_id_t name
GlobalVariableOperatorWriteNode::name.
Definition ast.h:4180
pm_constant_id_t binary_operator
GlobalVariableOperatorWriteNode::binary_operator.
Definition ast.h:4200
struct pm_node * value
GlobalVariableOperatorWriteNode::value.
Definition ast.h:4195
pm_location_t name_loc
GlobalVariableOperatorWriteNode::name_loc.
Definition ast.h:4185
pm_node_t base
The embedded base node.
Definition ast.h:4174
pm_location_t binary_operator_loc
GlobalVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:4190
GlobalVariableOrWriteNode.
Definition ast.h:4215
pm_constant_id_t name
GlobalVariableOrWriteNode::name.
Definition ast.h:4223
pm_location_t name_loc
GlobalVariableOrWriteNode::name_loc.
Definition ast.h:4228
pm_node_t base
The embedded base node.
Definition ast.h:4217
pm_location_t operator_loc
GlobalVariableOrWriteNode::operator_loc.
Definition ast.h:4233
struct pm_node * value
GlobalVariableOrWriteNode::value.
Definition ast.h:4238
GlobalVariableReadNode.
Definition ast.h:4253
pm_node_t base
The embedded base node.
Definition ast.h:4255
pm_constant_id_t name
GlobalVariableReadNode::name.
Definition ast.h:4267
GlobalVariableTargetNode.
Definition ast.h:4282
pm_constant_id_t name
GlobalVariableTargetNode::name.
Definition ast.h:4290
pm_node_t base
The embedded base node.
Definition ast.h:4284
GlobalVariableWriteNode.
Definition ast.h:4305
struct pm_node * value
GlobalVariableWriteNode::value.
Definition ast.h:4342
pm_location_t name_loc
GlobalVariableWriteNode::name_loc.
Definition ast.h:4329
pm_location_t operator_loc
GlobalVariableWriteNode::operator_loc.
Definition ast.h:4352
pm_constant_id_t name
GlobalVariableWriteNode::name.
Definition ast.h:4319
pm_node_t base
The embedded base node.
Definition ast.h:4307
HashNode.
Definition ast.h:4367
struct pm_node_list elements
HashNode::elements.
Definition ast.h:4393
pm_node_t base
The embedded base node.
Definition ast.h:4369
pm_location_t closing_loc
HashNode::closing_loc.
Definition ast.h:4403
pm_location_t opening_loc
HashNode::opening_loc.
Definition ast.h:4380
HashPatternNode.
Definition ast.h:4427
struct pm_node_list elements
HashPatternNode::elements.
Definition ast.h:4453
pm_location_t opening_loc
HashPatternNode::opening_loc.
Definition ast.h:4482
pm_node_t base
The embedded base node.
Definition ast.h:4429
struct pm_node * rest
HashPatternNode::rest.
Definition ast.h:4469
pm_location_t closing_loc
HashPatternNode::closing_loc.
Definition ast.h:4495
struct pm_node * constant
HashPatternNode::constant.
Definition ast.h:4443
IfNode.
Definition ast.h:4516
struct pm_node * predicate
IfNode::predicate.
Definition ast.h:4549
pm_location_t end_keyword_loc
IfNode::end_keyword_loc.
Definition ast.h:4607
pm_location_t if_keyword_loc
IfNode::if_keyword_loc.
Definition ast.h:4531
struct pm_statements_node * statements
IfNode::statements.
Definition ast.h:4576
pm_node_t base
The embedded base node.
Definition ast.h:4518
struct pm_node * subsequent
IfNode::subsequent.
Definition ast.h:4595
pm_location_t then_keyword_loc
IfNode::then_keyword_loc.
Definition ast.h:4562
ImaginaryNode.
Definition ast.h:4622
struct pm_node * numeric
ImaginaryNode::numeric.
Definition ast.h:4630
pm_node_t base
The embedded base node.
Definition ast.h:4624
ImplicitNode.
Definition ast.h:4651
struct pm_node * value
ImplicitNode::value.
Definition ast.h:4659
pm_node_t base
The embedded base node.
Definition ast.h:4653
ImplicitRestNode.
Definition ast.h:4683
pm_node_t base
The embedded base node.
Definition ast.h:4685
InNode.
Definition ast.h:4701
struct pm_statements_node * statements
InNode::statements.
Definition ast.h:4714
struct pm_node * pattern
InNode::pattern.
Definition ast.h:4709
pm_node_t base
The embedded base node.
Definition ast.h:4703
pm_location_t then_loc
InNode::then_loc.
Definition ast.h:4724
pm_location_t in_loc
InNode::in_loc.
Definition ast.h:4719
IndexAndWriteNode.
Definition ast.h:4745
struct pm_arguments_node * arguments
IndexAndWriteNode::arguments.
Definition ast.h:4768
struct pm_node * receiver
IndexAndWriteNode::receiver.
Definition ast.h:4753
pm_node_t base
The embedded base node.
Definition ast.h:4747
struct pm_block_argument_node * block
IndexAndWriteNode::block.
Definition ast.h:4778
struct pm_node * value
IndexAndWriteNode::value.
Definition ast.h:4788
pm_location_t operator_loc
IndexAndWriteNode::operator_loc.
Definition ast.h:4783
pm_location_t closing_loc
IndexAndWriteNode::closing_loc.
Definition ast.h:4773
pm_location_t opening_loc
IndexAndWriteNode::opening_loc.
Definition ast.h:4763
pm_location_t call_operator_loc
IndexAndWriteNode::call_operator_loc.
Definition ast.h:4758
IndexOperatorWriteNode.
Definition ast.h:4809
pm_node_t base
The embedded base node.
Definition ast.h:4811
struct pm_block_argument_node * block
IndexOperatorWriteNode::block.
Definition ast.h:4842
pm_location_t binary_operator_loc
IndexOperatorWriteNode::binary_operator_loc.
Definition ast.h:4852
struct pm_node * value
IndexOperatorWriteNode::value.
Definition ast.h:4857
pm_location_t opening_loc
IndexOperatorWriteNode::opening_loc.
Definition ast.h:4827
pm_location_t call_operator_loc
IndexOperatorWriteNode::call_operator_loc.
Definition ast.h:4822
pm_location_t closing_loc
IndexOperatorWriteNode::closing_loc.
Definition ast.h:4837
struct pm_arguments_node * arguments
IndexOperatorWriteNode::arguments.
Definition ast.h:4832
pm_constant_id_t binary_operator
IndexOperatorWriteNode::binary_operator.
Definition ast.h:4847
struct pm_node * receiver
IndexOperatorWriteNode::receiver.
Definition ast.h:4817
IndexOrWriteNode.
Definition ast.h:4878
pm_location_t closing_loc
IndexOrWriteNode::closing_loc.
Definition ast.h:4906
pm_location_t call_operator_loc
IndexOrWriteNode::call_operator_loc.
Definition ast.h:4891
pm_node_t base
The embedded base node.
Definition ast.h:4880
struct pm_block_argument_node * block
IndexOrWriteNode::block.
Definition ast.h:4911
pm_location_t operator_loc
IndexOrWriteNode::operator_loc.
Definition ast.h:4916
struct pm_node * receiver
IndexOrWriteNode::receiver.
Definition ast.h:4886
pm_location_t opening_loc
IndexOrWriteNode::opening_loc.
Definition ast.h:4896
struct pm_node * value
IndexOrWriteNode::value.
Definition ast.h:4921
struct pm_arguments_node * arguments
IndexOrWriteNode::arguments.
Definition ast.h:4901
IndexTargetNode.
Definition ast.h:4950
pm_node_t base
The embedded base node.
Definition ast.h:4952
struct pm_node * receiver
IndexTargetNode::receiver.
Definition ast.h:4958
pm_location_t closing_loc
IndexTargetNode::closing_loc.
Definition ast.h:4973
struct pm_arguments_node * arguments
IndexTargetNode::arguments.
Definition ast.h:4968
pm_location_t opening_loc
IndexTargetNode::opening_loc.
Definition ast.h:4963
struct pm_block_argument_node * block
IndexTargetNode::block.
Definition ast.h:4978
InstanceVariableAndWriteNode.
Definition ast.h:4993
pm_location_t operator_loc
InstanceVariableAndWriteNode::operator_loc.
Definition ast.h:5011
pm_location_t name_loc
InstanceVariableAndWriteNode::name_loc.
Definition ast.h:5006
struct pm_node * value
InstanceVariableAndWriteNode::value.
Definition ast.h:5016
pm_node_t base
The embedded base node.
Definition ast.h:4995
pm_constant_id_t name
InstanceVariableAndWriteNode::name.
Definition ast.h:5001
InstanceVariableOperatorWriteNode.
Definition ast.h:5031
struct pm_node * value
InstanceVariableOperatorWriteNode::value.
Definition ast.h:5054
pm_constant_id_t binary_operator
InstanceVariableOperatorWriteNode::binary_operator.
Definition ast.h:5059
pm_location_t binary_operator_loc
InstanceVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:5049
pm_constant_id_t name
InstanceVariableOperatorWriteNode::name.
Definition ast.h:5039
pm_node_t base
The embedded base node.
Definition ast.h:5033
pm_location_t name_loc
InstanceVariableOperatorWriteNode::name_loc.
Definition ast.h:5044
InstanceVariableOrWriteNode.
Definition ast.h:5074
pm_location_t operator_loc
InstanceVariableOrWriteNode::operator_loc.
Definition ast.h:5092
struct pm_node * value
InstanceVariableOrWriteNode::value.
Definition ast.h:5097
pm_node_t base
The embedded base node.
Definition ast.h:5076
pm_location_t name_loc
InstanceVariableOrWriteNode::name_loc.
Definition ast.h:5087
pm_constant_id_t name
InstanceVariableOrWriteNode::name.
Definition ast.h:5082
InstanceVariableReadNode.
Definition ast.h:5112
pm_constant_id_t name
InstanceVariableReadNode::name.
Definition ast.h:5126
pm_node_t base
The embedded base node.
Definition ast.h:5114
InstanceVariableTargetNode.
Definition ast.h:5141
pm_constant_id_t name
InstanceVariableTargetNode::name.
Definition ast.h:5149
pm_node_t base
The embedded base node.
Definition ast.h:5143
InstanceVariableWriteNode.
Definition ast.h:5164
pm_location_t operator_loc
InstanceVariableWriteNode::operator_loc.
Definition ast.h:5211
pm_constant_id_t name
InstanceVariableWriteNode::name.
Definition ast.h:5178
pm_node_t base
The embedded base node.
Definition ast.h:5166
struct pm_node * value
InstanceVariableWriteNode::value.
Definition ast.h:5201
pm_location_t name_loc
InstanceVariableWriteNode::name_loc.
Definition ast.h:5188
IntegerNode.
Definition ast.h:5232
pm_integer_t value
IntegerNode::value.
Definition ast.h:5242
pm_node_t base
The embedded base node.
Definition ast.h:5234
A structure represents an arbitrary-sized integer.
Definition pm_integer.h:20
InterpolatedMatchLastLineNode.
Definition ast.h:5270
pm_node_t base
The embedded base node.
Definition ast.h:5272
pm_location_t closing_loc
InterpolatedMatchLastLineNode::closing_loc.
Definition ast.h:5288
struct pm_node_list parts
InterpolatedMatchLastLineNode::parts.
Definition ast.h:5283
pm_location_t opening_loc
InterpolatedMatchLastLineNode::opening_loc.
Definition ast.h:5278
InterpolatedRegularExpressionNode.
Definition ast.h:5316
pm_location_t opening_loc
InterpolatedRegularExpressionNode::opening_loc.
Definition ast.h:5324
struct pm_node_list parts
InterpolatedRegularExpressionNode::parts.
Definition ast.h:5329
pm_node_t base
The embedded base node.
Definition ast.h:5318
pm_location_t closing_loc
InterpolatedRegularExpressionNode::closing_loc.
Definition ast.h:5334
InterpolatedStringNode.
Definition ast.h:5353
pm_node_t base
The embedded base node.
Definition ast.h:5355
pm_location_t closing_loc
InterpolatedStringNode::closing_loc.
Definition ast.h:5371
pm_location_t opening_loc
InterpolatedStringNode::opening_loc.
Definition ast.h:5361
struct pm_node_list parts
InterpolatedStringNode::parts.
Definition ast.h:5366
InterpolatedSymbolNode.
Definition ast.h:5386
struct pm_node_list parts
InterpolatedSymbolNode::parts.
Definition ast.h:5399
pm_location_t closing_loc
InterpolatedSymbolNode::closing_loc.
Definition ast.h:5404
pm_location_t opening_loc
InterpolatedSymbolNode::opening_loc.
Definition ast.h:5394
pm_node_t base
The embedded base node.
Definition ast.h:5388
InterpolatedXStringNode.
Definition ast.h:5419
pm_location_t opening_loc
InterpolatedXStringNode::opening_loc.
Definition ast.h:5427
pm_location_t closing_loc
InterpolatedXStringNode::closing_loc.
Definition ast.h:5437
pm_node_t base
The embedded base node.
Definition ast.h:5421
struct pm_node_list parts
InterpolatedXStringNode::parts.
Definition ast.h:5432
ItLocalVariableReadNode.
Definition ast.h:5452
pm_node_t base
The embedded base node.
Definition ast.h:5454
ItParametersNode.
Definition ast.h:5470
pm_node_t base
The embedded base node.
Definition ast.h:5472
KeywordHashNode.
Definition ast.h:5491
pm_node_t base
The embedded base node.
Definition ast.h:5493
struct pm_node_list elements
KeywordHashNode::elements.
Definition ast.h:5499
KeywordRestParameterNode.
Definition ast.h:5518
pm_node_t base
The embedded base node.
Definition ast.h:5520
pm_constant_id_t name
KeywordRestParameterNode::name.
Definition ast.h:5526
pm_location_t operator_loc
KeywordRestParameterNode::operator_loc.
Definition ast.h:5536
pm_location_t name_loc
KeywordRestParameterNode::name_loc.
Definition ast.h:5531
LambdaNode.
Definition ast.h:5551
pm_location_t closing_loc
LambdaNode::closing_loc.
Definition ast.h:5574
pm_node_t base
The embedded base node.
Definition ast.h:5553
struct pm_node * body
LambdaNode::body.
Definition ast.h:5584
pm_location_t opening_loc
LambdaNode::opening_loc.
Definition ast.h:5569
struct pm_node * parameters
LambdaNode::parameters.
Definition ast.h:5579
pm_location_t operator_loc
LambdaNode::operator_loc.
Definition ast.h:5564
pm_constant_id_list_t locals
LambdaNode::locals.
Definition ast.h:5559
LocalVariableAndWriteNode.
Definition ast.h:5599
pm_constant_id_t name
LocalVariableAndWriteNode::name.
Definition ast.h:5622
pm_node_t base
The embedded base node.
Definition ast.h:5601
uint32_t depth
LocalVariableAndWriteNode::depth.
Definition ast.h:5627
pm_location_t operator_loc
LocalVariableAndWriteNode::operator_loc.
Definition ast.h:5612
struct pm_node * value
LocalVariableAndWriteNode::value.
Definition ast.h:5617
pm_location_t name_loc
LocalVariableAndWriteNode::name_loc.
Definition ast.h:5607
LocalVariableOperatorWriteNode.
Definition ast.h:5642
uint32_t depth
LocalVariableOperatorWriteNode::depth.
Definition ast.h:5675
pm_constant_id_t binary_operator
LocalVariableOperatorWriteNode::binary_operator.
Definition ast.h:5670
pm_node_t base
The embedded base node.
Definition ast.h:5644
struct pm_node * value
LocalVariableOperatorWriteNode::value.
Definition ast.h:5660
pm_location_t name_loc
LocalVariableOperatorWriteNode::name_loc.
Definition ast.h:5650
pm_location_t binary_operator_loc
LocalVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:5655
pm_constant_id_t name
LocalVariableOperatorWriteNode::name.
Definition ast.h:5665
LocalVariableOrWriteNode.
Definition ast.h:5690
uint32_t depth
LocalVariableOrWriteNode::depth.
Definition ast.h:5718
pm_location_t operator_loc
LocalVariableOrWriteNode::operator_loc.
Definition ast.h:5703
struct pm_node * value
LocalVariableOrWriteNode::value.
Definition ast.h:5708
pm_node_t base
The embedded base node.
Definition ast.h:5692
pm_constant_id_t name
LocalVariableOrWriteNode::name.
Definition ast.h:5713
pm_location_t name_loc
LocalVariableOrWriteNode::name_loc.
Definition ast.h:5698
LocalVariableReadNode.
Definition ast.h:5733
uint32_t depth
LocalVariableReadNode::depth.
Definition ast.h:5764
pm_constant_id_t name
LocalVariableReadNode::name.
Definition ast.h:5751
pm_node_t base
The embedded base node.
Definition ast.h:5735
LocalVariableTargetNode.
Definition ast.h:5782
uint32_t depth
LocalVariableTargetNode::depth.
Definition ast.h:5795
pm_constant_id_t name
LocalVariableTargetNode::name.
Definition ast.h:5790
pm_node_t base
The embedded base node.
Definition ast.h:5784
LocalVariableWriteNode.
Definition ast.h:5810
pm_location_t operator_loc
LocalVariableWriteNode::operator_loc.
Definition ast.h:5874
pm_location_t name_loc
LocalVariableWriteNode::name_loc.
Definition ast.h:5847
pm_node_t base
The embedded base node.
Definition ast.h:5812
struct pm_node * value
LocalVariableWriteNode::value.
Definition ast.h:5864
uint32_t depth
LocalVariableWriteNode::depth.
Definition ast.h:5837
pm_constant_id_t name
LocalVariableWriteNode::name.
Definition ast.h:5824
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:5902
pm_location_t content_loc
MatchLastLineNode::content_loc.
Definition ast.h:5915
pm_location_t opening_loc
MatchLastLineNode::opening_loc.
Definition ast.h:5910
pm_location_t closing_loc
MatchLastLineNode::closing_loc.
Definition ast.h:5920
pm_string_t unescaped
MatchLastLineNode::unescaped.
Definition ast.h:5925
pm_node_t base
The embedded base node.
Definition ast.h:5904
MatchPredicateNode.
Definition ast.h:5940
pm_location_t operator_loc
MatchPredicateNode::operator_loc.
Definition ast.h:5958
struct pm_node * pattern
MatchPredicateNode::pattern.
Definition ast.h:5953
struct pm_node * value
MatchPredicateNode::value.
Definition ast.h:5948
pm_node_t base
The embedded base node.
Definition ast.h:5942
MatchRequiredNode.
Definition ast.h:5973
pm_node_t base
The embedded base node.
Definition ast.h:5975
pm_location_t operator_loc
MatchRequiredNode::operator_loc.
Definition ast.h:6045
struct pm_node * value
MatchRequiredNode::value.
Definition ast.h:5986
struct pm_node * pattern
MatchRequiredNode::pattern.
Definition ast.h:6035
MatchWriteNode.
Definition ast.h:6060
pm_node_t base
The embedded base node.
Definition ast.h:6062
struct pm_node_list targets
MatchWriteNode::targets.
Definition ast.h:6073
struct pm_call_node * call
MatchWriteNode::call.
Definition ast.h:6068
MissingNode.
Definition ast.h:6085
pm_node_t base
The embedded base node.
Definition ast.h:6087
ModuleNode.
Definition ast.h:6103
pm_location_t end_keyword_loc
ModuleNode::end_keyword_loc.
Definition ast.h:6131
struct pm_node * constant_path
ModuleNode::constant_path.
Definition ast.h:6121
struct pm_node * body
ModuleNode::body.
Definition ast.h:6126
pm_constant_id_list_t locals
ModuleNode::locals.
Definition ast.h:6111
pm_node_t base
The embedded base node.
Definition ast.h:6105
pm_location_t module_keyword_loc
ModuleNode::module_keyword_loc.
Definition ast.h:6116
pm_constant_id_t name
ModuleNode::name.
Definition ast.h:6136
MultiTargetNode.
Definition ast.h:6156
pm_node_t base
The embedded base node.
Definition ast.h:6158
pm_location_t lparen_loc
MultiTargetNode::lparen_loc.
Definition ast.h:6214
struct pm_node_list lefts
MultiTargetNode::lefts.
Definition ast.h:6174
struct pm_node * rest
MultiTargetNode::rest.
Definition ast.h:6194
pm_location_t rparen_loc
MultiTargetNode::rparen_loc.
Definition ast.h:6224
struct pm_node_list rights
MultiTargetNode::rights.
Definition ast.h:6204
MultiWriteNode.
Definition ast.h:6239
pm_location_t rparen_loc
MultiWriteNode::rparen_loc.
Definition ast.h:6307
struct pm_node * value
MultiWriteNode::value.
Definition ast.h:6327
struct pm_node * rest
MultiWriteNode::rest.
Definition ast.h:6277
struct pm_node_list rights
MultiWriteNode::rights.
Definition ast.h:6287
pm_location_t operator_loc
MultiWriteNode::operator_loc.
Definition ast.h:6317
pm_location_t lparen_loc
MultiWriteNode::lparen_loc.
Definition ast.h:6297
struct pm_node_list lefts
MultiWriteNode::lefts.
Definition ast.h:6257
pm_node_t base
The embedded base node.
Definition ast.h:6241
NextNode.
Definition ast.h:6342
struct pm_arguments_node * arguments
NextNode::arguments.
Definition ast.h:6350
pm_node_t base
The embedded base node.
Definition ast.h:6344
pm_location_t keyword_loc
NextNode::keyword_loc.
Definition ast.h:6355
NilNode.
Definition ast.h:6370
pm_node_t base
The embedded base node.
Definition ast.h:6372
NoKeywordsParameterNode.
Definition ast.h:6389
pm_location_t keyword_loc
NoKeywordsParameterNode::keyword_loc.
Definition ast.h:6402
pm_location_t operator_loc
NoKeywordsParameterNode::operator_loc.
Definition ast.h:6397
pm_node_t base
The embedded base node.
Definition ast.h:6391
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:6417
pm_node_t base
The embedded base node.
Definition ast.h:6419
uint8_t maximum
NumberedParametersNode::maximum.
Definition ast.h:6425
NumberedReferenceReadNode.
Definition ast.h:6440
pm_node_t base
The embedded base node.
Definition ast.h:6442
uint32_t number
NumberedReferenceReadNode::number.
Definition ast.h:6456
OptionalKeywordParameterNode.
Definition ast.h:6475
pm_node_t base
The embedded base node.
Definition ast.h:6477
pm_constant_id_t name
OptionalKeywordParameterNode::name.
Definition ast.h:6483
struct pm_node * value
OptionalKeywordParameterNode::value.
Definition ast.h:6493
pm_location_t name_loc
OptionalKeywordParameterNode::name_loc.
Definition ast.h:6488
OptionalParameterNode.
Definition ast.h:6512
pm_location_t name_loc
OptionalParameterNode::name_loc.
Definition ast.h:6525
struct pm_node * value
OptionalParameterNode::value.
Definition ast.h:6535
pm_constant_id_t name
OptionalParameterNode::name.
Definition ast.h:6520
pm_node_t base
The embedded base node.
Definition ast.h:6514
pm_location_t operator_loc
OptionalParameterNode::operator_loc.
Definition ast.h:6530
OrNode.
Definition ast.h:6550
struct pm_node * left
OrNode::left.
Definition ast.h:6566
struct pm_node * right
OrNode::right.
Definition ast.h:6579
pm_node_t base
The embedded base node.
Definition ast.h:6552
pm_location_t operator_loc
OrNode::operator_loc.
Definition ast.h:6589
ParametersNode.
Definition ast.h:6605
struct pm_node * rest
ParametersNode::rest.
Definition ast.h:6623
struct pm_node_list requireds
ParametersNode::requireds.
Definition ast.h:6613
struct pm_block_parameter_node * block
ParametersNode::block.
Definition ast.h:6643
struct pm_node_list optionals
ParametersNode::optionals.
Definition ast.h:6618
struct pm_node_list posts
ParametersNode::posts.
Definition ast.h:6628
pm_node_t base
The embedded base node.
Definition ast.h:6607
struct pm_node * keyword_rest
ParametersNode::keyword_rest.
Definition ast.h:6638
struct pm_node_list keywords
ParametersNode::keywords.
Definition ast.h:6633
ParenthesesNode.
Definition ast.h:6661
struct pm_node * body
ParenthesesNode::body.
Definition ast.h:6669
pm_location_t closing_loc
ParenthesesNode::closing_loc.
Definition ast.h:6679
pm_node_t base
The embedded base node.
Definition ast.h:6663
pm_location_t opening_loc
ParenthesesNode::opening_loc.
Definition ast.h:6674
PinnedExpressionNode.
Definition ast.h:6694
pm_node_t base
The embedded base node.
Definition ast.h:6696
pm_location_t rparen_loc
PinnedExpressionNode::rparen_loc.
Definition ast.h:6737
struct pm_node * expression
PinnedExpressionNode::expression.
Definition ast.h:6707
pm_location_t lparen_loc
PinnedExpressionNode::lparen_loc.
Definition ast.h:6727
pm_location_t operator_loc
PinnedExpressionNode::operator_loc.
Definition ast.h:6717
PinnedVariableNode.
Definition ast.h:6752
struct pm_node * variable
PinnedVariableNode::variable.
Definition ast.h:6765
pm_node_t base
The embedded base node.
Definition ast.h:6754
pm_location_t operator_loc
PinnedVariableNode::operator_loc.
Definition ast.h:6775
PostExecutionNode.
Definition ast.h:6790
pm_location_t closing_loc
PostExecutionNode::closing_loc.
Definition ast.h:6813
struct pm_statements_node * statements
PostExecutionNode::statements.
Definition ast.h:6798
pm_node_t base
The embedded base node.
Definition ast.h:6792
pm_location_t opening_loc
PostExecutionNode::opening_loc.
Definition ast.h:6808
pm_location_t keyword_loc
PostExecutionNode::keyword_loc.
Definition ast.h:6803
PreExecutionNode.
Definition ast.h:6828
struct pm_statements_node * statements
PreExecutionNode::statements.
Definition ast.h:6836
pm_location_t closing_loc
PreExecutionNode::closing_loc.
Definition ast.h:6851
pm_location_t opening_loc
PreExecutionNode::opening_loc.
Definition ast.h:6846
pm_node_t base
The embedded base node.
Definition ast.h:6830
pm_location_t keyword_loc
PreExecutionNode::keyword_loc.
Definition ast.h:6841
ProgramNode.
Definition ast.h:6863
struct pm_statements_node * statements
ProgramNode::statements.
Definition ast.h:6876
pm_node_t base
The embedded base node.
Definition ast.h:6865
pm_constant_id_list_t locals
ProgramNode::locals.
Definition ast.h:6871
RangeNode.
Definition ast.h:6897
struct pm_node * right
RangeNode::right.
Definition ast.h:6927
pm_location_t operator_loc
RangeNode::operator_loc.
Definition ast.h:6934
pm_node_t base
The embedded base node.
Definition ast.h:6899
struct pm_node * left
RangeNode::left.
Definition ast.h:6913
RationalNode.
Definition ast.h:6955
pm_node_t base
The embedded base node.
Definition ast.h:6957
pm_integer_t denominator
RationalNode::denominator.
Definition ast.h:6976
pm_integer_t numerator
RationalNode::numerator.
Definition ast.h:6967
RedoNode.
Definition ast.h:6991
pm_node_t base
The embedded base node.
Definition ast.h:6993
RegularExpressionNode.
Definition ast.h:7022
pm_location_t closing_loc
RegularExpressionNode::closing_loc.
Definition ast.h:7040
pm_node_t base
The embedded base node.
Definition ast.h:7024
pm_string_t unescaped
RegularExpressionNode::unescaped.
Definition ast.h:7045
pm_location_t opening_loc
RegularExpressionNode::opening_loc.
Definition ast.h:7030
pm_location_t content_loc
RegularExpressionNode::content_loc.
Definition ast.h:7035
RequiredKeywordParameterNode.
Definition ast.h:7064
pm_location_t name_loc
RequiredKeywordParameterNode::name_loc.
Definition ast.h:7077
pm_node_t base
The embedded base node.
Definition ast.h:7066
pm_constant_id_t name
RequiredKeywordParameterNode::name.
Definition ast.h:7072
RequiredParameterNode.
Definition ast.h:7096
pm_constant_id_t name
RequiredParameterNode::name.
Definition ast.h:7104
pm_node_t base
The embedded base node.
Definition ast.h:7098
RescueModifierNode.
Definition ast.h:7119
pm_node_t base
The embedded base node.
Definition ast.h:7121
struct pm_node * rescue_expression
RescueModifierNode::rescue_expression.
Definition ast.h:7137
pm_location_t keyword_loc
RescueModifierNode::keyword_loc.
Definition ast.h:7132
struct pm_node * expression
RescueModifierNode::expression.
Definition ast.h:7127
RescueNode.
Definition ast.h:7157
pm_location_t keyword_loc
RescueNode::keyword_loc.
Definition ast.h:7165
struct pm_rescue_node * subsequent
RescueNode::subsequent.
Definition ast.h:7195
pm_location_t then_keyword_loc
RescueNode::then_keyword_loc.
Definition ast.h:7185
pm_location_t operator_loc
RescueNode::operator_loc.
Definition ast.h:7175
struct pm_node * reference
RescueNode::reference.
Definition ast.h:7180
struct pm_node_list exceptions
RescueNode::exceptions.
Definition ast.h:7170
struct pm_statements_node * statements
RescueNode::statements.
Definition ast.h:7190
pm_node_t base
The embedded base node.
Definition ast.h:7159
RestParameterNode.
Definition ast.h:7214
pm_constant_id_t name
RestParameterNode::name.
Definition ast.h:7222
pm_location_t name_loc
RestParameterNode::name_loc.
Definition ast.h:7227
pm_node_t base
The embedded base node.
Definition ast.h:7216
pm_location_t operator_loc
RestParameterNode::operator_loc.
Definition ast.h:7232
RetryNode.
Definition ast.h:7247
pm_node_t base
The embedded base node.
Definition ast.h:7249
ReturnNode.
Definition ast.h:7265
pm_location_t keyword_loc
ReturnNode::keyword_loc.
Definition ast.h:7273
pm_node_t base
The embedded base node.
Definition ast.h:7267
struct pm_arguments_node * arguments
ReturnNode::arguments.
Definition ast.h:7278
SelfNode.
Definition ast.h:7293
pm_node_t base
The embedded base node.
Definition ast.h:7295
ShareableConstantNode.
Definition ast.h:7317
struct pm_node * write
ShareableConstantNode::write.
Definition ast.h:7327
pm_node_t base
The embedded base node.
Definition ast.h:7319
SingletonClassNode.
Definition ast.h:7342
pm_node_t base
The embedded base node.
Definition ast.h:7344
pm_constant_id_list_t locals
SingletonClassNode::locals.
Definition ast.h:7350
pm_location_t operator_loc
SingletonClassNode::operator_loc.
Definition ast.h:7360
struct pm_node * expression
SingletonClassNode::expression.
Definition ast.h:7365
pm_location_t end_keyword_loc
SingletonClassNode::end_keyword_loc.
Definition ast.h:7375
pm_location_t class_keyword_loc
SingletonClassNode::class_keyword_loc.
Definition ast.h:7355
struct pm_node * body
SingletonClassNode::body.
Definition ast.h:7370
SourceEncodingNode.
Definition ast.h:7390
pm_node_t base
The embedded base node.
Definition ast.h:7392
SourceFileNode.
Definition ast.h:7414
pm_string_t filepath
SourceFileNode::filepath.
Definition ast.h:7424
pm_node_t base
The embedded base node.
Definition ast.h:7416
SourceLineNode.
Definition ast.h:7439
pm_node_t base
The embedded base node.
Definition ast.h:7441
SplatNode.
Definition ast.h:7457
struct pm_node * expression
SplatNode::expression.
Definition ast.h:7470
pm_node_t base
The embedded base node.
Definition ast.h:7459
pm_location_t operator_loc
SplatNode::operator_loc.
Definition ast.h:7465
StatementsNode.
Definition ast.h:7485
struct pm_node_list body
StatementsNode::body.
Definition ast.h:7493
pm_node_t base
The embedded base node.
Definition ast.h:7487
StringNode.
Definition ast.h:7520
pm_node_t base
The embedded base node.
Definition ast.h:7522
pm_string_t unescaped
StringNode::unescaped.
Definition ast.h:7543
pm_location_t content_loc
StringNode::content_loc.
Definition ast.h:7533
pm_location_t closing_loc
StringNode::closing_loc.
Definition ast.h:7538
pm_location_t opening_loc
StringNode::opening_loc.
Definition ast.h:7528
A generic string type that can have various ownership semantics.
Definition pm_string.h:33
SuperNode.
Definition ast.h:7563
struct pm_arguments_node * arguments
SuperNode::arguments.
Definition ast.h:7583
pm_location_t lparen_loc
SuperNode::lparen_loc.
Definition ast.h:7576
pm_node_t base
The embedded base node.
Definition ast.h:7565
pm_location_t keyword_loc
SuperNode::keyword_loc.
Definition ast.h:7571
pm_location_t rparen_loc
SuperNode::rparen_loc.
Definition ast.h:7588
struct pm_node * block
SuperNode::block.
Definition ast.h:7593
SymbolNode.
Definition ast.h:7616
pm_location_t opening_loc
SymbolNode::opening_loc.
Definition ast.h:7624
pm_location_t value_loc
SymbolNode::value_loc.
Definition ast.h:7629
pm_location_t closing_loc
SymbolNode::closing_loc.
Definition ast.h:7634
pm_string_t unescaped
SymbolNode::unescaped.
Definition ast.h:7639
pm_node_t base
The embedded base node.
Definition ast.h:7618
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:7654
pm_node_t base
The embedded base node.
Definition ast.h:7656
UndefNode.
Definition ast.h:7672
pm_node_t base
The embedded base node.
Definition ast.h:7674
pm_location_t keyword_loc
UndefNode::keyword_loc.
Definition ast.h:7685
struct pm_node_list names
UndefNode::names.
Definition ast.h:7680
UnlessNode.
Definition ast.h:7703
pm_location_t keyword_loc
UnlessNode::keyword_loc.
Definition ast.h:7719
pm_location_t then_keyword_loc
UnlessNode::then_keyword_loc.
Definition ast.h:7742
pm_location_t end_keyword_loc
UnlessNode::end_keyword_loc.
Definition ast.h:7773
pm_node_t base
The embedded base node.
Definition ast.h:7705
struct pm_statements_node * statements
UnlessNode::statements.
Definition ast.h:7753
struct pm_node * predicate
UnlessNode::predicate.
Definition ast.h:7732
struct pm_else_node * else_clause
UnlessNode::else_clause.
Definition ast.h:7763
UntilNode.
Definition ast.h:7794
struct pm_statements_node * statements
UntilNode::statements.
Definition ast.h:7822
pm_location_t closing_loc
UntilNode::closing_loc.
Definition ast.h:7812
struct pm_node * predicate
UntilNode::predicate.
Definition ast.h:7817
pm_location_t keyword_loc
UntilNode::keyword_loc.
Definition ast.h:7802
pm_node_t base
The embedded base node.
Definition ast.h:7796
pm_location_t do_keyword_loc
UntilNode::do_keyword_loc.
Definition ast.h:7807
WhenNode.
Definition ast.h:7839
struct pm_statements_node * statements
WhenNode::statements.
Definition ast.h:7862
pm_node_t base
The embedded base node.
Definition ast.h:7841
pm_location_t then_keyword_loc
WhenNode::then_keyword_loc.
Definition ast.h:7857
pm_location_t keyword_loc
WhenNode::keyword_loc.
Definition ast.h:7847
struct pm_node_list conditions
WhenNode::conditions.
Definition ast.h:7852
WhileNode.
Definition ast.h:7883
pm_location_t closing_loc
WhileNode::closing_loc.
Definition ast.h:7901
pm_location_t keyword_loc
WhileNode::keyword_loc.
Definition ast.h:7891
struct pm_statements_node * statements
WhileNode::statements.
Definition ast.h:7911
pm_node_t base
The embedded base node.
Definition ast.h:7885
pm_location_t do_keyword_loc
WhileNode::do_keyword_loc.
Definition ast.h:7896
struct pm_node * predicate
WhileNode::predicate.
Definition ast.h:7906
XStringNode.
Definition ast.h:7930
pm_location_t closing_loc
XStringNode::closing_loc.
Definition ast.h:7948
pm_location_t opening_loc
XStringNode::opening_loc.
Definition ast.h:7938
pm_location_t content_loc
XStringNode::content_loc.
Definition ast.h:7943
pm_string_t unescaped
XStringNode::unescaped.
Definition ast.h:7953
pm_node_t base
The embedded base node.
Definition ast.h:7932
YieldNode.
Definition ast.h:7968
pm_location_t keyword_loc
YieldNode::keyword_loc.
Definition ast.h:7976
pm_location_t lparen_loc
YieldNode::lparen_loc.
Definition ast.h:7981
pm_node_t base
The embedded base node.
Definition ast.h:7970
pm_location_t rparen_loc
YieldNode::rparen_loc.
Definition ast.h:7991
struct pm_arguments_node * arguments
YieldNode::arguments.
Definition ast.h:7986