Ruby 3.5.0dev (2025-09-16 revision 7dd9c76ad46af63f76e0df243f76a1720f54d50d)
ast.h
1/* :markup: markdown */
2
3/*----------------------------------------------------------------------------*/
4/* This file is generated by the templates/template.rb script and should not */
5/* be modified manually. See */
6/* templates/include/prism/ast.h.erb */
7/* if you are looking to modify the */
8/* template */
9/*----------------------------------------------------------------------------*/
10
13#ifndef PRISM_AST_H
14#define PRISM_AST_H
15
16#include "prism/defines.h"
20
21#include <assert.h>
22#include <stddef.h>
23#include <stdint.h>
24
28typedef enum pm_token_type {
30 PM_TOKEN_EOF = 1,
31
33 PM_TOKEN_BRACE_RIGHT,
34
36 PM_TOKEN_COMMA,
37
39 PM_TOKEN_EMBEXPR_END,
40
42 PM_TOKEN_KEYWORD_DO,
43
45 PM_TOKEN_KEYWORD_ELSE,
46
48 PM_TOKEN_KEYWORD_ELSIF,
49
51 PM_TOKEN_KEYWORD_END,
52
54 PM_TOKEN_KEYWORD_ENSURE,
55
57 PM_TOKEN_KEYWORD_IN,
58
60 PM_TOKEN_KEYWORD_RESCUE,
61
63 PM_TOKEN_KEYWORD_THEN,
64
66 PM_TOKEN_KEYWORD_WHEN,
67
69 PM_TOKEN_NEWLINE,
70
72 PM_TOKEN_PARENTHESIS_RIGHT,
73
75 PM_TOKEN_SEMICOLON,
76
78 PM_TOKEN_AMPERSAND,
79
81 PM_TOKEN_AMPERSAND_AMPERSAND,
82
84 PM_TOKEN_AMPERSAND_AMPERSAND_EQUAL,
85
87 PM_TOKEN_AMPERSAND_DOT,
88
90 PM_TOKEN_AMPERSAND_EQUAL,
91
93 PM_TOKEN_BACKTICK,
94
96 PM_TOKEN_BACK_REFERENCE,
97
99 PM_TOKEN_BANG,
100
102 PM_TOKEN_BANG_EQUAL,
103
105 PM_TOKEN_BANG_TILDE,
106
108 PM_TOKEN_BRACE_LEFT,
109
111 PM_TOKEN_BRACKET_LEFT,
112
114 PM_TOKEN_BRACKET_LEFT_ARRAY,
115
117 PM_TOKEN_BRACKET_LEFT_RIGHT,
118
120 PM_TOKEN_BRACKET_LEFT_RIGHT_EQUAL,
121
123 PM_TOKEN_BRACKET_RIGHT,
124
126 PM_TOKEN_CARET,
127
129 PM_TOKEN_CARET_EQUAL,
130
132 PM_TOKEN_CHARACTER_LITERAL,
133
135 PM_TOKEN_CLASS_VARIABLE,
136
138 PM_TOKEN_COLON,
139
141 PM_TOKEN_COLON_COLON,
142
144 PM_TOKEN_COMMENT,
145
147 PM_TOKEN_CONSTANT,
148
150 PM_TOKEN_DOT,
151
153 PM_TOKEN_DOT_DOT,
154
156 PM_TOKEN_DOT_DOT_DOT,
157
159 PM_TOKEN_EMBDOC_BEGIN,
160
162 PM_TOKEN_EMBDOC_END,
163
165 PM_TOKEN_EMBDOC_LINE,
166
168 PM_TOKEN_EMBEXPR_BEGIN,
169
171 PM_TOKEN_EMBVAR,
172
174 PM_TOKEN_EQUAL,
175
177 PM_TOKEN_EQUAL_EQUAL,
178
180 PM_TOKEN_EQUAL_EQUAL_EQUAL,
181
183 PM_TOKEN_EQUAL_GREATER,
184
186 PM_TOKEN_EQUAL_TILDE,
187
189 PM_TOKEN_FLOAT,
190
192 PM_TOKEN_FLOAT_IMAGINARY,
193
195 PM_TOKEN_FLOAT_RATIONAL,
196
198 PM_TOKEN_FLOAT_RATIONAL_IMAGINARY,
199
201 PM_TOKEN_GLOBAL_VARIABLE,
202
204 PM_TOKEN_GREATER,
205
207 PM_TOKEN_GREATER_EQUAL,
208
210 PM_TOKEN_GREATER_GREATER,
211
213 PM_TOKEN_GREATER_GREATER_EQUAL,
214
216 PM_TOKEN_HEREDOC_END,
217
219 PM_TOKEN_HEREDOC_START,
220
222 PM_TOKEN_IDENTIFIER,
223
225 PM_TOKEN_IGNORED_NEWLINE,
226
228 PM_TOKEN_INSTANCE_VARIABLE,
229
231 PM_TOKEN_INTEGER,
232
234 PM_TOKEN_INTEGER_IMAGINARY,
235
237 PM_TOKEN_INTEGER_RATIONAL,
238
240 PM_TOKEN_INTEGER_RATIONAL_IMAGINARY,
241
243 PM_TOKEN_KEYWORD_ALIAS,
244
246 PM_TOKEN_KEYWORD_AND,
247
249 PM_TOKEN_KEYWORD_BEGIN,
250
252 PM_TOKEN_KEYWORD_BEGIN_UPCASE,
253
255 PM_TOKEN_KEYWORD_BREAK,
256
258 PM_TOKEN_KEYWORD_CASE,
259
261 PM_TOKEN_KEYWORD_CLASS,
262
264 PM_TOKEN_KEYWORD_DEF,
265
267 PM_TOKEN_KEYWORD_DEFINED,
268
270 PM_TOKEN_KEYWORD_DO_LOOP,
271
273 PM_TOKEN_KEYWORD_END_UPCASE,
274
276 PM_TOKEN_KEYWORD_FALSE,
277
279 PM_TOKEN_KEYWORD_FOR,
280
282 PM_TOKEN_KEYWORD_IF,
283
285 PM_TOKEN_KEYWORD_IF_MODIFIER,
286
288 PM_TOKEN_KEYWORD_MODULE,
289
291 PM_TOKEN_KEYWORD_NEXT,
292
294 PM_TOKEN_KEYWORD_NIL,
295
297 PM_TOKEN_KEYWORD_NOT,
298
300 PM_TOKEN_KEYWORD_OR,
301
303 PM_TOKEN_KEYWORD_REDO,
304
306 PM_TOKEN_KEYWORD_RESCUE_MODIFIER,
307
309 PM_TOKEN_KEYWORD_RETRY,
310
312 PM_TOKEN_KEYWORD_RETURN,
313
315 PM_TOKEN_KEYWORD_SELF,
316
318 PM_TOKEN_KEYWORD_SUPER,
319
321 PM_TOKEN_KEYWORD_TRUE,
322
324 PM_TOKEN_KEYWORD_UNDEF,
325
327 PM_TOKEN_KEYWORD_UNLESS,
328
330 PM_TOKEN_KEYWORD_UNLESS_MODIFIER,
331
333 PM_TOKEN_KEYWORD_UNTIL,
334
336 PM_TOKEN_KEYWORD_UNTIL_MODIFIER,
337
339 PM_TOKEN_KEYWORD_WHILE,
340
342 PM_TOKEN_KEYWORD_WHILE_MODIFIER,
343
345 PM_TOKEN_KEYWORD_YIELD,
346
348 PM_TOKEN_KEYWORD___ENCODING__,
349
351 PM_TOKEN_KEYWORD___FILE__,
352
354 PM_TOKEN_KEYWORD___LINE__,
355
357 PM_TOKEN_LABEL,
358
360 PM_TOKEN_LABEL_END,
361
363 PM_TOKEN_LAMBDA_BEGIN,
364
366 PM_TOKEN_LESS,
367
369 PM_TOKEN_LESS_EQUAL,
370
372 PM_TOKEN_LESS_EQUAL_GREATER,
373
375 PM_TOKEN_LESS_LESS,
376
378 PM_TOKEN_LESS_LESS_EQUAL,
379
381 PM_TOKEN_METHOD_NAME,
382
384 PM_TOKEN_MINUS,
385
387 PM_TOKEN_MINUS_EQUAL,
388
390 PM_TOKEN_MINUS_GREATER,
391
393 PM_TOKEN_NUMBERED_REFERENCE,
394
396 PM_TOKEN_PARENTHESIS_LEFT,
397
399 PM_TOKEN_PARENTHESIS_LEFT_PARENTHESES,
400
402 PM_TOKEN_PERCENT,
403
405 PM_TOKEN_PERCENT_EQUAL,
406
408 PM_TOKEN_PERCENT_LOWER_I,
409
411 PM_TOKEN_PERCENT_LOWER_W,
412
414 PM_TOKEN_PERCENT_LOWER_X,
415
417 PM_TOKEN_PERCENT_UPPER_I,
418
420 PM_TOKEN_PERCENT_UPPER_W,
421
423 PM_TOKEN_PIPE,
424
426 PM_TOKEN_PIPE_EQUAL,
427
429 PM_TOKEN_PIPE_PIPE,
430
432 PM_TOKEN_PIPE_PIPE_EQUAL,
433
435 PM_TOKEN_PLUS,
436
438 PM_TOKEN_PLUS_EQUAL,
439
441 PM_TOKEN_QUESTION_MARK,
442
444 PM_TOKEN_REGEXP_BEGIN,
445
447 PM_TOKEN_REGEXP_END,
448
450 PM_TOKEN_SLASH,
451
453 PM_TOKEN_SLASH_EQUAL,
454
456 PM_TOKEN_STAR,
457
459 PM_TOKEN_STAR_EQUAL,
460
462 PM_TOKEN_STAR_STAR,
463
465 PM_TOKEN_STAR_STAR_EQUAL,
466
468 PM_TOKEN_STRING_BEGIN,
469
471 PM_TOKEN_STRING_CONTENT,
472
474 PM_TOKEN_STRING_END,
475
477 PM_TOKEN_SYMBOL_BEGIN,
478
480 PM_TOKEN_TILDE,
481
483 PM_TOKEN_UAMPERSAND,
484
486 PM_TOKEN_UCOLON_COLON,
487
489 PM_TOKEN_UDOT_DOT,
490
492 PM_TOKEN_UDOT_DOT_DOT,
493
495 PM_TOKEN_UMINUS,
496
498 PM_TOKEN_UMINUS_NUM,
499
501 PM_TOKEN_UPLUS,
502
504 PM_TOKEN_USTAR,
505
507 PM_TOKEN_USTAR_STAR,
508
510 PM_TOKEN_WORDS_SEP,
511
513 PM_TOKEN___END__,
514
516 PM_TOKEN_MISSING,
517
519 PM_TOKEN_NOT_PROVIDED,
520
522 PM_TOKEN_MAXIMUM,
523} pm_token_type_t;
524
529typedef struct {
531 pm_token_type_t type;
532
534 const uint8_t *start;
535
537 const uint8_t *end;
538} pm_token_t;
539
544typedef struct {
546 const uint8_t *start;
547
549 const uint8_t *end;
551
552struct pm_node;
553
557typedef struct pm_node_list {
559 size_t size;
560
562 size_t capacity;
563
565 struct pm_node **nodes;
567
571enum pm_node_type {
573 PM_ALIAS_GLOBAL_VARIABLE_NODE = 1,
574
576 PM_ALIAS_METHOD_NODE = 2,
577
579 PM_ALTERNATION_PATTERN_NODE = 3,
580
582 PM_AND_NODE = 4,
583
585 PM_ARGUMENTS_NODE = 5,
586
588 PM_ARRAY_NODE = 6,
589
591 PM_ARRAY_PATTERN_NODE = 7,
592
594 PM_ASSOC_NODE = 8,
595
597 PM_ASSOC_SPLAT_NODE = 9,
598
600 PM_BACK_REFERENCE_READ_NODE = 10,
601
603 PM_BEGIN_NODE = 11,
604
606 PM_BLOCK_ARGUMENT_NODE = 12,
607
609 PM_BLOCK_LOCAL_VARIABLE_NODE = 13,
610
612 PM_BLOCK_NODE = 14,
613
615 PM_BLOCK_PARAMETER_NODE = 15,
616
618 PM_BLOCK_PARAMETERS_NODE = 16,
619
621 PM_BREAK_NODE = 17,
622
624 PM_CALL_AND_WRITE_NODE = 18,
625
627 PM_CALL_NODE = 19,
628
630 PM_CALL_OPERATOR_WRITE_NODE = 20,
631
633 PM_CALL_OR_WRITE_NODE = 21,
634
636 PM_CALL_TARGET_NODE = 22,
637
639 PM_CAPTURE_PATTERN_NODE = 23,
640
642 PM_CASE_MATCH_NODE = 24,
643
645 PM_CASE_NODE = 25,
646
648 PM_CLASS_NODE = 26,
649
651 PM_CLASS_VARIABLE_AND_WRITE_NODE = 27,
652
654 PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 28,
655
657 PM_CLASS_VARIABLE_OR_WRITE_NODE = 29,
658
660 PM_CLASS_VARIABLE_READ_NODE = 30,
661
663 PM_CLASS_VARIABLE_TARGET_NODE = 31,
664
666 PM_CLASS_VARIABLE_WRITE_NODE = 32,
667
669 PM_CONSTANT_AND_WRITE_NODE = 33,
670
672 PM_CONSTANT_OPERATOR_WRITE_NODE = 34,
673
675 PM_CONSTANT_OR_WRITE_NODE = 35,
676
678 PM_CONSTANT_PATH_AND_WRITE_NODE = 36,
679
681 PM_CONSTANT_PATH_NODE = 37,
682
684 PM_CONSTANT_PATH_OPERATOR_WRITE_NODE = 38,
685
687 PM_CONSTANT_PATH_OR_WRITE_NODE = 39,
688
690 PM_CONSTANT_PATH_TARGET_NODE = 40,
691
693 PM_CONSTANT_PATH_WRITE_NODE = 41,
694
696 PM_CONSTANT_READ_NODE = 42,
697
699 PM_CONSTANT_TARGET_NODE = 43,
700
702 PM_CONSTANT_WRITE_NODE = 44,
703
705 PM_DEF_NODE = 45,
706
708 PM_DEFINED_NODE = 46,
709
711 PM_ELSE_NODE = 47,
712
714 PM_EMBEDDED_STATEMENTS_NODE = 48,
715
717 PM_EMBEDDED_VARIABLE_NODE = 49,
718
720 PM_ENSURE_NODE = 50,
721
723 PM_FALSE_NODE = 51,
724
726 PM_FIND_PATTERN_NODE = 52,
727
729 PM_FLIP_FLOP_NODE = 53,
730
732 PM_FLOAT_NODE = 54,
733
735 PM_FOR_NODE = 55,
736
738 PM_FORWARDING_ARGUMENTS_NODE = 56,
739
741 PM_FORWARDING_PARAMETER_NODE = 57,
742
744 PM_FORWARDING_SUPER_NODE = 58,
745
747 PM_GLOBAL_VARIABLE_AND_WRITE_NODE = 59,
748
750 PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 60,
751
753 PM_GLOBAL_VARIABLE_OR_WRITE_NODE = 61,
754
756 PM_GLOBAL_VARIABLE_READ_NODE = 62,
757
759 PM_GLOBAL_VARIABLE_TARGET_NODE = 63,
760
762 PM_GLOBAL_VARIABLE_WRITE_NODE = 64,
763
765 PM_HASH_NODE = 65,
766
768 PM_HASH_PATTERN_NODE = 66,
769
771 PM_IF_NODE = 67,
772
774 PM_IMAGINARY_NODE = 68,
775
777 PM_IMPLICIT_NODE = 69,
778
780 PM_IMPLICIT_REST_NODE = 70,
781
783 PM_IN_NODE = 71,
784
786 PM_INDEX_AND_WRITE_NODE = 72,
787
789 PM_INDEX_OPERATOR_WRITE_NODE = 73,
790
792 PM_INDEX_OR_WRITE_NODE = 74,
793
795 PM_INDEX_TARGET_NODE = 75,
796
798 PM_INSTANCE_VARIABLE_AND_WRITE_NODE = 76,
799
801 PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 77,
802
804 PM_INSTANCE_VARIABLE_OR_WRITE_NODE = 78,
805
807 PM_INSTANCE_VARIABLE_READ_NODE = 79,
808
810 PM_INSTANCE_VARIABLE_TARGET_NODE = 80,
811
813 PM_INSTANCE_VARIABLE_WRITE_NODE = 81,
814
816 PM_INTEGER_NODE = 82,
817
819 PM_INTERPOLATED_MATCH_LAST_LINE_NODE = 83,
820
822 PM_INTERPOLATED_REGULAR_EXPRESSION_NODE = 84,
823
825 PM_INTERPOLATED_STRING_NODE = 85,
826
828 PM_INTERPOLATED_SYMBOL_NODE = 86,
829
831 PM_INTERPOLATED_X_STRING_NODE = 87,
832
834 PM_IT_LOCAL_VARIABLE_READ_NODE = 88,
835
837 PM_IT_PARAMETERS_NODE = 89,
838
840 PM_KEYWORD_HASH_NODE = 90,
841
843 PM_KEYWORD_REST_PARAMETER_NODE = 91,
844
846 PM_LAMBDA_NODE = 92,
847
849 PM_LOCAL_VARIABLE_AND_WRITE_NODE = 93,
850
852 PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 94,
853
855 PM_LOCAL_VARIABLE_OR_WRITE_NODE = 95,
856
858 PM_LOCAL_VARIABLE_READ_NODE = 96,
859
861 PM_LOCAL_VARIABLE_TARGET_NODE = 97,
862
864 PM_LOCAL_VARIABLE_WRITE_NODE = 98,
865
867 PM_MATCH_LAST_LINE_NODE = 99,
868
870 PM_MATCH_PREDICATE_NODE = 100,
871
873 PM_MATCH_REQUIRED_NODE = 101,
874
876 PM_MATCH_WRITE_NODE = 102,
877
879 PM_MISSING_NODE = 103,
880
882 PM_MODULE_NODE = 104,
883
885 PM_MULTI_TARGET_NODE = 105,
886
888 PM_MULTI_WRITE_NODE = 106,
889
891 PM_NEXT_NODE = 107,
892
894 PM_NIL_NODE = 108,
895
897 PM_NO_KEYWORDS_PARAMETER_NODE = 109,
898
900 PM_NUMBERED_PARAMETERS_NODE = 110,
901
903 PM_NUMBERED_REFERENCE_READ_NODE = 111,
904
906 PM_OPTIONAL_KEYWORD_PARAMETER_NODE = 112,
907
909 PM_OPTIONAL_PARAMETER_NODE = 113,
910
912 PM_OR_NODE = 114,
913
915 PM_PARAMETERS_NODE = 115,
916
918 PM_PARENTHESES_NODE = 116,
919
921 PM_PINNED_EXPRESSION_NODE = 117,
922
924 PM_PINNED_VARIABLE_NODE = 118,
925
927 PM_POST_EXECUTION_NODE = 119,
928
930 PM_PRE_EXECUTION_NODE = 120,
931
933 PM_PROGRAM_NODE = 121,
934
936 PM_RANGE_NODE = 122,
937
939 PM_RATIONAL_NODE = 123,
940
942 PM_REDO_NODE = 124,
943
945 PM_REGULAR_EXPRESSION_NODE = 125,
946
948 PM_REQUIRED_KEYWORD_PARAMETER_NODE = 126,
949
951 PM_REQUIRED_PARAMETER_NODE = 127,
952
954 PM_RESCUE_MODIFIER_NODE = 128,
955
957 PM_RESCUE_NODE = 129,
958
960 PM_REST_PARAMETER_NODE = 130,
961
963 PM_RETRY_NODE = 131,
964
966 PM_RETURN_NODE = 132,
967
969 PM_SELF_NODE = 133,
970
972 PM_SHAREABLE_CONSTANT_NODE = 134,
973
975 PM_SINGLETON_CLASS_NODE = 135,
976
978 PM_SOURCE_ENCODING_NODE = 136,
979
981 PM_SOURCE_FILE_NODE = 137,
982
984 PM_SOURCE_LINE_NODE = 138,
985
987 PM_SPLAT_NODE = 139,
988
990 PM_STATEMENTS_NODE = 140,
991
993 PM_STRING_NODE = 141,
994
996 PM_SUPER_NODE = 142,
997
999 PM_SYMBOL_NODE = 143,
1000
1002 PM_TRUE_NODE = 144,
1003
1005 PM_UNDEF_NODE = 145,
1006
1008 PM_UNLESS_NODE = 146,
1009
1011 PM_UNTIL_NODE = 147,
1012
1014 PM_WHEN_NODE = 148,
1015
1017 PM_WHILE_NODE = 149,
1018
1020 PM_X_STRING_NODE = 150,
1021
1023 PM_YIELD_NODE = 151,
1024
1026 PM_SCOPE_NODE
1027};
1028
1033typedef uint16_t pm_node_type_t;
1034
1039typedef uint16_t pm_node_flags_t;
1040
1045static const pm_node_flags_t PM_NODE_FLAG_NEWLINE = 0x1;
1046static const pm_node_flags_t PM_NODE_FLAG_STATIC_LITERAL = 0x2;
1047
1052#define PM_NODE_TYPE(node) ((enum pm_node_type) (node)->type)
1053
1057#define PM_NODE_TYPE_P(node, type) (PM_NODE_TYPE(node) == (type))
1058
1062#define PM_NODE_FLAG_P(node, flag) ((((pm_node_t *)(node))->flags & (flag)) != 0)
1063
1068typedef struct pm_node {
1073 pm_node_type_t type;
1074
1079 pm_node_flags_t flags;
1080
1085 uint32_t node_id;
1086
1092} pm_node_t;
1093
1141
1201
1249
1262typedef struct pm_and_node {
1265
1266
1278 struct pm_node *left;
1279
1292
1303
1338
1390
1486
1543
1581
1610
1690
1728
1759
1831
1885
1963
2001
2095
2222
2326
2420
2492
2540
2610
2680
2768
2826
2869
2907
2936
2959
3021
3059
3102
3140
3173
3240
3278
3311
3349
3406
3435
3458
3520
3599
3637
3670
3703
3731
3768
3781typedef struct pm_false_node {
3784
3786
3888
3924
3937typedef struct pm_float_node {
3940
3941
3947 double value;
3949
4039
4059
4078
4101
4139
4182
4220
4249
4272
4334
4385
4477
4589
4612
4631typedef struct pm_implicit_node {
4634
4635
4641
4668
4706
4770
4839
4903
4960
4998
5041
5079
5108
5131
5193
5224
5270
5316
5353
5386
5419
5437
5455
5481
5518
5566
5609
5657
5700
5746
5777
5856
5907
5940
6027
6055
6070
6118
6206
6309
6337
6350typedef struct pm_nil_node {
6353
6355
6384
6407
6438
6475
6517
6530typedef struct pm_or_node {
6533
6534
6546 struct pm_node *left;
6547
6560
6570} pm_or_node_t;
6571
6625
6661
6719
6757
6795
6833
6858
6916
6958
6971typedef struct pm_redo_node {
6974
6976
7027
7059
7086
7119
7177
7214
7227typedef struct pm_retry_node {
7230
7232
7260
7273typedef struct pm_self_node {
7276
7278
7309
7357
7375
7406
7424
7452
7475
7525
7571
7617
7630typedef struct pm_true_node {
7633
7635
7663
7751
7800
7840
7889
7931
7969
7973typedef enum pm_arguments_node_flags {
7975 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING = 4,
7976
7978 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS = 8,
7979
7981 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT = 16,
7982
7984 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT = 32,
7985
7987 PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS = 64,
7988} pm_arguments_node_flags_t;
7989
7993typedef enum pm_array_node_flags {
7995 PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT = 4,
7996} pm_array_node_flags_t;
7997
8001typedef enum pm_call_node_flags {
8003 PM_CALL_NODE_FLAGS_SAFE_NAVIGATION = 4,
8004
8006 PM_CALL_NODE_FLAGS_VARIABLE_CALL = 8,
8007
8009 PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE = 16,
8010
8012 PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY = 32,
8013} pm_call_node_flags_t;
8014
8018typedef enum pm_encoding_flags {
8020 PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING = 4,
8021
8023 PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING = 8,
8024} pm_encoding_flags_t;
8025
8029typedef enum pm_integer_base_flags {
8031 PM_INTEGER_BASE_FLAGS_BINARY = 4,
8032
8034 PM_INTEGER_BASE_FLAGS_DECIMAL = 8,
8035
8037 PM_INTEGER_BASE_FLAGS_OCTAL = 16,
8038
8040 PM_INTEGER_BASE_FLAGS_HEXADECIMAL = 32,
8041} pm_integer_base_flags_t;
8042
8046typedef enum pm_interpolated_string_node_flags {
8048 PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN = 4,
8049
8051 PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE = 8,
8052} pm_interpolated_string_node_flags_t;
8053
8057typedef enum pm_keyword_hash_node_flags {
8059 PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS = 4,
8060} pm_keyword_hash_node_flags_t;
8061
8065typedef enum pm_loop_flags {
8067 PM_LOOP_FLAGS_BEGIN_MODIFIER = 4,
8068} pm_loop_flags_t;
8069
8073typedef enum pm_parameter_flags {
8075 PM_PARAMETER_FLAGS_REPEATED_PARAMETER = 4,
8076} pm_parameter_flags_t;
8077
8081typedef enum pm_parentheses_node_flags {
8083 PM_PARENTHESES_NODE_FLAGS_MULTIPLE_STATEMENTS = 4,
8084} pm_parentheses_node_flags_t;
8085
8089typedef enum pm_range_flags {
8091 PM_RANGE_FLAGS_EXCLUDE_END = 4,
8092} pm_range_flags_t;
8093
8097typedef enum pm_regular_expression_flags {
8099 PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 4,
8100
8102 PM_REGULAR_EXPRESSION_FLAGS_EXTENDED = 8,
8103
8105 PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 16,
8106
8108 PM_REGULAR_EXPRESSION_FLAGS_ONCE = 32,
8109
8111 PM_REGULAR_EXPRESSION_FLAGS_EUC_JP = 64,
8112
8114 PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 128,
8115
8117 PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 256,
8118
8120 PM_REGULAR_EXPRESSION_FLAGS_UTF_8 = 512,
8121
8123 PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING = 1024,
8124
8126 PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING = 2048,
8127
8129 PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING = 4096,
8130} pm_regular_expression_flags_t;
8131
8135typedef enum pm_shareable_constant_node_flags {
8137 PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL = 4,
8138
8140 PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING = 8,
8141
8143 PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY = 16,
8144} pm_shareable_constant_node_flags_t;
8145
8149typedef enum pm_string_flags {
8151 PM_STRING_FLAGS_FORCED_UTF8_ENCODING = 4,
8152
8154 PM_STRING_FLAGS_FORCED_BINARY_ENCODING = 8,
8155
8157 PM_STRING_FLAGS_FROZEN = 16,
8158
8160 PM_STRING_FLAGS_MUTABLE = 32,
8161} pm_string_flags_t;
8162
8166typedef enum pm_symbol_flags {
8168 PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING = 4,
8169
8171 PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING = 8,
8172
8174 PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING = 16,
8175} pm_symbol_flags_t;
8176
8183#define PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS 0
8184
8185#endif
A data structure that stores a set of strings.
uint32_t pm_constant_id_t
A constant id is a unique identifier for a constant in the constant pool.
This module provides functions for working with arbitrary-sized integers.
A generic string type that can have various ownership semantics.
Macro definitions used throughout the prism library.
AliasGlobalVariableNode.
Definition ast.h:1106
struct pm_node * old_name
AliasGlobalVariableNode::old_name.
Definition ast.h:1129
pm_node_t base
The embedded base node.
Definition ast.h:1108
struct pm_node * new_name
AliasGlobalVariableNode::new_name.
Definition ast.h:1119
pm_location_t keyword_loc
AliasGlobalVariableNode::keyword_loc.
Definition ast.h:1139
AliasMethodNode.
Definition ast.h:1154
struct pm_node * old_name
AliasMethodNode::old_name.
Definition ast.h:1189
struct pm_node * new_name
AliasMethodNode::new_name.
Definition ast.h:1173
pm_node_t base
The embedded base node.
Definition ast.h:1156
pm_location_t keyword_loc
AliasMethodNode::keyword_loc.
Definition ast.h:1199
AlternationPatternNode.
Definition ast.h:1214
pm_location_t operator_loc
AlternationPatternNode::operator_loc.
Definition ast.h:1247
struct pm_node * left
AlternationPatternNode::left.
Definition ast.h:1227
struct pm_node * right
AlternationPatternNode::right.
Definition ast.h:1237
pm_node_t base
The embedded base node.
Definition ast.h:1216
AndNode.
Definition ast.h:1262
struct pm_node * left
AndNode::left.
Definition ast.h:1278
struct pm_node * right
AndNode::right.
Definition ast.h:1291
pm_location_t operator_loc
AndNode::operator_loc.
Definition ast.h:1301
pm_node_t base
The embedded base node.
Definition ast.h:1264
ArgumentsNode.
Definition ast.h:1323
pm_node_t base
The embedded base node.
Definition ast.h:1325
struct pm_node_list arguments
ArgumentsNode::arguments.
Definition ast.h:1336
ArrayNode.
Definition ast.h:1354
pm_node_t base
The embedded base node.
Definition ast.h:1356
pm_location_t closing_loc
ArrayNode::closing_loc.
Definition ast.h:1388
struct pm_node_list elements
ArrayNode::elements.
Definition ast.h:1364
pm_location_t opening_loc
ArrayNode::opening_loc.
Definition ast.h:1376
ArrayPatternNode.
Definition ast.h:1415
struct pm_node_list requireds
ArrayPatternNode::requireds.
Definition ast.h:1444
struct pm_node * rest
ArrayPatternNode::rest.
Definition ast.h:1454
struct pm_node * constant
ArrayPatternNode::constant.
Definition ast.h:1434
pm_location_t opening_loc
ArrayPatternNode::opening_loc.
Definition ast.h:1474
pm_node_t base
The embedded base node.
Definition ast.h:1417
pm_location_t closing_loc
ArrayPatternNode::closing_loc.
Definition ast.h:1484
struct pm_node_list posts
ArrayPatternNode::posts.
Definition ast.h:1464
AssocNode.
Definition ast.h:1499
pm_node_t base
The embedded base node.
Definition ast.h:1501
struct pm_node * value
AssocNode::value.
Definition ast.h:1531
struct pm_node * key
AssocNode::key.
Definition ast.h:1518
pm_location_t operator_loc
AssocNode::operator_loc.
Definition ast.h:1541
AssocSplatNode.
Definition ast.h:1556
struct pm_node * value
AssocSplatNode::value.
Definition ast.h:1569
pm_node_t base
The embedded base node.
Definition ast.h:1558
pm_location_t operator_loc
AssocSplatNode::operator_loc.
Definition ast.h:1579
BackReferenceReadNode.
Definition ast.h:1594
pm_constant_id_t name
BackReferenceReadNode::name.
Definition ast.h:1608
pm_node_t base
The embedded base node.
Definition ast.h:1596
BeginNode.
Definition ast.h:1625
struct pm_ensure_node * ensure_clause
BeginNode::ensure_clause.
Definition ast.h:1678
struct pm_rescue_node * rescue_clause
BeginNode::rescue_clause.
Definition ast.h:1658
struct pm_statements_node * statements
BeginNode::statements.
Definition ast.h:1648
pm_node_t base
The embedded base node.
Definition ast.h:1627
pm_location_t end_keyword_loc
BeginNode::end_keyword_loc.
Definition ast.h:1688
pm_location_t begin_keyword_loc
BeginNode::begin_keyword_loc.
Definition ast.h:1638
struct pm_else_node * else_clause
BeginNode::else_clause.
Definition ast.h:1668
BlockArgumentNode.
Definition ast.h:1703
pm_node_t base
The embedded base node.
Definition ast.h:1705
struct pm_node * expression
BlockArgumentNode::expression.
Definition ast.h:1716
pm_location_t operator_loc
BlockArgumentNode::operator_loc.
Definition ast.h:1726
BlockLocalVariableNode.
Definition ast.h:1744
pm_node_t base
The embedded base node.
Definition ast.h:1746
pm_constant_id_t name
BlockLocalVariableNode::name.
Definition ast.h:1757
BlockNode.
Definition ast.h:1772
pm_node_t base
The embedded base node.
Definition ast.h:1774
pm_location_t closing_loc
BlockNode::closing_loc.
Definition ast.h:1829
struct pm_node * parameters
BlockNode::parameters.
Definition ast.h:1799
pm_location_t opening_loc
BlockNode::opening_loc.
Definition ast.h:1819
struct pm_node * body
BlockNode::body.
Definition ast.h:1809
pm_constant_id_list_t locals
BlockNode::locals.
Definition ast.h:1785
BlockParameterNode.
Definition ast.h:1848
pm_location_t operator_loc
BlockParameterNode::operator_loc.
Definition ast.h:1883
pm_location_t name_loc
BlockParameterNode::name_loc.
Definition ast.h:1872
pm_constant_id_t name
BlockParameterNode::name.
Definition ast.h:1862
pm_node_t base
The embedded base node.
Definition ast.h:1850
BlockParametersNode.
Definition ast.h:1902
struct pm_parameters_node * parameters
BlockParametersNode::parameters.
Definition ast.h:1919
pm_node_t base
The embedded base node.
Definition ast.h:1904
struct pm_node_list locals
BlockParametersNode::locals.
Definition ast.h:1933
pm_location_t closing_loc
BlockParametersNode::closing_loc.
Definition ast.h:1961
pm_location_t opening_loc
BlockParametersNode::opening_loc.
Definition ast.h:1947
BreakNode.
Definition ast.h:1976
struct pm_arguments_node * arguments
BreakNode::arguments.
Definition ast.h:1989
pm_location_t keyword_loc
BreakNode::keyword_loc.
Definition ast.h:1999
pm_node_t base
The embedded base node.
Definition ast.h:1978
CallAndWriteNode.
Definition ast.h:2020
pm_location_t operator_loc
CallAndWriteNode::operator_loc.
Definition ast.h:2083
struct pm_node * value
CallAndWriteNode::value.
Definition ast.h:2093
pm_node_t base
The embedded base node.
Definition ast.h:2022
pm_location_t call_operator_loc
CallAndWriteNode::call_operator_loc.
Definition ast.h:2043
pm_location_t message_loc
CallAndWriteNode::message_loc.
Definition ast.h:2053
pm_constant_id_t read_name
CallAndWriteNode::read_name.
Definition ast.h:2063
pm_constant_id_t write_name
CallAndWriteNode::write_name.
Definition ast.h:2073
struct pm_node * receiver
CallAndWriteNode::receiver.
Definition ast.h:2033
CallNode.
Definition ast.h:2129
pm_location_t opening_loc
CallNode::opening_loc.
Definition ast.h:2190
pm_location_t closing_loc
CallNode::closing_loc.
Definition ast.h:2210
struct pm_node * receiver
CallNode::receiver.
Definition ast.h:2148
pm_constant_id_t name
CallNode::name.
Definition ast.h:2171
pm_node_t base
The embedded base node.
Definition ast.h:2131
pm_location_t call_operator_loc
CallNode::call_operator_loc.
Definition ast.h:2161
pm_location_t message_loc
CallNode::message_loc.
Definition ast.h:2181
struct pm_arguments_node * arguments
CallNode::arguments.
Definition ast.h:2200
struct pm_node * block
CallNode::block.
Definition ast.h:2220
CallOperatorWriteNode.
Definition ast.h:2241
pm_constant_id_t read_name
CallOperatorWriteNode::read_name.
Definition ast.h:2284
pm_constant_id_t binary_operator
CallOperatorWriteNode::binary_operator.
Definition ast.h:2304
pm_location_t binary_operator_loc
CallOperatorWriteNode::binary_operator_loc.
Definition ast.h:2314
struct pm_node * receiver
CallOperatorWriteNode::receiver.
Definition ast.h:2254
pm_node_t base
The embedded base node.
Definition ast.h:2243
pm_constant_id_t write_name
CallOperatorWriteNode::write_name.
Definition ast.h:2294
pm_location_t message_loc
CallOperatorWriteNode::message_loc.
Definition ast.h:2274
struct pm_node * value
CallOperatorWriteNode::value.
Definition ast.h:2324
pm_location_t call_operator_loc
CallOperatorWriteNode::call_operator_loc.
Definition ast.h:2264
CallOrWriteNode.
Definition ast.h:2345
pm_location_t operator_loc
CallOrWriteNode::operator_loc.
Definition ast.h:2408
pm_location_t call_operator_loc
CallOrWriteNode::call_operator_loc.
Definition ast.h:2368
pm_node_t base
The embedded base node.
Definition ast.h:2347
struct pm_node * receiver
CallOrWriteNode::receiver.
Definition ast.h:2358
struct pm_node * value
CallOrWriteNode::value.
Definition ast.h:2418
pm_constant_id_t write_name
CallOrWriteNode::write_name.
Definition ast.h:2398
pm_constant_id_t read_name
CallOrWriteNode::read_name.
Definition ast.h:2388
pm_location_t message_loc
CallOrWriteNode::message_loc.
Definition ast.h:2378
CallTargetNode.
Definition ast.h:2447
pm_node_t base
The embedded base node.
Definition ast.h:2449
pm_constant_id_t name
CallTargetNode::name.
Definition ast.h:2480
struct pm_node * receiver
CallTargetNode::receiver.
Definition ast.h:2460
pm_location_t call_operator_loc
CallTargetNode::call_operator_loc.
Definition ast.h:2470
pm_location_t message_loc
CallTargetNode::message_loc.
Definition ast.h:2490
CapturePatternNode.
Definition ast.h:2505
struct pm_local_variable_target_node * target
CapturePatternNode::target.
Definition ast.h:2528
pm_location_t operator_loc
CapturePatternNode::operator_loc.
Definition ast.h:2538
struct pm_node * value
CapturePatternNode::value.
Definition ast.h:2518
pm_node_t base
The embedded base node.
Definition ast.h:2507
CaseMatchNode.
Definition ast.h:2555
pm_location_t end_keyword_loc
CaseMatchNode::end_keyword_loc.
Definition ast.h:2608
struct pm_node_list conditions
CaseMatchNode::conditions.
Definition ast.h:2578
pm_node_t base
The embedded base node.
Definition ast.h:2557
pm_location_t case_keyword_loc
CaseMatchNode::case_keyword_loc.
Definition ast.h:2598
struct pm_else_node * else_clause
CaseMatchNode::else_clause.
Definition ast.h:2588
struct pm_node * predicate
CaseMatchNode::predicate.
Definition ast.h:2568
CaseNode.
Definition ast.h:2625
struct pm_node * predicate
CaseNode::predicate.
Definition ast.h:2638
struct pm_else_node * else_clause
CaseNode::else_clause.
Definition ast.h:2658
struct pm_node_list conditions
CaseNode::conditions.
Definition ast.h:2648
pm_node_t base
The embedded base node.
Definition ast.h:2627
pm_location_t case_keyword_loc
CaseNode::case_keyword_loc.
Definition ast.h:2668
pm_location_t end_keyword_loc
CaseNode::end_keyword_loc.
Definition ast.h:2678
ClassNode.
Definition ast.h:2693
pm_location_t class_keyword_loc
ClassNode::class_keyword_loc.
Definition ast.h:2711
pm_location_t end_keyword_loc
ClassNode::end_keyword_loc.
Definition ast.h:2757
struct pm_node * constant_path
ClassNode::constant_path.
Definition ast.h:2716
pm_constant_id_list_t locals
ClassNode::locals.
Definition ast.h:2701
pm_location_t inheritance_operator_loc
ClassNode::inheritance_operator_loc.
Definition ast.h:2726
pm_constant_id_t name
ClassNode::name.
Definition ast.h:2766
pm_node_t base
The embedded base node.
Definition ast.h:2695
struct pm_node * body
ClassNode::body.
Definition ast.h:2747
struct pm_node * superclass
ClassNode::superclass.
Definition ast.h:2736
ClassVariableAndWriteNode.
Definition ast.h:2781
struct pm_node * value
ClassVariableAndWriteNode::value.
Definition ast.h:2824
pm_constant_id_t name
ClassVariableAndWriteNode::name.
Definition ast.h:2794
pm_location_t operator_loc
ClassVariableAndWriteNode::operator_loc.
Definition ast.h:2814
pm_node_t base
The embedded base node.
Definition ast.h:2783
pm_location_t name_loc
ClassVariableAndWriteNode::name_loc.
Definition ast.h:2804
ClassVariableOperatorWriteNode.
Definition ast.h:2839
pm_node_t base
The embedded base node.
Definition ast.h:2841
pm_constant_id_t name
ClassVariableOperatorWriteNode::name.
Definition ast.h:2847
pm_location_t name_loc
ClassVariableOperatorWriteNode::name_loc.
Definition ast.h:2852
pm_constant_id_t binary_operator
ClassVariableOperatorWriteNode::binary_operator.
Definition ast.h:2867
struct pm_node * value
ClassVariableOperatorWriteNode::value.
Definition ast.h:2862
pm_location_t binary_operator_loc
ClassVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:2857
ClassVariableOrWriteNode.
Definition ast.h:2882
pm_node_t base
The embedded base node.
Definition ast.h:2884
pm_location_t name_loc
ClassVariableOrWriteNode::name_loc.
Definition ast.h:2895
pm_location_t operator_loc
ClassVariableOrWriteNode::operator_loc.
Definition ast.h:2900
pm_constant_id_t name
ClassVariableOrWriteNode::name.
Definition ast.h:2890
struct pm_node * value
ClassVariableOrWriteNode::value.
Definition ast.h:2905
ClassVariableReadNode.
Definition ast.h:2920
pm_node_t base
The embedded base node.
Definition ast.h:2922
pm_constant_id_t name
ClassVariableReadNode::name.
Definition ast.h:2934
ClassVariableTargetNode.
Definition ast.h:2949
pm_node_t base
The embedded base node.
Definition ast.h:2951
pm_constant_id_t name
ClassVariableTargetNode::name.
Definition ast.h:2957
ClassVariableWriteNode.
Definition ast.h:2972
pm_location_t name_loc
ClassVariableWriteNode::name_loc.
Definition ast.h:2996
pm_node_t base
The embedded base node.
Definition ast.h:2974
struct pm_node * value
ClassVariableWriteNode::value.
Definition ast.h:3009
pm_location_t operator_loc
ClassVariableWriteNode::operator_loc.
Definition ast.h:3019
pm_constant_id_t name
ClassVariableWriteNode::name.
Definition ast.h:2986
ConstantAndWriteNode.
Definition ast.h:3034
pm_location_t operator_loc
ConstantAndWriteNode::operator_loc.
Definition ast.h:3052
pm_location_t name_loc
ConstantAndWriteNode::name_loc.
Definition ast.h:3047
pm_constant_id_t name
ConstantAndWriteNode::name.
Definition ast.h:3042
struct pm_node * value
ConstantAndWriteNode::value.
Definition ast.h:3057
pm_node_t base
The embedded base node.
Definition ast.h:3036
A list of constant IDs.
ConstantOperatorWriteNode.
Definition ast.h:3072
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
struct pm_node * value
ConstantOperatorWriteNode::value.
Definition ast.h:3095
pm_node_t base
The embedded base node.
Definition ast.h:3074
ConstantOrWriteNode.
Definition ast.h:3115
pm_location_t operator_loc
ConstantOrWriteNode::operator_loc.
Definition ast.h:3133
pm_location_t name_loc
ConstantOrWriteNode::name_loc.
Definition ast.h:3128
pm_constant_id_t name
ConstantOrWriteNode::name.
Definition ast.h:3123
pm_node_t base
The embedded base node.
Definition ast.h:3117
struct pm_node * value
ConstantOrWriteNode::value.
Definition ast.h:3138
ConstantPathAndWriteNode.
Definition ast.h:3153
pm_node_t base
The embedded base node.
Definition ast.h:3155
struct pm_constant_path_node * target
ConstantPathAndWriteNode::target.
Definition ast.h:3161
pm_location_t operator_loc
ConstantPathAndWriteNode::operator_loc.
Definition ast.h:3166
struct pm_node * value
ConstantPathAndWriteNode::value.
Definition ast.h:3171
ConstantPathNode.
Definition ast.h:3186
pm_location_t delimiter_loc
ConstantPathNode::delimiter_loc.
Definition ast.h:3225
pm_node_t base
The embedded base node.
Definition ast.h:3188
pm_location_t name_loc
ConstantPathNode::name_loc.
Definition ast.h:3238
pm_constant_id_t name
ConstantPathNode::name.
Definition ast.h:3212
struct pm_node * parent
ConstantPathNode::parent.
Definition ast.h:3205
ConstantPathOperatorWriteNode.
Definition ast.h:3253
struct pm_constant_path_node * target
ConstantPathOperatorWriteNode::target.
Definition ast.h:3261
struct pm_node * value
ConstantPathOperatorWriteNode::value.
Definition ast.h:3271
pm_constant_id_t binary_operator
ConstantPathOperatorWriteNode::binary_operator.
Definition ast.h:3276
pm_node_t base
The embedded base node.
Definition ast.h:3255
pm_location_t binary_operator_loc
ConstantPathOperatorWriteNode::binary_operator_loc.
Definition ast.h:3266
ConstantPathOrWriteNode.
Definition ast.h:3291
pm_location_t operator_loc
ConstantPathOrWriteNode::operator_loc.
Definition ast.h:3304
pm_node_t base
The embedded base node.
Definition ast.h:3293
struct pm_node * value
ConstantPathOrWriteNode::value.
Definition ast.h:3309
struct pm_constant_path_node * target
ConstantPathOrWriteNode::target.
Definition ast.h:3299
ConstantPathTargetNode.
Definition ast.h:3324
pm_node_t base
The embedded base node.
Definition ast.h:3326
struct pm_node * parent
ConstantPathTargetNode::parent.
Definition ast.h:3332
pm_location_t delimiter_loc
ConstantPathTargetNode::delimiter_loc.
Definition ast.h:3342
pm_constant_id_t name
ConstantPathTargetNode::name.
Definition ast.h:3337
pm_location_t name_loc
ConstantPathTargetNode::name_loc.
Definition ast.h:3347
ConstantPathWriteNode.
Definition ast.h:3368
struct pm_constant_path_node * target
ConstantPathWriteNode::target.
Definition ast.h:3384
pm_location_t operator_loc
ConstantPathWriteNode::operator_loc.
Definition ast.h:3394
pm_node_t base
The embedded base node.
Definition ast.h:3370
struct pm_node * value
ConstantPathWriteNode::value.
Definition ast.h:3404
ConstantReadNode.
Definition ast.h:3419
pm_node_t base
The embedded base node.
Definition ast.h:3421
pm_constant_id_t name
ConstantReadNode::name.
Definition ast.h:3433
ConstantTargetNode.
Definition ast.h:3448
pm_node_t base
The embedded base node.
Definition ast.h:3450
pm_constant_id_t name
ConstantTargetNode::name.
Definition ast.h:3456
ConstantWriteNode.
Definition ast.h:3471
pm_node_t base
The embedded base node.
Definition ast.h:3473
struct pm_node * value
ConstantWriteNode::value.
Definition ast.h:3508
pm_constant_id_t name
ConstantWriteNode::name.
Definition ast.h:3485
pm_location_t name_loc
ConstantWriteNode::name_loc.
Definition ast.h:3495
pm_location_t operator_loc
ConstantWriteNode::operator_loc.
Definition ast.h:3518
DefNode.
Definition ast.h:3534
struct pm_parameters_node * parameters
DefNode::parameters.
Definition ast.h:3557
pm_location_t end_keyword_loc
DefNode::end_keyword_loc.
Definition ast.h:3597
pm_constant_id_t name
DefNode::name.
Definition ast.h:3542
pm_location_t name_loc
DefNode::name_loc.
Definition ast.h:3547
pm_location_t rparen_loc
DefNode::rparen_loc.
Definition ast.h:3587
struct pm_node * body
DefNode::body.
Definition ast.h:3562
pm_location_t equal_loc
DefNode::equal_loc.
Definition ast.h:3592
pm_location_t def_keyword_loc
DefNode::def_keyword_loc.
Definition ast.h:3572
struct pm_node * receiver
DefNode::receiver.
Definition ast.h:3552
pm_node_t base
The embedded base node.
Definition ast.h:3536
pm_location_t lparen_loc
DefNode::lparen_loc.
Definition ast.h:3582
pm_location_t operator_loc
DefNode::operator_loc.
Definition ast.h:3577
pm_constant_id_list_t locals
DefNode::locals.
Definition ast.h:3567
DefinedNode.
Definition ast.h:3612
pm_location_t lparen_loc
DefinedNode::lparen_loc.
Definition ast.h:3620
pm_node_t base
The embedded base node.
Definition ast.h:3614
pm_location_t rparen_loc
DefinedNode::rparen_loc.
Definition ast.h:3630
pm_location_t keyword_loc
DefinedNode::keyword_loc.
Definition ast.h:3635
struct pm_node * value
DefinedNode::value.
Definition ast.h:3625
ElseNode.
Definition ast.h:3650
struct pm_statements_node * statements
ElseNode::statements.
Definition ast.h:3663
pm_location_t else_keyword_loc
ElseNode::else_keyword_loc.
Definition ast.h:3658
pm_node_t base
The embedded base node.
Definition ast.h:3652
pm_location_t end_keyword_loc
ElseNode::end_keyword_loc.
Definition ast.h:3668
EmbeddedStatementsNode.
Definition ast.h:3683
pm_location_t closing_loc
EmbeddedStatementsNode::closing_loc.
Definition ast.h:3701
struct pm_statements_node * statements
EmbeddedStatementsNode::statements.
Definition ast.h:3696
pm_node_t base
The embedded base node.
Definition ast.h:3685
pm_location_t opening_loc
EmbeddedStatementsNode::opening_loc.
Definition ast.h:3691
EmbeddedVariableNode.
Definition ast.h:3716
struct pm_node * variable
EmbeddedVariableNode::variable.
Definition ast.h:3729
pm_location_t operator_loc
EmbeddedVariableNode::operator_loc.
Definition ast.h:3724
pm_node_t base
The embedded base node.
Definition ast.h:3718
EnsureNode.
Definition ast.h:3748
struct pm_statements_node * statements
EnsureNode::statements.
Definition ast.h:3761
pm_node_t base
The embedded base node.
Definition ast.h:3750
pm_location_t ensure_keyword_loc
EnsureNode::ensure_keyword_loc.
Definition ast.h:3756
pm_location_t end_keyword_loc
EnsureNode::end_keyword_loc.
Definition ast.h:3766
FalseNode.
Definition ast.h:3781
pm_node_t base
The embedded base node.
Definition ast.h:3783
FindPatternNode.
Definition ast.h:3808
struct pm_node * constant
FindPatternNode::constant.
Definition ast.h:3821
struct pm_node * right
FindPatternNode::right.
Definition ast.h:3860
pm_location_t opening_loc
FindPatternNode::opening_loc.
Definition ast.h:3873
pm_node_t base
The embedded base node.
Definition ast.h:3810
struct pm_node_list requireds
FindPatternNode::requireds.
Definition ast.h:3847
struct pm_splat_node * left
FindPatternNode::left.
Definition ast.h:3834
pm_location_t closing_loc
FindPatternNode::closing_loc.
Definition ast.h:3886
FlipFlopNode.
Definition ast.h:3904
pm_node_t base
The embedded base node.
Definition ast.h:3906
pm_location_t operator_loc
FlipFlopNode::operator_loc.
Definition ast.h:3922
struct pm_node * left
FlipFlopNode::left.
Definition ast.h:3912
struct pm_node * right
FlipFlopNode::right.
Definition ast.h:3917
FloatNode.
Definition ast.h:3937
double value
FloatNode::value.
Definition ast.h:3947
pm_node_t base
The embedded base node.
Definition ast.h:3939
ForNode.
Definition ast.h:3962
struct pm_statements_node * statements
ForNode::statements.
Definition ast.h:3997
struct pm_node * index
ForNode::index.
Definition ast.h:3975
struct pm_node * collection
ForNode::collection.
Definition ast.h:3985
pm_node_t base
The embedded base node.
Definition ast.h:3964
pm_location_t end_keyword_loc
ForNode::end_keyword_loc.
Definition ast.h:4037
pm_location_t for_keyword_loc
ForNode::for_keyword_loc.
Definition ast.h:4007
pm_location_t do_keyword_loc
ForNode::do_keyword_loc.
Definition ast.h:4027
pm_location_t in_keyword_loc
ForNode::in_keyword_loc.
Definition ast.h:4017
ForwardingArgumentsNode.
Definition ast.h:4054
pm_node_t base
The embedded base node.
Definition ast.h:4056
ForwardingParameterNode.
Definition ast.h:4073
pm_node_t base
The embedded base node.
Definition ast.h:4075
ForwardingSuperNode.
Definition ast.h:4091
pm_node_t base
The embedded base node.
Definition ast.h:4093
struct pm_block_node * block
ForwardingSuperNode::block.
Definition ast.h:4099
GlobalVariableAndWriteNode.
Definition ast.h:4114
pm_location_t operator_loc
GlobalVariableAndWriteNode::operator_loc.
Definition ast.h:4132
pm_node_t base
The embedded base node.
Definition ast.h:4116
pm_location_t name_loc
GlobalVariableAndWriteNode::name_loc.
Definition ast.h:4127
struct pm_node * value
GlobalVariableAndWriteNode::value.
Definition ast.h:4137
pm_constant_id_t name
GlobalVariableAndWriteNode::name.
Definition ast.h:4122
GlobalVariableOperatorWriteNode.
Definition ast.h:4152
pm_constant_id_t name
GlobalVariableOperatorWriteNode::name.
Definition ast.h:4160
pm_constant_id_t binary_operator
GlobalVariableOperatorWriteNode::binary_operator.
Definition ast.h:4180
struct pm_node * value
GlobalVariableOperatorWriteNode::value.
Definition ast.h:4175
pm_location_t name_loc
GlobalVariableOperatorWriteNode::name_loc.
Definition ast.h:4165
pm_node_t base
The embedded base node.
Definition ast.h:4154
pm_location_t binary_operator_loc
GlobalVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:4170
GlobalVariableOrWriteNode.
Definition ast.h:4195
pm_constant_id_t name
GlobalVariableOrWriteNode::name.
Definition ast.h:4203
pm_location_t name_loc
GlobalVariableOrWriteNode::name_loc.
Definition ast.h:4208
pm_node_t base
The embedded base node.
Definition ast.h:4197
pm_location_t operator_loc
GlobalVariableOrWriteNode::operator_loc.
Definition ast.h:4213
struct pm_node * value
GlobalVariableOrWriteNode::value.
Definition ast.h:4218
GlobalVariableReadNode.
Definition ast.h:4233
pm_node_t base
The embedded base node.
Definition ast.h:4235
pm_constant_id_t name
GlobalVariableReadNode::name.
Definition ast.h:4247
GlobalVariableTargetNode.
Definition ast.h:4262
pm_constant_id_t name
GlobalVariableTargetNode::name.
Definition ast.h:4270
pm_node_t base
The embedded base node.
Definition ast.h:4264
GlobalVariableWriteNode.
Definition ast.h:4285
struct pm_node * value
GlobalVariableWriteNode::value.
Definition ast.h:4322
pm_location_t name_loc
GlobalVariableWriteNode::name_loc.
Definition ast.h:4309
pm_location_t operator_loc
GlobalVariableWriteNode::operator_loc.
Definition ast.h:4332
pm_constant_id_t name
GlobalVariableWriteNode::name.
Definition ast.h:4299
pm_node_t base
The embedded base node.
Definition ast.h:4287
HashNode.
Definition ast.h:4347
struct pm_node_list elements
HashNode::elements.
Definition ast.h:4373
pm_node_t base
The embedded base node.
Definition ast.h:4349
pm_location_t closing_loc
HashNode::closing_loc.
Definition ast.h:4383
pm_location_t opening_loc
HashNode::opening_loc.
Definition ast.h:4360
HashPatternNode.
Definition ast.h:4407
struct pm_node_list elements
HashPatternNode::elements.
Definition ast.h:4433
pm_location_t opening_loc
HashPatternNode::opening_loc.
Definition ast.h:4462
pm_node_t base
The embedded base node.
Definition ast.h:4409
struct pm_node * rest
HashPatternNode::rest.
Definition ast.h:4449
pm_location_t closing_loc
HashPatternNode::closing_loc.
Definition ast.h:4475
struct pm_node * constant
HashPatternNode::constant.
Definition ast.h:4423
IfNode.
Definition ast.h:4496
struct pm_node * predicate
IfNode::predicate.
Definition ast.h:4529
pm_location_t end_keyword_loc
IfNode::end_keyword_loc.
Definition ast.h:4587
pm_location_t if_keyword_loc
IfNode::if_keyword_loc.
Definition ast.h:4511
struct pm_statements_node * statements
IfNode::statements.
Definition ast.h:4556
pm_node_t base
The embedded base node.
Definition ast.h:4498
struct pm_node * subsequent
IfNode::subsequent.
Definition ast.h:4575
pm_location_t then_keyword_loc
IfNode::then_keyword_loc.
Definition ast.h:4542
ImaginaryNode.
Definition ast.h:4602
struct pm_node * numeric
ImaginaryNode::numeric.
Definition ast.h:4610
pm_node_t base
The embedded base node.
Definition ast.h:4604
ImplicitNode.
Definition ast.h:4631
struct pm_node * value
ImplicitNode::value.
Definition ast.h:4639
pm_node_t base
The embedded base node.
Definition ast.h:4633
ImplicitRestNode.
Definition ast.h:4663
pm_node_t base
The embedded base node.
Definition ast.h:4665
InNode.
Definition ast.h:4681
struct pm_statements_node * statements
InNode::statements.
Definition ast.h:4694
struct pm_node * pattern
InNode::pattern.
Definition ast.h:4689
pm_node_t base
The embedded base node.
Definition ast.h:4683
pm_location_t then_loc
InNode::then_loc.
Definition ast.h:4704
pm_location_t in_loc
InNode::in_loc.
Definition ast.h:4699
IndexAndWriteNode.
Definition ast.h:4725
struct pm_arguments_node * arguments
IndexAndWriteNode::arguments.
Definition ast.h:4748
struct pm_node * receiver
IndexAndWriteNode::receiver.
Definition ast.h:4733
pm_node_t base
The embedded base node.
Definition ast.h:4727
struct pm_block_argument_node * block
IndexAndWriteNode::block.
Definition ast.h:4758
struct pm_node * value
IndexAndWriteNode::value.
Definition ast.h:4768
pm_location_t operator_loc
IndexAndWriteNode::operator_loc.
Definition ast.h:4763
pm_location_t closing_loc
IndexAndWriteNode::closing_loc.
Definition ast.h:4753
pm_location_t opening_loc
IndexAndWriteNode::opening_loc.
Definition ast.h:4743
pm_location_t call_operator_loc
IndexAndWriteNode::call_operator_loc.
Definition ast.h:4738
IndexOperatorWriteNode.
Definition ast.h:4789
pm_node_t base
The embedded base node.
Definition ast.h:4791
struct pm_block_argument_node * block
IndexOperatorWriteNode::block.
Definition ast.h:4822
pm_location_t binary_operator_loc
IndexOperatorWriteNode::binary_operator_loc.
Definition ast.h:4832
struct pm_node * value
IndexOperatorWriteNode::value.
Definition ast.h:4837
pm_location_t opening_loc
IndexOperatorWriteNode::opening_loc.
Definition ast.h:4807
pm_location_t call_operator_loc
IndexOperatorWriteNode::call_operator_loc.
Definition ast.h:4802
pm_location_t closing_loc
IndexOperatorWriteNode::closing_loc.
Definition ast.h:4817
struct pm_arguments_node * arguments
IndexOperatorWriteNode::arguments.
Definition ast.h:4812
pm_constant_id_t binary_operator
IndexOperatorWriteNode::binary_operator.
Definition ast.h:4827
struct pm_node * receiver
IndexOperatorWriteNode::receiver.
Definition ast.h:4797
IndexOrWriteNode.
Definition ast.h:4858
pm_location_t closing_loc
IndexOrWriteNode::closing_loc.
Definition ast.h:4886
pm_location_t call_operator_loc
IndexOrWriteNode::call_operator_loc.
Definition ast.h:4871
pm_node_t base
The embedded base node.
Definition ast.h:4860
struct pm_block_argument_node * block
IndexOrWriteNode::block.
Definition ast.h:4891
pm_location_t operator_loc
IndexOrWriteNode::operator_loc.
Definition ast.h:4896
struct pm_node * receiver
IndexOrWriteNode::receiver.
Definition ast.h:4866
pm_location_t opening_loc
IndexOrWriteNode::opening_loc.
Definition ast.h:4876
struct pm_node * value
IndexOrWriteNode::value.
Definition ast.h:4901
struct pm_arguments_node * arguments
IndexOrWriteNode::arguments.
Definition ast.h:4881
IndexTargetNode.
Definition ast.h:4930
pm_node_t base
The embedded base node.
Definition ast.h:4932
struct pm_node * receiver
IndexTargetNode::receiver.
Definition ast.h:4938
pm_location_t closing_loc
IndexTargetNode::closing_loc.
Definition ast.h:4953
struct pm_arguments_node * arguments
IndexTargetNode::arguments.
Definition ast.h:4948
pm_location_t opening_loc
IndexTargetNode::opening_loc.
Definition ast.h:4943
struct pm_block_argument_node * block
IndexTargetNode::block.
Definition ast.h:4958
InstanceVariableAndWriteNode.
Definition ast.h:4973
pm_location_t operator_loc
InstanceVariableAndWriteNode::operator_loc.
Definition ast.h:4991
pm_location_t name_loc
InstanceVariableAndWriteNode::name_loc.
Definition ast.h:4986
struct pm_node * value
InstanceVariableAndWriteNode::value.
Definition ast.h:4996
pm_node_t base
The embedded base node.
Definition ast.h:4975
pm_constant_id_t name
InstanceVariableAndWriteNode::name.
Definition ast.h:4981
InstanceVariableOperatorWriteNode.
Definition ast.h:5011
struct pm_node * value
InstanceVariableOperatorWriteNode::value.
Definition ast.h:5034
pm_constant_id_t binary_operator
InstanceVariableOperatorWriteNode::binary_operator.
Definition ast.h:5039
pm_location_t binary_operator_loc
InstanceVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:5029
pm_constant_id_t name
InstanceVariableOperatorWriteNode::name.
Definition ast.h:5019
pm_node_t base
The embedded base node.
Definition ast.h:5013
pm_location_t name_loc
InstanceVariableOperatorWriteNode::name_loc.
Definition ast.h:5024
InstanceVariableOrWriteNode.
Definition ast.h:5054
pm_location_t operator_loc
InstanceVariableOrWriteNode::operator_loc.
Definition ast.h:5072
struct pm_node * value
InstanceVariableOrWriteNode::value.
Definition ast.h:5077
pm_node_t base
The embedded base node.
Definition ast.h:5056
pm_location_t name_loc
InstanceVariableOrWriteNode::name_loc.
Definition ast.h:5067
pm_constant_id_t name
InstanceVariableOrWriteNode::name.
Definition ast.h:5062
InstanceVariableReadNode.
Definition ast.h:5092
pm_constant_id_t name
InstanceVariableReadNode::name.
Definition ast.h:5106
pm_node_t base
The embedded base node.
Definition ast.h:5094
InstanceVariableTargetNode.
Definition ast.h:5121
pm_constant_id_t name
InstanceVariableTargetNode::name.
Definition ast.h:5129
pm_node_t base
The embedded base node.
Definition ast.h:5123
InstanceVariableWriteNode.
Definition ast.h:5144
pm_location_t operator_loc
InstanceVariableWriteNode::operator_loc.
Definition ast.h:5191
pm_constant_id_t name
InstanceVariableWriteNode::name.
Definition ast.h:5158
pm_node_t base
The embedded base node.
Definition ast.h:5146
struct pm_node * value
InstanceVariableWriteNode::value.
Definition ast.h:5181
pm_location_t name_loc
InstanceVariableWriteNode::name_loc.
Definition ast.h:5168
IntegerNode.
Definition ast.h:5212
pm_integer_t value
IntegerNode::value.
Definition ast.h:5222
pm_node_t base
The embedded base node.
Definition ast.h:5214
A structure represents an arbitrary-sized integer.
Definition pm_integer.h:20
InterpolatedMatchLastLineNode.
Definition ast.h:5250
pm_node_t base
The embedded base node.
Definition ast.h:5252
pm_location_t closing_loc
InterpolatedMatchLastLineNode::closing_loc.
Definition ast.h:5268
struct pm_node_list parts
InterpolatedMatchLastLineNode::parts.
Definition ast.h:5263
pm_location_t opening_loc
InterpolatedMatchLastLineNode::opening_loc.
Definition ast.h:5258
InterpolatedRegularExpressionNode.
Definition ast.h:5296
pm_location_t opening_loc
InterpolatedRegularExpressionNode::opening_loc.
Definition ast.h:5304
struct pm_node_list parts
InterpolatedRegularExpressionNode::parts.
Definition ast.h:5309
pm_node_t base
The embedded base node.
Definition ast.h:5298
pm_location_t closing_loc
InterpolatedRegularExpressionNode::closing_loc.
Definition ast.h:5314
InterpolatedStringNode.
Definition ast.h:5333
pm_node_t base
The embedded base node.
Definition ast.h:5335
pm_location_t closing_loc
InterpolatedStringNode::closing_loc.
Definition ast.h:5351
pm_location_t opening_loc
InterpolatedStringNode::opening_loc.
Definition ast.h:5341
struct pm_node_list parts
InterpolatedStringNode::parts.
Definition ast.h:5346
InterpolatedSymbolNode.
Definition ast.h:5366
struct pm_node_list parts
InterpolatedSymbolNode::parts.
Definition ast.h:5379
pm_location_t closing_loc
InterpolatedSymbolNode::closing_loc.
Definition ast.h:5384
pm_location_t opening_loc
InterpolatedSymbolNode::opening_loc.
Definition ast.h:5374
pm_node_t base
The embedded base node.
Definition ast.h:5368
InterpolatedXStringNode.
Definition ast.h:5399
pm_location_t opening_loc
InterpolatedXStringNode::opening_loc.
Definition ast.h:5407
pm_location_t closing_loc
InterpolatedXStringNode::closing_loc.
Definition ast.h:5417
pm_node_t base
The embedded base node.
Definition ast.h:5401
struct pm_node_list parts
InterpolatedXStringNode::parts.
Definition ast.h:5412
ItLocalVariableReadNode.
Definition ast.h:5432
pm_node_t base
The embedded base node.
Definition ast.h:5434
ItParametersNode.
Definition ast.h:5450
pm_node_t base
The embedded base node.
Definition ast.h:5452
KeywordHashNode.
Definition ast.h:5471
pm_node_t base
The embedded base node.
Definition ast.h:5473
struct pm_node_list elements
KeywordHashNode::elements.
Definition ast.h:5479
KeywordRestParameterNode.
Definition ast.h:5498
pm_node_t base
The embedded base node.
Definition ast.h:5500
pm_constant_id_t name
KeywordRestParameterNode::name.
Definition ast.h:5506
pm_location_t operator_loc
KeywordRestParameterNode::operator_loc.
Definition ast.h:5516
pm_location_t name_loc
KeywordRestParameterNode::name_loc.
Definition ast.h:5511
LambdaNode.
Definition ast.h:5531
pm_location_t closing_loc
LambdaNode::closing_loc.
Definition ast.h:5554
pm_node_t base
The embedded base node.
Definition ast.h:5533
struct pm_node * body
LambdaNode::body.
Definition ast.h:5564
pm_location_t opening_loc
LambdaNode::opening_loc.
Definition ast.h:5549
struct pm_node * parameters
LambdaNode::parameters.
Definition ast.h:5559
pm_location_t operator_loc
LambdaNode::operator_loc.
Definition ast.h:5544
pm_constant_id_list_t locals
LambdaNode::locals.
Definition ast.h:5539
LocalVariableAndWriteNode.
Definition ast.h:5579
pm_constant_id_t name
LocalVariableAndWriteNode::name.
Definition ast.h:5602
pm_node_t base
The embedded base node.
Definition ast.h:5581
uint32_t depth
LocalVariableAndWriteNode::depth.
Definition ast.h:5607
pm_location_t operator_loc
LocalVariableAndWriteNode::operator_loc.
Definition ast.h:5592
struct pm_node * value
LocalVariableAndWriteNode::value.
Definition ast.h:5597
pm_location_t name_loc
LocalVariableAndWriteNode::name_loc.
Definition ast.h:5587
LocalVariableOperatorWriteNode.
Definition ast.h:5622
uint32_t depth
LocalVariableOperatorWriteNode::depth.
Definition ast.h:5655
pm_constant_id_t binary_operator
LocalVariableOperatorWriteNode::binary_operator.
Definition ast.h:5650
pm_node_t base
The embedded base node.
Definition ast.h:5624
struct pm_node * value
LocalVariableOperatorWriteNode::value.
Definition ast.h:5640
pm_location_t name_loc
LocalVariableOperatorWriteNode::name_loc.
Definition ast.h:5630
pm_location_t binary_operator_loc
LocalVariableOperatorWriteNode::binary_operator_loc.
Definition ast.h:5635
pm_constant_id_t name
LocalVariableOperatorWriteNode::name.
Definition ast.h:5645
LocalVariableOrWriteNode.
Definition ast.h:5670
uint32_t depth
LocalVariableOrWriteNode::depth.
Definition ast.h:5698
pm_location_t operator_loc
LocalVariableOrWriteNode::operator_loc.
Definition ast.h:5683
struct pm_node * value
LocalVariableOrWriteNode::value.
Definition ast.h:5688
pm_node_t base
The embedded base node.
Definition ast.h:5672
pm_constant_id_t name
LocalVariableOrWriteNode::name.
Definition ast.h:5693
pm_location_t name_loc
LocalVariableOrWriteNode::name_loc.
Definition ast.h:5678
LocalVariableReadNode.
Definition ast.h:5713
uint32_t depth
LocalVariableReadNode::depth.
Definition ast.h:5744
pm_constant_id_t name
LocalVariableReadNode::name.
Definition ast.h:5731
pm_node_t base
The embedded base node.
Definition ast.h:5715
LocalVariableTargetNode.
Definition ast.h:5762
uint32_t depth
LocalVariableTargetNode::depth.
Definition ast.h:5775
pm_constant_id_t name
LocalVariableTargetNode::name.
Definition ast.h:5770
pm_node_t base
The embedded base node.
Definition ast.h:5764
LocalVariableWriteNode.
Definition ast.h:5790
pm_location_t operator_loc
LocalVariableWriteNode::operator_loc.
Definition ast.h:5854
pm_location_t name_loc
LocalVariableWriteNode::name_loc.
Definition ast.h:5827
pm_node_t base
The embedded base node.
Definition ast.h:5792
struct pm_node * value
LocalVariableWriteNode::value.
Definition ast.h:5844
uint32_t depth
LocalVariableWriteNode::depth.
Definition ast.h:5817
pm_constant_id_t name
LocalVariableWriteNode::name.
Definition ast.h:5804
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:5882
pm_location_t content_loc
MatchLastLineNode::content_loc.
Definition ast.h:5895
pm_location_t opening_loc
MatchLastLineNode::opening_loc.
Definition ast.h:5890
pm_location_t closing_loc
MatchLastLineNode::closing_loc.
Definition ast.h:5900
pm_string_t unescaped
MatchLastLineNode::unescaped.
Definition ast.h:5905
pm_node_t base
The embedded base node.
Definition ast.h:5884
MatchPredicateNode.
Definition ast.h:5920
pm_location_t operator_loc
MatchPredicateNode::operator_loc.
Definition ast.h:5938
struct pm_node * pattern
MatchPredicateNode::pattern.
Definition ast.h:5933
struct pm_node * value
MatchPredicateNode::value.
Definition ast.h:5928
pm_node_t base
The embedded base node.
Definition ast.h:5922
MatchRequiredNode.
Definition ast.h:5953
pm_node_t base
The embedded base node.
Definition ast.h:5955
pm_location_t operator_loc
MatchRequiredNode::operator_loc.
Definition ast.h:6025
struct pm_node * value
MatchRequiredNode::value.
Definition ast.h:5966
struct pm_node * pattern
MatchRequiredNode::pattern.
Definition ast.h:6015
MatchWriteNode.
Definition ast.h:6040
pm_node_t base
The embedded base node.
Definition ast.h:6042
struct pm_node_list targets
MatchWriteNode::targets.
Definition ast.h:6053
struct pm_call_node * call
MatchWriteNode::call.
Definition ast.h:6048
MissingNode.
Definition ast.h:6065
pm_node_t base
The embedded base node.
Definition ast.h:6067
ModuleNode.
Definition ast.h:6083
pm_location_t end_keyword_loc
ModuleNode::end_keyword_loc.
Definition ast.h:6111
struct pm_node * constant_path
ModuleNode::constant_path.
Definition ast.h:6101
struct pm_node * body
ModuleNode::body.
Definition ast.h:6106
pm_constant_id_list_t locals
ModuleNode::locals.
Definition ast.h:6091
pm_node_t base
The embedded base node.
Definition ast.h:6085
pm_location_t module_keyword_loc
ModuleNode::module_keyword_loc.
Definition ast.h:6096
pm_constant_id_t name
ModuleNode::name.
Definition ast.h:6116
MultiTargetNode.
Definition ast.h:6136
pm_node_t base
The embedded base node.
Definition ast.h:6138
pm_location_t lparen_loc
MultiTargetNode::lparen_loc.
Definition ast.h:6194
struct pm_node_list lefts
MultiTargetNode::lefts.
Definition ast.h:6154
struct pm_node * rest
MultiTargetNode::rest.
Definition ast.h:6174
pm_location_t rparen_loc
MultiTargetNode::rparen_loc.
Definition ast.h:6204
struct pm_node_list rights
MultiTargetNode::rights.
Definition ast.h:6184
MultiWriteNode.
Definition ast.h:6219
pm_location_t rparen_loc
MultiWriteNode::rparen_loc.
Definition ast.h:6287
struct pm_node * value
MultiWriteNode::value.
Definition ast.h:6307
struct pm_node * rest
MultiWriteNode::rest.
Definition ast.h:6257
struct pm_node_list rights
MultiWriteNode::rights.
Definition ast.h:6267
pm_location_t operator_loc
MultiWriteNode::operator_loc.
Definition ast.h:6297
pm_location_t lparen_loc
MultiWriteNode::lparen_loc.
Definition ast.h:6277
struct pm_node_list lefts
MultiWriteNode::lefts.
Definition ast.h:6237
pm_node_t base
The embedded base node.
Definition ast.h:6221
NextNode.
Definition ast.h:6322
struct pm_arguments_node * arguments
NextNode::arguments.
Definition ast.h:6330
pm_node_t base
The embedded base node.
Definition ast.h:6324
pm_location_t keyword_loc
NextNode::keyword_loc.
Definition ast.h:6335
NilNode.
Definition ast.h:6350
pm_node_t base
The embedded base node.
Definition ast.h:6352
NoKeywordsParameterNode.
Definition ast.h:6369
pm_location_t keyword_loc
NoKeywordsParameterNode::keyword_loc.
Definition ast.h:6382
pm_location_t operator_loc
NoKeywordsParameterNode::operator_loc.
Definition ast.h:6377
pm_node_t base
The embedded base node.
Definition ast.h:6371
A list of nodes in the source, most often used for lists of children.
Definition ast.h:557
size_t size
The number of nodes in the list.
Definition ast.h:559
struct pm_node ** nodes
The nodes in the list.
Definition ast.h:565
size_t capacity
The capacity of the list that has been allocated.
Definition ast.h:562
This is the base structure that represents a node in the syntax tree.
Definition ast.h:1068
pm_node_type_t type
This represents the type of the node.
Definition ast.h:1073
uint32_t node_id
The unique identifier for this node, which is deterministic based on the source.
Definition ast.h:1085
pm_node_flags_t flags
This represents any flags on the node.
Definition ast.h:1079
pm_location_t location
This is the location of the node in the source.
Definition ast.h:1091
NumberedParametersNode.
Definition ast.h:6397
pm_node_t base
The embedded base node.
Definition ast.h:6399
uint8_t maximum
NumberedParametersNode::maximum.
Definition ast.h:6405
NumberedReferenceReadNode.
Definition ast.h:6420
pm_node_t base
The embedded base node.
Definition ast.h:6422
uint32_t number
NumberedReferenceReadNode::number.
Definition ast.h:6436
OptionalKeywordParameterNode.
Definition ast.h:6455
pm_node_t base
The embedded base node.
Definition ast.h:6457
pm_constant_id_t name
OptionalKeywordParameterNode::name.
Definition ast.h:6463
struct pm_node * value
OptionalKeywordParameterNode::value.
Definition ast.h:6473
pm_location_t name_loc
OptionalKeywordParameterNode::name_loc.
Definition ast.h:6468
OptionalParameterNode.
Definition ast.h:6492
pm_location_t name_loc
OptionalParameterNode::name_loc.
Definition ast.h:6505
struct pm_node * value
OptionalParameterNode::value.
Definition ast.h:6515
pm_constant_id_t name
OptionalParameterNode::name.
Definition ast.h:6500
pm_node_t base
The embedded base node.
Definition ast.h:6494
pm_location_t operator_loc
OptionalParameterNode::operator_loc.
Definition ast.h:6510
OrNode.
Definition ast.h:6530
struct pm_node * left
OrNode::left.
Definition ast.h:6546
struct pm_node * right
OrNode::right.
Definition ast.h:6559
pm_node_t base
The embedded base node.
Definition ast.h:6532
pm_location_t operator_loc
OrNode::operator_loc.
Definition ast.h:6569
ParametersNode.
Definition ast.h:6585
struct pm_node * rest
ParametersNode::rest.
Definition ast.h:6603
struct pm_node_list requireds
ParametersNode::requireds.
Definition ast.h:6593
struct pm_block_parameter_node * block
ParametersNode::block.
Definition ast.h:6623
struct pm_node_list optionals
ParametersNode::optionals.
Definition ast.h:6598
struct pm_node_list posts
ParametersNode::posts.
Definition ast.h:6608
pm_node_t base
The embedded base node.
Definition ast.h:6587
struct pm_node * keyword_rest
ParametersNode::keyword_rest.
Definition ast.h:6618
struct pm_node_list keywords
ParametersNode::keywords.
Definition ast.h:6613
ParenthesesNode.
Definition ast.h:6641
struct pm_node * body
ParenthesesNode::body.
Definition ast.h:6649
pm_location_t closing_loc
ParenthesesNode::closing_loc.
Definition ast.h:6659
pm_node_t base
The embedded base node.
Definition ast.h:6643
pm_location_t opening_loc
ParenthesesNode::opening_loc.
Definition ast.h:6654
PinnedExpressionNode.
Definition ast.h:6674
pm_node_t base
The embedded base node.
Definition ast.h:6676
pm_location_t rparen_loc
PinnedExpressionNode::rparen_loc.
Definition ast.h:6717
struct pm_node * expression
PinnedExpressionNode::expression.
Definition ast.h:6687
pm_location_t lparen_loc
PinnedExpressionNode::lparen_loc.
Definition ast.h:6707
pm_location_t operator_loc
PinnedExpressionNode::operator_loc.
Definition ast.h:6697
PinnedVariableNode.
Definition ast.h:6732
struct pm_node * variable
PinnedVariableNode::variable.
Definition ast.h:6745
pm_node_t base
The embedded base node.
Definition ast.h:6734
pm_location_t operator_loc
PinnedVariableNode::operator_loc.
Definition ast.h:6755
PostExecutionNode.
Definition ast.h:6770
pm_location_t closing_loc
PostExecutionNode::closing_loc.
Definition ast.h:6793
struct pm_statements_node * statements
PostExecutionNode::statements.
Definition ast.h:6778
pm_node_t base
The embedded base node.
Definition ast.h:6772
pm_location_t opening_loc
PostExecutionNode::opening_loc.
Definition ast.h:6788
pm_location_t keyword_loc
PostExecutionNode::keyword_loc.
Definition ast.h:6783
PreExecutionNode.
Definition ast.h:6808
struct pm_statements_node * statements
PreExecutionNode::statements.
Definition ast.h:6816
pm_location_t closing_loc
PreExecutionNode::closing_loc.
Definition ast.h:6831
pm_location_t opening_loc
PreExecutionNode::opening_loc.
Definition ast.h:6826
pm_node_t base
The embedded base node.
Definition ast.h:6810
pm_location_t keyword_loc
PreExecutionNode::keyword_loc.
Definition ast.h:6821
ProgramNode.
Definition ast.h:6843
struct pm_statements_node * statements
ProgramNode::statements.
Definition ast.h:6856
pm_node_t base
The embedded base node.
Definition ast.h:6845
pm_constant_id_list_t locals
ProgramNode::locals.
Definition ast.h:6851
RangeNode.
Definition ast.h:6877
struct pm_node * right
RangeNode::right.
Definition ast.h:6907
pm_location_t operator_loc
RangeNode::operator_loc.
Definition ast.h:6914
pm_node_t base
The embedded base node.
Definition ast.h:6879
struct pm_node * left
RangeNode::left.
Definition ast.h:6893
RationalNode.
Definition ast.h:6935
pm_node_t base
The embedded base node.
Definition ast.h:6937
pm_integer_t denominator
RationalNode::denominator.
Definition ast.h:6956
pm_integer_t numerator
RationalNode::numerator.
Definition ast.h:6947
RedoNode.
Definition ast.h:6971
pm_node_t base
The embedded base node.
Definition ast.h:6973
RegularExpressionNode.
Definition ast.h:7002
pm_location_t closing_loc
RegularExpressionNode::closing_loc.
Definition ast.h:7020
pm_node_t base
The embedded base node.
Definition ast.h:7004
pm_string_t unescaped
RegularExpressionNode::unescaped.
Definition ast.h:7025
pm_location_t opening_loc
RegularExpressionNode::opening_loc.
Definition ast.h:7010
pm_location_t content_loc
RegularExpressionNode::content_loc.
Definition ast.h:7015
RequiredKeywordParameterNode.
Definition ast.h:7044
pm_location_t name_loc
RequiredKeywordParameterNode::name_loc.
Definition ast.h:7057
pm_node_t base
The embedded base node.
Definition ast.h:7046
pm_constant_id_t name
RequiredKeywordParameterNode::name.
Definition ast.h:7052
RequiredParameterNode.
Definition ast.h:7076
pm_constant_id_t name
RequiredParameterNode::name.
Definition ast.h:7084
pm_node_t base
The embedded base node.
Definition ast.h:7078
RescueModifierNode.
Definition ast.h:7099
pm_node_t base
The embedded base node.
Definition ast.h:7101
struct pm_node * rescue_expression
RescueModifierNode::rescue_expression.
Definition ast.h:7117
pm_location_t keyword_loc
RescueModifierNode::keyword_loc.
Definition ast.h:7112
struct pm_node * expression
RescueModifierNode::expression.
Definition ast.h:7107
RescueNode.
Definition ast.h:7137
pm_location_t keyword_loc
RescueNode::keyword_loc.
Definition ast.h:7145
struct pm_rescue_node * subsequent
RescueNode::subsequent.
Definition ast.h:7175
pm_location_t then_keyword_loc
RescueNode::then_keyword_loc.
Definition ast.h:7165
pm_location_t operator_loc
RescueNode::operator_loc.
Definition ast.h:7155
struct pm_node * reference
RescueNode::reference.
Definition ast.h:7160
struct pm_node_list exceptions
RescueNode::exceptions.
Definition ast.h:7150
struct pm_statements_node * statements
RescueNode::statements.
Definition ast.h:7170
pm_node_t base
The embedded base node.
Definition ast.h:7139
RestParameterNode.
Definition ast.h:7194
pm_constant_id_t name
RestParameterNode::name.
Definition ast.h:7202
pm_location_t name_loc
RestParameterNode::name_loc.
Definition ast.h:7207
pm_node_t base
The embedded base node.
Definition ast.h:7196
pm_location_t operator_loc
RestParameterNode::operator_loc.
Definition ast.h:7212
RetryNode.
Definition ast.h:7227
pm_node_t base
The embedded base node.
Definition ast.h:7229
ReturnNode.
Definition ast.h:7245
pm_location_t keyword_loc
ReturnNode::keyword_loc.
Definition ast.h:7253
pm_node_t base
The embedded base node.
Definition ast.h:7247
struct pm_arguments_node * arguments
ReturnNode::arguments.
Definition ast.h:7258
SelfNode.
Definition ast.h:7273
pm_node_t base
The embedded base node.
Definition ast.h:7275
ShareableConstantNode.
Definition ast.h:7297
struct pm_node * write
ShareableConstantNode::write.
Definition ast.h:7307
pm_node_t base
The embedded base node.
Definition ast.h:7299
SingletonClassNode.
Definition ast.h:7322
pm_node_t base
The embedded base node.
Definition ast.h:7324
pm_constant_id_list_t locals
SingletonClassNode::locals.
Definition ast.h:7330
pm_location_t operator_loc
SingletonClassNode::operator_loc.
Definition ast.h:7340
struct pm_node * expression
SingletonClassNode::expression.
Definition ast.h:7345
pm_location_t end_keyword_loc
SingletonClassNode::end_keyword_loc.
Definition ast.h:7355
pm_location_t class_keyword_loc
SingletonClassNode::class_keyword_loc.
Definition ast.h:7335
struct pm_node * body
SingletonClassNode::body.
Definition ast.h:7350
SourceEncodingNode.
Definition ast.h:7370
pm_node_t base
The embedded base node.
Definition ast.h:7372
SourceFileNode.
Definition ast.h:7394
pm_string_t filepath
SourceFileNode::filepath.
Definition ast.h:7404
pm_node_t base
The embedded base node.
Definition ast.h:7396
SourceLineNode.
Definition ast.h:7419
pm_node_t base
The embedded base node.
Definition ast.h:7421
SplatNode.
Definition ast.h:7437
struct pm_node * expression
SplatNode::expression.
Definition ast.h:7450
pm_node_t base
The embedded base node.
Definition ast.h:7439
pm_location_t operator_loc
SplatNode::operator_loc.
Definition ast.h:7445
StatementsNode.
Definition ast.h:7465
struct pm_node_list body
StatementsNode::body.
Definition ast.h:7473
pm_node_t base
The embedded base node.
Definition ast.h:7467
StringNode.
Definition ast.h:7500
pm_node_t base
The embedded base node.
Definition ast.h:7502
pm_string_t unescaped
StringNode::unescaped.
Definition ast.h:7523
pm_location_t content_loc
StringNode::content_loc.
Definition ast.h:7513
pm_location_t closing_loc
StringNode::closing_loc.
Definition ast.h:7518
pm_location_t opening_loc
StringNode::opening_loc.
Definition ast.h:7508
A generic string type that can have various ownership semantics.
Definition pm_string.h:33
SuperNode.
Definition ast.h:7541
struct pm_arguments_node * arguments
SuperNode::arguments.
Definition ast.h:7559
pm_location_t lparen_loc
SuperNode::lparen_loc.
Definition ast.h:7554
pm_node_t base
The embedded base node.
Definition ast.h:7543
pm_location_t keyword_loc
SuperNode::keyword_loc.
Definition ast.h:7549
pm_location_t rparen_loc
SuperNode::rparen_loc.
Definition ast.h:7564
struct pm_node * block
SuperNode::block.
Definition ast.h:7569
SymbolNode.
Definition ast.h:7592
pm_location_t opening_loc
SymbolNode::opening_loc.
Definition ast.h:7600
pm_location_t value_loc
SymbolNode::value_loc.
Definition ast.h:7605
pm_location_t closing_loc
SymbolNode::closing_loc.
Definition ast.h:7610
pm_string_t unescaped
SymbolNode::unescaped.
Definition ast.h:7615
pm_node_t base
The embedded base node.
Definition ast.h:7594
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:7630
pm_node_t base
The embedded base node.
Definition ast.h:7632
UndefNode.
Definition ast.h:7648
pm_node_t base
The embedded base node.
Definition ast.h:7650
pm_location_t keyword_loc
UndefNode::keyword_loc.
Definition ast.h:7661
struct pm_node_list names
UndefNode::names.
Definition ast.h:7656
UnlessNode.
Definition ast.h:7679
pm_location_t keyword_loc
UnlessNode::keyword_loc.
Definition ast.h:7695
pm_location_t then_keyword_loc
UnlessNode::then_keyword_loc.
Definition ast.h:7718
pm_location_t end_keyword_loc
UnlessNode::end_keyword_loc.
Definition ast.h:7749
pm_node_t base
The embedded base node.
Definition ast.h:7681
struct pm_statements_node * statements
UnlessNode::statements.
Definition ast.h:7729
struct pm_node * predicate
UnlessNode::predicate.
Definition ast.h:7708
struct pm_else_node * else_clause
UnlessNode::else_clause.
Definition ast.h:7739
UntilNode.
Definition ast.h:7770
struct pm_statements_node * statements
UntilNode::statements.
Definition ast.h:7798
pm_location_t closing_loc
UntilNode::closing_loc.
Definition ast.h:7788
struct pm_node * predicate
UntilNode::predicate.
Definition ast.h:7793
pm_location_t keyword_loc
UntilNode::keyword_loc.
Definition ast.h:7778
pm_node_t base
The embedded base node.
Definition ast.h:7772
pm_location_t do_keyword_loc
UntilNode::do_keyword_loc.
Definition ast.h:7783
WhenNode.
Definition ast.h:7815
struct pm_statements_node * statements
WhenNode::statements.
Definition ast.h:7838
pm_node_t base
The embedded base node.
Definition ast.h:7817
pm_location_t then_keyword_loc
WhenNode::then_keyword_loc.
Definition ast.h:7833
pm_location_t keyword_loc
WhenNode::keyword_loc.
Definition ast.h:7823
struct pm_node_list conditions
WhenNode::conditions.
Definition ast.h:7828
WhileNode.
Definition ast.h:7859
pm_location_t closing_loc
WhileNode::closing_loc.
Definition ast.h:7877
pm_location_t keyword_loc
WhileNode::keyword_loc.
Definition ast.h:7867
struct pm_statements_node * statements
WhileNode::statements.
Definition ast.h:7887
pm_node_t base
The embedded base node.
Definition ast.h:7861
pm_location_t do_keyword_loc
WhileNode::do_keyword_loc.
Definition ast.h:7872
struct pm_node * predicate
WhileNode::predicate.
Definition ast.h:7882
XStringNode.
Definition ast.h:7906
pm_location_t closing_loc
XStringNode::closing_loc.
Definition ast.h:7924
pm_location_t opening_loc
XStringNode::opening_loc.
Definition ast.h:7914
pm_location_t content_loc
XStringNode::content_loc.
Definition ast.h:7919
pm_string_t unescaped
XStringNode::unescaped.
Definition ast.h:7929
pm_node_t base
The embedded base node.
Definition ast.h:7908
YieldNode.
Definition ast.h:7944
pm_location_t keyword_loc
YieldNode::keyword_loc.
Definition ast.h:7952
pm_location_t lparen_loc
YieldNode::lparen_loc.
Definition ast.h:7957
pm_node_t base
The embedded base node.
Definition ast.h:7946
pm_location_t rparen_loc
YieldNode::rparen_loc.
Definition ast.h:7967
struct pm_arguments_node * arguments
YieldNode::arguments.
Definition ast.h:7962