Ruby 4.1.0dev (2026-03-16 revision 2fc3013e7a06cb667a0aa31df9e6f6e0f89de4be)
ast.h
1/*----------------------------------------------------------------------------*/
2/* This file is generated by the templates/template.rb script and should not */
3/* be modified manually. See */
4/* templates/include/prism/ast.h.erb */
5/* if you are looking to modify the */
6/* template */
7/*----------------------------------------------------------------------------*/
8
11#ifndef PRISM_AST_H
12#define PRISM_AST_H
13
14#include "prism/defines.h"
18
19#include <assert.h>
20#include <stddef.h>
21#include <stdint.h>
22
26typedef enum pm_token_type {
28 PM_TOKEN_EOF = 1,
29
31 PM_TOKEN_BRACE_RIGHT,
32
34 PM_TOKEN_COMMA,
35
37 PM_TOKEN_EMBEXPR_END,
38
40 PM_TOKEN_KEYWORD_DO,
41
43 PM_TOKEN_KEYWORD_ELSE,
44
46 PM_TOKEN_KEYWORD_ELSIF,
47
49 PM_TOKEN_KEYWORD_END,
50
52 PM_TOKEN_KEYWORD_ENSURE,
53
55 PM_TOKEN_KEYWORD_IN,
56
58 PM_TOKEN_KEYWORD_RESCUE,
59
61 PM_TOKEN_KEYWORD_THEN,
62
64 PM_TOKEN_KEYWORD_WHEN,
65
67 PM_TOKEN_NEWLINE,
68
70 PM_TOKEN_PARENTHESIS_RIGHT,
71
73 PM_TOKEN_PIPE,
74
76 PM_TOKEN_SEMICOLON,
77
79 PM_TOKEN_AMPERSAND,
80
82 PM_TOKEN_AMPERSAND_AMPERSAND,
83
85 PM_TOKEN_AMPERSAND_AMPERSAND_EQUAL,
86
88 PM_TOKEN_AMPERSAND_DOT,
89
91 PM_TOKEN_AMPERSAND_EQUAL,
92
94 PM_TOKEN_BACKTICK,
95
97 PM_TOKEN_BACK_REFERENCE,
98
100 PM_TOKEN_BANG,
101
103 PM_TOKEN_BANG_EQUAL,
104
106 PM_TOKEN_BANG_TILDE,
107
109 PM_TOKEN_BRACE_LEFT,
110
112 PM_TOKEN_BRACKET_LEFT,
113
115 PM_TOKEN_BRACKET_LEFT_ARRAY,
116
118 PM_TOKEN_BRACKET_LEFT_RIGHT,
119
121 PM_TOKEN_BRACKET_LEFT_RIGHT_EQUAL,
122
124 PM_TOKEN_BRACKET_RIGHT,
125
127 PM_TOKEN_CARET,
128
130 PM_TOKEN_CARET_EQUAL,
131
133 PM_TOKEN_CHARACTER_LITERAL,
134
136 PM_TOKEN_CLASS_VARIABLE,
137
139 PM_TOKEN_COLON,
140
142 PM_TOKEN_COLON_COLON,
143
145 PM_TOKEN_COMMENT,
146
148 PM_TOKEN_CONSTANT,
149
151 PM_TOKEN_DOT,
152
154 PM_TOKEN_DOT_DOT,
155
157 PM_TOKEN_DOT_DOT_DOT,
158
160 PM_TOKEN_EMBDOC_BEGIN,
161
163 PM_TOKEN_EMBDOC_END,
164
166 PM_TOKEN_EMBDOC_LINE,
167
169 PM_TOKEN_EMBEXPR_BEGIN,
170
172 PM_TOKEN_EMBVAR,
173
175 PM_TOKEN_EQUAL,
176
178 PM_TOKEN_EQUAL_EQUAL,
179
181 PM_TOKEN_EQUAL_EQUAL_EQUAL,
182
184 PM_TOKEN_EQUAL_GREATER,
185
187 PM_TOKEN_EQUAL_TILDE,
188
190 PM_TOKEN_FLOAT,
191
193 PM_TOKEN_FLOAT_IMAGINARY,
194
196 PM_TOKEN_FLOAT_RATIONAL,
197
199 PM_TOKEN_FLOAT_RATIONAL_IMAGINARY,
200
202 PM_TOKEN_GLOBAL_VARIABLE,
203
205 PM_TOKEN_GREATER,
206
208 PM_TOKEN_GREATER_EQUAL,
209
211 PM_TOKEN_GREATER_GREATER,
212
214 PM_TOKEN_GREATER_GREATER_EQUAL,
215
217 PM_TOKEN_HEREDOC_END,
218
220 PM_TOKEN_HEREDOC_START,
221
223 PM_TOKEN_IDENTIFIER,
224
226 PM_TOKEN_IGNORED_NEWLINE,
227
229 PM_TOKEN_INSTANCE_VARIABLE,
230
232 PM_TOKEN_INTEGER,
233
235 PM_TOKEN_INTEGER_IMAGINARY,
236
238 PM_TOKEN_INTEGER_RATIONAL,
239
241 PM_TOKEN_INTEGER_RATIONAL_IMAGINARY,
242
244 PM_TOKEN_KEYWORD_ALIAS,
245
247 PM_TOKEN_KEYWORD_AND,
248
250 PM_TOKEN_KEYWORD_BEGIN,
251
253 PM_TOKEN_KEYWORD_BEGIN_UPCASE,
254
256 PM_TOKEN_KEYWORD_BREAK,
257
259 PM_TOKEN_KEYWORD_CASE,
260
262 PM_TOKEN_KEYWORD_CLASS,
263
265 PM_TOKEN_KEYWORD_DEF,
266
268 PM_TOKEN_KEYWORD_DEFINED,
269
271 PM_TOKEN_KEYWORD_DO_BLOCK,
272
274 PM_TOKEN_KEYWORD_DO_LOOP,
275
277 PM_TOKEN_KEYWORD_END_UPCASE,
278
280 PM_TOKEN_KEYWORD_FALSE,
281
283 PM_TOKEN_KEYWORD_FOR,
284
286 PM_TOKEN_KEYWORD_IF,
287
289 PM_TOKEN_KEYWORD_IF_MODIFIER,
290
292 PM_TOKEN_KEYWORD_MODULE,
293
295 PM_TOKEN_KEYWORD_NEXT,
296
298 PM_TOKEN_KEYWORD_NIL,
299
301 PM_TOKEN_KEYWORD_NOT,
302
304 PM_TOKEN_KEYWORD_OR,
305
307 PM_TOKEN_KEYWORD_REDO,
308
310 PM_TOKEN_KEYWORD_RESCUE_MODIFIER,
311
313 PM_TOKEN_KEYWORD_RETRY,
314
316 PM_TOKEN_KEYWORD_RETURN,
317
319 PM_TOKEN_KEYWORD_SELF,
320
322 PM_TOKEN_KEYWORD_SUPER,
323
325 PM_TOKEN_KEYWORD_TRUE,
326
328 PM_TOKEN_KEYWORD_UNDEF,
329
331 PM_TOKEN_KEYWORD_UNLESS,
332
334 PM_TOKEN_KEYWORD_UNLESS_MODIFIER,
335
337 PM_TOKEN_KEYWORD_UNTIL,
338
340 PM_TOKEN_KEYWORD_UNTIL_MODIFIER,
341
343 PM_TOKEN_KEYWORD_WHILE,
344
346 PM_TOKEN_KEYWORD_WHILE_MODIFIER,
347
349 PM_TOKEN_KEYWORD_YIELD,
350
352 PM_TOKEN_KEYWORD___ENCODING__,
353
355 PM_TOKEN_KEYWORD___FILE__,
356
358 PM_TOKEN_KEYWORD___LINE__,
359
361 PM_TOKEN_LABEL,
362
364 PM_TOKEN_LABEL_END,
365
367 PM_TOKEN_LAMBDA_BEGIN,
368
370 PM_TOKEN_LESS,
371
373 PM_TOKEN_LESS_EQUAL,
374
376 PM_TOKEN_LESS_EQUAL_GREATER,
377
379 PM_TOKEN_LESS_LESS,
380
382 PM_TOKEN_LESS_LESS_EQUAL,
383
385 PM_TOKEN_METHOD_NAME,
386
388 PM_TOKEN_MINUS,
389
391 PM_TOKEN_MINUS_EQUAL,
392
394 PM_TOKEN_MINUS_GREATER,
395
397 PM_TOKEN_NUMBERED_REFERENCE,
398
400 PM_TOKEN_PARENTHESIS_LEFT,
401
403 PM_TOKEN_PARENTHESIS_LEFT_PARENTHESES,
404
406 PM_TOKEN_PERCENT,
407
409 PM_TOKEN_PERCENT_EQUAL,
410
412 PM_TOKEN_PERCENT_LOWER_I,
413
415 PM_TOKEN_PERCENT_LOWER_W,
416
418 PM_TOKEN_PERCENT_LOWER_X,
419
421 PM_TOKEN_PERCENT_UPPER_I,
422
424 PM_TOKEN_PERCENT_UPPER_W,
425
427 PM_TOKEN_PIPE_EQUAL,
428
430 PM_TOKEN_PIPE_PIPE,
431
433 PM_TOKEN_PIPE_PIPE_EQUAL,
434
436 PM_TOKEN_PLUS,
437
439 PM_TOKEN_PLUS_EQUAL,
440
442 PM_TOKEN_QUESTION_MARK,
443
445 PM_TOKEN_REGEXP_BEGIN,
446
448 PM_TOKEN_REGEXP_END,
449
451 PM_TOKEN_SLASH,
452
454 PM_TOKEN_SLASH_EQUAL,
455
457 PM_TOKEN_STAR,
458
460 PM_TOKEN_STAR_EQUAL,
461
463 PM_TOKEN_STAR_STAR,
464
466 PM_TOKEN_STAR_STAR_EQUAL,
467
469 PM_TOKEN_STRING_BEGIN,
470
472 PM_TOKEN_STRING_CONTENT,
473
475 PM_TOKEN_STRING_END,
476
478 PM_TOKEN_SYMBOL_BEGIN,
479
481 PM_TOKEN_TILDE,
482
484 PM_TOKEN_UAMPERSAND,
485
487 PM_TOKEN_UCOLON_COLON,
488
490 PM_TOKEN_UDOT_DOT,
491
493 PM_TOKEN_UDOT_DOT_DOT,
494
496 PM_TOKEN_UMINUS,
497
499 PM_TOKEN_UMINUS_NUM,
500
502 PM_TOKEN_UPLUS,
503
505 PM_TOKEN_USTAR,
506
508 PM_TOKEN_USTAR_STAR,
509
511 PM_TOKEN_WORDS_SEP,
512
514 PM_TOKEN___END__,
515
517 PM_TOKEN_MAXIMUM,
518} pm_token_type_t;
519
524typedef struct {
526 pm_token_type_t type;
527
529 const uint8_t *start;
530
532 const uint8_t *end;
533} pm_token_t;
534
543typedef struct {
545 uint32_t start;
546
548 uint32_t length;
550
551struct pm_node;
552
556typedef struct pm_node_list {
558 size_t size;
559
561 size_t capacity;
562
564 struct pm_node **nodes;
566
570enum pm_node_type {
572 PM_ALIAS_GLOBAL_VARIABLE_NODE = 1,
573
575 PM_ALIAS_METHOD_NODE = 2,
576
578 PM_ALTERNATION_PATTERN_NODE = 3,
579
581 PM_AND_NODE = 4,
582
584 PM_ARGUMENTS_NODE = 5,
585
587 PM_ARRAY_NODE = 6,
588
590 PM_ARRAY_PATTERN_NODE = 7,
591
593 PM_ASSOC_NODE = 8,
594
596 PM_ASSOC_SPLAT_NODE = 9,
597
599 PM_BACK_REFERENCE_READ_NODE = 10,
600
602 PM_BEGIN_NODE = 11,
603
605 PM_BLOCK_ARGUMENT_NODE = 12,
606
608 PM_BLOCK_LOCAL_VARIABLE_NODE = 13,
609
611 PM_BLOCK_NODE = 14,
612
614 PM_BLOCK_PARAMETER_NODE = 15,
615
617 PM_BLOCK_PARAMETERS_NODE = 16,
618
620 PM_BREAK_NODE = 17,
621
623 PM_CALL_AND_WRITE_NODE = 18,
624
626 PM_CALL_NODE = 19,
627
629 PM_CALL_OPERATOR_WRITE_NODE = 20,
630
632 PM_CALL_OR_WRITE_NODE = 21,
633
635 PM_CALL_TARGET_NODE = 22,
636
638 PM_CAPTURE_PATTERN_NODE = 23,
639
641 PM_CASE_MATCH_NODE = 24,
642
644 PM_CASE_NODE = 25,
645
647 PM_CLASS_NODE = 26,
648
650 PM_CLASS_VARIABLE_AND_WRITE_NODE = 27,
651
653 PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 28,
654
656 PM_CLASS_VARIABLE_OR_WRITE_NODE = 29,
657
659 PM_CLASS_VARIABLE_READ_NODE = 30,
660
662 PM_CLASS_VARIABLE_TARGET_NODE = 31,
663
665 PM_CLASS_VARIABLE_WRITE_NODE = 32,
666
668 PM_CONSTANT_AND_WRITE_NODE = 33,
669
671 PM_CONSTANT_OPERATOR_WRITE_NODE = 34,
672
674 PM_CONSTANT_OR_WRITE_NODE = 35,
675
677 PM_CONSTANT_PATH_AND_WRITE_NODE = 36,
678
680 PM_CONSTANT_PATH_NODE = 37,
681
683 PM_CONSTANT_PATH_OPERATOR_WRITE_NODE = 38,
684
686 PM_CONSTANT_PATH_OR_WRITE_NODE = 39,
687
689 PM_CONSTANT_PATH_TARGET_NODE = 40,
690
692 PM_CONSTANT_PATH_WRITE_NODE = 41,
693
695 PM_CONSTANT_READ_NODE = 42,
696
698 PM_CONSTANT_TARGET_NODE = 43,
699
701 PM_CONSTANT_WRITE_NODE = 44,
702
704 PM_DEF_NODE = 45,
705
707 PM_DEFINED_NODE = 46,
708
710 PM_ELSE_NODE = 47,
711
713 PM_EMBEDDED_STATEMENTS_NODE = 48,
714
716 PM_EMBEDDED_VARIABLE_NODE = 49,
717
719 PM_ENSURE_NODE = 50,
720
722 PM_FALSE_NODE = 51,
723
725 PM_FIND_PATTERN_NODE = 52,
726
728 PM_FLIP_FLOP_NODE = 53,
729
731 PM_FLOAT_NODE = 54,
732
734 PM_FOR_NODE = 55,
735
737 PM_FORWARDING_ARGUMENTS_NODE = 56,
738
740 PM_FORWARDING_PARAMETER_NODE = 57,
741
743 PM_FORWARDING_SUPER_NODE = 58,
744
746 PM_GLOBAL_VARIABLE_AND_WRITE_NODE = 59,
747
749 PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 60,
750
752 PM_GLOBAL_VARIABLE_OR_WRITE_NODE = 61,
753
755 PM_GLOBAL_VARIABLE_READ_NODE = 62,
756
758 PM_GLOBAL_VARIABLE_TARGET_NODE = 63,
759
761 PM_GLOBAL_VARIABLE_WRITE_NODE = 64,
762
764 PM_HASH_NODE = 65,
765
767 PM_HASH_PATTERN_NODE = 66,
768
770 PM_IF_NODE = 67,
771
773 PM_IMAGINARY_NODE = 68,
774
776 PM_IMPLICIT_NODE = 69,
777
779 PM_IMPLICIT_REST_NODE = 70,
780
782 PM_IN_NODE = 71,
783
785 PM_INDEX_AND_WRITE_NODE = 72,
786
788 PM_INDEX_OPERATOR_WRITE_NODE = 73,
789
791 PM_INDEX_OR_WRITE_NODE = 74,
792
794 PM_INDEX_TARGET_NODE = 75,
795
797 PM_INSTANCE_VARIABLE_AND_WRITE_NODE = 76,
798
800 PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 77,
801
803 PM_INSTANCE_VARIABLE_OR_WRITE_NODE = 78,
804
806 PM_INSTANCE_VARIABLE_READ_NODE = 79,
807
809 PM_INSTANCE_VARIABLE_TARGET_NODE = 80,
810
812 PM_INSTANCE_VARIABLE_WRITE_NODE = 81,
813
815 PM_INTEGER_NODE = 82,
816
818 PM_INTERPOLATED_MATCH_LAST_LINE_NODE = 83,
819
821 PM_INTERPOLATED_REGULAR_EXPRESSION_NODE = 84,
822
824 PM_INTERPOLATED_STRING_NODE = 85,
825
827 PM_INTERPOLATED_SYMBOL_NODE = 86,
828
830 PM_INTERPOLATED_X_STRING_NODE = 87,
831
833 PM_IT_LOCAL_VARIABLE_READ_NODE = 88,
834
836 PM_IT_PARAMETERS_NODE = 89,
837
839 PM_KEYWORD_HASH_NODE = 90,
840
842 PM_KEYWORD_REST_PARAMETER_NODE = 91,
843
845 PM_LAMBDA_NODE = 92,
846
848 PM_LOCAL_VARIABLE_AND_WRITE_NODE = 93,
849
851 PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 94,
852
854 PM_LOCAL_VARIABLE_OR_WRITE_NODE = 95,
855
857 PM_LOCAL_VARIABLE_READ_NODE = 96,
858
860 PM_LOCAL_VARIABLE_TARGET_NODE = 97,
861
863 PM_LOCAL_VARIABLE_WRITE_NODE = 98,
864
866 PM_MATCH_LAST_LINE_NODE = 99,
867
869 PM_MATCH_PREDICATE_NODE = 100,
870
872 PM_MATCH_REQUIRED_NODE = 101,
873
875 PM_MATCH_WRITE_NODE = 102,
876
878 PM_MISSING_NODE = 103,
879
881 PM_MODULE_NODE = 104,
882
884 PM_MULTI_TARGET_NODE = 105,
885
887 PM_MULTI_WRITE_NODE = 106,
888
890 PM_NEXT_NODE = 107,
891
893 PM_NIL_NODE = 108,
894
896 PM_NO_BLOCK_PARAMETER_NODE = 109,
897
899 PM_NO_KEYWORDS_PARAMETER_NODE = 110,
900
902 PM_NUMBERED_PARAMETERS_NODE = 111,
903
905 PM_NUMBERED_REFERENCE_READ_NODE = 112,
906
908 PM_OPTIONAL_KEYWORD_PARAMETER_NODE = 113,
909
911 PM_OPTIONAL_PARAMETER_NODE = 114,
912
914 PM_OR_NODE = 115,
915
917 PM_PARAMETERS_NODE = 116,
918
920 PM_PARENTHESES_NODE = 117,
921
923 PM_PINNED_EXPRESSION_NODE = 118,
924
926 PM_PINNED_VARIABLE_NODE = 119,
927
929 PM_POST_EXECUTION_NODE = 120,
930
932 PM_PRE_EXECUTION_NODE = 121,
933
935 PM_PROGRAM_NODE = 122,
936
938 PM_RANGE_NODE = 123,
939
941 PM_RATIONAL_NODE = 124,
942
944 PM_REDO_NODE = 125,
945
947 PM_REGULAR_EXPRESSION_NODE = 126,
948
950 PM_REQUIRED_KEYWORD_PARAMETER_NODE = 127,
951
953 PM_REQUIRED_PARAMETER_NODE = 128,
954
956 PM_RESCUE_MODIFIER_NODE = 129,
957
959 PM_RESCUE_NODE = 130,
960
962 PM_REST_PARAMETER_NODE = 131,
963
965 PM_RETRY_NODE = 132,
966
968 PM_RETURN_NODE = 133,
969
971 PM_SELF_NODE = 134,
972
974 PM_SHAREABLE_CONSTANT_NODE = 135,
975
977 PM_SINGLETON_CLASS_NODE = 136,
978
980 PM_SOURCE_ENCODING_NODE = 137,
981
983 PM_SOURCE_FILE_NODE = 138,
984
986 PM_SOURCE_LINE_NODE = 139,
987
989 PM_SPLAT_NODE = 140,
990
992 PM_STATEMENTS_NODE = 141,
993
995 PM_STRING_NODE = 142,
996
998 PM_SUPER_NODE = 143,
999
1001 PM_SYMBOL_NODE = 144,
1002
1004 PM_TRUE_NODE = 145,
1005
1007 PM_UNDEF_NODE = 146,
1008
1010 PM_UNLESS_NODE = 147,
1011
1013 PM_UNTIL_NODE = 148,
1014
1016 PM_WHEN_NODE = 149,
1017
1019 PM_WHILE_NODE = 150,
1020
1022 PM_X_STRING_NODE = 151,
1023
1025 PM_YIELD_NODE = 152,
1026
1028 PM_SCOPE_NODE
1029};
1030
1035typedef uint16_t pm_node_type_t;
1036
1041typedef uint16_t pm_node_flags_t;
1042
1047static const pm_node_flags_t PM_NODE_FLAG_NEWLINE = 0x1;
1048static const pm_node_flags_t PM_NODE_FLAG_STATIC_LITERAL = 0x2;
1049
1054typedef struct pm_node {
1059 pm_node_type_t type;
1060
1065 pm_node_flags_t flags;
1066
1071 uint32_t node_id;
1072
1078} pm_node_t;
1079
1083#define PM_NODE_UPCAST(node_) ((pm_node_t *) (node_))
1084
1089#define PM_NODE_TYPE(node_) ((enum pm_node_type) (node_)->type)
1090
1094#define PM_NODE_TYPE_P(node_, type_) (PM_NODE_TYPE(node_) == (type_))
1095
1099#define PM_NODE_FLAGS(node_) (PM_NODE_UPCAST(node_)->flags)
1100
1104#define PM_NODE_FLAG_P(node_, flag_) ((PM_NODE_FLAGS(node_) & (flag_)) != 0)
1105
1109#ifdef _MSC_VER
1110#define PM_NODE_ALIGNAS __declspec(align(8))
1111#else
1112#define PM_NODE_ALIGNAS PRISM_ALIGNAS(PRISM_ALIGNOF(void *))
1113#endif
1114
1161
1174typedef struct pm_alias_method_node {
1177
1192 PM_NODE_ALIGNAS struct pm_node *new_name;
1193
1208 PM_NODE_ALIGNAS struct pm_node *old_name;
1209
1220
1236
1245 PM_NODE_ALIGNAS struct pm_node *left;
1246
1255 PM_NODE_ALIGNAS struct pm_node *right;
1256
1267
1280typedef struct pm_and_node {
1283
1295 PM_NODE_ALIGNAS struct pm_node *left;
1296
1308 PM_NODE_ALIGNAS struct pm_node *right;
1309
1320
1354
1405
1500
1513typedef struct pm_assoc_node {
1516
1531 PM_NODE_ALIGNAS struct pm_node *key;
1532
1544 PM_NODE_ALIGNAS struct pm_node *value;
1545
1556
1593
1621
1636typedef struct pm_begin_node {
1639
1649
1658 PM_NODE_ALIGNAS struct pm_statements_node *statements;
1659
1668 PM_NODE_ALIGNAS struct pm_rescue_node *rescue_clause;
1669
1678 PM_NODE_ALIGNAS struct pm_else_node *else_clause;
1679
1688 PM_NODE_ALIGNAS struct pm_ensure_node *ensure_clause;
1689
1700
1737
1767
1838
1891
1968
2005
2098
2238
2341
2434
2505
2552
2621
2690
2776
2833
2875
2912
2940
2962
3023
3060
3102
3139
3171
3237
3274
3306
3343
3399
3427
3449
3510
3588
3625
3657
3689
3716
3752
3769
3791typedef struct pm_find_pattern_node {
3794
3803 PM_NODE_ALIGNAS struct pm_node *constant;
3804
3816 PM_NODE_ALIGNAS struct pm_splat_node *left;
3817
3830
3842 PM_NODE_ALIGNAS struct pm_node *right;
3843
3856
3870
3886typedef struct pm_flip_flop_node {
3889
3893 PM_NODE_ALIGNAS struct pm_node *left;
3894
3898 PM_NODE_ALIGNAS struct pm_node *right;
3899
3905
3918typedef struct pm_float_node {
3921
3927 double value;
3929
4018
4037
4055
4084
4121
4163
4200
4228
4250
4311
4361
4383typedef struct pm_hash_pattern_node {
4386
4398 PM_NODE_ALIGNAS struct pm_node *constant;
4399
4409
4424 PM_NODE_ALIGNAS struct pm_node *rest;
4425
4438
4452
4471typedef struct pm_if_node {
4474
4486
4503 PM_NODE_ALIGNAS struct pm_node *predicate;
4504
4517
4530 PM_NODE_ALIGNAS struct pm_statements_node *statements;
4531
4549 PM_NODE_ALIGNAS struct pm_node *subsequent;
4550
4562} pm_if_node_t;
4563
4576typedef struct pm_imaginary_node {
4579
4583 PM_NODE_ALIGNAS struct pm_node *numeric;
4585
4604typedef struct pm_implicit_node {
4607
4611 PM_NODE_ALIGNAS struct pm_node *value;
4613
4639
4652typedef struct pm_in_node {
4655
4659 PM_NODE_ALIGNAS struct pm_node *pattern;
4660
4664 PM_NODE_ALIGNAS struct pm_statements_node *statements;
4665
4670
4675} pm_in_node_t;
4676
4739
4807
4870
4897typedef struct pm_index_target_node {
4900
4904 PM_NODE_ALIGNAS struct pm_node *receiver;
4905
4910
4914 PM_NODE_ALIGNAS struct pm_arguments_node *arguments;
4915
4920
4924 PM_NODE_ALIGNAS struct pm_block_argument_node *block;
4926
4963
5005
5042
5070
5092
5153
5183
5228
5273
5309
5341
5373
5390
5407
5432
5468
5515
5557
5604
5646
5691
5721
5799
5849
5865
5869 PM_NODE_ALIGNAS struct pm_node *value;
5870
5874 PM_NODE_ALIGNAS struct pm_node *pattern;
5875
5881
5897
5906 PM_NODE_ALIGNAS struct pm_node *value;
5907
5955 PM_NODE_ALIGNAS struct pm_node *pattern;
5956
5967
5980typedef struct pm_match_write_node {
5983
5987 PM_NODE_ALIGNAS struct pm_call_node *call;
5988
5994
6008
6055
6142
6244
6271
6288
6316
6344
6366
6396
6432
6473
6486typedef struct pm_or_node {
6489
6501 PM_NODE_ALIGNAS struct pm_node *left;
6502
6514 PM_NODE_ALIGNAS struct pm_node *right;
6515
6525} pm_or_node_t;
6526
6540typedef struct pm_parameters_node {
6543
6548
6553
6557 PM_NODE_ALIGNAS struct pm_node *rest;
6558
6563
6568
6572 PM_NODE_ALIGNAS struct pm_node *keyword_rest;
6573
6577 PM_NODE_ALIGNAS struct pm_node *block;
6579
6614
6671
6708
6745
6782
6806
6825typedef struct pm_range_node {
6828
6840 PM_NODE_ALIGNAS struct pm_node *left;
6841
6854 PM_NODE_ALIGNAS struct pm_node *right;
6855
6863
6904
6921
6971
7002
7028
7044
7048 PM_NODE_ALIGNAS struct pm_node *expression;
7049
7054
7058 PM_NODE_ALIGNAS struct pm_node *rescue_expression;
7060
7117
7153
7170
7197
7214
7244
7291
7308
7338
7355
7368typedef struct pm_splat_node {
7371
7376
7380 PM_NODE_ALIGNAS struct pm_node *expression;
7382
7404
7453
7502
7547
7564
7591
7678
7726
7765
7813
7854
7891
7895typedef enum pm_arguments_node_flags {
7897 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING = 4,
7898
7900 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS = 8,
7901
7903 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT = 16,
7904
7906 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT = 32,
7907
7909 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS = 64,
7910
7911 PM_ARGUMENTS_NODE_FLAGS_LAST,
7912} pm_arguments_node_flags_t;
7913
7917typedef enum pm_array_node_flags {
7919 PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT = 4,
7920
7921 PM_ARRAY_NODE_FLAGS_LAST,
7922} pm_array_node_flags_t;
7923
7927typedef enum pm_call_node_flags {
7929 PM_CALL_NODE_FLAGS_SAFE_NAVIGATION = 4,
7930
7932 PM_CALL_NODE_FLAGS_VARIABLE_CALL = 8,
7933
7935 PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE = 16,
7936
7938 PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY = 32,
7939
7940 PM_CALL_NODE_FLAGS_LAST,
7941} pm_call_node_flags_t;
7942
7946typedef enum pm_encoding_flags {
7948 PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING = 4,
7949
7951 PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING = 8,
7952
7953 PM_ENCODING_FLAGS_LAST,
7954} pm_encoding_flags_t;
7955
7959typedef enum pm_integer_base_flags {
7961 PM_INTEGER_BASE_FLAGS_BINARY = 4,
7962
7964 PM_INTEGER_BASE_FLAGS_DECIMAL = 8,
7965
7967 PM_INTEGER_BASE_FLAGS_OCTAL = 16,
7968
7970 PM_INTEGER_BASE_FLAGS_HEXADECIMAL = 32,
7971
7972 PM_INTEGER_BASE_FLAGS_LAST,
7973} pm_integer_base_flags_t;
7974
7978typedef enum pm_interpolated_string_node_flags {
7980 PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN = 4,
7981
7983 PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE = 8,
7984
7985 PM_INTERPOLATED_STRING_NODE_FLAGS_LAST,
7986} pm_interpolated_string_node_flags_t;
7987
7991typedef enum pm_keyword_hash_node_flags {
7993 PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS = 4,
7994
7995 PM_KEYWORD_HASH_NODE_FLAGS_LAST,
7996} pm_keyword_hash_node_flags_t;
7997
8001typedef enum pm_loop_flags {
8003 PM_LOOP_FLAGS_BEGIN_MODIFIER = 4,
8004
8005 PM_LOOP_FLAGS_LAST,
8006} pm_loop_flags_t;
8007
8011typedef enum pm_parameter_flags {
8013 PM_PARAMETER_FLAGS_REPEATED_PARAMETER = 4,
8014
8015 PM_PARAMETER_FLAGS_LAST,
8016} pm_parameter_flags_t;
8017
8021typedef enum pm_parentheses_node_flags {
8023 PM_PARENTHESES_NODE_FLAGS_MULTIPLE_STATEMENTS = 4,
8024
8025 PM_PARENTHESES_NODE_FLAGS_LAST,
8026} pm_parentheses_node_flags_t;
8027
8031typedef enum pm_range_flags {
8033 PM_RANGE_FLAGS_EXCLUDE_END = 4,
8034
8035 PM_RANGE_FLAGS_LAST,
8036} pm_range_flags_t;
8037
8041typedef enum pm_regular_expression_flags {
8043 PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 4,
8044
8046 PM_REGULAR_EXPRESSION_FLAGS_EXTENDED = 8,
8047
8049 PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 16,
8050
8052 PM_REGULAR_EXPRESSION_FLAGS_ONCE = 32,
8053
8055 PM_REGULAR_EXPRESSION_FLAGS_EUC_JP = 64,
8056
8058 PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 128,
8059
8061 PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 256,
8062
8064 PM_REGULAR_EXPRESSION_FLAGS_UTF_8 = 512,
8065
8067 PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING = 1024,
8068
8070 PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING = 2048,
8071
8073 PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING = 4096,
8074
8075 PM_REGULAR_EXPRESSION_FLAGS_LAST,
8076} pm_regular_expression_flags_t;
8077
8081typedef enum pm_shareable_constant_node_flags {
8083 PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL = 4,
8084
8086 PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING = 8,
8087
8089 PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY = 16,
8090
8091 PM_SHAREABLE_CONSTANT_NODE_FLAGS_LAST,
8092} pm_shareable_constant_node_flags_t;
8093
8097typedef enum pm_string_flags {
8099 PM_STRING_FLAGS_FORCED_UTF8_ENCODING = 4,
8100
8102 PM_STRING_FLAGS_FORCED_BINARY_ENCODING = 8,
8103
8105 PM_STRING_FLAGS_FROZEN = 16,
8106
8108 PM_STRING_FLAGS_MUTABLE = 32,
8109
8110 PM_STRING_FLAGS_LAST,
8111} pm_string_flags_t;
8112
8116typedef enum pm_symbol_flags {
8118 PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING = 4,
8119
8121 PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING = 8,
8122
8124 PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING = 16,
8125
8126 PM_SYMBOL_FLAGS_LAST,
8127} pm_symbol_flags_t;
8128
8135#define PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS 0
8136
8137#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:1127
PM_NODE_ALIGNAS struct pm_node * new_name
AliasGlobalVariableNode::new_name.
Definition ast.h:1139
pm_node_t base
The embedded base node.
Definition ast.h:1129
pm_location_t keyword_loc
AliasGlobalVariableNode::keyword_loc.
Definition ast.h:1159
PM_NODE_ALIGNAS struct pm_node * old_name
AliasGlobalVariableNode::old_name.
Definition ast.h:1149
AliasMethodNode.
Definition ast.h:1174
PM_NODE_ALIGNAS struct pm_node * old_name
AliasMethodNode::old_name.
Definition ast.h:1208
pm_node_t base
The embedded base node.
Definition ast.h:1176
pm_location_t keyword_loc
AliasMethodNode::keyword_loc.
Definition ast.h:1218
PM_NODE_ALIGNAS struct pm_node * new_name
AliasMethodNode::new_name.
Definition ast.h:1192
AlternationPatternNode.
Definition ast.h:1233
pm_location_t operator_loc
AlternationPatternNode::operator_loc.
Definition ast.h:1265
PM_NODE_ALIGNAS struct pm_node * left
AlternationPatternNode::left.
Definition ast.h:1245
pm_node_t base
The embedded base node.
Definition ast.h:1235
PM_NODE_ALIGNAS struct pm_node * right
AlternationPatternNode::right.
Definition ast.h:1255
AndNode.
Definition ast.h:1280
PM_NODE_ALIGNAS struct pm_node * left
AndNode::left.
Definition ast.h:1295
PM_NODE_ALIGNAS struct pm_node * right
AndNode::right.
Definition ast.h:1308
pm_location_t operator_loc
AndNode::operator_loc.
Definition ast.h:1318
pm_node_t base
The embedded base node.
Definition ast.h:1282
ArgumentsNode.
Definition ast.h:1340
pm_node_t base
The embedded base node.
Definition ast.h:1342
struct pm_node_list arguments
ArgumentsNode::arguments.
Definition ast.h:1352
ArrayNode.
Definition ast.h:1370
pm_node_t base
The embedded base node.
Definition ast.h:1372
pm_location_t closing_loc
ArrayNode::closing_loc.
Definition ast.h:1403
struct pm_node_list elements
ArrayNode::elements.
Definition ast.h:1379
pm_location_t opening_loc
ArrayNode::opening_loc.
Definition ast.h:1391
ArrayPatternNode.
Definition ast.h:1430
struct pm_node_list requireds
ArrayPatternNode::requireds.
Definition ast.h:1458
PM_NODE_ALIGNAS struct pm_node * rest
ArrayPatternNode::rest.
Definition ast.h:1468
PM_NODE_ALIGNAS struct pm_node * constant
ArrayPatternNode::constant.
Definition ast.h:1448
pm_location_t opening_loc
ArrayPatternNode::opening_loc.
Definition ast.h:1488
pm_node_t base
The embedded base node.
Definition ast.h:1432
pm_location_t closing_loc
ArrayPatternNode::closing_loc.
Definition ast.h:1498
struct pm_node_list posts
ArrayPatternNode::posts.
Definition ast.h:1478
AssocNode.
Definition ast.h:1513
pm_node_t base
The embedded base node.
Definition ast.h:1515
PM_NODE_ALIGNAS struct pm_node * value
AssocNode::value.
Definition ast.h:1544
PM_NODE_ALIGNAS struct pm_node * key
AssocNode::key.
Definition ast.h:1531
pm_location_t operator_loc
AssocNode::operator_loc.
Definition ast.h:1554
AssocSplatNode.
Definition ast.h:1569
pm_node_t base
The embedded base node.
Definition ast.h:1571
pm_location_t operator_loc
AssocSplatNode::operator_loc.
Definition ast.h:1591
PM_NODE_ALIGNAS struct pm_node * value
AssocSplatNode::value.
Definition ast.h:1581
BackReferenceReadNode.
Definition ast.h:1606
pm_constant_id_t name
BackReferenceReadNode::name.
Definition ast.h:1619
pm_node_t base
The embedded base node.
Definition ast.h:1608
BeginNode.
Definition ast.h:1636
PM_NODE_ALIGNAS struct pm_else_node * else_clause
BeginNode::else_clause.
Definition ast.h:1678
PM_NODE_ALIGNAS struct pm_ensure_node * ensure_clause
BeginNode::ensure_clause.
Definition ast.h:1688
PM_NODE_ALIGNAS struct pm_statements_node * statements
BeginNode::statements.
Definition ast.h:1658
PM_NODE_ALIGNAS struct pm_rescue_node * rescue_clause
BeginNode::rescue_clause.
Definition ast.h:1668
pm_node_t base
The embedded base node.
Definition ast.h:1638
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
BlockArgumentNode.
Definition ast.h:1713
PM_NODE_ALIGNAS struct pm_node * expression
BlockArgumentNode::expression.
Definition ast.h:1725
pm_node_t base
The embedded base node.
Definition ast.h:1715
pm_location_t operator_loc
BlockArgumentNode::operator_loc.
Definition ast.h:1735
BlockLocalVariableNode.
Definition ast.h:1753
pm_node_t base
The embedded base node.
Definition ast.h:1755
pm_constant_id_t name
BlockLocalVariableNode::name.
Definition ast.h:1765
BlockNode.
Definition ast.h:1780
pm_node_t base
The embedded base node.
Definition ast.h:1782
pm_location_t closing_loc
BlockNode::closing_loc.
Definition ast.h:1836
PM_NODE_ALIGNAS struct pm_node * parameters
BlockNode::parameters.
Definition ast.h:1806
pm_location_t opening_loc
BlockNode::opening_loc.
Definition ast.h:1826
pm_constant_id_list_t locals
BlockNode::locals.
Definition ast.h:1792
PM_NODE_ALIGNAS struct pm_node * body
BlockNode::body.
Definition ast.h:1816
BlockParameterNode.
Definition ast.h:1855
pm_location_t operator_loc
BlockParameterNode::operator_loc.
Definition ast.h:1889
pm_location_t name_loc
BlockParameterNode::name_loc.
Definition ast.h:1878
pm_constant_id_t name
BlockParameterNode::name.
Definition ast.h:1868
pm_node_t base
The embedded base node.
Definition ast.h:1857
BlockParametersNode.
Definition ast.h:1908
pm_node_t base
The embedded base node.
Definition ast.h:1910
struct pm_node_list locals
BlockParametersNode::locals.
Definition ast.h:1938
PM_NODE_ALIGNAS struct pm_parameters_node * parameters
BlockParametersNode::parameters.
Definition ast.h:1924
pm_location_t closing_loc
BlockParametersNode::closing_loc.
Definition ast.h:1966
pm_location_t opening_loc
BlockParametersNode::opening_loc.
Definition ast.h:1952
BreakNode.
Definition ast.h:1981
pm_location_t keyword_loc
BreakNode::keyword_loc.
Definition ast.h:2003
pm_node_t base
The embedded base node.
Definition ast.h:1983
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
BreakNode::arguments.
Definition ast.h:1993
CallAndWriteNode.
Definition ast.h:2024
pm_location_t operator_loc
CallAndWriteNode::operator_loc.
Definition ast.h:2086
PM_NODE_ALIGNAS struct pm_node * receiver
CallAndWriteNode::receiver.
Definition ast.h:2036
pm_node_t base
The embedded base node.
Definition ast.h:2026
PM_NODE_ALIGNAS struct pm_node * value
CallAndWriteNode::value.
Definition ast.h:2096
pm_location_t call_operator_loc
CallAndWriteNode::call_operator_loc.
Definition ast.h:2046
pm_location_t message_loc
CallAndWriteNode::message_loc.
Definition ast.h:2056
pm_constant_id_t read_name
CallAndWriteNode::read_name.
Definition ast.h:2066
pm_constant_id_t write_name
CallAndWriteNode::write_name.
Definition ast.h:2076
CallNode.
Definition ast.h:2132
pm_location_t opening_loc
CallNode::opening_loc.
Definition ast.h:2193
pm_location_t closing_loc
CallNode::closing_loc.
Definition ast.h:2213
pm_constant_id_t name
CallNode::name.
Definition ast.h:2173
pm_node_t base
The embedded base node.
Definition ast.h:2134
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
CallNode::arguments.
Definition ast.h:2203
pm_location_t equal_loc
CallNode::equal_loc.
Definition ast.h:2226
pm_location_t call_operator_loc
CallNode::call_operator_loc.
Definition ast.h:2163
pm_location_t message_loc
CallNode::message_loc.
Definition ast.h:2183
PM_NODE_ALIGNAS struct pm_node * block
CallNode::block.
Definition ast.h:2236
PM_NODE_ALIGNAS struct pm_node * receiver
CallNode::receiver.
Definition ast.h:2150
CallOperatorWriteNode.
Definition ast.h:2257
pm_constant_id_t read_name
CallOperatorWriteNode::read_name.
Definition ast.h:2299
pm_constant_id_t binary_operator
CallOperatorWriteNode::binary_operator.
Definition ast.h:2319
pm_location_t binary_operator_loc
CallOperatorWriteNode::binary_operator_loc.
Definition ast.h:2329
pm_node_t base
The embedded base node.
Definition ast.h:2259
pm_constant_id_t write_name
CallOperatorWriteNode::write_name.
Definition ast.h:2309
pm_location_t message_loc
CallOperatorWriteNode::message_loc.
Definition ast.h:2289
PM_NODE_ALIGNAS struct pm_node * receiver
CallOperatorWriteNode::receiver.
Definition ast.h:2269
PM_NODE_ALIGNAS struct pm_node * value
CallOperatorWriteNode::value.
Definition ast.h:2339
pm_location_t call_operator_loc
CallOperatorWriteNode::call_operator_loc.
Definition ast.h:2279
CallOrWriteNode.
Definition ast.h:2360
pm_location_t operator_loc
CallOrWriteNode::operator_loc.
Definition ast.h:2422
pm_location_t call_operator_loc
CallOrWriteNode::call_operator_loc.
Definition ast.h:2382
PM_NODE_ALIGNAS struct pm_node * receiver
CallOrWriteNode::receiver.
Definition ast.h:2372
pm_node_t base
The embedded base node.
Definition ast.h:2362
PM_NODE_ALIGNAS struct pm_node * value
CallOrWriteNode::value.
Definition ast.h:2432
pm_constant_id_t write_name
CallOrWriteNode::write_name.
Definition ast.h:2412
pm_constant_id_t read_name
CallOrWriteNode::read_name.
Definition ast.h:2402
pm_location_t message_loc
CallOrWriteNode::message_loc.
Definition ast.h:2392
CallTargetNode.
Definition ast.h:2461
pm_node_t base
The embedded base node.
Definition ast.h:2463
pm_constant_id_t name
CallTargetNode::name.
Definition ast.h:2493
PM_NODE_ALIGNAS 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
pm_location_t operator_loc
CapturePatternNode::operator_loc.
Definition ast.h:2550
pm_node_t base
The embedded base node.
Definition ast.h:2520
PM_NODE_ALIGNAS struct pm_node * value
CapturePatternNode::value.
Definition ast.h:2530
PM_NODE_ALIGNAS struct pm_local_variable_target_node * target
CapturePatternNode::target.
Definition ast.h:2540
CaseMatchNode.
Definition ast.h:2567
pm_location_t end_keyword_loc
CaseMatchNode::end_keyword_loc.
Definition ast.h:2619
struct pm_node_list conditions
CaseMatchNode::conditions.
Definition ast.h:2589
pm_node_t base
The embedded base node.
Definition ast.h:2569
pm_location_t case_keyword_loc
CaseMatchNode::case_keyword_loc.
Definition ast.h:2609
PM_NODE_ALIGNAS struct pm_node * predicate
CaseMatchNode::predicate.
Definition ast.h:2579
PM_NODE_ALIGNAS struct pm_else_node * else_clause
CaseMatchNode::else_clause.
Definition ast.h:2599
CaseNode.
Definition ast.h:2636
PM_NODE_ALIGNAS struct pm_else_node * else_clause
CaseNode::else_clause.
Definition ast.h:2668
struct pm_node_list conditions
CaseNode::conditions.
Definition ast.h:2658
PM_NODE_ALIGNAS struct pm_node * predicate
CaseNode::predicate.
Definition ast.h:2648
pm_node_t base
The embedded base node.
Definition ast.h:2638
pm_location_t case_keyword_loc
CaseNode::case_keyword_loc.
Definition ast.h:2678
pm_location_t end_keyword_loc
CaseNode::end_keyword_loc.
Definition ast.h:2688
ClassNode.
Definition ast.h:2703
pm_location_t class_keyword_loc
ClassNode::class_keyword_loc.
Definition ast.h:2720
pm_location_t end_keyword_loc
ClassNode::end_keyword_loc.
Definition ast.h:2765
pm_constant_id_list_t locals
ClassNode::locals.
Definition ast.h:2710
PM_NODE_ALIGNAS struct pm_node * superclass
ClassNode::superclass.
Definition ast.h:2745
pm_location_t inheritance_operator_loc
ClassNode::inheritance_operator_loc.
Definition ast.h:2735
pm_constant_id_t name
ClassNode::name.
Definition ast.h:2774
pm_node_t base
The embedded base node.
Definition ast.h:2705
PM_NODE_ALIGNAS struct pm_node * constant_path
ClassNode::constant_path.
Definition ast.h:2725
PM_NODE_ALIGNAS struct pm_node * body
ClassNode::body.
Definition ast.h:2755
ClassVariableAndWriteNode.
Definition ast.h:2789
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableAndWriteNode::value.
Definition ast.h:2831
pm_constant_id_t name
ClassVariableAndWriteNode::name.
Definition ast.h:2801
pm_location_t operator_loc
ClassVariableAndWriteNode::operator_loc.
Definition ast.h:2821
pm_node_t base
The embedded base node.
Definition ast.h:2791
pm_location_t name_loc
ClassVariableAndWriteNode::name_loc.
Definition ast.h:2811
ClassVariableOperatorWriteNode.
Definition ast.h:2846
pm_node_t base
The embedded base node.
Definition ast.h:2848
pm_constant_id_t name
ClassVariableOperatorWriteNode::name.
Definition ast.h:2853
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableOperatorWriteNode::value.
Definition ast.h:2868
pm_location_t name_loc
ClassVariableOperatorWriteNode::name_loc.
Definition ast.h:2858
pm_constant_id_t binary_operator
ClassVariableOperatorWriteNode::binary_operator.
Definition ast.h:2873
pm_location_t binary_operator_loc
ClassVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:2863
ClassVariableOrWriteNode.
Definition ast.h:2888
pm_node_t base
The embedded base node.
Definition ast.h:2890
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableOrWriteNode::value.
Definition ast.h:2910
pm_location_t name_loc
ClassVariableOrWriteNode::name_loc.
Definition ast.h:2900
pm_location_t operator_loc
ClassVariableOrWriteNode::operator_loc.
Definition ast.h:2905
pm_constant_id_t name
ClassVariableOrWriteNode::name.
Definition ast.h:2895
ClassVariableReadNode.
Definition ast.h:2925
pm_node_t base
The embedded base node.
Definition ast.h:2927
pm_constant_id_t name
ClassVariableReadNode::name.
Definition ast.h:2938
ClassVariableTargetNode.
Definition ast.h:2953
pm_node_t base
The embedded base node.
Definition ast.h:2955
pm_constant_id_t name
ClassVariableTargetNode::name.
Definition ast.h:2960
ClassVariableWriteNode.
Definition ast.h:2975
pm_location_t name_loc
ClassVariableWriteNode::name_loc.
Definition ast.h:2998
PM_NODE_ALIGNAS struct pm_node * value
ClassVariableWriteNode::value.
Definition ast.h:3011
pm_node_t base
The embedded base node.
Definition ast.h:2977
pm_location_t operator_loc
ClassVariableWriteNode::operator_loc.
Definition ast.h:3021
pm_constant_id_t name
ClassVariableWriteNode::name.
Definition ast.h:2988
ConstantAndWriteNode.
Definition ast.h:3036
pm_location_t operator_loc
ConstantAndWriteNode::operator_loc.
Definition ast.h:3053
PM_NODE_ALIGNAS struct pm_node * value
ConstantAndWriteNode::value.
Definition ast.h:3058
pm_location_t name_loc
ConstantAndWriteNode::name_loc.
Definition ast.h:3048
pm_constant_id_t name
ConstantAndWriteNode::name.
Definition ast.h:3043
pm_node_t base
The embedded base node.
Definition ast.h:3038
A list of constant IDs.
ConstantOperatorWriteNode.
Definition ast.h:3073
pm_constant_id_t name
ConstantOperatorWriteNode::name.
Definition ast.h:3080
pm_location_t name_loc
ConstantOperatorWriteNode::name_loc.
Definition ast.h:3085
pm_constant_id_t binary_operator
ConstantOperatorWriteNode::binary_operator.
Definition ast.h:3100
pm_location_t binary_operator_loc
ConstantOperatorWriteNode::binary_operator_loc.
Definition ast.h:3090
PM_NODE_ALIGNAS struct pm_node * value
ConstantOperatorWriteNode::value.
Definition ast.h:3095
pm_node_t base
The embedded base node.
Definition ast.h:3075
ConstantOrWriteNode.
Definition ast.h:3115
pm_location_t operator_loc
ConstantOrWriteNode::operator_loc.
Definition ast.h:3132
PM_NODE_ALIGNAS struct pm_node * value
ConstantOrWriteNode::value.
Definition ast.h:3137
pm_location_t name_loc
ConstantOrWriteNode::name_loc.
Definition ast.h:3127
pm_constant_id_t name
ConstantOrWriteNode::name.
Definition ast.h:3122
pm_node_t base
The embedded base node.
Definition ast.h:3117
ConstantPathAndWriteNode.
Definition ast.h:3152
PM_NODE_ALIGNAS struct pm_constant_path_node * target
ConstantPathAndWriteNode::target.
Definition ast.h:3159
pm_node_t base
The embedded base node.
Definition ast.h:3154
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathAndWriteNode::value.
Definition ast.h:3169
pm_location_t operator_loc
ConstantPathAndWriteNode::operator_loc.
Definition ast.h:3164
ConstantPathNode.
Definition ast.h:3184
pm_location_t delimiter_loc
ConstantPathNode::delimiter_loc.
Definition ast.h:3222
pm_node_t base
The embedded base node.
Definition ast.h:3186
PM_NODE_ALIGNAS struct pm_node * parent
ConstantPathNode::parent.
Definition ast.h:3202
pm_location_t name_loc
ConstantPathNode::name_loc.
Definition ast.h:3235
pm_constant_id_t name
ConstantPathNode::name.
Definition ast.h:3209
ConstantPathOperatorWriteNode.
Definition ast.h:3250
PM_NODE_ALIGNAS struct pm_constant_path_node * target
ConstantPathOperatorWriteNode::target.
Definition ast.h:3257
pm_constant_id_t binary_operator
ConstantPathOperatorWriteNode::binary_operator.
Definition ast.h:3272
pm_node_t base
The embedded base node.
Definition ast.h:3252
pm_location_t binary_operator_loc
ConstantPathOperatorWriteNode::binary_operator_loc.
Definition ast.h:3262
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathOperatorWriteNode::value.
Definition ast.h:3267
ConstantPathOrWriteNode.
Definition ast.h:3287
pm_location_t operator_loc
ConstantPathOrWriteNode::operator_loc.
Definition ast.h:3299
pm_node_t base
The embedded base node.
Definition ast.h:3289
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathOrWriteNode::value.
Definition ast.h:3304
PM_NODE_ALIGNAS struct pm_constant_path_node * target
ConstantPathOrWriteNode::target.
Definition ast.h:3294
ConstantPathTargetNode.
Definition ast.h:3319
pm_node_t base
The embedded base node.
Definition ast.h:3321
pm_location_t delimiter_loc
ConstantPathTargetNode::delimiter_loc.
Definition ast.h:3336
pm_constant_id_t name
ConstantPathTargetNode::name.
Definition ast.h:3331
PM_NODE_ALIGNAS struct pm_node * parent
ConstantPathTargetNode::parent.
Definition ast.h:3326
pm_location_t name_loc
ConstantPathTargetNode::name_loc.
Definition ast.h:3341
ConstantPathWriteNode.
Definition ast.h:3362
PM_NODE_ALIGNAS struct pm_node * value
ConstantPathWriteNode::value.
Definition ast.h:3397
pm_location_t operator_loc
ConstantPathWriteNode::operator_loc.
Definition ast.h:3387
pm_node_t base
The embedded base node.
Definition ast.h:3364
PM_NODE_ALIGNAS struct pm_constant_path_node * target
ConstantPathWriteNode::target.
Definition ast.h:3377
ConstantReadNode.
Definition ast.h:3412
pm_node_t base
The embedded base node.
Definition ast.h:3414
pm_constant_id_t name
ConstantReadNode::name.
Definition ast.h:3425
ConstantTargetNode.
Definition ast.h:3440
pm_node_t base
The embedded base node.
Definition ast.h:3442
pm_constant_id_t name
ConstantTargetNode::name.
Definition ast.h:3447
ConstantWriteNode.
Definition ast.h:3462
pm_node_t base
The embedded base node.
Definition ast.h:3464
PM_NODE_ALIGNAS struct pm_node * value
ConstantWriteNode::value.
Definition ast.h:3498
pm_constant_id_t name
ConstantWriteNode::name.
Definition ast.h:3475
pm_location_t name_loc
ConstantWriteNode::name_loc.
Definition ast.h:3485
pm_location_t operator_loc
ConstantWriteNode::operator_loc.
Definition ast.h:3508
DefNode.
Definition ast.h:3524
pm_location_t end_keyword_loc
DefNode::end_keyword_loc.
Definition ast.h:3586
pm_constant_id_t name
DefNode::name.
Definition ast.h:3531
pm_location_t name_loc
DefNode::name_loc.
Definition ast.h:3536
pm_location_t rparen_loc
DefNode::rparen_loc.
Definition ast.h:3576
PM_NODE_ALIGNAS struct pm_parameters_node * parameters
DefNode::parameters.
Definition ast.h:3546
pm_location_t equal_loc
DefNode::equal_loc.
Definition ast.h:3581
pm_location_t def_keyword_loc
DefNode::def_keyword_loc.
Definition ast.h:3561
pm_node_t base
The embedded base node.
Definition ast.h:3526
pm_location_t lparen_loc
DefNode::lparen_loc.
Definition ast.h:3571
PM_NODE_ALIGNAS struct pm_node * receiver
DefNode::receiver.
Definition ast.h:3541
PM_NODE_ALIGNAS struct pm_node * body
DefNode::body.
Definition ast.h:3551
pm_location_t operator_loc
DefNode::operator_loc.
Definition ast.h:3566
pm_constant_id_list_t locals
DefNode::locals.
Definition ast.h:3556
DefinedNode.
Definition ast.h:3601
PM_NODE_ALIGNAS struct pm_node * value
DefinedNode::value.
Definition ast.h:3613
pm_location_t lparen_loc
DefinedNode::lparen_loc.
Definition ast.h:3608
pm_node_t base
The embedded base node.
Definition ast.h:3603
pm_location_t rparen_loc
DefinedNode::rparen_loc.
Definition ast.h:3618
pm_location_t keyword_loc
DefinedNode::keyword_loc.
Definition ast.h:3623
ElseNode.
Definition ast.h:3638
pm_location_t else_keyword_loc
ElseNode::else_keyword_loc.
Definition ast.h:3645
pm_node_t base
The embedded base node.
Definition ast.h:3640
PM_NODE_ALIGNAS struct pm_statements_node * statements
ElseNode::statements.
Definition ast.h:3650
pm_location_t end_keyword_loc
ElseNode::end_keyword_loc.
Definition ast.h:3655
EmbeddedStatementsNode.
Definition ast.h:3670
PM_NODE_ALIGNAS struct pm_statements_node * statements
EmbeddedStatementsNode::statements.
Definition ast.h:3682
pm_location_t closing_loc
EmbeddedStatementsNode::closing_loc.
Definition ast.h:3687
pm_node_t base
The embedded base node.
Definition ast.h:3672
pm_location_t opening_loc
EmbeddedStatementsNode::opening_loc.
Definition ast.h:3677
EmbeddedVariableNode.
Definition ast.h:3702
PM_NODE_ALIGNAS struct pm_node * variable
EmbeddedVariableNode::variable.
Definition ast.h:3714
pm_location_t operator_loc
EmbeddedVariableNode::operator_loc.
Definition ast.h:3709
pm_node_t base
The embedded base node.
Definition ast.h:3704
EnsureNode.
Definition ast.h:3733
PM_NODE_ALIGNAS struct pm_statements_node * statements
EnsureNode::statements.
Definition ast.h:3745
pm_node_t base
The embedded base node.
Definition ast.h:3735
pm_location_t ensure_keyword_loc
EnsureNode::ensure_keyword_loc.
Definition ast.h:3740
pm_location_t end_keyword_loc
EnsureNode::end_keyword_loc.
Definition ast.h:3750
FalseNode.
Definition ast.h:3765
pm_node_t base
The embedded base node.
Definition ast.h:3767
FindPatternNode.
Definition ast.h:3791
PM_NODE_ALIGNAS struct pm_splat_node * left
FindPatternNode::left.
Definition ast.h:3816
pm_location_t opening_loc
FindPatternNode::opening_loc.
Definition ast.h:3855
pm_node_t base
The embedded base node.
Definition ast.h:3793
PM_NODE_ALIGNAS struct pm_node * constant
FindPatternNode::constant.
Definition ast.h:3803
struct pm_node_list requireds
FindPatternNode::requireds.
Definition ast.h:3829
pm_location_t closing_loc
FindPatternNode::closing_loc.
Definition ast.h:3868
PM_NODE_ALIGNAS struct pm_node * right
FindPatternNode::right.
Definition ast.h:3842
FlipFlopNode.
Definition ast.h:3886
PM_NODE_ALIGNAS struct pm_node * left
FlipFlopNode::left.
Definition ast.h:3893
pm_node_t base
The embedded base node.
Definition ast.h:3888
pm_location_t operator_loc
FlipFlopNode::operator_loc.
Definition ast.h:3903
PM_NODE_ALIGNAS struct pm_node * right
FlipFlopNode::right.
Definition ast.h:3898
FloatNode.
Definition ast.h:3918
double value
FloatNode::value.
Definition ast.h:3927
pm_node_t base
The embedded base node.
Definition ast.h:3920
ForNode.
Definition ast.h:3942
PM_NODE_ALIGNAS struct pm_node * index
ForNode::index.
Definition ast.h:3954
PM_NODE_ALIGNAS struct pm_node * collection
ForNode::collection.
Definition ast.h:3964
pm_node_t base
The embedded base node.
Definition ast.h:3944
PM_NODE_ALIGNAS struct pm_statements_node * statements
ForNode::statements.
Definition ast.h:3976
pm_location_t end_keyword_loc
ForNode::end_keyword_loc.
Definition ast.h:4016
pm_location_t for_keyword_loc
ForNode::for_keyword_loc.
Definition ast.h:3986
pm_location_t do_keyword_loc
ForNode::do_keyword_loc.
Definition ast.h:4006
pm_location_t in_keyword_loc
ForNode::in_keyword_loc.
Definition ast.h:3996
ForwardingArgumentsNode.
Definition ast.h:4033
pm_node_t base
The embedded base node.
Definition ast.h:4035
ForwardingParameterNode.
Definition ast.h:4051
pm_node_t base
The embedded base node.
Definition ast.h:4053
ForwardingSuperNode.
Definition ast.h:4073
pm_node_t base
The embedded base node.
Definition ast.h:4075
PM_NODE_ALIGNAS struct pm_block_node * block
ForwardingSuperNode::block.
Definition ast.h:4082
GlobalVariableAndWriteNode.
Definition ast.h:4097
pm_location_t operator_loc
GlobalVariableAndWriteNode::operator_loc.
Definition ast.h:4114
pm_node_t base
The embedded base node.
Definition ast.h:4099
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableAndWriteNode::value.
Definition ast.h:4119
pm_location_t name_loc
GlobalVariableAndWriteNode::name_loc.
Definition ast.h:4109
pm_constant_id_t name
GlobalVariableAndWriteNode::name.
Definition ast.h:4104
GlobalVariableOperatorWriteNode.
Definition ast.h:4134
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableOperatorWriteNode::value.
Definition ast.h:4156
pm_constant_id_t name
GlobalVariableOperatorWriteNode::name.
Definition ast.h:4141
pm_constant_id_t binary_operator
GlobalVariableOperatorWriteNode::binary_operator.
Definition ast.h:4161
pm_location_t name_loc
GlobalVariableOperatorWriteNode::name_loc.
Definition ast.h:4146
pm_node_t base
The embedded base node.
Definition ast.h:4136
pm_location_t binary_operator_loc
GlobalVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:4151
GlobalVariableOrWriteNode.
Definition ast.h:4176
pm_constant_id_t name
GlobalVariableOrWriteNode::name.
Definition ast.h:4183
pm_location_t name_loc
GlobalVariableOrWriteNode::name_loc.
Definition ast.h:4188
pm_node_t base
The embedded base node.
Definition ast.h:4178
pm_location_t operator_loc
GlobalVariableOrWriteNode::operator_loc.
Definition ast.h:4193
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableOrWriteNode::value.
Definition ast.h:4198
GlobalVariableReadNode.
Definition ast.h:4213
pm_node_t base
The embedded base node.
Definition ast.h:4215
pm_constant_id_t name
GlobalVariableReadNode::name.
Definition ast.h:4226
GlobalVariableTargetNode.
Definition ast.h:4241
pm_constant_id_t name
GlobalVariableTargetNode::name.
Definition ast.h:4248
pm_node_t base
The embedded base node.
Definition ast.h:4243
GlobalVariableWriteNode.
Definition ast.h:4263
pm_location_t name_loc
GlobalVariableWriteNode::name_loc.
Definition ast.h:4286
pm_location_t operator_loc
GlobalVariableWriteNode::operator_loc.
Definition ast.h:4309
pm_constant_id_t name
GlobalVariableWriteNode::name.
Definition ast.h:4276
pm_node_t base
The embedded base node.
Definition ast.h:4265
PM_NODE_ALIGNAS struct pm_node * value
GlobalVariableWriteNode::value.
Definition ast.h:4299
HashNode.
Definition ast.h:4324
struct pm_node_list elements
HashNode::elements.
Definition ast.h:4349
pm_node_t base
The embedded base node.
Definition ast.h:4326
pm_location_t closing_loc
HashNode::closing_loc.
Definition ast.h:4359
pm_location_t opening_loc
HashNode::opening_loc.
Definition ast.h:4336
HashPatternNode.
Definition ast.h:4383
PM_NODE_ALIGNAS struct pm_node * constant
HashPatternNode::constant.
Definition ast.h:4398
struct pm_node_list elements
HashPatternNode::elements.
Definition ast.h:4408
pm_location_t opening_loc
HashPatternNode::opening_loc.
Definition ast.h:4437
pm_node_t base
The embedded base node.
Definition ast.h:4385
pm_location_t closing_loc
HashPatternNode::closing_loc.
Definition ast.h:4450
PM_NODE_ALIGNAS struct pm_node * rest
HashPatternNode::rest.
Definition ast.h:4424
IfNode.
Definition ast.h:4471
PM_NODE_ALIGNAS struct pm_node * predicate
IfNode::predicate.
Definition ast.h:4503
pm_location_t end_keyword_loc
IfNode::end_keyword_loc.
Definition ast.h:4561
pm_location_t if_keyword_loc
IfNode::if_keyword_loc.
Definition ast.h:4485
PM_NODE_ALIGNAS struct pm_statements_node * statements
IfNode::statements.
Definition ast.h:4530
pm_node_t base
The embedded base node.
Definition ast.h:4473
pm_location_t then_keyword_loc
IfNode::then_keyword_loc.
Definition ast.h:4516
PM_NODE_ALIGNAS struct pm_node * subsequent
IfNode::subsequent.
Definition ast.h:4549
ImaginaryNode.
Definition ast.h:4576
pm_node_t base
The embedded base node.
Definition ast.h:4578
PM_NODE_ALIGNAS struct pm_node * numeric
ImaginaryNode::numeric.
Definition ast.h:4583
ImplicitNode.
Definition ast.h:4604
pm_node_t base
The embedded base node.
Definition ast.h:4606
PM_NODE_ALIGNAS struct pm_node * value
ImplicitNode::value.
Definition ast.h:4611
ImplicitRestNode.
Definition ast.h:4635
pm_node_t base
The embedded base node.
Definition ast.h:4637
InNode.
Definition ast.h:4652
PM_NODE_ALIGNAS struct pm_node * pattern
InNode::pattern.
Definition ast.h:4659
PM_NODE_ALIGNAS struct pm_statements_node * statements
InNode::statements.
Definition ast.h:4664
pm_node_t base
The embedded base node.
Definition ast.h:4654
pm_location_t then_loc
InNode::then_loc.
Definition ast.h:4674
pm_location_t in_loc
InNode::in_loc.
Definition ast.h:4669
IndexAndWriteNode.
Definition ast.h:4695
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
IndexAndWriteNode::arguments.
Definition ast.h:4717
pm_node_t base
The embedded base node.
Definition ast.h:4697
pm_location_t operator_loc
IndexAndWriteNode::operator_loc.
Definition ast.h:4732
pm_location_t closing_loc
IndexAndWriteNode::closing_loc.
Definition ast.h:4722
pm_location_t opening_loc
IndexAndWriteNode::opening_loc.
Definition ast.h:4712
pm_location_t call_operator_loc
IndexAndWriteNode::call_operator_loc.
Definition ast.h:4707
PM_NODE_ALIGNAS struct pm_block_argument_node * block
IndexAndWriteNode::block.
Definition ast.h:4727
PM_NODE_ALIGNAS struct pm_node * receiver
IndexAndWriteNode::receiver.
Definition ast.h:4702
PM_NODE_ALIGNAS struct pm_node * value
IndexAndWriteNode::value.
Definition ast.h:4737
IndexOperatorWriteNode.
Definition ast.h:4758
PM_NODE_ALIGNAS struct pm_block_argument_node * block
IndexOperatorWriteNode::block.
Definition ast.h:4790
pm_node_t base
The embedded base node.
Definition ast.h:4760
PM_NODE_ALIGNAS struct pm_node * receiver
IndexOperatorWriteNode::receiver.
Definition ast.h:4765
pm_location_t binary_operator_loc
IndexOperatorWriteNode::binary_operator_loc.
Definition ast.h:4800
PM_NODE_ALIGNAS struct pm_node * value
IndexOperatorWriteNode::value.
Definition ast.h:4805
pm_location_t opening_loc
IndexOperatorWriteNode::opening_loc.
Definition ast.h:4775
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
IndexOperatorWriteNode::arguments.
Definition ast.h:4780
pm_location_t call_operator_loc
IndexOperatorWriteNode::call_operator_loc.
Definition ast.h:4770
pm_location_t closing_loc
IndexOperatorWriteNode::closing_loc.
Definition ast.h:4785
pm_constant_id_t binary_operator
IndexOperatorWriteNode::binary_operator.
Definition ast.h:4795
IndexOrWriteNode.
Definition ast.h:4826
pm_location_t closing_loc
IndexOrWriteNode::closing_loc.
Definition ast.h:4853
pm_location_t call_operator_loc
IndexOrWriteNode::call_operator_loc.
Definition ast.h:4838
pm_node_t base
The embedded base node.
Definition ast.h:4828
pm_location_t operator_loc
IndexOrWriteNode::operator_loc.
Definition ast.h:4863
pm_location_t opening_loc
IndexOrWriteNode::opening_loc.
Definition ast.h:4843
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
IndexOrWriteNode::arguments.
Definition ast.h:4848
PM_NODE_ALIGNAS struct pm_node * value
IndexOrWriteNode::value.
Definition ast.h:4868
PM_NODE_ALIGNAS struct pm_node * receiver
IndexOrWriteNode::receiver.
Definition ast.h:4833
PM_NODE_ALIGNAS struct pm_block_argument_node * block
IndexOrWriteNode::block.
Definition ast.h:4858
IndexTargetNode.
Definition ast.h:4897
pm_node_t base
The embedded base node.
Definition ast.h:4899
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
IndexTargetNode::arguments.
Definition ast.h:4914
pm_location_t closing_loc
IndexTargetNode::closing_loc.
Definition ast.h:4919
PM_NODE_ALIGNAS struct pm_block_argument_node * block
IndexTargetNode::block.
Definition ast.h:4924
pm_location_t opening_loc
IndexTargetNode::opening_loc.
Definition ast.h:4909
PM_NODE_ALIGNAS struct pm_node * receiver
IndexTargetNode::receiver.
Definition ast.h:4904
InstanceVariableAndWriteNode.
Definition ast.h:4939
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableAndWriteNode::value.
Definition ast.h:4961
pm_location_t operator_loc
InstanceVariableAndWriteNode::operator_loc.
Definition ast.h:4956
pm_location_t name_loc
InstanceVariableAndWriteNode::name_loc.
Definition ast.h:4951
pm_node_t base
The embedded base node.
Definition ast.h:4941
pm_constant_id_t name
InstanceVariableAndWriteNode::name.
Definition ast.h:4946
InstanceVariableOperatorWriteNode.
Definition ast.h:4976
pm_constant_id_t binary_operator
InstanceVariableOperatorWriteNode::binary_operator.
Definition ast.h:5003
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableOperatorWriteNode::value.
Definition ast.h:4998
pm_location_t binary_operator_loc
InstanceVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:4993
pm_constant_id_t name
InstanceVariableOperatorWriteNode::name.
Definition ast.h:4983
pm_node_t base
The embedded base node.
Definition ast.h:4978
pm_location_t name_loc
InstanceVariableOperatorWriteNode::name_loc.
Definition ast.h:4988
InstanceVariableOrWriteNode.
Definition ast.h:5018
pm_location_t operator_loc
InstanceVariableOrWriteNode::operator_loc.
Definition ast.h:5035
pm_node_t base
The embedded base node.
Definition ast.h:5020
pm_location_t name_loc
InstanceVariableOrWriteNode::name_loc.
Definition ast.h:5030
pm_constant_id_t name
InstanceVariableOrWriteNode::name.
Definition ast.h:5025
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableOrWriteNode::value.
Definition ast.h:5040
InstanceVariableReadNode.
Definition ast.h:5055
pm_constant_id_t name
InstanceVariableReadNode::name.
Definition ast.h:5068
pm_node_t base
The embedded base node.
Definition ast.h:5057
InstanceVariableTargetNode.
Definition ast.h:5083
pm_constant_id_t name
InstanceVariableTargetNode::name.
Definition ast.h:5090
pm_node_t base
The embedded base node.
Definition ast.h:5085
InstanceVariableWriteNode.
Definition ast.h:5105
pm_location_t operator_loc
InstanceVariableWriteNode::operator_loc.
Definition ast.h:5151
PM_NODE_ALIGNAS struct pm_node * value
InstanceVariableWriteNode::value.
Definition ast.h:5141
pm_constant_id_t name
InstanceVariableWriteNode::name.
Definition ast.h:5118
pm_node_t base
The embedded base node.
Definition ast.h:5107
pm_location_t name_loc
InstanceVariableWriteNode::name_loc.
Definition ast.h:5128
IntegerNode.
Definition ast.h:5172
pm_integer_t value
IntegerNode::value.
Definition ast.h:5181
pm_node_t base
The embedded base node.
Definition ast.h:5174
A structure represents an arbitrary-sized integer.
Definition pm_integer.h:20
InterpolatedMatchLastLineNode.
Definition ast.h:5209
pm_node_t base
The embedded base node.
Definition ast.h:5211
pm_location_t closing_loc
InterpolatedMatchLastLineNode::closing_loc.
Definition ast.h:5226
struct pm_node_list parts
InterpolatedMatchLastLineNode::parts.
Definition ast.h:5221
pm_location_t opening_loc
InterpolatedMatchLastLineNode::opening_loc.
Definition ast.h:5216
InterpolatedRegularExpressionNode.
Definition ast.h:5254
pm_location_t opening_loc
InterpolatedRegularExpressionNode::opening_loc.
Definition ast.h:5261
struct pm_node_list parts
InterpolatedRegularExpressionNode::parts.
Definition ast.h:5266
pm_node_t base
The embedded base node.
Definition ast.h:5256
pm_location_t closing_loc
InterpolatedRegularExpressionNode::closing_loc.
Definition ast.h:5271
InterpolatedStringNode.
Definition ast.h:5290
pm_node_t base
The embedded base node.
Definition ast.h:5292
pm_location_t closing_loc
InterpolatedStringNode::closing_loc.
Definition ast.h:5307
pm_location_t opening_loc
InterpolatedStringNode::opening_loc.
Definition ast.h:5297
struct pm_node_list parts
InterpolatedStringNode::parts.
Definition ast.h:5302
InterpolatedSymbolNode.
Definition ast.h:5322
struct pm_node_list parts
InterpolatedSymbolNode::parts.
Definition ast.h:5334
pm_location_t closing_loc
InterpolatedSymbolNode::closing_loc.
Definition ast.h:5339
pm_location_t opening_loc
InterpolatedSymbolNode::opening_loc.
Definition ast.h:5329
pm_node_t base
The embedded base node.
Definition ast.h:5324
InterpolatedXStringNode.
Definition ast.h:5354
pm_location_t opening_loc
InterpolatedXStringNode::opening_loc.
Definition ast.h:5361
pm_location_t closing_loc
InterpolatedXStringNode::closing_loc.
Definition ast.h:5371
pm_node_t base
The embedded base node.
Definition ast.h:5356
struct pm_node_list parts
InterpolatedXStringNode::parts.
Definition ast.h:5366
ItLocalVariableReadNode.
Definition ast.h:5386
pm_node_t base
The embedded base node.
Definition ast.h:5388
ItParametersNode.
Definition ast.h:5403
pm_node_t base
The embedded base node.
Definition ast.h:5405
KeywordHashNode.
Definition ast.h:5423
pm_node_t base
The embedded base node.
Definition ast.h:5425
struct pm_node_list elements
KeywordHashNode::elements.
Definition ast.h:5430
KeywordRestParameterNode.
Definition ast.h:5449
pm_node_t base
The embedded base node.
Definition ast.h:5451
pm_constant_id_t name
KeywordRestParameterNode::name.
Definition ast.h:5456
pm_location_t operator_loc
KeywordRestParameterNode::operator_loc.
Definition ast.h:5466
pm_location_t name_loc
KeywordRestParameterNode::name_loc.
Definition ast.h:5461
LambdaNode.
Definition ast.h:5481
pm_location_t closing_loc
LambdaNode::closing_loc.
Definition ast.h:5503
pm_node_t base
The embedded base node.
Definition ast.h:5483
pm_location_t opening_loc
LambdaNode::opening_loc.
Definition ast.h:5498
pm_location_t operator_loc
LambdaNode::operator_loc.
Definition ast.h:5493
pm_constant_id_list_t locals
LambdaNode::locals.
Definition ast.h:5488
PM_NODE_ALIGNAS struct pm_node * body
LambdaNode::body.
Definition ast.h:5513
PM_NODE_ALIGNAS struct pm_node * parameters
LambdaNode::parameters.
Definition ast.h:5508
LocalVariableAndWriteNode.
Definition ast.h:5528
pm_constant_id_t name
LocalVariableAndWriteNode::name.
Definition ast.h:5550
pm_node_t base
The embedded base node.
Definition ast.h:5530
uint32_t depth
LocalVariableAndWriteNode::depth.
Definition ast.h:5555
pm_location_t operator_loc
LocalVariableAndWriteNode::operator_loc.
Definition ast.h:5540
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableAndWriteNode::value.
Definition ast.h:5545
pm_location_t name_loc
LocalVariableAndWriteNode::name_loc.
Definition ast.h:5535
LocalVariableOperatorWriteNode.
Definition ast.h:5570
uint32_t depth
LocalVariableOperatorWriteNode::depth.
Definition ast.h:5602
pm_constant_id_t binary_operator
LocalVariableOperatorWriteNode::binary_operator.
Definition ast.h:5597
pm_node_t base
The embedded base node.
Definition ast.h:5572
pm_location_t name_loc
LocalVariableOperatorWriteNode::name_loc.
Definition ast.h:5577
pm_location_t binary_operator_loc
LocalVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:5582
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableOperatorWriteNode::value.
Definition ast.h:5587
pm_constant_id_t name
LocalVariableOperatorWriteNode::name.
Definition ast.h:5592
LocalVariableOrWriteNode.
Definition ast.h:5617
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableOrWriteNode::value.
Definition ast.h:5634
uint32_t depth
LocalVariableOrWriteNode::depth.
Definition ast.h:5644
pm_location_t operator_loc
LocalVariableOrWriteNode::operator_loc.
Definition ast.h:5629
pm_node_t base
The embedded base node.
Definition ast.h:5619
pm_constant_id_t name
LocalVariableOrWriteNode::name.
Definition ast.h:5639
pm_location_t name_loc
LocalVariableOrWriteNode::name_loc.
Definition ast.h:5624
LocalVariableReadNode.
Definition ast.h:5659
uint32_t depth
LocalVariableReadNode::depth.
Definition ast.h:5689
pm_constant_id_t name
LocalVariableReadNode::name.
Definition ast.h:5676
pm_node_t base
The embedded base node.
Definition ast.h:5661
LocalVariableTargetNode.
Definition ast.h:5707
uint32_t depth
LocalVariableTargetNode::depth.
Definition ast.h:5719
pm_constant_id_t name
LocalVariableTargetNode::name.
Definition ast.h:5714
pm_node_t base
The embedded base node.
Definition ast.h:5709
LocalVariableWriteNode.
Definition ast.h:5734
PM_NODE_ALIGNAS struct pm_node * value
LocalVariableWriteNode::value.
Definition ast.h:5787
pm_location_t operator_loc
LocalVariableWriteNode::operator_loc.
Definition ast.h:5797
pm_location_t name_loc
LocalVariableWriteNode::name_loc.
Definition ast.h:5770
pm_node_t base
The embedded base node.
Definition ast.h:5736
uint32_t depth
LocalVariableWriteNode::depth.
Definition ast.h:5760
pm_constant_id_t name
LocalVariableWriteNode::name.
Definition ast.h:5747
This struct represents a slice in the source code, defined by an offset and a length.
Definition ast.h:543
uint32_t start
The offset of the location from the start of the source.
Definition ast.h:545
uint32_t length
The length of the location.
Definition ast.h:548
MatchLastLineNode.
Definition ast.h:5825
pm_location_t content_loc
MatchLastLineNode::content_loc.
Definition ast.h:5837
pm_location_t opening_loc
MatchLastLineNode::opening_loc.
Definition ast.h:5832
pm_location_t closing_loc
MatchLastLineNode::closing_loc.
Definition ast.h:5842
pm_string_t unescaped
MatchLastLineNode::unescaped.
Definition ast.h:5847
pm_node_t base
The embedded base node.
Definition ast.h:5827
MatchPredicateNode.
Definition ast.h:5862
pm_location_t operator_loc
MatchPredicateNode::operator_loc.
Definition ast.h:5879
PM_NODE_ALIGNAS struct pm_node * pattern
MatchPredicateNode::pattern.
Definition ast.h:5874
PM_NODE_ALIGNAS struct pm_node * value
MatchPredicateNode::value.
Definition ast.h:5869
pm_node_t base
The embedded base node.
Definition ast.h:5864
MatchRequiredNode.
Definition ast.h:5894
pm_node_t base
The embedded base node.
Definition ast.h:5896
pm_location_t operator_loc
MatchRequiredNode::operator_loc.
Definition ast.h:5965
PM_NODE_ALIGNAS struct pm_node * pattern
MatchRequiredNode::pattern.
Definition ast.h:5955
PM_NODE_ALIGNAS struct pm_node * value
MatchRequiredNode::value.
Definition ast.h:5906
MatchWriteNode.
Definition ast.h:5980
pm_node_t base
The embedded base node.
Definition ast.h:5982
PM_NODE_ALIGNAS struct pm_call_node * call
MatchWriteNode::call.
Definition ast.h:5987
struct pm_node_list targets
MatchWriteNode::targets.
Definition ast.h:5992
MissingNode.
Definition ast.h:6004
pm_node_t base
The embedded base node.
Definition ast.h:6006
ModuleNode.
Definition ast.h:6021
pm_location_t end_keyword_loc
ModuleNode::end_keyword_loc.
Definition ast.h:6048
PM_NODE_ALIGNAS struct pm_node * constant_path
ModuleNode::constant_path.
Definition ast.h:6038
PM_NODE_ALIGNAS struct pm_node * body
ModuleNode::body.
Definition ast.h:6043
pm_constant_id_list_t locals
ModuleNode::locals.
Definition ast.h:6028
pm_node_t base
The embedded base node.
Definition ast.h:6023
pm_location_t module_keyword_loc
ModuleNode::module_keyword_loc.
Definition ast.h:6033
pm_constant_id_t name
ModuleNode::name.
Definition ast.h:6053
MultiTargetNode.
Definition ast.h:6073
PM_NODE_ALIGNAS struct pm_node * rest
MultiTargetNode::rest.
Definition ast.h:6110
pm_node_t base
The embedded base node.
Definition ast.h:6075
pm_location_t lparen_loc
MultiTargetNode::lparen_loc.
Definition ast.h:6130
struct pm_node_list lefts
MultiTargetNode::lefts.
Definition ast.h:6090
pm_location_t rparen_loc
MultiTargetNode::rparen_loc.
Definition ast.h:6140
struct pm_node_list rights
MultiTargetNode::rights.
Definition ast.h:6120
MultiWriteNode.
Definition ast.h:6155
pm_location_t rparen_loc
MultiWriteNode::rparen_loc.
Definition ast.h:6222
PM_NODE_ALIGNAS struct pm_node * rest
MultiWriteNode::rest.
Definition ast.h:6192
struct pm_node_list rights
MultiWriteNode::rights.
Definition ast.h:6202
pm_location_t operator_loc
MultiWriteNode::operator_loc.
Definition ast.h:6232
PM_NODE_ALIGNAS struct pm_node * value
MultiWriteNode::value.
Definition ast.h:6242
pm_location_t lparen_loc
MultiWriteNode::lparen_loc.
Definition ast.h:6212
struct pm_node_list lefts
MultiWriteNode::lefts.
Definition ast.h:6172
pm_node_t base
The embedded base node.
Definition ast.h:6157
NextNode.
Definition ast.h:6257
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
NextNode::arguments.
Definition ast.h:6264
pm_node_t base
The embedded base node.
Definition ast.h:6259
pm_location_t keyword_loc
NextNode::keyword_loc.
Definition ast.h:6269
NilNode.
Definition ast.h:6284
pm_node_t base
The embedded base node.
Definition ast.h:6286
NoBlockParameterNode.
Definition ast.h:6302
pm_location_t keyword_loc
NoBlockParameterNode::keyword_loc.
Definition ast.h:6314
pm_node_t base
The embedded base node.
Definition ast.h:6304
pm_location_t operator_loc
NoBlockParameterNode::operator_loc.
Definition ast.h:6309
NoKeywordsParameterNode.
Definition ast.h:6330
pm_location_t keyword_loc
NoKeywordsParameterNode::keyword_loc.
Definition ast.h:6342
pm_location_t operator_loc
NoKeywordsParameterNode::operator_loc.
Definition ast.h:6337
pm_node_t base
The embedded base node.
Definition ast.h:6332
A list of nodes in the source, most often used for lists of children.
Definition ast.h:556
size_t size
The number of nodes in the list.
Definition ast.h:558
struct pm_node ** nodes
The nodes in the list.
Definition ast.h:564
size_t capacity
The capacity of the list that has been allocated.
Definition ast.h:561
This is the base structure that represents a node in the syntax tree.
Definition ast.h:1054
pm_node_type_t type
This represents the type of the node.
Definition ast.h:1059
uint32_t node_id
The unique identifier for this node, which is deterministic based on the source.
Definition ast.h:1071
pm_node_flags_t flags
This represents any flags on the node.
Definition ast.h:1065
pm_location_t location
This is the location of the node in the source.
Definition ast.h:1077
NumberedParametersNode.
Definition ast.h:6357
pm_node_t base
The embedded base node.
Definition ast.h:6359
uint8_t maximum
NumberedParametersNode::maximum.
Definition ast.h:6364
NumberedReferenceReadNode.
Definition ast.h:6379
pm_node_t base
The embedded base node.
Definition ast.h:6381
uint32_t number
NumberedReferenceReadNode::number.
Definition ast.h:6394
OptionalKeywordParameterNode.
Definition ast.h:6413
pm_node_t base
The embedded base node.
Definition ast.h:6415
pm_constant_id_t name
OptionalKeywordParameterNode::name.
Definition ast.h:6420
PM_NODE_ALIGNAS struct pm_node * value
OptionalKeywordParameterNode::value.
Definition ast.h:6430
pm_location_t name_loc
OptionalKeywordParameterNode::name_loc.
Definition ast.h:6425
OptionalParameterNode.
Definition ast.h:6449
pm_location_t name_loc
OptionalParameterNode::name_loc.
Definition ast.h:6461
pm_constant_id_t name
OptionalParameterNode::name.
Definition ast.h:6456
pm_node_t base
The embedded base node.
Definition ast.h:6451
pm_location_t operator_loc
OptionalParameterNode::operator_loc.
Definition ast.h:6466
PM_NODE_ALIGNAS struct pm_node * value
OptionalParameterNode::value.
Definition ast.h:6471
OrNode.
Definition ast.h:6486
PM_NODE_ALIGNAS struct pm_node * right
OrNode::right.
Definition ast.h:6514
pm_node_t base
The embedded base node.
Definition ast.h:6488
PM_NODE_ALIGNAS struct pm_node * left
OrNode::left.
Definition ast.h:6501
pm_location_t operator_loc
OrNode::operator_loc.
Definition ast.h:6524
ParametersNode.
Definition ast.h:6540
PM_NODE_ALIGNAS struct pm_node * block
ParametersNode::block.
Definition ast.h:6577
struct pm_node_list requireds
ParametersNode::requireds.
Definition ast.h:6547
struct pm_node_list optionals
ParametersNode::optionals.
Definition ast.h:6552
struct pm_node_list posts
ParametersNode::posts.
Definition ast.h:6562
pm_node_t base
The embedded base node.
Definition ast.h:6542
PM_NODE_ALIGNAS struct pm_node * rest
ParametersNode::rest.
Definition ast.h:6557
struct pm_node_list keywords
ParametersNode::keywords.
Definition ast.h:6567
PM_NODE_ALIGNAS struct pm_node * keyword_rest
ParametersNode::keyword_rest.
Definition ast.h:6572
ParenthesesNode.
Definition ast.h:6595
pm_location_t closing_loc
ParenthesesNode::closing_loc.
Definition ast.h:6612
pm_node_t base
The embedded base node.
Definition ast.h:6597
pm_location_t opening_loc
ParenthesesNode::opening_loc.
Definition ast.h:6607
PM_NODE_ALIGNAS struct pm_node * body
ParenthesesNode::body.
Definition ast.h:6602
PinnedExpressionNode.
Definition ast.h:6627
pm_node_t base
The embedded base node.
Definition ast.h:6629
pm_location_t rparen_loc
PinnedExpressionNode::rparen_loc.
Definition ast.h:6669
pm_location_t lparen_loc
PinnedExpressionNode::lparen_loc.
Definition ast.h:6659
PM_NODE_ALIGNAS struct pm_node * expression
PinnedExpressionNode::expression.
Definition ast.h:6639
pm_location_t operator_loc
PinnedExpressionNode::operator_loc.
Definition ast.h:6649
PinnedVariableNode.
Definition ast.h:6684
pm_node_t base
The embedded base node.
Definition ast.h:6686
PM_NODE_ALIGNAS struct pm_node * variable
PinnedVariableNode::variable.
Definition ast.h:6696
pm_location_t operator_loc
PinnedVariableNode::operator_loc.
Definition ast.h:6706
PostExecutionNode.
Definition ast.h:6721
pm_location_t closing_loc
PostExecutionNode::closing_loc.
Definition ast.h:6743
pm_node_t base
The embedded base node.
Definition ast.h:6723
pm_location_t opening_loc
PostExecutionNode::opening_loc.
Definition ast.h:6738
pm_location_t keyword_loc
PostExecutionNode::keyword_loc.
Definition ast.h:6733
PM_NODE_ALIGNAS struct pm_statements_node * statements
PostExecutionNode::statements.
Definition ast.h:6728
PreExecutionNode.
Definition ast.h:6758
pm_location_t closing_loc
PreExecutionNode::closing_loc.
Definition ast.h:6780
pm_location_t opening_loc
PreExecutionNode::opening_loc.
Definition ast.h:6775
PM_NODE_ALIGNAS struct pm_statements_node * statements
PreExecutionNode::statements.
Definition ast.h:6765
pm_node_t base
The embedded base node.
Definition ast.h:6760
pm_location_t keyword_loc
PreExecutionNode::keyword_loc.
Definition ast.h:6770
ProgramNode.
Definition ast.h:6792
pm_node_t base
The embedded base node.
Definition ast.h:6794
PM_NODE_ALIGNAS struct pm_statements_node * statements
ProgramNode::statements.
Definition ast.h:6804
pm_constant_id_list_t locals
ProgramNode::locals.
Definition ast.h:6799
RangeNode.
Definition ast.h:6825
pm_location_t operator_loc
RangeNode::operator_loc.
Definition ast.h:6861
pm_node_t base
The embedded base node.
Definition ast.h:6827
PM_NODE_ALIGNAS struct pm_node * right
RangeNode::right.
Definition ast.h:6854
PM_NODE_ALIGNAS struct pm_node * left
RangeNode::left.
Definition ast.h:6840
RationalNode.
Definition ast.h:6882
pm_node_t base
The embedded base node.
Definition ast.h:6884
pm_integer_t denominator
RationalNode::denominator.
Definition ast.h:6902
pm_integer_t numerator
RationalNode::numerator.
Definition ast.h:6893
RedoNode.
Definition ast.h:6917
pm_node_t base
The embedded base node.
Definition ast.h:6919
RegularExpressionNode.
Definition ast.h:6947
pm_location_t closing_loc
RegularExpressionNode::closing_loc.
Definition ast.h:6964
pm_node_t base
The embedded base node.
Definition ast.h:6949
pm_string_t unescaped
RegularExpressionNode::unescaped.
Definition ast.h:6969
pm_location_t opening_loc
RegularExpressionNode::opening_loc.
Definition ast.h:6954
pm_location_t content_loc
RegularExpressionNode::content_loc.
Definition ast.h:6959
RequiredKeywordParameterNode.
Definition ast.h:6988
pm_location_t name_loc
RequiredKeywordParameterNode::name_loc.
Definition ast.h:7000
pm_node_t base
The embedded base node.
Definition ast.h:6990
pm_constant_id_t name
RequiredKeywordParameterNode::name.
Definition ast.h:6995
RequiredParameterNode.
Definition ast.h:7019
pm_constant_id_t name
RequiredParameterNode::name.
Definition ast.h:7026
pm_node_t base
The embedded base node.
Definition ast.h:7021
RescueModifierNode.
Definition ast.h:7041
PM_NODE_ALIGNAS struct pm_node * expression
RescueModifierNode::expression.
Definition ast.h:7048
pm_node_t base
The embedded base node.
Definition ast.h:7043
pm_location_t keyword_loc
RescueModifierNode::keyword_loc.
Definition ast.h:7053
PM_NODE_ALIGNAS struct pm_node * rescue_expression
RescueModifierNode::rescue_expression.
Definition ast.h:7058
RescueNode.
Definition ast.h:7078
PM_NODE_ALIGNAS struct pm_statements_node * statements
RescueNode::statements.
Definition ast.h:7110
PM_NODE_ALIGNAS struct pm_rescue_node * subsequent
RescueNode::subsequent.
Definition ast.h:7115
pm_location_t keyword_loc
RescueNode::keyword_loc.
Definition ast.h:7085
PM_NODE_ALIGNAS struct pm_node * reference
RescueNode::reference.
Definition ast.h:7100
pm_location_t then_keyword_loc
RescueNode::then_keyword_loc.
Definition ast.h:7105
pm_location_t operator_loc
RescueNode::operator_loc.
Definition ast.h:7095
struct pm_node_list exceptions
RescueNode::exceptions.
Definition ast.h:7090
pm_node_t base
The embedded base node.
Definition ast.h:7080
RestParameterNode.
Definition ast.h:7134
pm_constant_id_t name
RestParameterNode::name.
Definition ast.h:7141
pm_location_t name_loc
RestParameterNode::name_loc.
Definition ast.h:7146
pm_node_t base
The embedded base node.
Definition ast.h:7136
pm_location_t operator_loc
RestParameterNode::operator_loc.
Definition ast.h:7151
RetryNode.
Definition ast.h:7166
pm_node_t base
The embedded base node.
Definition ast.h:7168
ReturnNode.
Definition ast.h:7183
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
ReturnNode::arguments.
Definition ast.h:7195
pm_location_t keyword_loc
ReturnNode::keyword_loc.
Definition ast.h:7190
pm_node_t base
The embedded base node.
Definition ast.h:7185
SelfNode.
Definition ast.h:7210
pm_node_t base
The embedded base node.
Definition ast.h:7212
ShareableConstantNode.
Definition ast.h:7233
PM_NODE_ALIGNAS struct pm_node * write
ShareableConstantNode::write.
Definition ast.h:7242
pm_node_t base
The embedded base node.
Definition ast.h:7235
SingletonClassNode.
Definition ast.h:7257
PM_NODE_ALIGNAS struct pm_node * body
SingletonClassNode::body.
Definition ast.h:7284
pm_node_t base
The embedded base node.
Definition ast.h:7259
pm_constant_id_list_t locals
SingletonClassNode::locals.
Definition ast.h:7264
pm_location_t operator_loc
SingletonClassNode::operator_loc.
Definition ast.h:7274
PM_NODE_ALIGNAS struct pm_node * expression
SingletonClassNode::expression.
Definition ast.h:7279
pm_location_t end_keyword_loc
SingletonClassNode::end_keyword_loc.
Definition ast.h:7289
pm_location_t class_keyword_loc
SingletonClassNode::class_keyword_loc.
Definition ast.h:7269
SourceEncodingNode.
Definition ast.h:7304
pm_node_t base
The embedded base node.
Definition ast.h:7306
SourceFileNode.
Definition ast.h:7327
pm_string_t filepath
SourceFileNode::filepath.
Definition ast.h:7336
pm_node_t base
The embedded base node.
Definition ast.h:7329
SourceLineNode.
Definition ast.h:7351
pm_node_t base
The embedded base node.
Definition ast.h:7353
SplatNode.
Definition ast.h:7368
pm_node_t base
The embedded base node.
Definition ast.h:7370
PM_NODE_ALIGNAS struct pm_node * expression
SplatNode::expression.
Definition ast.h:7380
pm_location_t operator_loc
SplatNode::operator_loc.
Definition ast.h:7375
StatementsNode.
Definition ast.h:7395
struct pm_node_list body
StatementsNode::body.
Definition ast.h:7402
pm_node_t base
The embedded base node.
Definition ast.h:7397
StringNode.
Definition ast.h:7429
pm_node_t base
The embedded base node.
Definition ast.h:7431
pm_string_t unescaped
StringNode::unescaped.
Definition ast.h:7451
pm_location_t content_loc
StringNode::content_loc.
Definition ast.h:7441
pm_location_t closing_loc
StringNode::closing_loc.
Definition ast.h:7446
pm_location_t opening_loc
StringNode::opening_loc.
Definition ast.h:7436
A generic string type that can have various ownership semantics.
Definition pm_string.h:33
SuperNode.
Definition ast.h:7471
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
SuperNode::arguments.
Definition ast.h:7490
pm_location_t lparen_loc
SuperNode::lparen_loc.
Definition ast.h:7483
pm_node_t base
The embedded base node.
Definition ast.h:7473
pm_location_t keyword_loc
SuperNode::keyword_loc.
Definition ast.h:7478
pm_location_t rparen_loc
SuperNode::rparen_loc.
Definition ast.h:7495
PM_NODE_ALIGNAS struct pm_node * block
SuperNode::block.
Definition ast.h:7500
SymbolNode.
Definition ast.h:7523
pm_location_t opening_loc
SymbolNode::opening_loc.
Definition ast.h:7530
pm_location_t value_loc
SymbolNode::value_loc.
Definition ast.h:7535
pm_location_t closing_loc
SymbolNode::closing_loc.
Definition ast.h:7540
pm_string_t unescaped
SymbolNode::unescaped.
Definition ast.h:7545
pm_node_t base
The embedded base node.
Definition ast.h:7525
This struct represents a token in the Ruby source.
Definition ast.h:524
const uint8_t * end
A pointer to the end location of the token in the source.
Definition ast.h:532
const uint8_t * start
A pointer to the start location of the token in the source.
Definition ast.h:529
pm_token_type_t type
The type of the token.
Definition ast.h:526
TrueNode.
Definition ast.h:7560
pm_node_t base
The embedded base node.
Definition ast.h:7562
UndefNode.
Definition ast.h:7577
pm_node_t base
The embedded base node.
Definition ast.h:7579
pm_location_t keyword_loc
UndefNode::keyword_loc.
Definition ast.h:7589
struct pm_node_list names
UndefNode::names.
Definition ast.h:7584
UnlessNode.
Definition ast.h:7607
pm_location_t keyword_loc
UnlessNode::keyword_loc.
Definition ast.h:7622
pm_location_t then_keyword_loc
UnlessNode::then_keyword_loc.
Definition ast.h:7645
PM_NODE_ALIGNAS struct pm_node * predicate
UnlessNode::predicate.
Definition ast.h:7635
PM_NODE_ALIGNAS struct pm_statements_node * statements
UnlessNode::statements.
Definition ast.h:7656
pm_location_t end_keyword_loc
UnlessNode::end_keyword_loc.
Definition ast.h:7676
PM_NODE_ALIGNAS struct pm_else_node * else_clause
UnlessNode::else_clause.
Definition ast.h:7666
pm_node_t base
The embedded base node.
Definition ast.h:7609
UntilNode.
Definition ast.h:7697
pm_location_t closing_loc
UntilNode::closing_loc.
Definition ast.h:7714
pm_location_t keyword_loc
UntilNode::keyword_loc.
Definition ast.h:7704
pm_node_t base
The embedded base node.
Definition ast.h:7699
PM_NODE_ALIGNAS struct pm_statements_node * statements
UntilNode::statements.
Definition ast.h:7724
pm_location_t do_keyword_loc
UntilNode::do_keyword_loc.
Definition ast.h:7709
PM_NODE_ALIGNAS struct pm_node * predicate
UntilNode::predicate.
Definition ast.h:7719
WhenNode.
Definition ast.h:7741
pm_node_t base
The embedded base node.
Definition ast.h:7743
pm_location_t then_keyword_loc
WhenNode::then_keyword_loc.
Definition ast.h:7758
pm_location_t keyword_loc
WhenNode::keyword_loc.
Definition ast.h:7748
PM_NODE_ALIGNAS struct pm_statements_node * statements
WhenNode::statements.
Definition ast.h:7763
struct pm_node_list conditions
WhenNode::conditions.
Definition ast.h:7753
WhileNode.
Definition ast.h:7784
PM_NODE_ALIGNAS struct pm_statements_node * statements
WhileNode::statements.
Definition ast.h:7811
pm_location_t closing_loc
WhileNode::closing_loc.
Definition ast.h:7801
pm_location_t keyword_loc
WhileNode::keyword_loc.
Definition ast.h:7791
pm_node_t base
The embedded base node.
Definition ast.h:7786
pm_location_t do_keyword_loc
WhileNode::do_keyword_loc.
Definition ast.h:7796
PM_NODE_ALIGNAS struct pm_node * predicate
WhileNode::predicate.
Definition ast.h:7806
XStringNode.
Definition ast.h:7830
pm_location_t closing_loc
XStringNode::closing_loc.
Definition ast.h:7847
pm_location_t opening_loc
XStringNode::opening_loc.
Definition ast.h:7837
pm_location_t content_loc
XStringNode::content_loc.
Definition ast.h:7842
pm_string_t unescaped
XStringNode::unescaped.
Definition ast.h:7852
pm_node_t base
The embedded base node.
Definition ast.h:7832
YieldNode.
Definition ast.h:7867
pm_location_t keyword_loc
YieldNode::keyword_loc.
Definition ast.h:7874
pm_location_t lparen_loc
YieldNode::lparen_loc.
Definition ast.h:7879
pm_node_t base
The embedded base node.
Definition ast.h:7869
pm_location_t rparen_loc
YieldNode::rparen_loc.
Definition ast.h:7889
PM_NODE_ALIGNAS struct pm_arguments_node * arguments
YieldNode::arguments.
Definition ast.h:7884