Ruby 4.0.0dev (2025-12-16 revision abefd3e8ff1853800d4df5b28388191b51d9ec37)
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
1052typedef struct pm_node {
1057 pm_node_type_t type;
1058
1063 pm_node_flags_t flags;
1064
1069 uint32_t node_id;
1070
1076} pm_node_t;
1077
1081#define PM_NODE_UPCAST(node_) ((pm_node_t *) (node_))
1082
1087#define PM_NODE_TYPE(node_) ((enum pm_node_type) (node_)->type)
1088
1092#define PM_NODE_TYPE_P(node_, type_) (PM_NODE_TYPE(node_) == (type_))
1093
1097#define PM_NODE_FLAGS(node_) (PM_NODE_UPCAST(node_)->flags)
1098
1102#define PM_NODE_FLAG_P(node_, flag_) ((PM_NODE_FLAGS(node_) & (flag_)) != 0)
1103
1151
1211
1259
1272typedef struct pm_and_node {
1275
1276
1288 struct pm_node *left;
1289
1302
1313
1348
1400
1496
1553
1591
1620
1700
1738
1769
1841
1895
1973
2011
2105
2245
2349
2443
2515
2563
2633
2703
2791
2849
2892
2930
2959
2982
3044
3082
3125
3163
3196
3263
3301
3334
3372
3429
3458
3481
3543
3622
3660
3693
3726
3754
3791
3804typedef struct pm_false_node {
3807
3809
3911
3947
3960typedef struct pm_float_node {
3963
3964
3970 double value;
3972
4062
4082
4101
4131
4169
4212
4250
4279
4302
4364
4415
4507
4619
4642
4661typedef struct pm_implicit_node {
4664
4665
4671
4698
4736
4800
4869
4933
4990
5028
5071
5109
5138
5161
5223
5254
5300
5346
5383
5416
5449
5467
5485
5511
5548
5596
5639
5687
5730
5776
5807
5886
5937
5970
6057
6085
6100
6148
6236
6339
6367
6380typedef struct pm_nil_node {
6383
6385
6414
6437
6468
6505
6547
6560typedef struct pm_or_node {
6563
6564
6576 struct pm_node *left;
6577
6590
6600} pm_or_node_t;
6601
6655
6691
6749
6787
6825
6863
6888
6946
6988
7001typedef struct pm_redo_node {
7004
7006
7057
7089
7116
7149
7207
7244
7257typedef struct pm_retry_node {
7260
7262
7290
7303typedef struct pm_self_node {
7306
7308
7339
7387
7405
7436
7454
7482
7505
7555
7605
7651
7664typedef struct pm_true_node {
7667
7669
7697
7785
7834
7874
7923
7965
8003
8007typedef enum pm_arguments_node_flags {
8009 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING = 4,
8010
8012 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS = 8,
8013
8015 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT = 16,
8016
8018 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT = 32,
8019
8021 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS = 64,
8022
8023 PM_ARGUMENTS_NODE_FLAGS_LAST,
8024} pm_arguments_node_flags_t;
8025
8029typedef enum pm_array_node_flags {
8031 PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT = 4,
8032
8033 PM_ARRAY_NODE_FLAGS_LAST,
8034} pm_array_node_flags_t;
8035
8039typedef enum pm_call_node_flags {
8041 PM_CALL_NODE_FLAGS_SAFE_NAVIGATION = 4,
8042
8044 PM_CALL_NODE_FLAGS_VARIABLE_CALL = 8,
8045
8047 PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE = 16,
8048
8050 PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY = 32,
8051
8052 PM_CALL_NODE_FLAGS_LAST,
8053} pm_call_node_flags_t;
8054
8058typedef enum pm_encoding_flags {
8060 PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING = 4,
8061
8063 PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING = 8,
8064
8065 PM_ENCODING_FLAGS_LAST,
8066} pm_encoding_flags_t;
8067
8071typedef enum pm_integer_base_flags {
8073 PM_INTEGER_BASE_FLAGS_BINARY = 4,
8074
8076 PM_INTEGER_BASE_FLAGS_DECIMAL = 8,
8077
8079 PM_INTEGER_BASE_FLAGS_OCTAL = 16,
8080
8082 PM_INTEGER_BASE_FLAGS_HEXADECIMAL = 32,
8083
8084 PM_INTEGER_BASE_FLAGS_LAST,
8085} pm_integer_base_flags_t;
8086
8090typedef enum pm_interpolated_string_node_flags {
8092 PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN = 4,
8093
8095 PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE = 8,
8096
8097 PM_INTERPOLATED_STRING_NODE_FLAGS_LAST,
8098} pm_interpolated_string_node_flags_t;
8099
8103typedef enum pm_keyword_hash_node_flags {
8105 PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS = 4,
8106
8107 PM_KEYWORD_HASH_NODE_FLAGS_LAST,
8108} pm_keyword_hash_node_flags_t;
8109
8113typedef enum pm_loop_flags {
8115 PM_LOOP_FLAGS_BEGIN_MODIFIER = 4,
8116
8117 PM_LOOP_FLAGS_LAST,
8118} pm_loop_flags_t;
8119
8123typedef enum pm_parameter_flags {
8125 PM_PARAMETER_FLAGS_REPEATED_PARAMETER = 4,
8126
8127 PM_PARAMETER_FLAGS_LAST,
8128} pm_parameter_flags_t;
8129
8133typedef enum pm_parentheses_node_flags {
8135 PM_PARENTHESES_NODE_FLAGS_MULTIPLE_STATEMENTS = 4,
8136
8137 PM_PARENTHESES_NODE_FLAGS_LAST,
8138} pm_parentheses_node_flags_t;
8139
8143typedef enum pm_range_flags {
8145 PM_RANGE_FLAGS_EXCLUDE_END = 4,
8146
8147 PM_RANGE_FLAGS_LAST,
8148} pm_range_flags_t;
8149
8153typedef enum pm_regular_expression_flags {
8155 PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 4,
8156
8158 PM_REGULAR_EXPRESSION_FLAGS_EXTENDED = 8,
8159
8161 PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 16,
8162
8164 PM_REGULAR_EXPRESSION_FLAGS_ONCE = 32,
8165
8167 PM_REGULAR_EXPRESSION_FLAGS_EUC_JP = 64,
8168
8170 PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 128,
8171
8173 PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 256,
8174
8176 PM_REGULAR_EXPRESSION_FLAGS_UTF_8 = 512,
8177
8179 PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING = 1024,
8180
8182 PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING = 2048,
8183
8185 PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING = 4096,
8186
8187 PM_REGULAR_EXPRESSION_FLAGS_LAST,
8188} pm_regular_expression_flags_t;
8189
8193typedef enum pm_shareable_constant_node_flags {
8195 PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL = 4,
8196
8198 PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING = 8,
8199
8201 PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY = 16,
8202
8203 PM_SHAREABLE_CONSTANT_NODE_FLAGS_LAST,
8204} pm_shareable_constant_node_flags_t;
8205
8209typedef enum pm_string_flags {
8211 PM_STRING_FLAGS_FORCED_UTF8_ENCODING = 4,
8212
8214 PM_STRING_FLAGS_FORCED_BINARY_ENCODING = 8,
8215
8217 PM_STRING_FLAGS_FROZEN = 16,
8218
8220 PM_STRING_FLAGS_MUTABLE = 32,
8221
8222 PM_STRING_FLAGS_LAST,
8223} pm_string_flags_t;
8224
8228typedef enum pm_symbol_flags {
8230 PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING = 4,
8231
8233 PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING = 8,
8234
8236 PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING = 16,
8237
8238 PM_SYMBOL_FLAGS_LAST,
8239} pm_symbol_flags_t;
8240
8247#define PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS 0
8248
8249#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:1116
struct pm_node * old_name
AliasGlobalVariableNode::old_name.
Definition ast.h:1139
pm_node_t base
The embedded base node.
Definition ast.h:1118
struct pm_node * new_name
AliasGlobalVariableNode::new_name.
Definition ast.h:1129
pm_location_t keyword_loc
AliasGlobalVariableNode::keyword_loc.
Definition ast.h:1149
AliasMethodNode.
Definition ast.h:1164
struct pm_node * old_name
AliasMethodNode::old_name.
Definition ast.h:1199
struct pm_node * new_name
AliasMethodNode::new_name.
Definition ast.h:1183
pm_node_t base
The embedded base node.
Definition ast.h:1166
pm_location_t keyword_loc
AliasMethodNode::keyword_loc.
Definition ast.h:1209
AlternationPatternNode.
Definition ast.h:1224
pm_location_t operator_loc
AlternationPatternNode::operator_loc.
Definition ast.h:1257
struct pm_node * left
AlternationPatternNode::left.
Definition ast.h:1237
struct pm_node * right
AlternationPatternNode::right.
Definition ast.h:1247
pm_node_t base
The embedded base node.
Definition ast.h:1226
AndNode.
Definition ast.h:1272
struct pm_node * left
AndNode::left.
Definition ast.h:1288
struct pm_node * right
AndNode::right.
Definition ast.h:1301
pm_location_t operator_loc
AndNode::operator_loc.
Definition ast.h:1311
pm_node_t base
The embedded base node.
Definition ast.h:1274
ArgumentsNode.
Definition ast.h:1333
pm_node_t base
The embedded base node.
Definition ast.h:1335
struct pm_node_list arguments
ArgumentsNode::arguments.
Definition ast.h:1346
ArrayNode.
Definition ast.h:1364
pm_node_t base
The embedded base node.
Definition ast.h:1366
pm_location_t closing_loc
ArrayNode::closing_loc.
Definition ast.h:1398
struct pm_node_list elements
ArrayNode::elements.
Definition ast.h:1374
pm_location_t opening_loc
ArrayNode::opening_loc.
Definition ast.h:1386
ArrayPatternNode.
Definition ast.h:1425
struct pm_node_list requireds
ArrayPatternNode::requireds.
Definition ast.h:1454
struct pm_node * rest
ArrayPatternNode::rest.
Definition ast.h:1464
struct pm_node * constant
ArrayPatternNode::constant.
Definition ast.h:1444
pm_location_t opening_loc
ArrayPatternNode::opening_loc.
Definition ast.h:1484
pm_node_t base
The embedded base node.
Definition ast.h:1427
pm_location_t closing_loc
ArrayPatternNode::closing_loc.
Definition ast.h:1494
struct pm_node_list posts
ArrayPatternNode::posts.
Definition ast.h:1474
AssocNode.
Definition ast.h:1509
pm_node_t base
The embedded base node.
Definition ast.h:1511
struct pm_node * value
AssocNode::value.
Definition ast.h:1541
struct pm_node * key
AssocNode::key.
Definition ast.h:1528
pm_location_t operator_loc
AssocNode::operator_loc.
Definition ast.h:1551
AssocSplatNode.
Definition ast.h:1566
struct pm_node * value
AssocSplatNode::value.
Definition ast.h:1579
pm_node_t base
The embedded base node.
Definition ast.h:1568
pm_location_t operator_loc
AssocSplatNode::operator_loc.
Definition ast.h:1589
BackReferenceReadNode.
Definition ast.h:1604
pm_constant_id_t name
BackReferenceReadNode::name.
Definition ast.h:1618
pm_node_t base
The embedded base node.
Definition ast.h:1606
BeginNode.
Definition ast.h:1635
struct pm_ensure_node * ensure_clause
BeginNode::ensure_clause.
Definition ast.h:1688
struct pm_rescue_node * rescue_clause
BeginNode::rescue_clause.
Definition ast.h:1668
struct pm_statements_node * statements
BeginNode::statements.
Definition ast.h:1658
pm_node_t base
The embedded base node.
Definition ast.h:1637
pm_location_t end_keyword_loc
BeginNode::end_keyword_loc.
Definition ast.h:1698
pm_location_t begin_keyword_loc
BeginNode::begin_keyword_loc.
Definition ast.h:1648
struct pm_else_node * else_clause
BeginNode::else_clause.
Definition ast.h:1678
BlockArgumentNode.
Definition ast.h:1713
pm_node_t base
The embedded base node.
Definition ast.h:1715
struct pm_node * expression
BlockArgumentNode::expression.
Definition ast.h:1726
pm_location_t operator_loc
BlockArgumentNode::operator_loc.
Definition ast.h:1736
BlockLocalVariableNode.
Definition ast.h:1754
pm_node_t base
The embedded base node.
Definition ast.h:1756
pm_constant_id_t name
BlockLocalVariableNode::name.
Definition ast.h:1767
BlockNode.
Definition ast.h:1782
pm_node_t base
The embedded base node.
Definition ast.h:1784
pm_location_t closing_loc
BlockNode::closing_loc.
Definition ast.h:1839
struct pm_node * parameters
BlockNode::parameters.
Definition ast.h:1809
pm_location_t opening_loc
BlockNode::opening_loc.
Definition ast.h:1829
struct pm_node * body
BlockNode::body.
Definition ast.h:1819
pm_constant_id_list_t locals
BlockNode::locals.
Definition ast.h:1795
BlockParameterNode.
Definition ast.h:1858
pm_location_t operator_loc
BlockParameterNode::operator_loc.
Definition ast.h:1893
pm_location_t name_loc
BlockParameterNode::name_loc.
Definition ast.h:1882
pm_constant_id_t name
BlockParameterNode::name.
Definition ast.h:1872
pm_node_t base
The embedded base node.
Definition ast.h:1860
BlockParametersNode.
Definition ast.h:1912
struct pm_parameters_node * parameters
BlockParametersNode::parameters.
Definition ast.h:1929
pm_node_t base
The embedded base node.
Definition ast.h:1914
struct pm_node_list locals
BlockParametersNode::locals.
Definition ast.h:1943
pm_location_t closing_loc
BlockParametersNode::closing_loc.
Definition ast.h:1971
pm_location_t opening_loc
BlockParametersNode::opening_loc.
Definition ast.h:1957
BreakNode.
Definition ast.h:1986
struct pm_arguments_node * arguments
BreakNode::arguments.
Definition ast.h:1999
pm_location_t keyword_loc
BreakNode::keyword_loc.
Definition ast.h:2009
pm_node_t base
The embedded base node.
Definition ast.h:1988
CallAndWriteNode.
Definition ast.h:2030
pm_location_t operator_loc
CallAndWriteNode::operator_loc.
Definition ast.h:2093
struct pm_node * value
CallAndWriteNode::value.
Definition ast.h:2103
pm_node_t base
The embedded base node.
Definition ast.h:2032
pm_location_t call_operator_loc
CallAndWriteNode::call_operator_loc.
Definition ast.h:2053
pm_location_t message_loc
CallAndWriteNode::message_loc.
Definition ast.h:2063
pm_constant_id_t read_name
CallAndWriteNode::read_name.
Definition ast.h:2073
pm_constant_id_t write_name
CallAndWriteNode::write_name.
Definition ast.h:2083
struct pm_node * receiver
CallAndWriteNode::receiver.
Definition ast.h:2043
CallNode.
Definition ast.h:2139
pm_location_t opening_loc
CallNode::opening_loc.
Definition ast.h:2200
pm_location_t closing_loc
CallNode::closing_loc.
Definition ast.h:2220
struct pm_node * receiver
CallNode::receiver.
Definition ast.h:2158
pm_constant_id_t name
CallNode::name.
Definition ast.h:2181
pm_node_t base
The embedded base node.
Definition ast.h:2141
pm_location_t equal_loc
CallNode::equal_loc.
Definition ast.h:2233
pm_location_t call_operator_loc
CallNode::call_operator_loc.
Definition ast.h:2171
pm_location_t message_loc
CallNode::message_loc.
Definition ast.h:2191
struct pm_arguments_node * arguments
CallNode::arguments.
Definition ast.h:2210
struct pm_node * block
CallNode::block.
Definition ast.h:2243
CallOperatorWriteNode.
Definition ast.h:2264
pm_constant_id_t read_name
CallOperatorWriteNode::read_name.
Definition ast.h:2307
pm_constant_id_t binary_operator
CallOperatorWriteNode::binary_operator.
Definition ast.h:2327
pm_location_t binary_operator_loc
CallOperatorWriteNode::binary_operator_loc.
Definition ast.h:2337
struct pm_node * receiver
CallOperatorWriteNode::receiver.
Definition ast.h:2277
pm_node_t base
The embedded base node.
Definition ast.h:2266
pm_constant_id_t write_name
CallOperatorWriteNode::write_name.
Definition ast.h:2317
pm_location_t message_loc
CallOperatorWriteNode::message_loc.
Definition ast.h:2297
struct pm_node * value
CallOperatorWriteNode::value.
Definition ast.h:2347
pm_location_t call_operator_loc
CallOperatorWriteNode::call_operator_loc.
Definition ast.h:2287
CallOrWriteNode.
Definition ast.h:2368
pm_location_t operator_loc
CallOrWriteNode::operator_loc.
Definition ast.h:2431
pm_location_t call_operator_loc
CallOrWriteNode::call_operator_loc.
Definition ast.h:2391
pm_node_t base
The embedded base node.
Definition ast.h:2370
struct pm_node * receiver
CallOrWriteNode::receiver.
Definition ast.h:2381
struct pm_node * value
CallOrWriteNode::value.
Definition ast.h:2441
pm_constant_id_t write_name
CallOrWriteNode::write_name.
Definition ast.h:2421
pm_constant_id_t read_name
CallOrWriteNode::read_name.
Definition ast.h:2411
pm_location_t message_loc
CallOrWriteNode::message_loc.
Definition ast.h:2401
CallTargetNode.
Definition ast.h:2470
pm_node_t base
The embedded base node.
Definition ast.h:2472
pm_constant_id_t name
CallTargetNode::name.
Definition ast.h:2503
struct pm_node * receiver
CallTargetNode::receiver.
Definition ast.h:2483
pm_location_t call_operator_loc
CallTargetNode::call_operator_loc.
Definition ast.h:2493
pm_location_t message_loc
CallTargetNode::message_loc.
Definition ast.h:2513
CapturePatternNode.
Definition ast.h:2528
struct pm_local_variable_target_node * target
CapturePatternNode::target.
Definition ast.h:2551
pm_location_t operator_loc
CapturePatternNode::operator_loc.
Definition ast.h:2561
struct pm_node * value
CapturePatternNode::value.
Definition ast.h:2541
pm_node_t base
The embedded base node.
Definition ast.h:2530
CaseMatchNode.
Definition ast.h:2578
pm_location_t end_keyword_loc
CaseMatchNode::end_keyword_loc.
Definition ast.h:2631
struct pm_node_list conditions
CaseMatchNode::conditions.
Definition ast.h:2601
pm_node_t base
The embedded base node.
Definition ast.h:2580
pm_location_t case_keyword_loc
CaseMatchNode::case_keyword_loc.
Definition ast.h:2621
struct pm_else_node * else_clause
CaseMatchNode::else_clause.
Definition ast.h:2611
struct pm_node * predicate
CaseMatchNode::predicate.
Definition ast.h:2591
CaseNode.
Definition ast.h:2648
struct pm_node * predicate
CaseNode::predicate.
Definition ast.h:2661
struct pm_else_node * else_clause
CaseNode::else_clause.
Definition ast.h:2681
struct pm_node_list conditions
CaseNode::conditions.
Definition ast.h:2671
pm_node_t base
The embedded base node.
Definition ast.h:2650
pm_location_t case_keyword_loc
CaseNode::case_keyword_loc.
Definition ast.h:2691
pm_location_t end_keyword_loc
CaseNode::end_keyword_loc.
Definition ast.h:2701
ClassNode.
Definition ast.h:2716
pm_location_t class_keyword_loc
ClassNode::class_keyword_loc.
Definition ast.h:2734
pm_location_t end_keyword_loc
ClassNode::end_keyword_loc.
Definition ast.h:2780
struct pm_node * constant_path
ClassNode::constant_path.
Definition ast.h:2739
pm_constant_id_list_t locals
ClassNode::locals.
Definition ast.h:2724
pm_location_t inheritance_operator_loc
ClassNode::inheritance_operator_loc.
Definition ast.h:2749
pm_constant_id_t name
ClassNode::name.
Definition ast.h:2789
pm_node_t base
The embedded base node.
Definition ast.h:2718
struct pm_node * body
ClassNode::body.
Definition ast.h:2770
struct pm_node * superclass
ClassNode::superclass.
Definition ast.h:2759
ClassVariableAndWriteNode.
Definition ast.h:2804
struct pm_node * value
ClassVariableAndWriteNode::value.
Definition ast.h:2847
pm_constant_id_t name
ClassVariableAndWriteNode::name.
Definition ast.h:2817
pm_location_t operator_loc
ClassVariableAndWriteNode::operator_loc.
Definition ast.h:2837
pm_node_t base
The embedded base node.
Definition ast.h:2806
pm_location_t name_loc
ClassVariableAndWriteNode::name_loc.
Definition ast.h:2827
ClassVariableOperatorWriteNode.
Definition ast.h:2862
pm_node_t base
The embedded base node.
Definition ast.h:2864
pm_constant_id_t name
ClassVariableOperatorWriteNode::name.
Definition ast.h:2870
pm_location_t name_loc
ClassVariableOperatorWriteNode::name_loc.
Definition ast.h:2875
pm_constant_id_t binary_operator
ClassVariableOperatorWriteNode::binary_operator.
Definition ast.h:2890
struct pm_node * value
ClassVariableOperatorWriteNode::value.
Definition ast.h:2885
pm_location_t binary_operator_loc
ClassVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:2880
ClassVariableOrWriteNode.
Definition ast.h:2905
pm_node_t base
The embedded base node.
Definition ast.h:2907
pm_location_t name_loc
ClassVariableOrWriteNode::name_loc.
Definition ast.h:2918
pm_location_t operator_loc
ClassVariableOrWriteNode::operator_loc.
Definition ast.h:2923
pm_constant_id_t name
ClassVariableOrWriteNode::name.
Definition ast.h:2913
struct pm_node * value
ClassVariableOrWriteNode::value.
Definition ast.h:2928
ClassVariableReadNode.
Definition ast.h:2943
pm_node_t base
The embedded base node.
Definition ast.h:2945
pm_constant_id_t name
ClassVariableReadNode::name.
Definition ast.h:2957
ClassVariableTargetNode.
Definition ast.h:2972
pm_node_t base
The embedded base node.
Definition ast.h:2974
pm_constant_id_t name
ClassVariableTargetNode::name.
Definition ast.h:2980
ClassVariableWriteNode.
Definition ast.h:2995
pm_location_t name_loc
ClassVariableWriteNode::name_loc.
Definition ast.h:3019
pm_node_t base
The embedded base node.
Definition ast.h:2997
struct pm_node * value
ClassVariableWriteNode::value.
Definition ast.h:3032
pm_location_t operator_loc
ClassVariableWriteNode::operator_loc.
Definition ast.h:3042
pm_constant_id_t name
ClassVariableWriteNode::name.
Definition ast.h:3009
ConstantAndWriteNode.
Definition ast.h:3057
pm_location_t operator_loc
ConstantAndWriteNode::operator_loc.
Definition ast.h:3075
pm_location_t name_loc
ConstantAndWriteNode::name_loc.
Definition ast.h:3070
pm_constant_id_t name
ConstantAndWriteNode::name.
Definition ast.h:3065
struct pm_node * value
ConstantAndWriteNode::value.
Definition ast.h:3080
pm_node_t base
The embedded base node.
Definition ast.h:3059
A list of constant IDs.
ConstantOperatorWriteNode.
Definition ast.h:3095
pm_constant_id_t name
ConstantOperatorWriteNode::name.
Definition ast.h:3103
pm_location_t name_loc
ConstantOperatorWriteNode::name_loc.
Definition ast.h:3108
pm_constant_id_t binary_operator
ConstantOperatorWriteNode::binary_operator.
Definition ast.h:3123
pm_location_t binary_operator_loc
ConstantOperatorWriteNode::binary_operator_loc.
Definition ast.h:3113
struct pm_node * value
ConstantOperatorWriteNode::value.
Definition ast.h:3118
pm_node_t base
The embedded base node.
Definition ast.h:3097
ConstantOrWriteNode.
Definition ast.h:3138
pm_location_t operator_loc
ConstantOrWriteNode::operator_loc.
Definition ast.h:3156
pm_location_t name_loc
ConstantOrWriteNode::name_loc.
Definition ast.h:3151
pm_constant_id_t name
ConstantOrWriteNode::name.
Definition ast.h:3146
pm_node_t base
The embedded base node.
Definition ast.h:3140
struct pm_node * value
ConstantOrWriteNode::value.
Definition ast.h:3161
ConstantPathAndWriteNode.
Definition ast.h:3176
pm_node_t base
The embedded base node.
Definition ast.h:3178
struct pm_constant_path_node * target
ConstantPathAndWriteNode::target.
Definition ast.h:3184
pm_location_t operator_loc
ConstantPathAndWriteNode::operator_loc.
Definition ast.h:3189
struct pm_node * value
ConstantPathAndWriteNode::value.
Definition ast.h:3194
ConstantPathNode.
Definition ast.h:3209
pm_location_t delimiter_loc
ConstantPathNode::delimiter_loc.
Definition ast.h:3248
pm_node_t base
The embedded base node.
Definition ast.h:3211
pm_location_t name_loc
ConstantPathNode::name_loc.
Definition ast.h:3261
pm_constant_id_t name
ConstantPathNode::name.
Definition ast.h:3235
struct pm_node * parent
ConstantPathNode::parent.
Definition ast.h:3228
ConstantPathOperatorWriteNode.
Definition ast.h:3276
struct pm_constant_path_node * target
ConstantPathOperatorWriteNode::target.
Definition ast.h:3284
struct pm_node * value
ConstantPathOperatorWriteNode::value.
Definition ast.h:3294
pm_constant_id_t binary_operator
ConstantPathOperatorWriteNode::binary_operator.
Definition ast.h:3299
pm_node_t base
The embedded base node.
Definition ast.h:3278
pm_location_t binary_operator_loc
ConstantPathOperatorWriteNode::binary_operator_loc.
Definition ast.h:3289
ConstantPathOrWriteNode.
Definition ast.h:3314
pm_location_t operator_loc
ConstantPathOrWriteNode::operator_loc.
Definition ast.h:3327
pm_node_t base
The embedded base node.
Definition ast.h:3316
struct pm_node * value
ConstantPathOrWriteNode::value.
Definition ast.h:3332
struct pm_constant_path_node * target
ConstantPathOrWriteNode::target.
Definition ast.h:3322
ConstantPathTargetNode.
Definition ast.h:3347
pm_node_t base
The embedded base node.
Definition ast.h:3349
struct pm_node * parent
ConstantPathTargetNode::parent.
Definition ast.h:3355
pm_location_t delimiter_loc
ConstantPathTargetNode::delimiter_loc.
Definition ast.h:3365
pm_constant_id_t name
ConstantPathTargetNode::name.
Definition ast.h:3360
pm_location_t name_loc
ConstantPathTargetNode::name_loc.
Definition ast.h:3370
ConstantPathWriteNode.
Definition ast.h:3391
struct pm_constant_path_node * target
ConstantPathWriteNode::target.
Definition ast.h:3407
pm_location_t operator_loc
ConstantPathWriteNode::operator_loc.
Definition ast.h:3417
pm_node_t base
The embedded base node.
Definition ast.h:3393
struct pm_node * value
ConstantPathWriteNode::value.
Definition ast.h:3427
ConstantReadNode.
Definition ast.h:3442
pm_node_t base
The embedded base node.
Definition ast.h:3444
pm_constant_id_t name
ConstantReadNode::name.
Definition ast.h:3456
ConstantTargetNode.
Definition ast.h:3471
pm_node_t base
The embedded base node.
Definition ast.h:3473
pm_constant_id_t name
ConstantTargetNode::name.
Definition ast.h:3479
ConstantWriteNode.
Definition ast.h:3494
pm_node_t base
The embedded base node.
Definition ast.h:3496
struct pm_node * value
ConstantWriteNode::value.
Definition ast.h:3531
pm_constant_id_t name
ConstantWriteNode::name.
Definition ast.h:3508
pm_location_t name_loc
ConstantWriteNode::name_loc.
Definition ast.h:3518
pm_location_t operator_loc
ConstantWriteNode::operator_loc.
Definition ast.h:3541
DefNode.
Definition ast.h:3557
struct pm_parameters_node * parameters
DefNode::parameters.
Definition ast.h:3580
pm_location_t end_keyword_loc
DefNode::end_keyword_loc.
Definition ast.h:3620
pm_constant_id_t name
DefNode::name.
Definition ast.h:3565
pm_location_t name_loc
DefNode::name_loc.
Definition ast.h:3570
pm_location_t rparen_loc
DefNode::rparen_loc.
Definition ast.h:3610
struct pm_node * body
DefNode::body.
Definition ast.h:3585
pm_location_t equal_loc
DefNode::equal_loc.
Definition ast.h:3615
pm_location_t def_keyword_loc
DefNode::def_keyword_loc.
Definition ast.h:3595
struct pm_node * receiver
DefNode::receiver.
Definition ast.h:3575
pm_node_t base
The embedded base node.
Definition ast.h:3559
pm_location_t lparen_loc
DefNode::lparen_loc.
Definition ast.h:3605
pm_location_t operator_loc
DefNode::operator_loc.
Definition ast.h:3600
pm_constant_id_list_t locals
DefNode::locals.
Definition ast.h:3590
DefinedNode.
Definition ast.h:3635
pm_location_t lparen_loc
DefinedNode::lparen_loc.
Definition ast.h:3643
pm_node_t base
The embedded base node.
Definition ast.h:3637
pm_location_t rparen_loc
DefinedNode::rparen_loc.
Definition ast.h:3653
pm_location_t keyword_loc
DefinedNode::keyword_loc.
Definition ast.h:3658
struct pm_node * value
DefinedNode::value.
Definition ast.h:3648
ElseNode.
Definition ast.h:3673
struct pm_statements_node * statements
ElseNode::statements.
Definition ast.h:3686
pm_location_t else_keyword_loc
ElseNode::else_keyword_loc.
Definition ast.h:3681
pm_node_t base
The embedded base node.
Definition ast.h:3675
pm_location_t end_keyword_loc
ElseNode::end_keyword_loc.
Definition ast.h:3691
EmbeddedStatementsNode.
Definition ast.h:3706
pm_location_t closing_loc
EmbeddedStatementsNode::closing_loc.
Definition ast.h:3724
struct pm_statements_node * statements
EmbeddedStatementsNode::statements.
Definition ast.h:3719
pm_node_t base
The embedded base node.
Definition ast.h:3708
pm_location_t opening_loc
EmbeddedStatementsNode::opening_loc.
Definition ast.h:3714
EmbeddedVariableNode.
Definition ast.h:3739
struct pm_node * variable
EmbeddedVariableNode::variable.
Definition ast.h:3752
pm_location_t operator_loc
EmbeddedVariableNode::operator_loc.
Definition ast.h:3747
pm_node_t base
The embedded base node.
Definition ast.h:3741
EnsureNode.
Definition ast.h:3771
struct pm_statements_node * statements
EnsureNode::statements.
Definition ast.h:3784
pm_node_t base
The embedded base node.
Definition ast.h:3773
pm_location_t ensure_keyword_loc
EnsureNode::ensure_keyword_loc.
Definition ast.h:3779
pm_location_t end_keyword_loc
EnsureNode::end_keyword_loc.
Definition ast.h:3789
FalseNode.
Definition ast.h:3804
pm_node_t base
The embedded base node.
Definition ast.h:3806
FindPatternNode.
Definition ast.h:3831
struct pm_node * constant
FindPatternNode::constant.
Definition ast.h:3844
struct pm_node * right
FindPatternNode::right.
Definition ast.h:3883
pm_location_t opening_loc
FindPatternNode::opening_loc.
Definition ast.h:3896
pm_node_t base
The embedded base node.
Definition ast.h:3833
struct pm_node_list requireds
FindPatternNode::requireds.
Definition ast.h:3870
struct pm_splat_node * left
FindPatternNode::left.
Definition ast.h:3857
pm_location_t closing_loc
FindPatternNode::closing_loc.
Definition ast.h:3909
FlipFlopNode.
Definition ast.h:3927
pm_node_t base
The embedded base node.
Definition ast.h:3929
pm_location_t operator_loc
FlipFlopNode::operator_loc.
Definition ast.h:3945
struct pm_node * left
FlipFlopNode::left.
Definition ast.h:3935
struct pm_node * right
FlipFlopNode::right.
Definition ast.h:3940
FloatNode.
Definition ast.h:3960
double value
FloatNode::value.
Definition ast.h:3970
pm_node_t base
The embedded base node.
Definition ast.h:3962
ForNode.
Definition ast.h:3985
struct pm_statements_node * statements
ForNode::statements.
Definition ast.h:4020
struct pm_node * index
ForNode::index.
Definition ast.h:3998
struct pm_node * collection
ForNode::collection.
Definition ast.h:4008
pm_node_t base
The embedded base node.
Definition ast.h:3987
pm_location_t end_keyword_loc
ForNode::end_keyword_loc.
Definition ast.h:4060
pm_location_t for_keyword_loc
ForNode::for_keyword_loc.
Definition ast.h:4030
pm_location_t do_keyword_loc
ForNode::do_keyword_loc.
Definition ast.h:4050
pm_location_t in_keyword_loc
ForNode::in_keyword_loc.
Definition ast.h:4040
ForwardingArgumentsNode.
Definition ast.h:4077
pm_node_t base
The embedded base node.
Definition ast.h:4079
ForwardingParameterNode.
Definition ast.h:4096
pm_node_t base
The embedded base node.
Definition ast.h:4098
ForwardingSuperNode.
Definition ast.h:4119
pm_node_t base
The embedded base node.
Definition ast.h:4121
struct pm_block_node * block
ForwardingSuperNode::block.
Definition ast.h:4129
GlobalVariableAndWriteNode.
Definition ast.h:4144
pm_location_t operator_loc
GlobalVariableAndWriteNode::operator_loc.
Definition ast.h:4162
pm_node_t base
The embedded base node.
Definition ast.h:4146
pm_location_t name_loc
GlobalVariableAndWriteNode::name_loc.
Definition ast.h:4157
struct pm_node * value
GlobalVariableAndWriteNode::value.
Definition ast.h:4167
pm_constant_id_t name
GlobalVariableAndWriteNode::name.
Definition ast.h:4152
GlobalVariableOperatorWriteNode.
Definition ast.h:4182
pm_constant_id_t name
GlobalVariableOperatorWriteNode::name.
Definition ast.h:4190
pm_constant_id_t binary_operator
GlobalVariableOperatorWriteNode::binary_operator.
Definition ast.h:4210
struct pm_node * value
GlobalVariableOperatorWriteNode::value.
Definition ast.h:4205
pm_location_t name_loc
GlobalVariableOperatorWriteNode::name_loc.
Definition ast.h:4195
pm_node_t base
The embedded base node.
Definition ast.h:4184
pm_location_t binary_operator_loc
GlobalVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:4200
GlobalVariableOrWriteNode.
Definition ast.h:4225
pm_constant_id_t name
GlobalVariableOrWriteNode::name.
Definition ast.h:4233
pm_location_t name_loc
GlobalVariableOrWriteNode::name_loc.
Definition ast.h:4238
pm_node_t base
The embedded base node.
Definition ast.h:4227
pm_location_t operator_loc
GlobalVariableOrWriteNode::operator_loc.
Definition ast.h:4243
struct pm_node * value
GlobalVariableOrWriteNode::value.
Definition ast.h:4248
GlobalVariableReadNode.
Definition ast.h:4263
pm_node_t base
The embedded base node.
Definition ast.h:4265
pm_constant_id_t name
GlobalVariableReadNode::name.
Definition ast.h:4277
GlobalVariableTargetNode.
Definition ast.h:4292
pm_constant_id_t name
GlobalVariableTargetNode::name.
Definition ast.h:4300
pm_node_t base
The embedded base node.
Definition ast.h:4294
GlobalVariableWriteNode.
Definition ast.h:4315
struct pm_node * value
GlobalVariableWriteNode::value.
Definition ast.h:4352
pm_location_t name_loc
GlobalVariableWriteNode::name_loc.
Definition ast.h:4339
pm_location_t operator_loc
GlobalVariableWriteNode::operator_loc.
Definition ast.h:4362
pm_constant_id_t name
GlobalVariableWriteNode::name.
Definition ast.h:4329
pm_node_t base
The embedded base node.
Definition ast.h:4317
HashNode.
Definition ast.h:4377
struct pm_node_list elements
HashNode::elements.
Definition ast.h:4403
pm_node_t base
The embedded base node.
Definition ast.h:4379
pm_location_t closing_loc
HashNode::closing_loc.
Definition ast.h:4413
pm_location_t opening_loc
HashNode::opening_loc.
Definition ast.h:4390
HashPatternNode.
Definition ast.h:4437
struct pm_node_list elements
HashPatternNode::elements.
Definition ast.h:4463
pm_location_t opening_loc
HashPatternNode::opening_loc.
Definition ast.h:4492
pm_node_t base
The embedded base node.
Definition ast.h:4439
struct pm_node * rest
HashPatternNode::rest.
Definition ast.h:4479
pm_location_t closing_loc
HashPatternNode::closing_loc.
Definition ast.h:4505
struct pm_node * constant
HashPatternNode::constant.
Definition ast.h:4453
IfNode.
Definition ast.h:4526
struct pm_node * predicate
IfNode::predicate.
Definition ast.h:4559
pm_location_t end_keyword_loc
IfNode::end_keyword_loc.
Definition ast.h:4617
pm_location_t if_keyword_loc
IfNode::if_keyword_loc.
Definition ast.h:4541
struct pm_statements_node * statements
IfNode::statements.
Definition ast.h:4586
pm_node_t base
The embedded base node.
Definition ast.h:4528
struct pm_node * subsequent
IfNode::subsequent.
Definition ast.h:4605
pm_location_t then_keyword_loc
IfNode::then_keyword_loc.
Definition ast.h:4572
ImaginaryNode.
Definition ast.h:4632
struct pm_node * numeric
ImaginaryNode::numeric.
Definition ast.h:4640
pm_node_t base
The embedded base node.
Definition ast.h:4634
ImplicitNode.
Definition ast.h:4661
struct pm_node * value
ImplicitNode::value.
Definition ast.h:4669
pm_node_t base
The embedded base node.
Definition ast.h:4663
ImplicitRestNode.
Definition ast.h:4693
pm_node_t base
The embedded base node.
Definition ast.h:4695
InNode.
Definition ast.h:4711
struct pm_statements_node * statements
InNode::statements.
Definition ast.h:4724
struct pm_node * pattern
InNode::pattern.
Definition ast.h:4719
pm_node_t base
The embedded base node.
Definition ast.h:4713
pm_location_t then_loc
InNode::then_loc.
Definition ast.h:4734
pm_location_t in_loc
InNode::in_loc.
Definition ast.h:4729
IndexAndWriteNode.
Definition ast.h:4755
struct pm_arguments_node * arguments
IndexAndWriteNode::arguments.
Definition ast.h:4778
struct pm_node * receiver
IndexAndWriteNode::receiver.
Definition ast.h:4763
pm_node_t base
The embedded base node.
Definition ast.h:4757
struct pm_block_argument_node * block
IndexAndWriteNode::block.
Definition ast.h:4788
struct pm_node * value
IndexAndWriteNode::value.
Definition ast.h:4798
pm_location_t operator_loc
IndexAndWriteNode::operator_loc.
Definition ast.h:4793
pm_location_t closing_loc
IndexAndWriteNode::closing_loc.
Definition ast.h:4783
pm_location_t opening_loc
IndexAndWriteNode::opening_loc.
Definition ast.h:4773
pm_location_t call_operator_loc
IndexAndWriteNode::call_operator_loc.
Definition ast.h:4768
IndexOperatorWriteNode.
Definition ast.h:4819
pm_node_t base
The embedded base node.
Definition ast.h:4821
struct pm_block_argument_node * block
IndexOperatorWriteNode::block.
Definition ast.h:4852
pm_location_t binary_operator_loc
IndexOperatorWriteNode::binary_operator_loc.
Definition ast.h:4862
struct pm_node * value
IndexOperatorWriteNode::value.
Definition ast.h:4867
pm_location_t opening_loc
IndexOperatorWriteNode::opening_loc.
Definition ast.h:4837
pm_location_t call_operator_loc
IndexOperatorWriteNode::call_operator_loc.
Definition ast.h:4832
pm_location_t closing_loc
IndexOperatorWriteNode::closing_loc.
Definition ast.h:4847
struct pm_arguments_node * arguments
IndexOperatorWriteNode::arguments.
Definition ast.h:4842
pm_constant_id_t binary_operator
IndexOperatorWriteNode::binary_operator.
Definition ast.h:4857
struct pm_node * receiver
IndexOperatorWriteNode::receiver.
Definition ast.h:4827
IndexOrWriteNode.
Definition ast.h:4888
pm_location_t closing_loc
IndexOrWriteNode::closing_loc.
Definition ast.h:4916
pm_location_t call_operator_loc
IndexOrWriteNode::call_operator_loc.
Definition ast.h:4901
pm_node_t base
The embedded base node.
Definition ast.h:4890
struct pm_block_argument_node * block
IndexOrWriteNode::block.
Definition ast.h:4921
pm_location_t operator_loc
IndexOrWriteNode::operator_loc.
Definition ast.h:4926
struct pm_node * receiver
IndexOrWriteNode::receiver.
Definition ast.h:4896
pm_location_t opening_loc
IndexOrWriteNode::opening_loc.
Definition ast.h:4906
struct pm_node * value
IndexOrWriteNode::value.
Definition ast.h:4931
struct pm_arguments_node * arguments
IndexOrWriteNode::arguments.
Definition ast.h:4911
IndexTargetNode.
Definition ast.h:4960
pm_node_t base
The embedded base node.
Definition ast.h:4962
struct pm_node * receiver
IndexTargetNode::receiver.
Definition ast.h:4968
pm_location_t closing_loc
IndexTargetNode::closing_loc.
Definition ast.h:4983
struct pm_arguments_node * arguments
IndexTargetNode::arguments.
Definition ast.h:4978
pm_location_t opening_loc
IndexTargetNode::opening_loc.
Definition ast.h:4973
struct pm_block_argument_node * block
IndexTargetNode::block.
Definition ast.h:4988
InstanceVariableAndWriteNode.
Definition ast.h:5003
pm_location_t operator_loc
InstanceVariableAndWriteNode::operator_loc.
Definition ast.h:5021
pm_location_t name_loc
InstanceVariableAndWriteNode::name_loc.
Definition ast.h:5016
struct pm_node * value
InstanceVariableAndWriteNode::value.
Definition ast.h:5026
pm_node_t base
The embedded base node.
Definition ast.h:5005
pm_constant_id_t name
InstanceVariableAndWriteNode::name.
Definition ast.h:5011
InstanceVariableOperatorWriteNode.
Definition ast.h:5041
struct pm_node * value
InstanceVariableOperatorWriteNode::value.
Definition ast.h:5064
pm_constant_id_t binary_operator
InstanceVariableOperatorWriteNode::binary_operator.
Definition ast.h:5069
pm_location_t binary_operator_loc
InstanceVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:5059
pm_constant_id_t name
InstanceVariableOperatorWriteNode::name.
Definition ast.h:5049
pm_node_t base
The embedded base node.
Definition ast.h:5043
pm_location_t name_loc
InstanceVariableOperatorWriteNode::name_loc.
Definition ast.h:5054
InstanceVariableOrWriteNode.
Definition ast.h:5084
pm_location_t operator_loc
InstanceVariableOrWriteNode::operator_loc.
Definition ast.h:5102
struct pm_node * value
InstanceVariableOrWriteNode::value.
Definition ast.h:5107
pm_node_t base
The embedded base node.
Definition ast.h:5086
pm_location_t name_loc
InstanceVariableOrWriteNode::name_loc.
Definition ast.h:5097
pm_constant_id_t name
InstanceVariableOrWriteNode::name.
Definition ast.h:5092
InstanceVariableReadNode.
Definition ast.h:5122
pm_constant_id_t name
InstanceVariableReadNode::name.
Definition ast.h:5136
pm_node_t base
The embedded base node.
Definition ast.h:5124
InstanceVariableTargetNode.
Definition ast.h:5151
pm_constant_id_t name
InstanceVariableTargetNode::name.
Definition ast.h:5159
pm_node_t base
The embedded base node.
Definition ast.h:5153
InstanceVariableWriteNode.
Definition ast.h:5174
pm_location_t operator_loc
InstanceVariableWriteNode::operator_loc.
Definition ast.h:5221
pm_constant_id_t name
InstanceVariableWriteNode::name.
Definition ast.h:5188
pm_node_t base
The embedded base node.
Definition ast.h:5176
struct pm_node * value
InstanceVariableWriteNode::value.
Definition ast.h:5211
pm_location_t name_loc
InstanceVariableWriteNode::name_loc.
Definition ast.h:5198
IntegerNode.
Definition ast.h:5242
pm_integer_t value
IntegerNode::value.
Definition ast.h:5252
pm_node_t base
The embedded base node.
Definition ast.h:5244
A structure represents an arbitrary-sized integer.
Definition pm_integer.h:20
InterpolatedMatchLastLineNode.
Definition ast.h:5280
pm_node_t base
The embedded base node.
Definition ast.h:5282
pm_location_t closing_loc
InterpolatedMatchLastLineNode::closing_loc.
Definition ast.h:5298
struct pm_node_list parts
InterpolatedMatchLastLineNode::parts.
Definition ast.h:5293
pm_location_t opening_loc
InterpolatedMatchLastLineNode::opening_loc.
Definition ast.h:5288
InterpolatedRegularExpressionNode.
Definition ast.h:5326
pm_location_t opening_loc
InterpolatedRegularExpressionNode::opening_loc.
Definition ast.h:5334
struct pm_node_list parts
InterpolatedRegularExpressionNode::parts.
Definition ast.h:5339
pm_node_t base
The embedded base node.
Definition ast.h:5328
pm_location_t closing_loc
InterpolatedRegularExpressionNode::closing_loc.
Definition ast.h:5344
InterpolatedStringNode.
Definition ast.h:5363
pm_node_t base
The embedded base node.
Definition ast.h:5365
pm_location_t closing_loc
InterpolatedStringNode::closing_loc.
Definition ast.h:5381
pm_location_t opening_loc
InterpolatedStringNode::opening_loc.
Definition ast.h:5371
struct pm_node_list parts
InterpolatedStringNode::parts.
Definition ast.h:5376
InterpolatedSymbolNode.
Definition ast.h:5396
struct pm_node_list parts
InterpolatedSymbolNode::parts.
Definition ast.h:5409
pm_location_t closing_loc
InterpolatedSymbolNode::closing_loc.
Definition ast.h:5414
pm_location_t opening_loc
InterpolatedSymbolNode::opening_loc.
Definition ast.h:5404
pm_node_t base
The embedded base node.
Definition ast.h:5398
InterpolatedXStringNode.
Definition ast.h:5429
pm_location_t opening_loc
InterpolatedXStringNode::opening_loc.
Definition ast.h:5437
pm_location_t closing_loc
InterpolatedXStringNode::closing_loc.
Definition ast.h:5447
pm_node_t base
The embedded base node.
Definition ast.h:5431
struct pm_node_list parts
InterpolatedXStringNode::parts.
Definition ast.h:5442
ItLocalVariableReadNode.
Definition ast.h:5462
pm_node_t base
The embedded base node.
Definition ast.h:5464
ItParametersNode.
Definition ast.h:5480
pm_node_t base
The embedded base node.
Definition ast.h:5482
KeywordHashNode.
Definition ast.h:5501
pm_node_t base
The embedded base node.
Definition ast.h:5503
struct pm_node_list elements
KeywordHashNode::elements.
Definition ast.h:5509
KeywordRestParameterNode.
Definition ast.h:5528
pm_node_t base
The embedded base node.
Definition ast.h:5530
pm_constant_id_t name
KeywordRestParameterNode::name.
Definition ast.h:5536
pm_location_t operator_loc
KeywordRestParameterNode::operator_loc.
Definition ast.h:5546
pm_location_t name_loc
KeywordRestParameterNode::name_loc.
Definition ast.h:5541
LambdaNode.
Definition ast.h:5561
pm_location_t closing_loc
LambdaNode::closing_loc.
Definition ast.h:5584
pm_node_t base
The embedded base node.
Definition ast.h:5563
struct pm_node * body
LambdaNode::body.
Definition ast.h:5594
pm_location_t opening_loc
LambdaNode::opening_loc.
Definition ast.h:5579
struct pm_node * parameters
LambdaNode::parameters.
Definition ast.h:5589
pm_location_t operator_loc
LambdaNode::operator_loc.
Definition ast.h:5574
pm_constant_id_list_t locals
LambdaNode::locals.
Definition ast.h:5569
LocalVariableAndWriteNode.
Definition ast.h:5609
pm_constant_id_t name
LocalVariableAndWriteNode::name.
Definition ast.h:5632
pm_node_t base
The embedded base node.
Definition ast.h:5611
uint32_t depth
LocalVariableAndWriteNode::depth.
Definition ast.h:5637
pm_location_t operator_loc
LocalVariableAndWriteNode::operator_loc.
Definition ast.h:5622
struct pm_node * value
LocalVariableAndWriteNode::value.
Definition ast.h:5627
pm_location_t name_loc
LocalVariableAndWriteNode::name_loc.
Definition ast.h:5617
LocalVariableOperatorWriteNode.
Definition ast.h:5652
uint32_t depth
LocalVariableOperatorWriteNode::depth.
Definition ast.h:5685
pm_constant_id_t binary_operator
LocalVariableOperatorWriteNode::binary_operator.
Definition ast.h:5680
pm_node_t base
The embedded base node.
Definition ast.h:5654
struct pm_node * value
LocalVariableOperatorWriteNode::value.
Definition ast.h:5670
pm_location_t name_loc
LocalVariableOperatorWriteNode::name_loc.
Definition ast.h:5660
pm_location_t binary_operator_loc
LocalVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:5665
pm_constant_id_t name
LocalVariableOperatorWriteNode::name.
Definition ast.h:5675
LocalVariableOrWriteNode.
Definition ast.h:5700
uint32_t depth
LocalVariableOrWriteNode::depth.
Definition ast.h:5728
pm_location_t operator_loc
LocalVariableOrWriteNode::operator_loc.
Definition ast.h:5713
struct pm_node * value
LocalVariableOrWriteNode::value.
Definition ast.h:5718
pm_node_t base
The embedded base node.
Definition ast.h:5702
pm_constant_id_t name
LocalVariableOrWriteNode::name.
Definition ast.h:5723
pm_location_t name_loc
LocalVariableOrWriteNode::name_loc.
Definition ast.h:5708
LocalVariableReadNode.
Definition ast.h:5743
uint32_t depth
LocalVariableReadNode::depth.
Definition ast.h:5774
pm_constant_id_t name
LocalVariableReadNode::name.
Definition ast.h:5761
pm_node_t base
The embedded base node.
Definition ast.h:5745
LocalVariableTargetNode.
Definition ast.h:5792
uint32_t depth
LocalVariableTargetNode::depth.
Definition ast.h:5805
pm_constant_id_t name
LocalVariableTargetNode::name.
Definition ast.h:5800
pm_node_t base
The embedded base node.
Definition ast.h:5794
LocalVariableWriteNode.
Definition ast.h:5820
pm_location_t operator_loc
LocalVariableWriteNode::operator_loc.
Definition ast.h:5884
pm_location_t name_loc
LocalVariableWriteNode::name_loc.
Definition ast.h:5857
pm_node_t base
The embedded base node.
Definition ast.h:5822
struct pm_node * value
LocalVariableWriteNode::value.
Definition ast.h:5874
uint32_t depth
LocalVariableWriteNode::depth.
Definition ast.h:5847
pm_constant_id_t name
LocalVariableWriteNode::name.
Definition ast.h:5834
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:5912
pm_location_t content_loc
MatchLastLineNode::content_loc.
Definition ast.h:5925
pm_location_t opening_loc
MatchLastLineNode::opening_loc.
Definition ast.h:5920
pm_location_t closing_loc
MatchLastLineNode::closing_loc.
Definition ast.h:5930
pm_string_t unescaped
MatchLastLineNode::unescaped.
Definition ast.h:5935
pm_node_t base
The embedded base node.
Definition ast.h:5914
MatchPredicateNode.
Definition ast.h:5950
pm_location_t operator_loc
MatchPredicateNode::operator_loc.
Definition ast.h:5968
struct pm_node * pattern
MatchPredicateNode::pattern.
Definition ast.h:5963
struct pm_node * value
MatchPredicateNode::value.
Definition ast.h:5958
pm_node_t base
The embedded base node.
Definition ast.h:5952
MatchRequiredNode.
Definition ast.h:5983
pm_node_t base
The embedded base node.
Definition ast.h:5985
pm_location_t operator_loc
MatchRequiredNode::operator_loc.
Definition ast.h:6055
struct pm_node * value
MatchRequiredNode::value.
Definition ast.h:5996
struct pm_node * pattern
MatchRequiredNode::pattern.
Definition ast.h:6045
MatchWriteNode.
Definition ast.h:6070
pm_node_t base
The embedded base node.
Definition ast.h:6072
struct pm_node_list targets
MatchWriteNode::targets.
Definition ast.h:6083
struct pm_call_node * call
MatchWriteNode::call.
Definition ast.h:6078
MissingNode.
Definition ast.h:6095
pm_node_t base
The embedded base node.
Definition ast.h:6097
ModuleNode.
Definition ast.h:6113
pm_location_t end_keyword_loc
ModuleNode::end_keyword_loc.
Definition ast.h:6141
struct pm_node * constant_path
ModuleNode::constant_path.
Definition ast.h:6131
struct pm_node * body
ModuleNode::body.
Definition ast.h:6136
pm_constant_id_list_t locals
ModuleNode::locals.
Definition ast.h:6121
pm_node_t base
The embedded base node.
Definition ast.h:6115
pm_location_t module_keyword_loc
ModuleNode::module_keyword_loc.
Definition ast.h:6126
pm_constant_id_t name
ModuleNode::name.
Definition ast.h:6146
MultiTargetNode.
Definition ast.h:6166
pm_node_t base
The embedded base node.
Definition ast.h:6168
pm_location_t lparen_loc
MultiTargetNode::lparen_loc.
Definition ast.h:6224
struct pm_node_list lefts
MultiTargetNode::lefts.
Definition ast.h:6184
struct pm_node * rest
MultiTargetNode::rest.
Definition ast.h:6204
pm_location_t rparen_loc
MultiTargetNode::rparen_loc.
Definition ast.h:6234
struct pm_node_list rights
MultiTargetNode::rights.
Definition ast.h:6214
MultiWriteNode.
Definition ast.h:6249
pm_location_t rparen_loc
MultiWriteNode::rparen_loc.
Definition ast.h:6317
struct pm_node * value
MultiWriteNode::value.
Definition ast.h:6337
struct pm_node * rest
MultiWriteNode::rest.
Definition ast.h:6287
struct pm_node_list rights
MultiWriteNode::rights.
Definition ast.h:6297
pm_location_t operator_loc
MultiWriteNode::operator_loc.
Definition ast.h:6327
pm_location_t lparen_loc
MultiWriteNode::lparen_loc.
Definition ast.h:6307
struct pm_node_list lefts
MultiWriteNode::lefts.
Definition ast.h:6267
pm_node_t base
The embedded base node.
Definition ast.h:6251
NextNode.
Definition ast.h:6352
struct pm_arguments_node * arguments
NextNode::arguments.
Definition ast.h:6360
pm_node_t base
The embedded base node.
Definition ast.h:6354
pm_location_t keyword_loc
NextNode::keyword_loc.
Definition ast.h:6365
NilNode.
Definition ast.h:6380
pm_node_t base
The embedded base node.
Definition ast.h:6382
NoKeywordsParameterNode.
Definition ast.h:6399
pm_location_t keyword_loc
NoKeywordsParameterNode::keyword_loc.
Definition ast.h:6412
pm_location_t operator_loc
NoKeywordsParameterNode::operator_loc.
Definition ast.h:6407
pm_node_t base
The embedded base node.
Definition ast.h:6401
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:1052
pm_node_type_t type
This represents the type of the node.
Definition ast.h:1057
uint32_t node_id
The unique identifier for this node, which is deterministic based on the source.
Definition ast.h:1069
pm_node_flags_t flags
This represents any flags on the node.
Definition ast.h:1063
pm_location_t location
This is the location of the node in the source.
Definition ast.h:1075
NumberedParametersNode.
Definition ast.h:6427
pm_node_t base
The embedded base node.
Definition ast.h:6429
uint8_t maximum
NumberedParametersNode::maximum.
Definition ast.h:6435
NumberedReferenceReadNode.
Definition ast.h:6450
pm_node_t base
The embedded base node.
Definition ast.h:6452
uint32_t number
NumberedReferenceReadNode::number.
Definition ast.h:6466
OptionalKeywordParameterNode.
Definition ast.h:6485
pm_node_t base
The embedded base node.
Definition ast.h:6487
pm_constant_id_t name
OptionalKeywordParameterNode::name.
Definition ast.h:6493
struct pm_node * value
OptionalKeywordParameterNode::value.
Definition ast.h:6503
pm_location_t name_loc
OptionalKeywordParameterNode::name_loc.
Definition ast.h:6498
OptionalParameterNode.
Definition ast.h:6522
pm_location_t name_loc
OptionalParameterNode::name_loc.
Definition ast.h:6535
struct pm_node * value
OptionalParameterNode::value.
Definition ast.h:6545
pm_constant_id_t name
OptionalParameterNode::name.
Definition ast.h:6530
pm_node_t base
The embedded base node.
Definition ast.h:6524
pm_location_t operator_loc
OptionalParameterNode::operator_loc.
Definition ast.h:6540
OrNode.
Definition ast.h:6560
struct pm_node * left
OrNode::left.
Definition ast.h:6576
struct pm_node * right
OrNode::right.
Definition ast.h:6589
pm_node_t base
The embedded base node.
Definition ast.h:6562
pm_location_t operator_loc
OrNode::operator_loc.
Definition ast.h:6599
ParametersNode.
Definition ast.h:6615
struct pm_node * rest
ParametersNode::rest.
Definition ast.h:6633
struct pm_node_list requireds
ParametersNode::requireds.
Definition ast.h:6623
struct pm_block_parameter_node * block
ParametersNode::block.
Definition ast.h:6653
struct pm_node_list optionals
ParametersNode::optionals.
Definition ast.h:6628
struct pm_node_list posts
ParametersNode::posts.
Definition ast.h:6638
pm_node_t base
The embedded base node.
Definition ast.h:6617
struct pm_node * keyword_rest
ParametersNode::keyword_rest.
Definition ast.h:6648
struct pm_node_list keywords
ParametersNode::keywords.
Definition ast.h:6643
ParenthesesNode.
Definition ast.h:6671
struct pm_node * body
ParenthesesNode::body.
Definition ast.h:6679
pm_location_t closing_loc
ParenthesesNode::closing_loc.
Definition ast.h:6689
pm_node_t base
The embedded base node.
Definition ast.h:6673
pm_location_t opening_loc
ParenthesesNode::opening_loc.
Definition ast.h:6684
PinnedExpressionNode.
Definition ast.h:6704
pm_node_t base
The embedded base node.
Definition ast.h:6706
pm_location_t rparen_loc
PinnedExpressionNode::rparen_loc.
Definition ast.h:6747
struct pm_node * expression
PinnedExpressionNode::expression.
Definition ast.h:6717
pm_location_t lparen_loc
PinnedExpressionNode::lparen_loc.
Definition ast.h:6737
pm_location_t operator_loc
PinnedExpressionNode::operator_loc.
Definition ast.h:6727
PinnedVariableNode.
Definition ast.h:6762
struct pm_node * variable
PinnedVariableNode::variable.
Definition ast.h:6775
pm_node_t base
The embedded base node.
Definition ast.h:6764
pm_location_t operator_loc
PinnedVariableNode::operator_loc.
Definition ast.h:6785
PostExecutionNode.
Definition ast.h:6800
pm_location_t closing_loc
PostExecutionNode::closing_loc.
Definition ast.h:6823
struct pm_statements_node * statements
PostExecutionNode::statements.
Definition ast.h:6808
pm_node_t base
The embedded base node.
Definition ast.h:6802
pm_location_t opening_loc
PostExecutionNode::opening_loc.
Definition ast.h:6818
pm_location_t keyword_loc
PostExecutionNode::keyword_loc.
Definition ast.h:6813
PreExecutionNode.
Definition ast.h:6838
struct pm_statements_node * statements
PreExecutionNode::statements.
Definition ast.h:6846
pm_location_t closing_loc
PreExecutionNode::closing_loc.
Definition ast.h:6861
pm_location_t opening_loc
PreExecutionNode::opening_loc.
Definition ast.h:6856
pm_node_t base
The embedded base node.
Definition ast.h:6840
pm_location_t keyword_loc
PreExecutionNode::keyword_loc.
Definition ast.h:6851
ProgramNode.
Definition ast.h:6873
struct pm_statements_node * statements
ProgramNode::statements.
Definition ast.h:6886
pm_node_t base
The embedded base node.
Definition ast.h:6875
pm_constant_id_list_t locals
ProgramNode::locals.
Definition ast.h:6881
RangeNode.
Definition ast.h:6907
struct pm_node * right
RangeNode::right.
Definition ast.h:6937
pm_location_t operator_loc
RangeNode::operator_loc.
Definition ast.h:6944
pm_node_t base
The embedded base node.
Definition ast.h:6909
struct pm_node * left
RangeNode::left.
Definition ast.h:6923
RationalNode.
Definition ast.h:6965
pm_node_t base
The embedded base node.
Definition ast.h:6967
pm_integer_t denominator
RationalNode::denominator.
Definition ast.h:6986
pm_integer_t numerator
RationalNode::numerator.
Definition ast.h:6977
RedoNode.
Definition ast.h:7001
pm_node_t base
The embedded base node.
Definition ast.h:7003
RegularExpressionNode.
Definition ast.h:7032
pm_location_t closing_loc
RegularExpressionNode::closing_loc.
Definition ast.h:7050
pm_node_t base
The embedded base node.
Definition ast.h:7034
pm_string_t unescaped
RegularExpressionNode::unescaped.
Definition ast.h:7055
pm_location_t opening_loc
RegularExpressionNode::opening_loc.
Definition ast.h:7040
pm_location_t content_loc
RegularExpressionNode::content_loc.
Definition ast.h:7045
RequiredKeywordParameterNode.
Definition ast.h:7074
pm_location_t name_loc
RequiredKeywordParameterNode::name_loc.
Definition ast.h:7087
pm_node_t base
The embedded base node.
Definition ast.h:7076
pm_constant_id_t name
RequiredKeywordParameterNode::name.
Definition ast.h:7082
RequiredParameterNode.
Definition ast.h:7106
pm_constant_id_t name
RequiredParameterNode::name.
Definition ast.h:7114
pm_node_t base
The embedded base node.
Definition ast.h:7108
RescueModifierNode.
Definition ast.h:7129
pm_node_t base
The embedded base node.
Definition ast.h:7131
struct pm_node * rescue_expression
RescueModifierNode::rescue_expression.
Definition ast.h:7147
pm_location_t keyword_loc
RescueModifierNode::keyword_loc.
Definition ast.h:7142
struct pm_node * expression
RescueModifierNode::expression.
Definition ast.h:7137
RescueNode.
Definition ast.h:7167
pm_location_t keyword_loc
RescueNode::keyword_loc.
Definition ast.h:7175
struct pm_rescue_node * subsequent
RescueNode::subsequent.
Definition ast.h:7205
pm_location_t then_keyword_loc
RescueNode::then_keyword_loc.
Definition ast.h:7195
pm_location_t operator_loc
RescueNode::operator_loc.
Definition ast.h:7185
struct pm_node * reference
RescueNode::reference.
Definition ast.h:7190
struct pm_node_list exceptions
RescueNode::exceptions.
Definition ast.h:7180
struct pm_statements_node * statements
RescueNode::statements.
Definition ast.h:7200
pm_node_t base
The embedded base node.
Definition ast.h:7169
RestParameterNode.
Definition ast.h:7224
pm_constant_id_t name
RestParameterNode::name.
Definition ast.h:7232
pm_location_t name_loc
RestParameterNode::name_loc.
Definition ast.h:7237
pm_node_t base
The embedded base node.
Definition ast.h:7226
pm_location_t operator_loc
RestParameterNode::operator_loc.
Definition ast.h:7242
RetryNode.
Definition ast.h:7257
pm_node_t base
The embedded base node.
Definition ast.h:7259
ReturnNode.
Definition ast.h:7275
pm_location_t keyword_loc
ReturnNode::keyword_loc.
Definition ast.h:7283
pm_node_t base
The embedded base node.
Definition ast.h:7277
struct pm_arguments_node * arguments
ReturnNode::arguments.
Definition ast.h:7288
SelfNode.
Definition ast.h:7303
pm_node_t base
The embedded base node.
Definition ast.h:7305
ShareableConstantNode.
Definition ast.h:7327
struct pm_node * write
ShareableConstantNode::write.
Definition ast.h:7337
pm_node_t base
The embedded base node.
Definition ast.h:7329
SingletonClassNode.
Definition ast.h:7352
pm_node_t base
The embedded base node.
Definition ast.h:7354
pm_constant_id_list_t locals
SingletonClassNode::locals.
Definition ast.h:7360
pm_location_t operator_loc
SingletonClassNode::operator_loc.
Definition ast.h:7370
struct pm_node * expression
SingletonClassNode::expression.
Definition ast.h:7375
pm_location_t end_keyword_loc
SingletonClassNode::end_keyword_loc.
Definition ast.h:7385
pm_location_t class_keyword_loc
SingletonClassNode::class_keyword_loc.
Definition ast.h:7365
struct pm_node * body
SingletonClassNode::body.
Definition ast.h:7380
SourceEncodingNode.
Definition ast.h:7400
pm_node_t base
The embedded base node.
Definition ast.h:7402
SourceFileNode.
Definition ast.h:7424
pm_string_t filepath
SourceFileNode::filepath.
Definition ast.h:7434
pm_node_t base
The embedded base node.
Definition ast.h:7426
SourceLineNode.
Definition ast.h:7449
pm_node_t base
The embedded base node.
Definition ast.h:7451
SplatNode.
Definition ast.h:7467
struct pm_node * expression
SplatNode::expression.
Definition ast.h:7480
pm_node_t base
The embedded base node.
Definition ast.h:7469
pm_location_t operator_loc
SplatNode::operator_loc.
Definition ast.h:7475
StatementsNode.
Definition ast.h:7495
struct pm_node_list body
StatementsNode::body.
Definition ast.h:7503
pm_node_t base
The embedded base node.
Definition ast.h:7497
StringNode.
Definition ast.h:7530
pm_node_t base
The embedded base node.
Definition ast.h:7532
pm_string_t unescaped
StringNode::unescaped.
Definition ast.h:7553
pm_location_t content_loc
StringNode::content_loc.
Definition ast.h:7543
pm_location_t closing_loc
StringNode::closing_loc.
Definition ast.h:7548
pm_location_t opening_loc
StringNode::opening_loc.
Definition ast.h:7538
A generic string type that can have various ownership semantics.
Definition pm_string.h:33
SuperNode.
Definition ast.h:7573
struct pm_arguments_node * arguments
SuperNode::arguments.
Definition ast.h:7593
pm_location_t lparen_loc
SuperNode::lparen_loc.
Definition ast.h:7586
pm_node_t base
The embedded base node.
Definition ast.h:7575
pm_location_t keyword_loc
SuperNode::keyword_loc.
Definition ast.h:7581
pm_location_t rparen_loc
SuperNode::rparen_loc.
Definition ast.h:7598
struct pm_node * block
SuperNode::block.
Definition ast.h:7603
SymbolNode.
Definition ast.h:7626
pm_location_t opening_loc
SymbolNode::opening_loc.
Definition ast.h:7634
pm_location_t value_loc
SymbolNode::value_loc.
Definition ast.h:7639
pm_location_t closing_loc
SymbolNode::closing_loc.
Definition ast.h:7644
pm_string_t unescaped
SymbolNode::unescaped.
Definition ast.h:7649
pm_node_t base
The embedded base node.
Definition ast.h:7628
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:7664
pm_node_t base
The embedded base node.
Definition ast.h:7666
UndefNode.
Definition ast.h:7682
pm_node_t base
The embedded base node.
Definition ast.h:7684
pm_location_t keyword_loc
UndefNode::keyword_loc.
Definition ast.h:7695
struct pm_node_list names
UndefNode::names.
Definition ast.h:7690
UnlessNode.
Definition ast.h:7713
pm_location_t keyword_loc
UnlessNode::keyword_loc.
Definition ast.h:7729
pm_location_t then_keyword_loc
UnlessNode::then_keyword_loc.
Definition ast.h:7752
pm_location_t end_keyword_loc
UnlessNode::end_keyword_loc.
Definition ast.h:7783
pm_node_t base
The embedded base node.
Definition ast.h:7715
struct pm_statements_node * statements
UnlessNode::statements.
Definition ast.h:7763
struct pm_node * predicate
UnlessNode::predicate.
Definition ast.h:7742
struct pm_else_node * else_clause
UnlessNode::else_clause.
Definition ast.h:7773
UntilNode.
Definition ast.h:7804
struct pm_statements_node * statements
UntilNode::statements.
Definition ast.h:7832
pm_location_t closing_loc
UntilNode::closing_loc.
Definition ast.h:7822
struct pm_node * predicate
UntilNode::predicate.
Definition ast.h:7827
pm_location_t keyword_loc
UntilNode::keyword_loc.
Definition ast.h:7812
pm_node_t base
The embedded base node.
Definition ast.h:7806
pm_location_t do_keyword_loc
UntilNode::do_keyword_loc.
Definition ast.h:7817
WhenNode.
Definition ast.h:7849
struct pm_statements_node * statements
WhenNode::statements.
Definition ast.h:7872
pm_node_t base
The embedded base node.
Definition ast.h:7851
pm_location_t then_keyword_loc
WhenNode::then_keyword_loc.
Definition ast.h:7867
pm_location_t keyword_loc
WhenNode::keyword_loc.
Definition ast.h:7857
struct pm_node_list conditions
WhenNode::conditions.
Definition ast.h:7862
WhileNode.
Definition ast.h:7893
pm_location_t closing_loc
WhileNode::closing_loc.
Definition ast.h:7911
pm_location_t keyword_loc
WhileNode::keyword_loc.
Definition ast.h:7901
struct pm_statements_node * statements
WhileNode::statements.
Definition ast.h:7921
pm_node_t base
The embedded base node.
Definition ast.h:7895
pm_location_t do_keyword_loc
WhileNode::do_keyword_loc.
Definition ast.h:7906
struct pm_node * predicate
WhileNode::predicate.
Definition ast.h:7916
XStringNode.
Definition ast.h:7940
pm_location_t closing_loc
XStringNode::closing_loc.
Definition ast.h:7958
pm_location_t opening_loc
XStringNode::opening_loc.
Definition ast.h:7948
pm_location_t content_loc
XStringNode::content_loc.
Definition ast.h:7953
pm_string_t unescaped
XStringNode::unescaped.
Definition ast.h:7963
pm_node_t base
The embedded base node.
Definition ast.h:7942
YieldNode.
Definition ast.h:7978
pm_location_t keyword_loc
YieldNode::keyword_loc.
Definition ast.h:7986
pm_location_t lparen_loc
YieldNode::lparen_loc.
Definition ast.h:7991
pm_node_t base
The embedded base node.
Definition ast.h:7980
pm_location_t rparen_loc
YieldNode::rparen_loc.
Definition ast.h:8001
struct pm_arguments_node * arguments
YieldNode::arguments.
Definition ast.h:7996