Ruby: prism/ast.h File Reference

Ruby 3.4.4p34 (2025-05-14 revision a38531fd3f617bf734ef7d6c595325f69985ea1d)

Data Structures | Macros | Typedefs | Enumerations | Variables
ast.h File Reference

The abstract syntax tree. More...

`#include "prism/defines.h"`
`#include "prism/util/pm_constant_pool.h"`
`#include "prism/util/pm_integer.h"`
`#include "prism/util/pm_string.h"`
`#include <assert.h>`
`#include <stddef.h>`
`#include <stdint.h>`

Go to the source code of this file.

## Data Structures
struct | pm_token_t
| This struct represents a token in the Ruby source. More...
struct | pm_location_t
| This represents a range of bytes in the source string to which a node or token corresponds. More...
struct | pm_node_list
| A list of nodes in the source, most often used for lists of children. More...
struct | pm_node
| This is the base structure that represents a node in the syntax tree. More...
struct | pm_alias_global_variable_node
| AliasGlobalVariableNode. More...
struct | pm_alias_method_node
| AliasMethodNode. More...
struct | pm_alternation_pattern_node
| AlternationPatternNode. More...
struct | pm_and_node
| AndNode. More...
struct | pm_arguments_node
| ArgumentsNode. More...
struct | pm_array_node
| ArrayNode. More...
struct | pm_array_pattern_node
| ArrayPatternNode. More...
struct | pm_assoc_node
| AssocNode. More...
struct | pm_assoc_splat_node
| AssocSplatNode. More...
struct | pm_back_reference_read_node
| BackReferenceReadNode. More...
struct | pm_begin_node
| BeginNode. More...
struct | pm_block_argument_node
| BlockArgumentNode. More...
struct | pm_block_local_variable_node
| BlockLocalVariableNode. More...
struct | pm_block_node
| BlockNode. More...
struct | pm_block_parameter_node
| BlockParameterNode. More...
struct | pm_block_parameters_node
| BlockParametersNode. More...
struct | pm_break_node
| BreakNode. More...
struct | pm_call_and_write_node
| CallAndWriteNode. More...
struct | pm_call_node
| CallNode. More...
struct | pm_call_operator_write_node
| CallOperatorWriteNode. More...
struct | pm_call_or_write_node
| CallOrWriteNode. More...
struct | pm_call_target_node
| CallTargetNode. More...
struct | pm_capture_pattern_node
| CapturePatternNode. More...
struct | pm_case_match_node
| CaseMatchNode. More...
struct | pm_case_node
| CaseNode. More...
struct | pm_class_node
| ClassNode. More...
struct | pm_class_variable_and_write_node
| ClassVariableAndWriteNode. More...
struct | pm_class_variable_operator_write_node
| ClassVariableOperatorWriteNode. More...
struct | pm_class_variable_or_write_node
| ClassVariableOrWriteNode. More...
struct | pm_class_variable_read_node
| ClassVariableReadNode. More...
struct | pm_class_variable_target_node
| ClassVariableTargetNode. More...
struct | pm_class_variable_write_node
| ClassVariableWriteNode. More...
struct | pm_constant_and_write_node
| ConstantAndWriteNode. More...
struct | pm_constant_operator_write_node
| ConstantOperatorWriteNode. More...
struct | pm_constant_or_write_node
| ConstantOrWriteNode. More...
struct | pm_constant_path_and_write_node
| ConstantPathAndWriteNode. More...
struct | pm_constant_path_node
| ConstantPathNode. More...
struct | pm_constant_path_operator_write_node
| ConstantPathOperatorWriteNode. More...
struct | pm_constant_path_or_write_node
| ConstantPathOrWriteNode. More...
struct | pm_constant_path_target_node
| ConstantPathTargetNode. More...
struct | pm_constant_path_write_node
| ConstantPathWriteNode. More...
struct | pm_constant_read_node
| ConstantReadNode. More...
struct | pm_constant_target_node
| ConstantTargetNode. More...
struct | pm_constant_write_node
| ConstantWriteNode. More...
struct | pm_def_node
| DefNode. More...
struct | pm_defined_node
| DefinedNode. More...
struct | pm_else_node
| ElseNode. More...
struct | pm_embedded_statements_node
| EmbeddedStatementsNode. More...
struct | pm_embedded_variable_node
| EmbeddedVariableNode. More...
struct | pm_ensure_node
| EnsureNode. More...
struct | pm_false_node
| FalseNode. More...
struct | pm_find_pattern_node
| FindPatternNode. More...
struct | pm_flip_flop_node
| FlipFlopNode. More...
struct | pm_float_node
| FloatNode. More...
struct | pm_for_node
| ForNode. More...
struct | pm_forwarding_arguments_node
| ForwardingArgumentsNode. More...
struct | pm_forwarding_parameter_node
| ForwardingParameterNode. More...
struct | pm_forwarding_super_node
| ForwardingSuperNode. More...
struct | pm_global_variable_and_write_node
| GlobalVariableAndWriteNode. More...
struct | pm_global_variable_operator_write_node
| GlobalVariableOperatorWriteNode. More...
struct | pm_global_variable_or_write_node
| GlobalVariableOrWriteNode. More...
struct | pm_global_variable_read_node
| GlobalVariableReadNode. More...
struct | pm_global_variable_target_node
| GlobalVariableTargetNode. More...
struct | pm_global_variable_write_node
| GlobalVariableWriteNode. More...
struct | pm_hash_node
| HashNode. More...
struct | pm_hash_pattern_node
| HashPatternNode. More...
struct | pm_if_node
| IfNode. More...
struct | pm_imaginary_node
| ImaginaryNode. More...
struct | pm_implicit_node
| ImplicitNode. More...
struct | pm_implicit_rest_node
| ImplicitRestNode. More...
struct | pm_in_node
| InNode. More...
struct | pm_index_and_write_node
| IndexAndWriteNode. More...
struct | pm_index_operator_write_node
| IndexOperatorWriteNode. More...
struct | pm_index_or_write_node
| IndexOrWriteNode. More...
struct | pm_index_target_node
| IndexTargetNode. More...
struct | pm_instance_variable_and_write_node
| InstanceVariableAndWriteNode. More...
struct | pm_instance_variable_operator_write_node
| InstanceVariableOperatorWriteNode. More...
struct | pm_instance_variable_or_write_node
| InstanceVariableOrWriteNode. More...
struct | pm_instance_variable_read_node
| InstanceVariableReadNode. More...
struct | pm_instance_variable_target_node
| InstanceVariableTargetNode. More...
struct | pm_instance_variable_write_node
| InstanceVariableWriteNode. More...
struct | pm_integer_node
| IntegerNode. More...
struct | pm_interpolated_match_last_line_node
| InterpolatedMatchLastLineNode. More...
struct | pm_interpolated_regular_expression_node
| InterpolatedRegularExpressionNode. More...
struct | pm_interpolated_string_node
| InterpolatedStringNode. More...
struct | pm_interpolated_symbol_node
| InterpolatedSymbolNode. More...
struct | pm_interpolated_x_string_node
| InterpolatedXStringNode. More...
struct | pm_it_local_variable_read_node
| ItLocalVariableReadNode. More...
struct | pm_it_parameters_node
| ItParametersNode. More...
struct | pm_keyword_hash_node
| KeywordHashNode. More...
struct | pm_keyword_rest_parameter_node
| KeywordRestParameterNode. More...
struct | pm_lambda_node
| LambdaNode. More...
struct | pm_local_variable_and_write_node
| LocalVariableAndWriteNode. More...
struct | pm_local_variable_operator_write_node
| LocalVariableOperatorWriteNode. More...
struct | pm_local_variable_or_write_node
| LocalVariableOrWriteNode. More...
struct | pm_local_variable_read_node
| LocalVariableReadNode. More...
struct | pm_local_variable_target_node
| LocalVariableTargetNode. More...
struct | pm_local_variable_write_node
| LocalVariableWriteNode. More...
struct | pm_match_last_line_node
| MatchLastLineNode. More...
struct | pm_match_predicate_node
| MatchPredicateNode. More...
struct | pm_match_required_node
| MatchRequiredNode. More...
struct | pm_match_write_node
| MatchWriteNode. More...
struct | pm_missing_node
| MissingNode. More...
struct | pm_module_node
| ModuleNode. More...
struct | pm_multi_target_node
| MultiTargetNode. More...
struct | pm_multi_write_node
| MultiWriteNode. More...
struct | pm_next_node
| NextNode. More...
struct | pm_nil_node
| NilNode. More...
struct | pm_no_keywords_parameter_node
| NoKeywordsParameterNode. More...
struct | pm_numbered_parameters_node
| NumberedParametersNode. More...
struct | pm_numbered_reference_read_node
| NumberedReferenceReadNode. More...
struct | pm_optional_keyword_parameter_node
| OptionalKeywordParameterNode. More...
struct | pm_optional_parameter_node
| OptionalParameterNode. More...
struct | pm_or_node
| OrNode. More...
struct | pm_parameters_node
| ParametersNode. More...
struct | pm_parentheses_node
| ParenthesesNode. More...
struct | pm_pinned_expression_node
| PinnedExpressionNode. More...
struct | pm_pinned_variable_node
| PinnedVariableNode. More...
struct | pm_post_execution_node
| PostExecutionNode. More...
struct | pm_pre_execution_node
| PreExecutionNode. More...
struct | pm_program_node
| ProgramNode. More...
struct | pm_range_node
| RangeNode. More...
struct | pm_rational_node
| RationalNode. More...
struct | pm_redo_node
| RedoNode. More...
struct | pm_regular_expression_node
| RegularExpressionNode. More...
struct | pm_required_keyword_parameter_node
| RequiredKeywordParameterNode. More...
struct | pm_required_parameter_node
| RequiredParameterNode. More...
struct | pm_rescue_modifier_node
| RescueModifierNode. More...
struct | pm_rescue_node
| RescueNode. More...
struct | pm_rest_parameter_node
| RestParameterNode. More...
struct | pm_retry_node
| RetryNode. More...
struct | pm_return_node
| ReturnNode. More...
struct | pm_self_node
| SelfNode. More...
struct | pm_shareable_constant_node
| ShareableConstantNode. More...
struct | pm_singleton_class_node
| SingletonClassNode. More...
struct | pm_source_encoding_node
| SourceEncodingNode. More...
struct | pm_source_file_node
| SourceFileNode. More...
struct | pm_source_line_node
| SourceLineNode. More...
struct | pm_splat_node
| SplatNode. More...
struct | pm_statements_node
| StatementsNode. More...
struct | pm_string_node
| StringNode. More...
struct | pm_super_node
| SuperNode. More...
struct | pm_symbol_node
| SymbolNode. More...
struct | pm_true_node
| TrueNode. More...
struct | pm_undef_node
| UndefNode. More...
struct | pm_unless_node
| UnlessNode. More...
struct | pm_until_node
| UntilNode. More...
struct | pm_when_node
| WhenNode. More...
struct | pm_while_node
| WhileNode. More...
struct | pm_x_string_node
| XStringNode. More...
struct | pm_yield_node
| YieldNode. More...

## Macros
#define | PM_NODE_TYPE(node)
| Cast the type to an enum to allow the compiler to provide exhaustiveness checking.
#define | PM_NODE_TYPE_P(node, type)
| Return true if the type of the given node matches the given type.
#define | PM_NODE_FLAG_P(node, flag)
| Return true if the given flag is set on the given node.
#define | PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS 0
| When we're serializing to Java, we want to skip serializing the location fields as they won't be used by JRuby or TruffleRuby.

## Typedefs
typedef enum pm_token_type | pm_token_type_t
| This enum represents every type of token in the Ruby source.
typedef struct pm_node_list | pm_node_list_t
| A list of nodes in the source, most often used for lists of children.
typedef uint16_t | pm_node_type_t
| This is the type of node embedded in the node struct.
typedef uint16_t | pm_node_flags_t
| These are the flags embedded in the node struct.
typedef struct pm_node | pm_node_t
| This is the base structure that represents a node in the syntax tree.
typedef struct pm_alias_global_variable_node | pm_alias_global_variable_node_t
| AliasGlobalVariableNode.
typedef struct pm_alias_method_node | pm_alias_method_node_t
| AliasMethodNode.
typedef struct pm_alternation_pattern_node | pm_alternation_pattern_node_t
| AlternationPatternNode.
typedef struct pm_and_node | pm_and_node_t
| AndNode.
typedef struct pm_arguments_node | pm_arguments_node_t
| ArgumentsNode.
typedef struct pm_array_node | pm_array_node_t
| ArrayNode.
typedef struct pm_array_pattern_node | pm_array_pattern_node_t
| ArrayPatternNode.
typedef struct pm_assoc_node | pm_assoc_node_t
| AssocNode.
typedef struct pm_assoc_splat_node | pm_assoc_splat_node_t
| AssocSplatNode.
typedef struct pm_back_reference_read_node | pm_back_reference_read_node_t
| BackReferenceReadNode.
typedef struct pm_begin_node | pm_begin_node_t
| BeginNode.
typedef struct pm_block_argument_node | pm_block_argument_node_t
| BlockArgumentNode.
typedef struct pm_block_local_variable_node | pm_block_local_variable_node_t
| BlockLocalVariableNode.
typedef struct pm_block_node | pm_block_node_t
| BlockNode.
typedef struct pm_block_parameter_node | pm_block_parameter_node_t
| BlockParameterNode.
typedef struct pm_block_parameters_node | pm_block_parameters_node_t
| BlockParametersNode.
typedef struct pm_break_node | pm_break_node_t
| BreakNode.
typedef struct pm_call_and_write_node | pm_call_and_write_node_t
| CallAndWriteNode.
typedef struct pm_call_node | pm_call_node_t
| CallNode.
typedef struct pm_call_operator_write_node | pm_call_operator_write_node_t
| CallOperatorWriteNode.
typedef struct pm_call_or_write_node | pm_call_or_write_node_t
| CallOrWriteNode.
typedef struct pm_call_target_node | pm_call_target_node_t
| CallTargetNode.
typedef struct pm_capture_pattern_node | pm_capture_pattern_node_t
| CapturePatternNode.
typedef struct pm_case_match_node | pm_case_match_node_t
| CaseMatchNode.
typedef struct pm_case_node | pm_case_node_t
| CaseNode.
typedef struct pm_class_node | pm_class_node_t
| ClassNode.
typedef struct pm_class_variable_and_write_node | pm_class_variable_and_write_node_t
| ClassVariableAndWriteNode.
typedef struct pm_class_variable_operator_write_node | pm_class_variable_operator_write_node_t
| ClassVariableOperatorWriteNode.
typedef struct pm_class_variable_or_write_node | pm_class_variable_or_write_node_t
| ClassVariableOrWriteNode.
typedef struct pm_class_variable_read_node | pm_class_variable_read_node_t
| ClassVariableReadNode.
typedef struct pm_class_variable_target_node | pm_class_variable_target_node_t
| ClassVariableTargetNode.
typedef struct pm_class_variable_write_node | pm_class_variable_write_node_t
| ClassVariableWriteNode.
typedef struct pm_constant_and_write_node | pm_constant_and_write_node_t
| ConstantAndWriteNode.
typedef struct pm_constant_operator_write_node | pm_constant_operator_write_node_t
| ConstantOperatorWriteNode.
typedef struct pm_constant_or_write_node | pm_constant_or_write_node_t
| ConstantOrWriteNode.
typedef struct pm_constant_path_and_write_node | pm_constant_path_and_write_node_t
| ConstantPathAndWriteNode.
typedef struct pm_constant_path_node | pm_constant_path_node_t
| ConstantPathNode.
typedef struct pm_constant_path_operator_write_node | pm_constant_path_operator_write_node_t
| ConstantPathOperatorWriteNode.
typedef struct pm_constant_path_or_write_node | pm_constant_path_or_write_node_t
| ConstantPathOrWriteNode.
typedef struct pm_constant_path_target_node | pm_constant_path_target_node_t
| ConstantPathTargetNode.
typedef struct pm_constant_path_write_node | pm_constant_path_write_node_t
| ConstantPathWriteNode.
typedef struct pm_constant_read_node | pm_constant_read_node_t
| ConstantReadNode.
typedef struct pm_constant_target_node | pm_constant_target_node_t
| ConstantTargetNode.
typedef struct pm_constant_write_node | pm_constant_write_node_t
| ConstantWriteNode.
typedef struct pm_def_node | pm_def_node_t
| DefNode.
typedef struct pm_defined_node | pm_defined_node_t
| DefinedNode.
typedef struct pm_else_node | pm_else_node_t
| ElseNode.
typedef struct pm_embedded_statements_node | pm_embedded_statements_node_t
| EmbeddedStatementsNode.
typedef struct pm_embedded_variable_node | pm_embedded_variable_node_t
| EmbeddedVariableNode.
typedef struct pm_ensure_node | pm_ensure_node_t
| EnsureNode.
typedef struct pm_false_node | pm_false_node_t
| FalseNode.
typedef struct pm_find_pattern_node | pm_find_pattern_node_t
| FindPatternNode.
typedef struct pm_flip_flop_node | pm_flip_flop_node_t
| FlipFlopNode.
typedef struct pm_float_node | pm_float_node_t
| FloatNode.
typedef struct pm_for_node | pm_for_node_t
| ForNode.
typedef struct pm_forwarding_arguments_node | pm_forwarding_arguments_node_t
| ForwardingArgumentsNode.
typedef struct pm_forwarding_parameter_node | pm_forwarding_parameter_node_t
| ForwardingParameterNode.
typedef struct pm_forwarding_super_node | pm_forwarding_super_node_t
| ForwardingSuperNode.
typedef struct pm_global_variable_and_write_node | pm_global_variable_and_write_node_t
| GlobalVariableAndWriteNode.
typedef struct pm_global_variable_operator_write_node | pm_global_variable_operator_write_node_t
| GlobalVariableOperatorWriteNode.
typedef struct pm_global_variable_or_write_node | pm_global_variable_or_write_node_t
| GlobalVariableOrWriteNode.
typedef struct pm_global_variable_read_node | pm_global_variable_read_node_t
| GlobalVariableReadNode.
typedef struct pm_global_variable_target_node | pm_global_variable_target_node_t
| GlobalVariableTargetNode.
typedef struct pm_global_variable_write_node | pm_global_variable_write_node_t
| GlobalVariableWriteNode.
typedef struct pm_hash_node | pm_hash_node_t
| HashNode.
typedef struct pm_hash_pattern_node | pm_hash_pattern_node_t
| HashPatternNode.
typedef struct pm_if_node | pm_if_node_t
| IfNode.
typedef struct pm_imaginary_node | pm_imaginary_node_t
| ImaginaryNode.
typedef struct pm_implicit_node | pm_implicit_node_t
| ImplicitNode.
typedef struct pm_implicit_rest_node | pm_implicit_rest_node_t
| ImplicitRestNode.
typedef struct pm_in_node | pm_in_node_t
| InNode.
typedef struct pm_index_and_write_node | pm_index_and_write_node_t
| IndexAndWriteNode.
typedef struct pm_index_operator_write_node | pm_index_operator_write_node_t
| IndexOperatorWriteNode.
typedef struct pm_index_or_write_node | pm_index_or_write_node_t
| IndexOrWriteNode.
typedef struct pm_index_target_node | pm_index_target_node_t
| IndexTargetNode.
typedef struct pm_instance_variable_and_write_node | pm_instance_variable_and_write_node_t
| InstanceVariableAndWriteNode.
typedef struct pm_instance_variable_operator_write_node | pm_instance_variable_operator_write_node_t
| InstanceVariableOperatorWriteNode.
typedef struct pm_instance_variable_or_write_node | pm_instance_variable_or_write_node_t
| InstanceVariableOrWriteNode.
typedef struct pm_instance_variable_read_node | pm_instance_variable_read_node_t
| InstanceVariableReadNode.
typedef struct pm_instance_variable_target_node | pm_instance_variable_target_node_t
| InstanceVariableTargetNode.
typedef struct pm_instance_variable_write_node | pm_instance_variable_write_node_t
| InstanceVariableWriteNode.
typedef struct pm_integer_node | pm_integer_node_t
| IntegerNode.
typedef struct pm_interpolated_match_last_line_node | pm_interpolated_match_last_line_node_t
| InterpolatedMatchLastLineNode.
typedef struct pm_interpolated_regular_expression_node | pm_interpolated_regular_expression_node_t
| InterpolatedRegularExpressionNode.
typedef struct pm_interpolated_string_node | pm_interpolated_string_node_t
| InterpolatedStringNode.
typedef struct pm_interpolated_symbol_node | pm_interpolated_symbol_node_t
| InterpolatedSymbolNode.
typedef struct pm_interpolated_x_string_node | pm_interpolated_x_string_node_t
| InterpolatedXStringNode.
typedef struct pm_it_local_variable_read_node | pm_it_local_variable_read_node_t
| ItLocalVariableReadNode.
typedef struct pm_it_parameters_node | pm_it_parameters_node_t
| ItParametersNode.
typedef struct pm_keyword_hash_node | pm_keyword_hash_node_t
| KeywordHashNode.
typedef struct pm_keyword_rest_parameter_node | pm_keyword_rest_parameter_node_t
| KeywordRestParameterNode.
typedef struct pm_lambda_node | pm_lambda_node_t
| LambdaNode.
typedef struct pm_local_variable_and_write_node | pm_local_variable_and_write_node_t
| LocalVariableAndWriteNode.
typedef struct pm_local_variable_operator_write_node | pm_local_variable_operator_write_node_t
| LocalVariableOperatorWriteNode.
typedef struct pm_local_variable_or_write_node | pm_local_variable_or_write_node_t
| LocalVariableOrWriteNode.
typedef struct pm_local_variable_read_node | pm_local_variable_read_node_t
| LocalVariableReadNode.
typedef struct pm_local_variable_target_node | pm_local_variable_target_node_t
| LocalVariableTargetNode.
typedef struct pm_local_variable_write_node | pm_local_variable_write_node_t
| LocalVariableWriteNode.
typedef struct pm_match_last_line_node | pm_match_last_line_node_t
| MatchLastLineNode.
typedef struct pm_match_predicate_node | pm_match_predicate_node_t
| MatchPredicateNode.
typedef struct pm_match_required_node | pm_match_required_node_t
| MatchRequiredNode.
typedef struct pm_match_write_node | pm_match_write_node_t
| MatchWriteNode.
typedef struct pm_missing_node | pm_missing_node_t
| MissingNode.
typedef struct pm_module_node | pm_module_node_t
| ModuleNode.
typedef struct pm_multi_target_node | pm_multi_target_node_t
| MultiTargetNode.
typedef struct pm_multi_write_node | pm_multi_write_node_t
| MultiWriteNode.
typedef struct pm_next_node | pm_next_node_t
| NextNode.
typedef struct pm_nil_node | pm_nil_node_t
| NilNode.
typedef struct pm_no_keywords_parameter_node | pm_no_keywords_parameter_node_t
| NoKeywordsParameterNode.
typedef struct pm_numbered_parameters_node | pm_numbered_parameters_node_t
| NumberedParametersNode.
typedef struct pm_numbered_reference_read_node | pm_numbered_reference_read_node_t
| NumberedReferenceReadNode.
typedef struct pm_optional_keyword_parameter_node | pm_optional_keyword_parameter_node_t
| OptionalKeywordParameterNode.
typedef struct pm_optional_parameter_node | pm_optional_parameter_node_t
| OptionalParameterNode.
typedef struct pm_or_node | pm_or_node_t
| OrNode.
typedef struct pm_parameters_node | pm_parameters_node_t
| ParametersNode.
typedef struct pm_parentheses_node | pm_parentheses_node_t
| ParenthesesNode.
typedef struct pm_pinned_expression_node | pm_pinned_expression_node_t
| PinnedExpressionNode.
typedef struct pm_pinned_variable_node | pm_pinned_variable_node_t
| PinnedVariableNode.
typedef struct pm_post_execution_node | pm_post_execution_node_t
| PostExecutionNode.
typedef struct pm_pre_execution_node | pm_pre_execution_node_t
| PreExecutionNode.
typedef struct pm_program_node | pm_program_node_t
| ProgramNode.
typedef struct pm_range_node | pm_range_node_t
| RangeNode.
typedef struct pm_rational_node | pm_rational_node_t
| RationalNode.
typedef struct pm_redo_node | pm_redo_node_t
| RedoNode.
typedef struct pm_regular_expression_node | pm_regular_expression_node_t
| RegularExpressionNode.
typedef struct pm_required_keyword_parameter_node | pm_required_keyword_parameter_node_t
| RequiredKeywordParameterNode.
typedef struct pm_required_parameter_node | pm_required_parameter_node_t
| RequiredParameterNode.
typedef struct pm_rescue_modifier_node | pm_rescue_modifier_node_t
| RescueModifierNode.
typedef struct pm_rescue_node | pm_rescue_node_t
| RescueNode.
typedef struct pm_rest_parameter_node | pm_rest_parameter_node_t
| RestParameterNode.
typedef struct pm_retry_node | pm_retry_node_t
| RetryNode.
typedef struct pm_return_node | pm_return_node_t
| ReturnNode.
typedef struct pm_self_node | pm_self_node_t
| SelfNode.
typedef struct pm_shareable_constant_node | pm_shareable_constant_node_t
| ShareableConstantNode.
typedef struct pm_singleton_class_node | pm_singleton_class_node_t
| SingletonClassNode.
typedef struct pm_source_encoding_node | pm_source_encoding_node_t
| SourceEncodingNode.
typedef struct pm_source_file_node | pm_source_file_node_t
| SourceFileNode.
typedef struct pm_source_line_node | pm_source_line_node_t
| SourceLineNode.
typedef struct pm_splat_node | pm_splat_node_t
| SplatNode.
typedef struct pm_statements_node | pm_statements_node_t
| StatementsNode.
typedef struct pm_string_node | pm_string_node_t
| StringNode.
typedef struct pm_super_node | pm_super_node_t
| SuperNode.
typedef struct pm_symbol_node | pm_symbol_node_t
| SymbolNode.
typedef struct pm_true_node | pm_true_node_t
| TrueNode.
typedef struct pm_undef_node | pm_undef_node_t
| UndefNode.
typedef struct pm_unless_node | pm_unless_node_t
| UnlessNode.
typedef struct pm_until_node | pm_until_node_t
| UntilNode.
typedef struct pm_when_node | pm_when_node_t
| WhenNode.
typedef struct pm_while_node | pm_while_node_t
| WhileNode.
typedef struct pm_x_string_node | pm_x_string_node_t
| XStringNode.
typedef struct pm_yield_node | pm_yield_node_t
| YieldNode.
typedef enum pm_arguments_node_flags | pm_arguments_node_flags_t
| Flags for arguments nodes.
typedef enum pm_array_node_flags | pm_array_node_flags_t
| Flags for array nodes.
typedef enum pm_call_node_flags | pm_call_node_flags_t
| Flags for call nodes.
typedef enum pm_encoding_flags | pm_encoding_flags_t
| Flags for nodes that have unescaped content.
typedef enum pm_integer_base_flags | pm_integer_base_flags_t
| Flags for integer nodes that correspond to the base of the integer.
typedef enum pm_interpolated_string_node_flags | pm_interpolated_string_node_flags_t
| Flags for interpolated string nodes that indicated mutability if they are also marked as literals.
typedef enum pm_keyword_hash_node_flags | pm_keyword_hash_node_flags_t
| Flags for keyword hash nodes.
typedef enum pm_loop_flags | pm_loop_flags_t
| Flags for while and until loop nodes.
typedef enum pm_parameter_flags | pm_parameter_flags_t
| Flags for parameter nodes.
typedef enum pm_range_flags | pm_range_flags_t
| Flags for range and flip-flop nodes.
typedef enum pm_regular_expression_flags | pm_regular_expression_flags_t
| Flags for regular expression and match last line nodes.
typedef enum pm_shareable_constant_node_flags | pm_shareable_constant_node_flags_t
| Flags for shareable constant nodes.
typedef enum pm_string_flags | pm_string_flags_t
| Flags for string nodes.
typedef enum pm_symbol_flags | pm_symbol_flags_t
| Flags for symbol nodes.

## Enumerations
enum | pm_token_type { PM_TOKEN_EOF = 1 , PM_TOKEN_MISSING , PM_TOKEN_NOT_PROVIDED , PM_TOKEN_AMPERSAND , PM_TOKEN_AMPERSAND_AMPERSAND , PM_TOKEN_AMPERSAND_AMPERSAND_EQUAL , PM_TOKEN_AMPERSAND_DOT , PM_TOKEN_AMPERSAND_EQUAL , PM_TOKEN_BACKTICK , PM_TOKEN_BACK_REFERENCE , PM_TOKEN_BANG , PM_TOKEN_BANG_EQUAL , PM_TOKEN_BANG_TILDE , PM_TOKEN_BRACE_LEFT , PM_TOKEN_BRACE_RIGHT , PM_TOKEN_BRACKET_LEFT , PM_TOKEN_BRACKET_LEFT_ARRAY , PM_TOKEN_BRACKET_LEFT_RIGHT , PM_TOKEN_BRACKET_LEFT_RIGHT_EQUAL , PM_TOKEN_BRACKET_RIGHT , PM_TOKEN_CARET , PM_TOKEN_CARET_EQUAL , PM_TOKEN_CHARACTER_LITERAL , PM_TOKEN_CLASS_VARIABLE , PM_TOKEN_COLON , PM_TOKEN_COLON_COLON , PM_TOKEN_COMMA , PM_TOKEN_COMMENT , PM_TOKEN_CONSTANT , PM_TOKEN_DOT , PM_TOKEN_DOT_DOT , PM_TOKEN_DOT_DOT_DOT , PM_TOKEN_EMBDOC_BEGIN , PM_TOKEN_EMBDOC_END , PM_TOKEN_EMBDOC_LINE , PM_TOKEN_EMBEXPR_BEGIN , PM_TOKEN_EMBEXPR_END , PM_TOKEN_EMBVAR , PM_TOKEN_EQUAL , PM_TOKEN_EQUAL_EQUAL , PM_TOKEN_EQUAL_EQUAL_EQUAL , PM_TOKEN_EQUAL_GREATER , PM_TOKEN_EQUAL_TILDE , PM_TOKEN_FLOAT , PM_TOKEN_FLOAT_IMAGINARY , PM_TOKEN_FLOAT_RATIONAL , PM_TOKEN_FLOAT_RATIONAL_IMAGINARY , PM_TOKEN_GLOBAL_VARIABLE , PM_TOKEN_GREATER , PM_TOKEN_GREATER_EQUAL , PM_TOKEN_GREATER_GREATER , PM_TOKEN_GREATER_GREATER_EQUAL , PM_TOKEN_HEREDOC_END , PM_TOKEN_HEREDOC_START , PM_TOKEN_IDENTIFIER , PM_TOKEN_IGNORED_NEWLINE , PM_TOKEN_INSTANCE_VARIABLE , PM_TOKEN_INTEGER , PM_TOKEN_INTEGER_IMAGINARY , PM_TOKEN_INTEGER_RATIONAL , PM_TOKEN_INTEGER_RATIONAL_IMAGINARY , PM_TOKEN_KEYWORD_ALIAS , PM_TOKEN_KEYWORD_AND , PM_TOKEN_KEYWORD_BEGIN , PM_TOKEN_KEYWORD_BEGIN_UPCASE , PM_TOKEN_KEYWORD_BREAK , PM_TOKEN_KEYWORD_CASE , PM_TOKEN_KEYWORD_CLASS , PM_TOKEN_KEYWORD_DEF , PM_TOKEN_KEYWORD_DEFINED , PM_TOKEN_KEYWORD_DO , PM_TOKEN_KEYWORD_DO_LOOP , PM_TOKEN_KEYWORD_ELSE , PM_TOKEN_KEYWORD_ELSIF , PM_TOKEN_KEYWORD_END , PM_TOKEN_KEYWORD_END_UPCASE , PM_TOKEN_KEYWORD_ENSURE , PM_TOKEN_KEYWORD_FALSE , PM_TOKEN_KEYWORD_FOR , PM_TOKEN_KEYWORD_IF , PM_TOKEN_KEYWORD_IF_MODIFIER , PM_TOKEN_KEYWORD_IN , PM_TOKEN_KEYWORD_MODULE , PM_TOKEN_KEYWORD_NEXT , PM_TOKEN_KEYWORD_NIL , PM_TOKEN_KEYWORD_NOT , PM_TOKEN_KEYWORD_OR , PM_TOKEN_KEYWORD_REDO , PM_TOKEN_KEYWORD_RESCUE , PM_TOKEN_KEYWORD_RESCUE_MODIFIER , PM_TOKEN_KEYWORD_RETRY , PM_TOKEN_KEYWORD_RETURN , PM_TOKEN_KEYWORD_SELF , PM_TOKEN_KEYWORD_SUPER , PM_TOKEN_KEYWORD_THEN , PM_TOKEN_KEYWORD_TRUE , PM_TOKEN_KEYWORD_UNDEF , PM_TOKEN_KEYWORD_UNLESS , PM_TOKEN_KEYWORD_UNLESS_MODIFIER , PM_TOKEN_KEYWORD_UNTIL , PM_TOKEN_KEYWORD_UNTIL_MODIFIER , PM_TOKEN_KEYWORD_WHEN , PM_TOKEN_KEYWORD_WHILE , PM_TOKEN_KEYWORD_WHILE_MODIFIER , PM_TOKEN_KEYWORD_YIELD , PM_TOKEN_KEYWORD___ENCODING__ , PM_TOKEN_KEYWORD___FILE__ , PM_TOKEN_KEYWORD___LINE__ , PM_TOKEN_LABEL , PM_TOKEN_LABEL_END , PM_TOKEN_LAMBDA_BEGIN , PM_TOKEN_LESS , PM_TOKEN_LESS_EQUAL , PM_TOKEN_LESS_EQUAL_GREATER , PM_TOKEN_LESS_LESS , PM_TOKEN_LESS_LESS_EQUAL , PM_TOKEN_METHOD_NAME , PM_TOKEN_MINUS , PM_TOKEN_MINUS_EQUAL , PM_TOKEN_MINUS_GREATER , PM_TOKEN_NEWLINE , PM_TOKEN_NUMBERED_REFERENCE , PM_TOKEN_PARENTHESIS_LEFT , PM_TOKEN_PARENTHESIS_LEFT_PARENTHESES , PM_TOKEN_PARENTHESIS_RIGHT , PM_TOKEN_PERCENT , PM_TOKEN_PERCENT_EQUAL , PM_TOKEN_PERCENT_LOWER_I , PM_TOKEN_PERCENT_LOWER_W , PM_TOKEN_PERCENT_LOWER_X , PM_TOKEN_PERCENT_UPPER_I , PM_TOKEN_PERCENT_UPPER_W , PM_TOKEN_PIPE , PM_TOKEN_PIPE_EQUAL , PM_TOKEN_PIPE_PIPE , PM_TOKEN_PIPE_PIPE_EQUAL , PM_TOKEN_PLUS , PM_TOKEN_PLUS_EQUAL , PM_TOKEN_QUESTION_MARK , PM_TOKEN_REGEXP_BEGIN , PM_TOKEN_REGEXP_END , PM_TOKEN_SEMICOLON , PM_TOKEN_SLASH , PM_TOKEN_SLASH_EQUAL , PM_TOKEN_STAR , PM_TOKEN_STAR_EQUAL , PM_TOKEN_STAR_STAR , PM_TOKEN_STAR_STAR_EQUAL , PM_TOKEN_STRING_BEGIN , PM_TOKEN_STRING_CONTENT , PM_TOKEN_STRING_END , PM_TOKEN_SYMBOL_BEGIN , PM_TOKEN_TILDE , PM_TOKEN_UAMPERSAND , PM_TOKEN_UCOLON_COLON , PM_TOKEN_UDOT_DOT , PM_TOKEN_UDOT_DOT_DOT , PM_TOKEN_UMINUS , PM_TOKEN_UMINUS_NUM , PM_TOKEN_UPLUS , PM_TOKEN_USTAR , PM_TOKEN_USTAR_STAR , PM_TOKEN_WORDS_SEP , PM_TOKEN___END__ , PM_TOKEN_MAXIMUM }
| This enum represents every type of token in the Ruby source. More...
enum | pm_node_type { PM_ALIAS_GLOBAL_VARIABLE_NODE = 1 , PM_ALIAS_METHOD_NODE = 2 , PM_ALTERNATION_PATTERN_NODE = 3 , PM_AND_NODE = 4 , PM_ARGUMENTS_NODE = 5 , PM_ARRAY_NODE = 6 , PM_ARRAY_PATTERN_NODE = 7 , PM_ASSOC_NODE = 8 , PM_ASSOC_SPLAT_NODE = 9 , PM_BACK_REFERENCE_READ_NODE = 10 , PM_BEGIN_NODE = 11 , PM_BLOCK_ARGUMENT_NODE = 12 , PM_BLOCK_LOCAL_VARIABLE_NODE = 13 , PM_BLOCK_NODE = 14 , PM_BLOCK_PARAMETER_NODE = 15 , PM_BLOCK_PARAMETERS_NODE = 16 , PM_BREAK_NODE = 17 , PM_CALL_AND_WRITE_NODE = 18 , PM_CALL_NODE = 19 , PM_CALL_OPERATOR_WRITE_NODE = 20 , PM_CALL_OR_WRITE_NODE = 21 , PM_CALL_TARGET_NODE = 22 , PM_CAPTURE_PATTERN_NODE = 23 , PM_CASE_MATCH_NODE = 24 , PM_CASE_NODE = 25 , PM_CLASS_NODE = 26 , PM_CLASS_VARIABLE_AND_WRITE_NODE = 27 , PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 28 , PM_CLASS_VARIABLE_OR_WRITE_NODE = 29 , PM_CLASS_VARIABLE_READ_NODE = 30 , PM_CLASS_VARIABLE_TARGET_NODE = 31 , PM_CLASS_VARIABLE_WRITE_NODE = 32 , PM_CONSTANT_AND_WRITE_NODE = 33 , PM_CONSTANT_OPERATOR_WRITE_NODE = 34 , PM_CONSTANT_OR_WRITE_NODE = 35 , PM_CONSTANT_PATH_AND_WRITE_NODE = 36 , PM_CONSTANT_PATH_NODE = 37 , PM_CONSTANT_PATH_OPERATOR_WRITE_NODE = 38 , PM_CONSTANT_PATH_OR_WRITE_NODE = 39 , PM_CONSTANT_PATH_TARGET_NODE = 40 , PM_CONSTANT_PATH_WRITE_NODE = 41 , PM_CONSTANT_READ_NODE = 42 , PM_CONSTANT_TARGET_NODE = 43 , PM_CONSTANT_WRITE_NODE = 44 , PM_DEF_NODE = 45 , PM_DEFINED_NODE = 46 , PM_ELSE_NODE = 47 , PM_EMBEDDED_STATEMENTS_NODE = 48 , PM_EMBEDDED_VARIABLE_NODE = 49 , PM_ENSURE_NODE = 50 , PM_FALSE_NODE = 51 , PM_FIND_PATTERN_NODE = 52 , PM_FLIP_FLOP_NODE = 53 , PM_FLOAT_NODE = 54 , PM_FOR_NODE = 55 , PM_FORWARDING_ARGUMENTS_NODE = 56 , PM_FORWARDING_PARAMETER_NODE = 57 , PM_FORWARDING_SUPER_NODE = 58 , PM_GLOBAL_VARIABLE_AND_WRITE_NODE = 59 , PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 60 , PM_GLOBAL_VARIABLE_OR_WRITE_NODE = 61 , PM_GLOBAL_VARIABLE_READ_NODE = 62 , PM_GLOBAL_VARIABLE_TARGET_NODE = 63 , PM_GLOBAL_VARIABLE_WRITE_NODE = 64 , PM_HASH_NODE = 65 , PM_HASH_PATTERN_NODE = 66 , PM_IF_NODE = 67 , PM_IMAGINARY_NODE = 68 , PM_IMPLICIT_NODE = 69 , PM_IMPLICIT_REST_NODE = 70 , PM_IN_NODE = 71 , PM_INDEX_AND_WRITE_NODE = 72 , PM_INDEX_OPERATOR_WRITE_NODE = 73 , PM_INDEX_OR_WRITE_NODE = 74 , PM_INDEX_TARGET_NODE = 75 , PM_INSTANCE_VARIABLE_AND_WRITE_NODE = 76 , PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 77 , PM_INSTANCE_VARIABLE_OR_WRITE_NODE = 78 , PM_INSTANCE_VARIABLE_READ_NODE = 79 , PM_INSTANCE_VARIABLE_TARGET_NODE = 80 , PM_INSTANCE_VARIABLE_WRITE_NODE = 81 , PM_INTEGER_NODE = 82 , PM_INTERPOLATED_MATCH_LAST_LINE_NODE = 83 , PM_INTERPOLATED_REGULAR_EXPRESSION_NODE = 84 , PM_INTERPOLATED_STRING_NODE = 85 , PM_INTERPOLATED_SYMBOL_NODE = 86 , PM_INTERPOLATED_X_STRING_NODE = 87 , PM_IT_LOCAL_VARIABLE_READ_NODE = 88 , PM_IT_PARAMETERS_NODE = 89 , PM_KEYWORD_HASH_NODE = 90 , PM_KEYWORD_REST_PARAMETER_NODE = 91 , PM_LAMBDA_NODE = 92 , PM_LOCAL_VARIABLE_AND_WRITE_NODE = 93 , PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 94 , PM_LOCAL_VARIABLE_OR_WRITE_NODE = 95 , PM_LOCAL_VARIABLE_READ_NODE = 96 , PM_LOCAL_VARIABLE_TARGET_NODE = 97 , PM_LOCAL_VARIABLE_WRITE_NODE = 98 , PM_MATCH_LAST_LINE_NODE = 99 , PM_MATCH_PREDICATE_NODE = 100 , PM_MATCH_REQUIRED_NODE = 101 , PM_MATCH_WRITE_NODE = 102 , PM_MISSING_NODE = 103 , PM_MODULE_NODE = 104 , PM_MULTI_TARGET_NODE = 105 , PM_MULTI_WRITE_NODE = 106 , PM_NEXT_NODE = 107 , PM_NIL_NODE = 108 , PM_NO_KEYWORDS_PARAMETER_NODE = 109 , PM_NUMBERED_PARAMETERS_NODE = 110 , PM_NUMBERED_REFERENCE_READ_NODE = 111 , PM_OPTIONAL_KEYWORD_PARAMETER_NODE = 112 , PM_OPTIONAL_PARAMETER_NODE = 113 , PM_OR_NODE = 114 , PM_PARAMETERS_NODE = 115 , PM_PARENTHESES_NODE = 116 , PM_PINNED_EXPRESSION_NODE = 117 , PM_PINNED_VARIABLE_NODE = 118 , PM_POST_EXECUTION_NODE = 119 , PM_PRE_EXECUTION_NODE = 120 , PM_PROGRAM_NODE = 121 , PM_RANGE_NODE = 122 , PM_RATIONAL_NODE = 123 , PM_REDO_NODE = 124 , PM_REGULAR_EXPRESSION_NODE = 125 , PM_REQUIRED_KEYWORD_PARAMETER_NODE = 126 , PM_REQUIRED_PARAMETER_NODE = 127 , PM_RESCUE_MODIFIER_NODE = 128 , PM_RESCUE_NODE = 129 , PM_REST_PARAMETER_NODE = 130 , PM_RETRY_NODE = 131 , PM_RETURN_NODE = 132 , PM_SELF_NODE = 133 , PM_SHAREABLE_CONSTANT_NODE = 134 , PM_SINGLETON_CLASS_NODE = 135 , PM_SOURCE_ENCODING_NODE = 136 , PM_SOURCE_FILE_NODE = 137 , PM_SOURCE_LINE_NODE = 138 , PM_SPLAT_NODE = 139 , PM_STATEMENTS_NODE = 140 , PM_STRING_NODE = 141 , PM_SUPER_NODE = 142 , PM_SYMBOL_NODE = 143 , PM_TRUE_NODE = 144 , PM_UNDEF_NODE = 145 , PM_UNLESS_NODE = 146 , PM_UNTIL_NODE = 147 , PM_WHEN_NODE = 148 , PM_WHILE_NODE = 149 , PM_X_STRING_NODE = 150 , PM_YIELD_NODE = 151 , PM_SCOPE_NODE }
| This enum represents every type of node in the Ruby syntax tree. More...
enum | pm_arguments_node_flags { PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING = 4 , PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS = 8 , PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT = 16 , PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT = 32 , PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS = 64 }
| Flags for arguments nodes. More...
enum | pm_array_node_flags { PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT = 4 }
| Flags for array nodes. More...
enum | pm_call_node_flags { PM_CALL_NODE_FLAGS_SAFE_NAVIGATION = 4 , PM_CALL_NODE_FLAGS_VARIABLE_CALL = 8 , PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE = 16 , PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY = 32 }
| Flags for call nodes. More...
enum | pm_encoding_flags { PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING = 4 , PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING = 8 }
| Flags for nodes that have unescaped content. More...
enum | pm_integer_base_flags { PM_INTEGER_BASE_FLAGS_BINARY = 4 , PM_INTEGER_BASE_FLAGS_DECIMAL = 8 , PM_INTEGER_BASE_FLAGS_OCTAL = 16 , PM_INTEGER_BASE_FLAGS_HEXADECIMAL = 32 }
| Flags for integer nodes that correspond to the base of the integer. More...
enum | pm_interpolated_string_node_flags { PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN = 4 , PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE = 8 }
| Flags for interpolated string nodes that indicated mutability if they are also marked as literals. More...
enum | pm_keyword_hash_node_flags { PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS = 4 }
| Flags for keyword hash nodes. More...
enum | pm_loop_flags { PM_LOOP_FLAGS_BEGIN_MODIFIER = 4 }
| Flags for while and until loop nodes. More...
enum | pm_parameter_flags { PM_PARAMETER_FLAGS_REPEATED_PARAMETER = 4 }
| Flags for parameter nodes. More...
enum | pm_range_flags { PM_RANGE_FLAGS_EXCLUDE_END = 4 }
| Flags for range and flip-flop nodes. More...
enum | pm_regular_expression_flags { PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 4 , PM_REGULAR_EXPRESSION_FLAGS_EXTENDED = 8 , PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 16 , PM_REGULAR_EXPRESSION_FLAGS_ONCE = 32 , PM_REGULAR_EXPRESSION_FLAGS_EUC_JP = 64 , PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 128 , PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 256 , PM_REGULAR_EXPRESSION_FLAGS_UTF_8 = 512 , PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING = 1024 , PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING = 2048 , PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING = 4096 }
| Flags for regular expression and match last line nodes. More...
enum | pm_shareable_constant_node_flags { PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL = 4 , PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING = 8 , PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY = 16 }
| Flags for shareable constant nodes. More...
enum | pm_string_flags { PM_STRING_FLAGS_FORCED_UTF8_ENCODING = 4 , PM_STRING_FLAGS_FORCED_BINARY_ENCODING = 8 , PM_STRING_FLAGS_FROZEN = 16 , PM_STRING_FLAGS_MUTABLE = 32 }
| Flags for string nodes. More...
enum | pm_symbol_flags { PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING = 4 , PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING = 8 , PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING = 16 }
| Flags for symbol nodes. More...

## Variables
static const pm_node_flags_t | PM_NODE_FLAG_NEWLINE = 0x1
| We store the flags enum in every node in the tree.
static const pm_node_flags_t | PM_NODE_FLAG_STATIC_LITERAL = 0x2

## Detailed Description

The abstract syntax tree.

Definition in file ast.h.

## Macro Definition Documentation

## ◆ PM_NODE_FLAG_P

#define PM_NODE_FLAG_P | ( |  | node,
|  |  | flag )

Value:
((((pm_node_t *)(node))->flags & (flag)) != 0)
pm_node_t
struct pm_node pm_node_t
This is the base structure that represents a node in the syntax tree.

Return true if the given flag is set on the given node.

Definition at line 1063 of file ast.h.

Referenced by pm_dump_json().

## ◆ PM_NODE_TYPE

#define PM_NODE_TYPE | ( |  | node | ) |

Value:
((enum pm_node_type) (node)->type)
pm_node_type
pm_node_type
This enum represents every type of node in the Ruby syntax tree.
Definition ast.h:572

Cast the type to an enum to allow the compiler to provide exhaustiveness checking.

Definition at line 1053 of file ast.h.

Referenced by pm_dump_json(), pm_node_destroy(), pm_static_literals_add(), and pm_visit_child_nodes().

## ◆ PM_NODE_TYPE_P

#define PM_NODE_TYPE_P | ( |  | node,
|  |  | type )

Value:
(PM_NODE_TYPE(node) == (type))
PM_NODE_TYPE
#define PM_NODE_TYPE(node)
Cast the type to an enum to allow the compiler to provide exhaustiveness checking.
Definition ast.h:1053
ruby::backward::cxxanyargs::type
VALUE type(ANYARGS)
ANYARGS-ed function type.
Definition cxxanyargs.hpp:56

Return true if the type of the given node matches the given type.

Definition at line 1058 of file ast.h.

## ◆ PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS

#define PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS 0

When we're serializing to Java, we want to skip serializing the location fields as they won't be used by JRuby or TruffleRuby.

This boolean allows us to specify that through the environment. It will never be true except for in those build systems.

Definition at line 7946 of file ast.h.

## Typedef Documentation

## ◆ pm_alias_global_variable_node_t

typedef struct pm_alias_global_variable_node pm_alias_global_variable_node_t

AliasGlobalVariableNode.

Represents the use of the `alias` keyword to alias a global variable.

    alias $foo $bar
    ^^^^^^^^^^^^^^^

Type: PM_ALIAS_GLOBAL_VARIABLE_NODE

## ◆ pm_alias_method_node_t

typedef struct pm_alias_method_node pm_alias_method_node_t

AliasMethodNode.

Represents the use of the `alias` keyword to alias a method.

    alias foo bar
    ^^^^^^^^^^^^^

Type: PM_ALIAS_METHOD_NODE

## ◆ pm_alternation_pattern_node_t

typedef struct pm_alternation_pattern_node pm_alternation_pattern_node_t

AlternationPatternNode.

Represents an alternation pattern in pattern matching.

    foo => bar | baz
           ^^^^^^^^^

Type: PM_ALTERNATION_PATTERN_NODE

## ◆ pm_and_node_t

typedef struct pm_and_node pm_and_node_t

AndNode.

Represents the use of the `&&` operator or the `and` keyword.

    left and right
    ^^^^^^^^^^^^^^

Type: PM_AND_NODE

## ◆ pm_arguments_node_flags_t

typedef enum pm_arguments_node_flags pm_arguments_node_flags_t

Flags for arguments nodes.

## ◆ pm_arguments_node_t

typedef struct pm_arguments_node pm_arguments_node_t

ArgumentsNode.

Represents a set of arguments to a method or a keyword.

    return foo, bar, baz
           ^^^^^^^^^^^^^

Type: PM_ARGUMENTS_NODE

Flags (pm_arguments_node_flags):

- PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING
- PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS
- PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT
- PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT
- PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS

## ◆ pm_array_node_flags_t

typedef enum pm_array_node_flags pm_array_node_flags_t

Flags for array nodes.

## ◆ pm_array_node_t

typedef struct pm_array_node pm_array_node_t

ArrayNode.

Represents an array literal. This can be a regular array using brackets or a special array using % like w or i.

    [1, 2, 3]
    ^^^^^^^^^

Type: PM_ARRAY_NODE

Flags (pm_array_node_flags):

- PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT

## ◆ pm_array_pattern_node_t

typedef struct pm_array_pattern_node pm_array_pattern_node_t

ArrayPatternNode.

Represents an array pattern in pattern matching.

    foo in 1, 2
    ^^^^^^^^^^^

    foo in [1, 2]
    ^^^^^^^^^^^^^

    foo in *bar
    ^^^^^^^^^^^

    foo in Bar[]
    ^^^^^^^^^^^^

    foo in Bar[1, 2, 3]
    ^^^^^^^^^^^^^^^^^^^

Type: PM_ARRAY_PATTERN_NODE

## ◆ pm_assoc_node_t

typedef struct pm_assoc_node pm_assoc_node_t

AssocNode.

Represents a hash key/value pair.

    { a => b }
      ^^^^^^

Type: PM_ASSOC_NODE

## ◆ pm_assoc_splat_node_t

typedef struct pm_assoc_splat_node pm_assoc_splat_node_t

AssocSplatNode.

Represents a splat in a hash literal.

    { **foo }
      ^^^^^

Type: PM_ASSOC_SPLAT_NODE

## ◆ pm_back_reference_read_node_t

typedef struct pm_back_reference_read_node pm_back_reference_read_node_t

BackReferenceReadNode.

Represents reading a reference to a field in the previous match.

    $'
    ^^

Type: PM_BACK_REFERENCE_READ_NODE

## ◆ pm_begin_node_t

typedef struct pm_begin_node pm_begin_node_t

BeginNode.

Represents a begin statement.

    begin
      foo
    end
    ^^^^^

Type: PM_BEGIN_NODE

## ◆ pm_block_argument_node_t

typedef struct pm_block_argument_node pm_block_argument_node_t

BlockArgumentNode.

Represents a block argument using `&`.

    bar(&args)
    ^^^^^^^^^^

Type: PM_BLOCK_ARGUMENT_NODE

## ◆ pm_block_local_variable_node_t

typedef struct pm_block_local_variable_node pm_block_local_variable_node_t

BlockLocalVariableNode.

Represents a block local variable.

    a { |; b| }
           ^

Type: PM_BLOCK_LOCAL_VARIABLE_NODE

Flags (pm_parameter_flags):

- PM_PARAMETER_FLAGS_REPEATED_PARAMETER

## ◆ pm_block_node_t

typedef struct pm_block_node pm_block_node_t

BlockNode.

Represents a block of ruby code.

    [1, 2, 3].each { |i| puts x }
                   ^^^^^^^^^^^^^^

Type: PM_BLOCK_NODE

## ◆ pm_block_parameter_node_t

typedef struct pm_block_parameter_node pm_block_parameter_node_t

BlockParameterNode.

Represents a block parameter of a method, block, or lambda definition.

    def a(&b)
          ^^
    end

Type: PM_BLOCK_PARAMETER_NODE

Flags (pm_parameter_flags):

- PM_PARAMETER_FLAGS_REPEATED_PARAMETER

## ◆ pm_block_parameters_node_t

typedef struct pm_block_parameters_node pm_block_parameters_node_t

BlockParametersNode.

Represents a block's parameters declaration.

    -> (a, b = 1; local) { }
       ^^^^^^^^^^^^^^^^^

    foo do |a, b = 1; local|
           ^^^^^^^^^^^^^^^^^
    end

Type: PM_BLOCK_PARAMETERS_NODE

## ◆ pm_break_node_t

typedef struct pm_break_node pm_break_node_t

BreakNode.

Represents the use of the `break` keyword.

    break foo
    ^^^^^^^^^

Type: PM_BREAK_NODE

## ◆ pm_call_and_write_node_t

typedef struct pm_call_and_write_node pm_call_and_write_node_t

CallAndWriteNode.

Represents the use of the `&&=` operator on a call.

    foo.bar &&= value
    ^^^^^^^^^^^^^^^^^

Type: PM_CALL_AND_WRITE_NODE

Flags (pm_call_node_flags):

- PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
- PM_CALL_NODE_FLAGS_VARIABLE_CALL
- PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
- PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY

## ◆ pm_call_node_flags_t

typedef enum pm_call_node_flags pm_call_node_flags_t

Flags for call nodes.

## ◆ pm_call_node_t

typedef struct pm_call_node pm_call_node_t

CallNode.

Represents a method call, in all of the various forms that can take.

    foo
    ^^^

    foo()
    ^^^^^

    +foo
    ^^^^

    foo + bar
    ^^^^^^^^^

    foo.bar
    ^^^^^^^

    foo&.bar
    ^^^^^^^^

Type: PM_CALL_NODE

Flags (pm_call_node_flags):

- PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
- PM_CALL_NODE_FLAGS_VARIABLE_CALL
- PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
- PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY

## ◆ pm_call_operator_write_node_t

typedef struct pm_call_operator_write_node pm_call_operator_write_node_t

CallOperatorWriteNode.

Represents the use of an assignment operator on a call.

    foo.bar += baz
    ^^^^^^^^^^^^^^

Type: PM_CALL_OPERATOR_WRITE_NODE

Flags (pm_call_node_flags):

- PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
- PM_CALL_NODE_FLAGS_VARIABLE_CALL
- PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
- PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY

## ◆ pm_call_or_write_node_t

typedef struct pm_call_or_write_node pm_call_or_write_node_t

CallOrWriteNode.

Represents the use of the `||=` operator on a call.

    foo.bar ||= value
    ^^^^^^^^^^^^^^^^^

Type: PM_CALL_OR_WRITE_NODE

Flags (pm_call_node_flags):

- PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
- PM_CALL_NODE_FLAGS_VARIABLE_CALL
- PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
- PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY

## ◆ pm_call_target_node_t

typedef struct pm_call_target_node pm_call_target_node_t

CallTargetNode.

Represents assigning to a method call.

    foo.bar, = 1
    ^^^^^^^

    begin
    rescue => foo.bar
              ^^^^^^^
    end

    for foo.bar in baz do end
        ^^^^^^^

Type: PM_CALL_TARGET_NODE

Flags (pm_call_node_flags):

- PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
- PM_CALL_NODE_FLAGS_VARIABLE_CALL
- PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
- PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY

## ◆ pm_capture_pattern_node_t

typedef struct pm_capture_pattern_node pm_capture_pattern_node_t

CapturePatternNode.

Represents assigning to a local variable in pattern matching.

    foo => [bar => baz]
           ^^^^^^^^^^^^

Type: PM_CAPTURE_PATTERN_NODE

## ◆ pm_case_match_node_t

typedef struct pm_case_match_node pm_case_match_node_t

CaseMatchNode.

Represents the use of a case statement for pattern matching.

    case true
    in false
    end
    ^^^^^^^^^

Type: PM_CASE_MATCH_NODE

## ◆ pm_case_node_t

typedef struct pm_case_node pm_case_node_t

CaseNode.

Represents the use of a case statement.

    case true
    when false
    end
    ^^^^^^^^^^

Type: PM_CASE_NODE

## ◆ pm_class_node_t

typedef struct pm_class_node pm_class_node_t

ClassNode.

Represents a class declaration involving the `class` keyword.

    class Foo end
    ^^^^^^^^^^^^^

Type: PM_CLASS_NODE

## ◆ pm_class_variable_and_write_node_t

typedef struct pm_class_variable_and_write_node pm_class_variable_and_write_node_t

ClassVariableAndWriteNode.

Represents the use of the `&&=` operator for assignment to a class variable.

    @@target &&= value
    ^^^^^^^^^^^^^^^^^^

Type: PM_CLASS_VARIABLE_AND_WRITE_NODE

## ◆ pm_class_variable_operator_write_node_t

typedef struct pm_class_variable_operator_write_node pm_class_variable_operator_write_node_t

ClassVariableOperatorWriteNode.

Represents assigning to a class variable using an operator that isn't `=`.

    @@target += value
    ^^^^^^^^^^^^^^^^^

Type: PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE

## ◆ pm_class_variable_or_write_node_t

typedef struct pm_class_variable_or_write_node pm_class_variable_or_write_node_t

ClassVariableOrWriteNode.

Represents the use of the `||=` operator for assignment to a class variable.

    @@target ||= value
    ^^^^^^^^^^^^^^^^^^

Type: PM_CLASS_VARIABLE_OR_WRITE_NODE

## ◆ pm_class_variable_read_node_t

typedef struct pm_class_variable_read_node pm_class_variable_read_node_t

ClassVariableReadNode.

Represents referencing a class variable.

    @@foo
    ^^^^^

Type: PM_CLASS_VARIABLE_READ_NODE

## ◆ pm_class_variable_target_node_t

typedef struct pm_class_variable_target_node pm_class_variable_target_node_t

ClassVariableTargetNode.

Represents writing to a class variable in a context that doesn't have an explicit value.

    @@foo, @@bar = baz
    ^^^^^  ^^^^^

Type: PM_CLASS_VARIABLE_TARGET_NODE

## ◆ pm_class_variable_write_node_t

typedef struct pm_class_variable_write_node pm_class_variable_write_node_t

ClassVariableWriteNode.

Represents writing to a class variable.

    @@foo = 1
    ^^^^^^^^^

Type: PM_CLASS_VARIABLE_WRITE_NODE

## ◆ pm_constant_and_write_node_t

typedef struct pm_constant_and_write_node pm_constant_and_write_node_t

ConstantAndWriteNode.

Represents the use of the `&&=` operator for assignment to a constant.

    Target &&= value
    ^^^^^^^^^^^^^^^^

Type: PM_CONSTANT_AND_WRITE_NODE

## ◆ pm_constant_operator_write_node_t

typedef struct pm_constant_operator_write_node pm_constant_operator_write_node_t

ConstantOperatorWriteNode.

Represents assigning to a constant using an operator that isn't `=`.

    Target += value
    ^^^^^^^^^^^^^^^

Type: PM_CONSTANT_OPERATOR_WRITE_NODE

## ◆ pm_constant_or_write_node_t

typedef struct pm_constant_or_write_node pm_constant_or_write_node_t

ConstantOrWriteNode.

Represents the use of the `||=` operator for assignment to a constant.

    Target ||= value
    ^^^^^^^^^^^^^^^^

Type: PM_CONSTANT_OR_WRITE_NODE

## ◆ pm_constant_path_and_write_node_t

typedef struct pm_constant_path_and_write_node pm_constant_path_and_write_node_t

ConstantPathAndWriteNode.

Represents the use of the `&&=` operator for assignment to a constant path.

    Parent::Child &&= value
    ^^^^^^^^^^^^^^^^^^^^^^^

Type: PM_CONSTANT_PATH_AND_WRITE_NODE

## ◆ pm_constant_path_node_t

typedef struct pm_constant_path_node pm_constant_path_node_t

ConstantPathNode.

Represents accessing a constant through a path of `::` operators.

    Foo::Bar
    ^^^^^^^^

Type: PM_CONSTANT_PATH_NODE

## ◆ pm_constant_path_operator_write_node_t

typedef struct pm_constant_path_operator_write_node pm_constant_path_operator_write_node_t

ConstantPathOperatorWriteNode.

Represents assigning to a constant path using an operator that isn't `=`.

    Parent::Child += value
    ^^^^^^^^^^^^^^^^^^^^^^

Type: PM_CONSTANT_PATH_OPERATOR_WRITE_NODE

## ◆ pm_constant_path_or_write_node_t

typedef struct pm_constant_path_or_write_node pm_constant_path_or_write_node_t

ConstantPathOrWriteNode.

Represents the use of the `||=` operator for assignment to a constant path.

    Parent::Child ||= value
    ^^^^^^^^^^^^^^^^^^^^^^^

Type: PM_CONSTANT_PATH_OR_WRITE_NODE

## ◆ pm_constant_path_target_node_t

typedef struct pm_constant_path_target_node pm_constant_path_target_node_t

ConstantPathTargetNode.

Represents writing to a constant path in a context that doesn't have an explicit value.

    Foo::Foo, Bar::Bar = baz
    ^^^^^^^^  ^^^^^^^^

Type: PM_CONSTANT_PATH_TARGET_NODE

## ◆ pm_constant_path_write_node_t

typedef struct pm_constant_path_write_node pm_constant_path_write_node_t

ConstantPathWriteNode.

Represents writing to a constant path.

    ::Foo = 1
    ^^^^^^^^^

    Foo::Bar = 1
    ^^^^^^^^^^^^

    ::Foo::Bar = 1
    ^^^^^^^^^^^^^^

Type: PM_CONSTANT_PATH_WRITE_NODE

## ◆ pm_constant_read_node_t

typedef struct pm_constant_read_node pm_constant_read_node_t

ConstantReadNode.

Represents referencing a constant.

    Foo
    ^^^

Type: PM_CONSTANT_READ_NODE

## ◆ pm_constant_target_node_t

typedef struct pm_constant_target_node pm_constant_target_node_t

ConstantTargetNode.

Represents writing to a constant in a context that doesn't have an explicit value.

    Foo, Bar = baz
    ^^^  ^^^

Type: PM_CONSTANT_TARGET_NODE

## ◆ pm_constant_write_node_t

typedef struct pm_constant_write_node pm_constant_write_node_t

ConstantWriteNode.

Represents writing to a constant.

    Foo = 1
    ^^^^^^^

Type: PM_CONSTANT_WRITE_NODE

## ◆ pm_def_node_t

typedef struct pm_def_node pm_def_node_t

DefNode.

Represents a method definition.

    def method
    end
    ^^^^^^^^^^

Type: PM_DEF_NODE

## ◆ pm_defined_node_t

typedef struct pm_defined_node pm_defined_node_t

DefinedNode.

Represents the use of the `defined?` keyword.

    defined?(a)
    ^^^^^^^^^^^

Type: PM_DEFINED_NODE

## ◆ pm_else_node_t

typedef struct pm_else_node pm_else_node_t

ElseNode.

Represents an `else` clause in a `case`, `if`, or `unless` statement.

    if a then b else c end
                ^^^^^^^^^^

Type: PM_ELSE_NODE

## ◆ pm_embedded_statements_node_t

typedef struct pm_embedded_statements_node pm_embedded_statements_node_t

EmbeddedStatementsNode.

Represents an interpolated set of statements.

    "foo #{bar}"
         ^^^^^^

Type: PM_EMBEDDED_STATEMENTS_NODE

## ◆ pm_embedded_variable_node_t

typedef struct pm_embedded_variable_node pm_embedded_variable_node_t

EmbeddedVariableNode.

Represents an interpolated variable.

    "foo #@bar"
         ^^^^^

Type: PM_EMBEDDED_VARIABLE_NODE

## ◆ pm_encoding_flags_t

typedef enum pm_encoding_flags pm_encoding_flags_t

Flags for nodes that have unescaped content.

## ◆ pm_ensure_node_t

typedef struct pm_ensure_node pm_ensure_node_t

EnsureNode.

Represents an `ensure` clause in a `begin` statement.

    begin
      foo
    ensure
    ^^^^^^
      bar
    end

Type: PM_ENSURE_NODE

## ◆ pm_false_node_t

typedef struct pm_false_node pm_false_node_t

FalseNode.

Represents the use of the literal `false` keyword.

    false
    ^^^^^

Type: PM_FALSE_NODE

## ◆ pm_find_pattern_node_t

typedef struct pm_find_pattern_node pm_find_pattern_node_t

FindPatternNode.

Represents a find pattern in pattern matching.

    foo in *bar, baz, *qux
           ^^^^^^^^^^^^^^^

    foo in [*bar, baz, *qux]
           ^^^^^^^^^^^^^^^^^

    foo in Foo(*bar, baz, *qux)
           ^^^^^^^^^^^^^^^^^^^^

Type: PM_FIND_PATTERN_NODE

## ◆ pm_flip_flop_node_t

typedef struct pm_flip_flop_node pm_flip_flop_node_t

FlipFlopNode.

Represents the use of the `..` or `...` operators to create flip flops.

    baz if foo .. bar
           ^^^^^^^^^^

Type: PM_FLIP_FLOP_NODE

Flags (pm_range_flags):

- PM_RANGE_FLAGS_EXCLUDE_END

## ◆ pm_float_node_t

typedef struct pm_float_node pm_float_node_t

FloatNode.

Represents a floating point number literal.

    1.0
    ^^^

Type: PM_FLOAT_NODE

## ◆ pm_for_node_t

typedef struct pm_for_node pm_for_node_t

ForNode.

Represents the use of the `for` keyword.

    for i in a end
    ^^^^^^^^^^^^^^

Type: PM_FOR_NODE

## ◆ pm_forwarding_arguments_node_t

typedef struct pm_forwarding_arguments_node pm_forwarding_arguments_node_t

ForwardingArgumentsNode.

Represents forwarding all arguments to this method to another method.

    def foo(...)
      bar(...)
          ^^^
    end

Type: PM_FORWARDING_ARGUMENTS_NODE

## ◆ pm_forwarding_parameter_node_t

typedef struct pm_forwarding_parameter_node pm_forwarding_parameter_node_t

ForwardingParameterNode.

Represents the use of the forwarding parameter in a method, block, or lambda declaration.

    def foo(...)
            ^^^
    end

Type: PM_FORWARDING_PARAMETER_NODE

## ◆ pm_forwarding_super_node_t

typedef struct pm_forwarding_super_node pm_forwarding_super_node_t

ForwardingSuperNode.

Represents the use of the `super` keyword without parentheses or arguments.

    super
    ^^^^^

Type: PM_FORWARDING_SUPER_NODE

## ◆ pm_global_variable_and_write_node_t

typedef struct pm_global_variable_and_write_node pm_global_variable_and_write_node_t

GlobalVariableAndWriteNode.

Represents the use of the `&&=` operator for assignment to a global variable.

    $target &&= value
    ^^^^^^^^^^^^^^^^^

Type: PM_GLOBAL_VARIABLE_AND_WRITE_NODE

## ◆ pm_global_variable_operator_write_node_t

typedef struct pm_global_variable_operator_write_node pm_global_variable_operator_write_node_t

GlobalVariableOperatorWriteNode.

Represents assigning to a global variable using an operator that isn't `=`.

    $target += value
    ^^^^^^^^^^^^^^^^

Type: PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE

## ◆ pm_global_variable_or_write_node_t

typedef struct pm_global_variable_or_write_node pm_global_variable_or_write_node_t

GlobalVariableOrWriteNode.

Represents the use of the `||=` operator for assignment to a global variable.

    $target ||= value
    ^^^^^^^^^^^^^^^^^

Type: PM_GLOBAL_VARIABLE_OR_WRITE_NODE

## ◆ pm_global_variable_read_node_t

typedef struct pm_global_variable_read_node pm_global_variable_read_node_t

GlobalVariableReadNode.

Represents referencing a global variable.

    $foo
    ^^^^

Type: PM_GLOBAL_VARIABLE_READ_NODE

## ◆ pm_global_variable_target_node_t

typedef struct pm_global_variable_target_node pm_global_variable_target_node_t

GlobalVariableTargetNode.

Represents writing to a global variable in a context that doesn't have an explicit value.

    $foo, $bar = baz
    ^^^^  ^^^^

Type: PM_GLOBAL_VARIABLE_TARGET_NODE

## ◆ pm_global_variable_write_node_t

typedef struct pm_global_variable_write_node pm_global_variable_write_node_t

GlobalVariableWriteNode.

Represents writing to a global variable.

    $foo = 1
    ^^^^^^^^

Type: PM_GLOBAL_VARIABLE_WRITE_NODE

## ◆ pm_hash_node_t

typedef struct pm_hash_node pm_hash_node_t

HashNode.

Represents a hash literal.

    { a => b }
    ^^^^^^^^^^

Type: PM_HASH_NODE

## ◆ pm_hash_pattern_node_t

typedef struct pm_hash_pattern_node pm_hash_pattern_node_t

HashPatternNode.

Represents a hash pattern in pattern matching.

    foo => { a: 1, b: 2 }
           ^^^^^^^^^^^^^^

    foo => { a: 1, b: 2, **c }
           ^^^^^^^^^^^^^^^^^^^

Type: PM_HASH_PATTERN_NODE

## ◆ pm_if_node_t

typedef struct pm_if_node pm_if_node_t

IfNode.

Represents the use of the `if` keyword, either in the block form or the modifier form, or a ternary expression.

    bar if foo
    ^^^^^^^^^^

    if foo then bar end
    ^^^^^^^^^^^^^^^^^^^

    foo ? bar : baz
    ^^^^^^^^^^^^^^^

Type: PM_IF_NODE

## ◆ pm_imaginary_node_t

typedef struct pm_imaginary_node pm_imaginary_node_t

ImaginaryNode.

Represents an imaginary number literal.

    1.0i
    ^^^^

Type: PM_IMAGINARY_NODE

## ◆ pm_implicit_node_t

typedef struct pm_implicit_node pm_implicit_node_t

ImplicitNode.

Represents a node that is implicitly being added to the tree but doesn't correspond directly to a node in the source.

    { foo: }
      ^^^^

    { Foo: }
      ^^^^

    foo in { bar: }
             ^^^^

Type: PM_IMPLICIT_NODE

## ◆ pm_implicit_rest_node_t

typedef struct pm_implicit_rest_node pm_implicit_rest_node_t

ImplicitRestNode.

Represents using a trailing comma to indicate an implicit rest parameter.

    foo { |bar,| }
              ^

    foo in [bar,]
               ^

    for foo, in bar do end
           ^

    foo, = bar
       ^

Type: PM_IMPLICIT_REST_NODE

## ◆ pm_in_node_t

typedef struct pm_in_node pm_in_node_t

InNode.

Represents the use of the `in` keyword in a case statement.

    case a; in b then c end
            ^^^^^^^^^^^

Type: PM_IN_NODE

## ◆ pm_index_and_write_node_t

typedef struct pm_index_and_write_node pm_index_and_write_node_t

IndexAndWriteNode.

Represents the use of the `&&=` operator on a call to the `[]` method.

    foo.bar[baz] &&= value
    ^^^^^^^^^^^^^^^^^^^^^^

Type: PM_INDEX_AND_WRITE_NODE

Flags (pm_call_node_flags):

- PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
- PM_CALL_NODE_FLAGS_VARIABLE_CALL
- PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
- PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY

## ◆ pm_index_operator_write_node_t

typedef struct pm_index_operator_write_node pm_index_operator_write_node_t

IndexOperatorWriteNode.

Represents the use of an assignment operator on a call to `[]`.

    foo.bar[baz] += value
    ^^^^^^^^^^^^^^^^^^^^^

Type: PM_INDEX_OPERATOR_WRITE_NODE

Flags (pm_call_node_flags):

- PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
- PM_CALL_NODE_FLAGS_VARIABLE_CALL
- PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
- PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY

## ◆ pm_index_or_write_node_t

typedef struct pm_index_or_write_node pm_index_or_write_node_t

IndexOrWriteNode.

Represents the use of the `||=` operator on a call to `[]`.

    foo.bar[baz] ||= value
    ^^^^^^^^^^^^^^^^^^^^^^

Type: PM_INDEX_OR_WRITE_NODE

Flags (pm_call_node_flags):

- PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
- PM_CALL_NODE_FLAGS_VARIABLE_CALL
- PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
- PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY

## ◆ pm_index_target_node_t

typedef struct pm_index_target_node pm_index_target_node_t

IndexTargetNode.

Represents assigning to an index.

    foo[bar], = 1
    ^^^^^^^^

    begin
    rescue => foo[bar]
              ^^^^^^^^
    end

    for foo[bar] in baz do end
        ^^^^^^^^

Type: PM_INDEX_TARGET_NODE

Flags (pm_call_node_flags):

- PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
- PM_CALL_NODE_FLAGS_VARIABLE_CALL
- PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
- PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY

## ◆ pm_instance_variable_and_write_node_t

typedef struct pm_instance_variable_and_write_node pm_instance_variable_and_write_node_t

InstanceVariableAndWriteNode.

Represents the use of the `&&=` operator for assignment to an instance variable.

    @target &&= value
    ^^^^^^^^^^^^^^^^^

Type: PM_INSTANCE_VARIABLE_AND_WRITE_NODE

## ◆ pm_instance_variable_operator_write_node_t

typedef struct pm_instance_variable_operator_write_node pm_instance_variable_operator_write_node_t

InstanceVariableOperatorWriteNode.

Represents assigning to an instance variable using an operator that isn't `=`.

    @target += value
    ^^^^^^^^^^^^^^^^

Type: PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE

## ◆ pm_instance_variable_or_write_node_t

typedef struct pm_instance_variable_or_write_node pm_instance_variable_or_write_node_t

InstanceVariableOrWriteNode.

Represents the use of the `||=` operator for assignment to an instance variable.

    @target ||= value
    ^^^^^^^^^^^^^^^^^

Type: PM_INSTANCE_VARIABLE_OR_WRITE_NODE

## ◆ pm_instance_variable_read_node_t

typedef struct pm_instance_variable_read_node pm_instance_variable_read_node_t

InstanceVariableReadNode.

Represents referencing an instance variable.

    @foo
    ^^^^

Type: PM_INSTANCE_VARIABLE_READ_NODE

## ◆ pm_instance_variable_target_node_t

typedef struct pm_instance_variable_target_node pm_instance_variable_target_node_t

InstanceVariableTargetNode.

Represents writing to an instance variable in a context that doesn't have an explicit value.

    @foo, @bar = baz
    ^^^^  ^^^^

Type: PM_INSTANCE_VARIABLE_TARGET_NODE

## ◆ pm_instance_variable_write_node_t

typedef struct pm_instance_variable_write_node pm_instance_variable_write_node_t

InstanceVariableWriteNode.

Represents writing to an instance variable.

    @foo = 1
    ^^^^^^^^

Type: PM_INSTANCE_VARIABLE_WRITE_NODE

## ◆ pm_integer_base_flags_t

typedef enum pm_integer_base_flags pm_integer_base_flags_t

Flags for integer nodes that correspond to the base of the integer.

## ◆ pm_integer_node_t

typedef struct pm_integer_node pm_integer_node_t

IntegerNode.

Represents an integer number literal.

    1
    ^

Type: PM_INTEGER_NODE

Flags (pm_integer_base_flags):

- PM_INTEGER_BASE_FLAGS_BINARY
- PM_INTEGER_BASE_FLAGS_DECIMAL
- PM_INTEGER_BASE_FLAGS_OCTAL
- PM_INTEGER_BASE_FLAGS_HEXADECIMAL

## ◆ pm_interpolated_match_last_line_node_t

typedef struct pm_interpolated_match_last_line_node pm_interpolated_match_last_line_node_t

InterpolatedMatchLastLineNode.

Represents a regular expression literal that contains interpolation that is being used in the predicate of a conditional to implicitly match against the last line read by an IO object.

    if /foo #{bar} baz/ then end
       ^^^^^^^^^^^^^^^^

Type: PM_INTERPOLATED_MATCH_LAST_LINE_NODE

Flags (pm_regular_expression_flags):

- PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
- PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
- PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
- PM_REGULAR_EXPRESSION_FLAGS_ONCE
- PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
- PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
- PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
- PM_REGULAR_EXPRESSION_FLAGS_UTF_8
- PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING
- PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING
- PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING

## ◆ pm_interpolated_regular_expression_node_t

typedef struct pm_interpolated_regular_expression_node pm_interpolated_regular_expression_node_t

InterpolatedRegularExpressionNode.

Represents a regular expression literal that contains interpolation.

    /foo #{bar} baz/
    ^^^^^^^^^^^^^^^^

Type: PM_INTERPOLATED_REGULAR_EXPRESSION_NODE

Flags (pm_regular_expression_flags):

- PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
- PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
- PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
- PM_REGULAR_EXPRESSION_FLAGS_ONCE
- PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
- PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
- PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
- PM_REGULAR_EXPRESSION_FLAGS_UTF_8
- PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING
- PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING
- PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING

## ◆ pm_interpolated_string_node_flags_t

typedef enum pm_interpolated_string_node_flags pm_interpolated_string_node_flags_t

Flags for interpolated string nodes that indicated mutability if they are also marked as literals.

## ◆ pm_interpolated_string_node_t

typedef struct pm_interpolated_string_node pm_interpolated_string_node_t

InterpolatedStringNode.

Represents a string literal that contains interpolation.

    "foo #{bar} baz"
    ^^^^^^^^^^^^^^^^

Type: PM_INTERPOLATED_STRING_NODE

Flags (pm_interpolated_string_node_flags):

- PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN
- PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE

## ◆ pm_interpolated_symbol_node_t

typedef struct pm_interpolated_symbol_node pm_interpolated_symbol_node_t

InterpolatedSymbolNode.

Represents a symbol literal that contains interpolation.

    :"foo #{bar} baz"
    ^^^^^^^^^^^^^^^^^

Type: PM_INTERPOLATED_SYMBOL_NODE

## ◆ pm_interpolated_x_string_node_t

typedef struct pm_interpolated_x_string_node pm_interpolated_x_string_node_t

InterpolatedXStringNode.

Represents an xstring literal that contains interpolation.

    `foo #{bar} baz`
    ^^^^^^^^^^^^^^^^

Type: PM_INTERPOLATED_X_STRING_NODE

## ◆ pm_it_local_variable_read_node_t

typedef struct pm_it_local_variable_read_node pm_it_local_variable_read_node_t

ItLocalVariableReadNode.

Represents reading from the implicit `it` local variable.

    -> { it }
         ^^

Type: PM_IT_LOCAL_VARIABLE_READ_NODE

## ◆ pm_it_parameters_node_t

typedef struct pm_it_parameters_node pm_it_parameters_node_t

ItParametersNode.

Represents an implicit set of parameters through the use of the `it` keyword within a block or lambda.

    -> { it + it }
    ^^^^^^^^^^^^^^

Type: PM_IT_PARAMETERS_NODE

## ◆ pm_keyword_hash_node_flags_t

typedef enum pm_keyword_hash_node_flags pm_keyword_hash_node_flags_t

Flags for keyword hash nodes.

## ◆ pm_keyword_hash_node_t

typedef struct pm_keyword_hash_node pm_keyword_hash_node_t

KeywordHashNode.

Represents a hash literal without opening and closing braces.

    foo(a: b)
        ^^^^

Type: PM_KEYWORD_HASH_NODE

Flags (pm_keyword_hash_node_flags):

- PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS

## ◆ pm_keyword_rest_parameter_node_t

typedef struct pm_keyword_rest_parameter_node pm_keyword_rest_parameter_node_t

KeywordRestParameterNode.

Represents a keyword rest parameter to a method, block, or lambda definition.

    def a(**b)
          ^^^
    end

Type: PM_KEYWORD_REST_PARAMETER_NODE

Flags (pm_parameter_flags):

- PM_PARAMETER_FLAGS_REPEATED_PARAMETER

## ◆ pm_lambda_node_t

typedef struct pm_lambda_node pm_lambda_node_t

LambdaNode.

Represents using a lambda literal (not the lambda method call).

    ->(value) { value * 2 }
    ^^^^^^^^^^^^^^^^^^^^^^^

Type: PM_LAMBDA_NODE

## ◆ pm_local_variable_and_write_node_t

typedef struct pm_local_variable_and_write_node pm_local_variable_and_write_node_t

LocalVariableAndWriteNode.

Represents the use of the `&&=` operator for assignment to a local variable.

    target &&= value
    ^^^^^^^^^^^^^^^^

Type: PM_LOCAL_VARIABLE_AND_WRITE_NODE

## ◆ pm_local_variable_operator_write_node_t

typedef struct pm_local_variable_operator_write_node pm_local_variable_operator_write_node_t

LocalVariableOperatorWriteNode.

Represents assigning to a local variable using an operator that isn't `=`.

    target += value
    ^^^^^^^^^^^^^^^

Type: PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE

## ◆ pm_local_variable_or_write_node_t

typedef struct pm_local_variable_or_write_node pm_local_variable_or_write_node_t

LocalVariableOrWriteNode.

Represents the use of the `||=` operator for assignment to a local variable.

    target ||= value
    ^^^^^^^^^^^^^^^^

Type: PM_LOCAL_VARIABLE_OR_WRITE_NODE

## ◆ pm_local_variable_read_node_t

typedef struct pm_local_variable_read_node pm_local_variable_read_node_t

LocalVariableReadNode.

Represents reading a local variable. Note that this requires that a local variable of the same name has already been written to in the same scope, otherwise it is parsed as a method call.

    foo
    ^^^

Type: PM_LOCAL_VARIABLE_READ_NODE

## ◆ pm_local_variable_target_node_t

typedef struct pm_local_variable_target_node pm_local_variable_target_node_t

LocalVariableTargetNode.

Represents writing to a local variable in a context that doesn't have an explicit value.

    foo, bar = baz
    ^^^  ^^^

Type: PM_LOCAL_VARIABLE_TARGET_NODE

## ◆ pm_local_variable_write_node_t

typedef struct pm_local_variable_write_node pm_local_variable_write_node_t

LocalVariableWriteNode.

Represents writing to a local variable.

    foo = 1
    ^^^^^^^

Type: PM_LOCAL_VARIABLE_WRITE_NODE

## ◆ pm_loop_flags_t

typedef enum pm_loop_flags pm_loop_flags_t

Flags for while and until loop nodes.

## ◆ pm_match_last_line_node_t

typedef struct pm_match_last_line_node pm_match_last_line_node_t

MatchLastLineNode.

Represents a regular expression literal used in the predicate of a conditional to implicitly match against the last line read by an IO object.

    if /foo/i then end
       ^^^^^^

Type: PM_MATCH_LAST_LINE_NODE

Flags (pm_regular_expression_flags):

- PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
- PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
- PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
- PM_REGULAR_EXPRESSION_FLAGS_ONCE
- PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
- PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
- PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
- PM_REGULAR_EXPRESSION_FLAGS_UTF_8
- PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING
- PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING
- PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING

## ◆ pm_match_predicate_node_t

typedef struct pm_match_predicate_node pm_match_predicate_node_t

MatchPredicateNode.

Represents the use of the modifier `in` operator.

    foo in bar
    ^^^^^^^^^^

Type: PM_MATCH_PREDICATE_NODE

## ◆ pm_match_required_node_t

typedef struct pm_match_required_node pm_match_required_node_t

MatchRequiredNode.

Represents the use of the `=>` operator.

    foo => bar
    ^^^^^^^^^^

Type: PM_MATCH_REQUIRED_NODE

## ◆ pm_match_write_node_t

typedef struct pm_match_write_node pm_match_write_node_t

MatchWriteNode.

Represents writing local variables using a regular expression match with named capture groups.

    /(?<foo>bar)/ =~ baz
    ^^^^^^^^^^^^^^^^^^^^

Type: PM_MATCH_WRITE_NODE

## ◆ pm_missing_node_t

typedef struct pm_missing_node pm_missing_node_t

MissingNode.

Represents a node that is missing from the source and results in a syntax error.

Type: PM_MISSING_NODE

## ◆ pm_module_node_t

typedef struct pm_module_node pm_module_node_t

ModuleNode.

Represents a module declaration involving the `module` keyword.

    module Foo end
    ^^^^^^^^^^^^^^

Type: PM_MODULE_NODE

## ◆ pm_multi_target_node_t

typedef struct pm_multi_target_node pm_multi_target_node_t

MultiTargetNode.

Represents a multi-target expression.

    a, (b, c) = 1, 2, 3
       ^^^^^^

This can be a part of `MultiWriteNode` as above, or the target of a `for` loop

    for a, b in [[1, 2], [3, 4]]
        ^^^^

Type: PM_MULTI_TARGET_NODE

## ◆ pm_multi_write_node_t

typedef struct pm_multi_write_node pm_multi_write_node_t

MultiWriteNode.

Represents a write to a multi-target expression.

    a, b, c = 1, 2, 3
    ^^^^^^^^^^^^^^^^^

Type: PM_MULTI_WRITE_NODE

## ◆ pm_next_node_t

typedef struct pm_next_node pm_next_node_t

NextNode.

Represents the use of the `next` keyword.

    next 1
    ^^^^^^

Type: PM_NEXT_NODE

## ◆ pm_nil_node_t

typedef struct pm_nil_node pm_nil_node_t

NilNode.

Represents the use of the `nil` keyword.

    nil
    ^^^

Type: PM_NIL_NODE

## ◆ pm_no_keywords_parameter_node_t

typedef struct pm_no_keywords_parameter_node pm_no_keywords_parameter_node_t

NoKeywordsParameterNode.

Represents the use of `**nil` inside method arguments.

    def a(**nil)
          ^^^^^
    end

Type: PM_NO_KEYWORDS_PARAMETER_NODE

## ◆ pm_node_flags_t

typedef uint16_t pm_node_flags_t

These are the flags embedded in the node struct.

We explicitly control the size of it here to avoid having the variable-width enum.

Definition at line 1040 of file ast.h.

## ◆ pm_node_list_t

typedef struct pm_node_list pm_node_list_t

A list of nodes in the source, most often used for lists of children.

## ◆ pm_node_t

typedef struct pm_node pm_node_t

This is the base structure that represents a node in the syntax tree.

It is embedded into every node type.

## ◆ pm_node_type_t

typedef uint16_t pm_node_type_t

This is the type of node embedded in the node struct.

We explicitly control the size of it here to avoid having the variable-width enum.

Definition at line 1034 of file ast.h.

## ◆ pm_numbered_parameters_node_t

typedef struct pm_numbered_parameters_node pm_numbered_parameters_node_t

NumberedParametersNode.

Represents an implicit set of parameters through the use of numbered parameters within a block or lambda.

    -> { _1 + _2 }
    ^^^^^^^^^^^^^^

Type: PM_NUMBERED_PARAMETERS_NODE

## ◆ pm_numbered_reference_read_node_t

typedef struct pm_numbered_reference_read_node pm_numbered_reference_read_node_t

NumberedReferenceReadNode.

Represents reading a numbered reference to a capture in the previous match.

    $1
    ^^

Type: PM_NUMBERED_REFERENCE_READ_NODE

## ◆ pm_optional_keyword_parameter_node_t

typedef struct pm_optional_keyword_parameter_node pm_optional_keyword_parameter_node_t

OptionalKeywordParameterNode.

Represents an optional keyword parameter to a method, block, or lambda definition.

    def a(b: 1)
          ^^^^
    end

Type: PM_OPTIONAL_KEYWORD_PARAMETER_NODE

Flags (pm_parameter_flags):

- PM_PARAMETER_FLAGS_REPEATED_PARAMETER

## ◆ pm_optional_parameter_node_t

typedef struct pm_optional_parameter_node pm_optional_parameter_node_t

OptionalParameterNode.

Represents an optional parameter to a method, block, or lambda definition.

    def a(b = 1)
          ^^^^^
    end

Type: PM_OPTIONAL_PARAMETER_NODE

Flags (pm_parameter_flags):

- PM_PARAMETER_FLAGS_REPEATED_PARAMETER

## ◆ pm_or_node_t

typedef struct pm_or_node pm_or_node_t

OrNode.

Represents the use of the `||` operator or the `or` keyword.

    left or right
    ^^^^^^^^^^^^^

Type: PM_OR_NODE

## ◆ pm_parameter_flags_t

typedef enum pm_parameter_flags pm_parameter_flags_t

Flags for parameter nodes.

## ◆ pm_parameters_node_t

typedef struct pm_parameters_node pm_parameters_node_t

ParametersNode.

Represents the list of parameters on a method, block, or lambda definition.

    def a(b, c, d)
          ^^^^^^^
    end

Type: PM_PARAMETERS_NODE

## ◆ pm_parentheses_node_t

typedef struct pm_parentheses_node pm_parentheses_node_t

ParenthesesNode.

Represents a parenthesized expression

    (10 + 34)
    ^^^^^^^^^

Type: PM_PARENTHESES_NODE

## ◆ pm_pinned_expression_node_t

typedef struct pm_pinned_expression_node pm_pinned_expression_node_t

PinnedExpressionNode.

Represents the use of the `^` operator for pinning an expression in a pattern matching expression.

    foo in ^(bar)
           ^^^^^^

Type: PM_PINNED_EXPRESSION_NODE

## ◆ pm_pinned_variable_node_t

typedef struct pm_pinned_variable_node pm_pinned_variable_node_t

PinnedVariableNode.

Represents the use of the `^` operator for pinning a variable in a pattern matching expression.

    foo in ^bar
           ^^^^

Type: PM_PINNED_VARIABLE_NODE

## ◆ pm_post_execution_node_t

typedef struct pm_post_execution_node pm_post_execution_node_t

PostExecutionNode.

Represents the use of the `END` keyword.

    END { foo }
    ^^^^^^^^^^^

Type: PM_POST_EXECUTION_NODE

## ◆ pm_pre_execution_node_t

typedef struct pm_pre_execution_node pm_pre_execution_node_t

PreExecutionNode.

Represents the use of the `BEGIN` keyword.

    BEGIN { foo }
    ^^^^^^^^^^^^^

Type: PM_PRE_EXECUTION_NODE

## ◆ pm_program_node_t

typedef struct pm_program_node pm_program_node_t

ProgramNode.

The top level node of any parse tree.

Type: PM_PROGRAM_NODE

## ◆ pm_range_flags_t

typedef enum pm_range_flags pm_range_flags_t

Flags for range and flip-flop nodes.

## ◆ pm_range_node_t

typedef struct pm_range_node pm_range_node_t

RangeNode.

Represents the use of the `..` or `...` operators.

    1..2
    ^^^^

    c if a =~ /left/ ... b =~ /right/
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Type: PM_RANGE_NODE

Flags (pm_range_flags):

- PM_RANGE_FLAGS_EXCLUDE_END

## ◆ pm_rational_node_t

typedef struct pm_rational_node pm_rational_node_t

RationalNode.

Represents a rational number literal.

    1.0r
    ^^^^

Type: PM_RATIONAL_NODE

Flags (pm_integer_base_flags):

- PM_INTEGER_BASE_FLAGS_BINARY
- PM_INTEGER_BASE_FLAGS_DECIMAL
- PM_INTEGER_BASE_FLAGS_OCTAL
- PM_INTEGER_BASE_FLAGS_HEXADECIMAL

## ◆ pm_redo_node_t

typedef struct pm_redo_node pm_redo_node_t

RedoNode.

Represents the use of the `redo` keyword.

    redo
    ^^^^

Type: PM_REDO_NODE

## ◆ pm_regular_expression_flags_t

typedef enum pm_regular_expression_flags pm_regular_expression_flags_t

Flags for regular expression and match last line nodes.

## ◆ pm_regular_expression_node_t

typedef struct pm_regular_expression_node pm_regular_expression_node_t

RegularExpressionNode.

Represents a regular expression literal with no interpolation.

    /foo/i
    ^^^^^^

Type: PM_REGULAR_EXPRESSION_NODE

Flags (pm_regular_expression_flags):

- PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
- PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
- PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
- PM_REGULAR_EXPRESSION_FLAGS_ONCE
- PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
- PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
- PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
- PM_REGULAR_EXPRESSION_FLAGS_UTF_8
- PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING
- PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING
- PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING

## ◆ pm_required_keyword_parameter_node_t

typedef struct pm_required_keyword_parameter_node pm_required_keyword_parameter_node_t

RequiredKeywordParameterNode.

Represents a required keyword parameter to a method, block, or lambda definition.

    def a(b: )
          ^^
    end

Type: PM_REQUIRED_KEYWORD_PARAMETER_NODE

Flags (pm_parameter_flags):

- PM_PARAMETER_FLAGS_REPEATED_PARAMETER

## ◆ pm_required_parameter_node_t

typedef struct pm_required_parameter_node pm_required_parameter_node_t

RequiredParameterNode.

Represents a required parameter to a method, block, or lambda definition.

    def a(b)
          ^
    end

Type: PM_REQUIRED_PARAMETER_NODE

Flags (pm_parameter_flags):

- PM_PARAMETER_FLAGS_REPEATED_PARAMETER

## ◆ pm_rescue_modifier_node_t

typedef struct pm_rescue_modifier_node pm_rescue_modifier_node_t

RescueModifierNode.

Represents an expression modified with a rescue.

    foo rescue nil
    ^^^^^^^^^^^^^^

Type: PM_RESCUE_MODIFIER_NODE

## ◆ pm_rescue_node_t

typedef struct pm_rescue_node pm_rescue_node_t

RescueNode.

Represents a rescue statement.

    begin
    rescue Foo, *splat, Bar => ex
      foo
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    end

`Foo, *splat, Bar` are in the `exceptions` field. `ex` is in the `reference` field.

Type: PM_RESCUE_NODE

## ◆ pm_rest_parameter_node_t

typedef struct pm_rest_parameter_node pm_rest_parameter_node_t

RestParameterNode.

Represents a rest parameter to a method, block, or lambda definition.

    def a(*b)
          ^^
    end

Type: PM_REST_PARAMETER_NODE

Flags (pm_parameter_flags):

- PM_PARAMETER_FLAGS_REPEATED_PARAMETER

## ◆ pm_retry_node_t

typedef struct pm_retry_node pm_retry_node_t

RetryNode.

Represents the use of the `retry` keyword.

    retry
    ^^^^^

Type: PM_RETRY_NODE

## ◆ pm_return_node_t

typedef struct pm_return_node pm_return_node_t

ReturnNode.

Represents the use of the `return` keyword.

    return 1
    ^^^^^^^^

Type: PM_RETURN_NODE

## ◆ pm_self_node_t

typedef struct pm_self_node pm_self_node_t

SelfNode.

Represents the `self` keyword.

    self
    ^^^^

Type: PM_SELF_NODE

## ◆ pm_shareable_constant_node_flags_t

typedef enum pm_shareable_constant_node_flags pm_shareable_constant_node_flags_t

Flags for shareable constant nodes.

## ◆ pm_shareable_constant_node_t

typedef struct pm_shareable_constant_node pm_shareable_constant_node_t

ShareableConstantNode.

This node wraps a constant write to indicate that when the value is written, it should have its shareability state modified.

    # shareable_constant_value: literal
    C = { a: 1 }
    ^^^^^^^^^^^^

Type: PM_SHAREABLE_CONSTANT_NODE

Flags (pm_shareable_constant_node_flags):

- PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL
- PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING
- PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY

## ◆ pm_singleton_class_node_t

typedef struct pm_singleton_class_node pm_singleton_class_node_t

SingletonClassNode.

Represents a singleton class declaration involving the `class` keyword.

    class << self end
    ^^^^^^^^^^^^^^^^^

Type: PM_SINGLETON_CLASS_NODE

## ◆ pm_source_encoding_node_t

typedef struct pm_source_encoding_node pm_source_encoding_node_t

SourceEncodingNode.

Represents the use of the `__ENCODING__` keyword.

    __ENCODING__
    ^^^^^^^^^^^^

Type: PM_SOURCE_ENCODING_NODE

## ◆ pm_source_file_node_t

typedef struct pm_source_file_node pm_source_file_node_t

SourceFileNode.

Represents the use of the `__FILE__` keyword.

    __FILE__
    ^^^^^^^^

Type: PM_SOURCE_FILE_NODE

Flags (pm_string_flags):

- PM_STRING_FLAGS_FORCED_UTF8_ENCODING
- PM_STRING_FLAGS_FORCED_BINARY_ENCODING
- PM_STRING_FLAGS_FROZEN
- PM_STRING_FLAGS_MUTABLE

## ◆ pm_source_line_node_t

typedef struct pm_source_line_node pm_source_line_node_t

SourceLineNode.

Represents the use of the `__LINE__` keyword.

    __LINE__
    ^^^^^^^^

Type: PM_SOURCE_LINE_NODE

## ◆ pm_splat_node_t

typedef struct pm_splat_node pm_splat_node_t

SplatNode.

Represents the use of the splat operator.

    [*a]
     ^^

Type: PM_SPLAT_NODE

## ◆ pm_statements_node_t

typedef struct pm_statements_node pm_statements_node_t

StatementsNode.

Represents a set of statements contained within some scope.

    foo; bar; baz
    ^^^^^^^^^^^^^

Type: PM_STATEMENTS_NODE

## ◆ pm_string_flags_t

typedef enum pm_string_flags pm_string_flags_t

Flags for string nodes.

## ◆ pm_string_node_t

typedef struct pm_string_node pm_string_node_t

StringNode.

Represents a string literal, a string contained within a `w` list, or plain string content within an interpolated string.

    "foo"
    ^^^^^

    %w[foo]
       ^^^

    "foo #{bar} baz"
     ^^^^      ^^^^

Type: PM_STRING_NODE

Flags (pm_string_flags):

- PM_STRING_FLAGS_FORCED_UTF8_ENCODING
- PM_STRING_FLAGS_FORCED_BINARY_ENCODING
- PM_STRING_FLAGS_FROZEN
- PM_STRING_FLAGS_MUTABLE

## ◆ pm_super_node_t

typedef struct pm_super_node pm_super_node_t

SuperNode.

Represents the use of the `super` keyword with parentheses or arguments.

    super()
    ^^^^^^^

    super foo, bar
    ^^^^^^^^^^^^^^

Type: PM_SUPER_NODE

## ◆ pm_symbol_flags_t

typedef enum pm_symbol_flags pm_symbol_flags_t

Flags for symbol nodes.

## ◆ pm_symbol_node_t

typedef struct pm_symbol_node pm_symbol_node_t

SymbolNode.

Represents a symbol literal or a symbol contained within a `i` list.

    :foo
    ^^^^

    %i[foo]
       ^^^

Type: PM_SYMBOL_NODE

Flags (pm_symbol_flags):

- PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING
- PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING
- PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING

## ◆ pm_token_type_t

typedef enum pm_token_type pm_token_type_t

This enum represents every type of token in the Ruby source.

## ◆ pm_true_node_t

typedef struct pm_true_node pm_true_node_t

TrueNode.

Represents the use of the literal `true` keyword.

    true
    ^^^^

Type: PM_TRUE_NODE

## ◆ pm_undef_node_t

typedef struct pm_undef_node pm_undef_node_t

UndefNode.

Represents the use of the `undef` keyword.

    undef :foo, :bar, :baz
    ^^^^^^^^^^^^^^^^^^^^^^

Type: PM_UNDEF_NODE

## ◆ pm_unless_node_t

typedef struct pm_unless_node pm_unless_node_t

UnlessNode.

Represents the use of the `unless` keyword, either in the block form or the modifier form.

    bar unless foo
    ^^^^^^^^^^^^^^

    unless foo then bar end
    ^^^^^^^^^^^^^^^^^^^^^^^

Type: PM_UNLESS_NODE

## ◆ pm_until_node_t

typedef struct pm_until_node pm_until_node_t

UntilNode.

Represents the use of the `until` keyword, either in the block form or the modifier form.

    bar until foo
    ^^^^^^^^^^^^^

    until foo do bar end
    ^^^^^^^^^^^^^^^^^^^^

Type: PM_UNTIL_NODE

Flags (pm_loop_flags):

- PM_LOOP_FLAGS_BEGIN_MODIFIER

## ◆ pm_when_node_t

typedef struct pm_when_node pm_when_node_t

WhenNode.

Represents the use of the `when` keyword within a case statement.

    case true
    when true
    ^^^^^^^^^
    end

Type: PM_WHEN_NODE

## ◆ pm_while_node_t

typedef struct pm_while_node pm_while_node_t

WhileNode.

Represents the use of the `while` keyword, either in the block form or the modifier form.

    bar while foo
    ^^^^^^^^^^^^^

    while foo do bar end
    ^^^^^^^^^^^^^^^^^^^^

Type: PM_WHILE_NODE

Flags (pm_loop_flags):

- PM_LOOP_FLAGS_BEGIN_MODIFIER

## ◆ pm_x_string_node_t

typedef struct pm_x_string_node pm_x_string_node_t

XStringNode.

Represents an xstring literal with no interpolation.

    `foo`
    ^^^^^

Type: PM_X_STRING_NODE

Flags (pm_encoding_flags):

- PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING
- PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING

## ◆ pm_yield_node_t

typedef struct pm_yield_node pm_yield_node_t

YieldNode.

Represents the use of the `yield` keyword.

    yield 1
    ^^^^^^^

Type: PM_YIELD_NODE

## Enumeration Type Documentation

## ◆ pm_arguments_node_flags

enum pm_arguments_node_flags

Flags for arguments nodes.

Enumerator
PM_ARGUMENTS_NODE_FLAGS_CONTAINS_FORWARDING | if the arguments contain forwarding
PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORDS | if the arguments contain keywords
PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT | if the arguments contain a keyword splat
PM_ARGUMENTS_NODE_FLAGS_CONTAINS_SPLAT | if the arguments contain a splat
PM_ARGUMENTS_NODE_FLAGS_CONTAINS_MULTIPLE_SPLATS | if the arguments contain multiple splats

Definition at line 7744 of file ast.h.

## ◆ pm_array_node_flags

enum pm_array_node_flags

Flags for array nodes.

Enumerator
PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT | if array contains splat nodes

Definition at line 7764 of file ast.h.

## ◆ pm_call_node_flags

enum pm_call_node_flags

Flags for call nodes.

Enumerator
PM_CALL_NODE_FLAGS_SAFE_NAVIGATION | &. operator
PM_CALL_NODE_FLAGS_VARIABLE_CALL | a call that could have been a local variable
PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE | a call that is an attribute write, so the value being written should be returned
PM_CALL_NODE_FLAGS_IGNORE_VISIBILITY | a call that ignores method visibility

Definition at line 7772 of file ast.h.

## ◆ pm_encoding_flags

enum pm_encoding_flags

Flags for nodes that have unescaped content.

Enumerator
PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING | internal bytes forced the encoding to UTF-8
PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING | internal bytes forced the encoding to binary

Definition at line 7789 of file ast.h.

## ◆ pm_integer_base_flags

enum pm_integer_base_flags

Flags for integer nodes that correspond to the base of the integer.

Enumerator
PM_INTEGER_BASE_FLAGS_BINARY | 0b prefix
PM_INTEGER_BASE_FLAGS_DECIMAL | 0d or no prefix
PM_INTEGER_BASE_FLAGS_OCTAL | 0o or 0 prefix
PM_INTEGER_BASE_FLAGS_HEXADECIMAL | 0x prefix

Definition at line 7800 of file ast.h.

## ◆ pm_interpolated_string_node_flags

enum pm_interpolated_string_node_flags

Flags for interpolated string nodes that indicated mutability if they are also marked as literals.

Enumerator
PM_INTERPOLATED_STRING_NODE_FLAGS_FROZEN | frozen by virtue of a `frozen_string_literal: true` comment or `--enable-frozen-string-literal`; only for adjacent string literals like ‘'a’ 'b'`
PM_INTERPOLATED_STRING_NODE_FLAGS_MUTABLE | mutable by virtue of a `frozen_string_literal: false` comment or `--disable-frozen-string-literal`; only for adjacent string literals like ‘'a’ 'b'`

Definition at line 7817 of file ast.h.

## ◆ pm_keyword_hash_node_flags

enum pm_keyword_hash_node_flags

Flags for keyword hash nodes.

Enumerator
PM_KEYWORD_HASH_NODE_FLAGS_SYMBOL_KEYS | a keyword hash which only has `AssocNode` elements all with symbol keys, which means the elements can be treated as keyword arguments

Definition at line 7828 of file ast.h.

## ◆ pm_loop_flags

enum pm_loop_flags

Flags for while and until loop nodes.

Enumerator
PM_LOOP_FLAGS_BEGIN_MODIFIER | a loop after a begin statement, so the body is executed first before the condition

Definition at line 7836 of file ast.h.

## ◆ pm_node_type

enum pm_node_type

This enum represents every type of node in the Ruby syntax tree.

Enumerator
PM_ALIAS_GLOBAL_VARIABLE_NODE | AliasGlobalVariableNode.
PM_ALIAS_METHOD_NODE | AliasMethodNode.
PM_ALTERNATION_PATTERN_NODE | AlternationPatternNode.
PM_AND_NODE | AndNode.
PM_ARGUMENTS_NODE | ArgumentsNode.
PM_ARRAY_NODE | ArrayNode.
PM_ARRAY_PATTERN_NODE | ArrayPatternNode.
PM_ASSOC_NODE | AssocNode.
PM_ASSOC_SPLAT_NODE | AssocSplatNode.
PM_BACK_REFERENCE_READ_NODE | BackReferenceReadNode.
PM_BEGIN_NODE | BeginNode.
PM_BLOCK_ARGUMENT_NODE | BlockArgumentNode.
PM_BLOCK_LOCAL_VARIABLE_NODE | BlockLocalVariableNode.
PM_BLOCK_NODE | BlockNode.
PM_BLOCK_PARAMETER_NODE | BlockParameterNode.
PM_BLOCK_PARAMETERS_NODE | BlockParametersNode.
PM_BREAK_NODE | BreakNode.
PM_CALL_AND_WRITE_NODE | CallAndWriteNode.
PM_CALL_NODE | CallNode.
PM_CALL_OPERATOR_WRITE_NODE | CallOperatorWriteNode.
PM_CALL_OR_WRITE_NODE | CallOrWriteNode.
PM_CALL_TARGET_NODE | CallTargetNode.
PM_CAPTURE_PATTERN_NODE | CapturePatternNode.
PM_CASE_MATCH_NODE | CaseMatchNode.
PM_CASE_NODE | CaseNode.
PM_CLASS_NODE | ClassNode.
PM_CLASS_VARIABLE_AND_WRITE_NODE | ClassVariableAndWriteNode.
PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE | ClassVariableOperatorWriteNode.
PM_CLASS_VARIABLE_OR_WRITE_NODE | ClassVariableOrWriteNode.
PM_CLASS_VARIABLE_READ_NODE | ClassVariableReadNode.
PM_CLASS_VARIABLE_TARGET_NODE | ClassVariableTargetNode.
PM_CLASS_VARIABLE_WRITE_NODE | ClassVariableWriteNode.
PM_CONSTANT_AND_WRITE_NODE | ConstantAndWriteNode.
PM_CONSTANT_OPERATOR_WRITE_NODE | ConstantOperatorWriteNode.
PM_CONSTANT_OR_WRITE_NODE | ConstantOrWriteNode.
PM_CONSTANT_PATH_AND_WRITE_NODE | ConstantPathAndWriteNode.
PM_CONSTANT_PATH_NODE | ConstantPathNode.
PM_CONSTANT_PATH_OPERATOR_WRITE_NODE | ConstantPathOperatorWriteNode.
PM_CONSTANT_PATH_OR_WRITE_NODE | ConstantPathOrWriteNode.
PM_CONSTANT_PATH_TARGET_NODE | ConstantPathTargetNode.
PM_CONSTANT_PATH_WRITE_NODE | ConstantPathWriteNode.
PM_CONSTANT_READ_NODE | ConstantReadNode.
PM_CONSTANT_TARGET_NODE | ConstantTargetNode.
PM_CONSTANT_WRITE_NODE | ConstantWriteNode.
PM_DEF_NODE | DefNode.
PM_DEFINED_NODE | DefinedNode.
PM_ELSE_NODE | ElseNode.
PM_EMBEDDED_STATEMENTS_NODE | EmbeddedStatementsNode.
PM_EMBEDDED_VARIABLE_NODE | EmbeddedVariableNode.
PM_ENSURE_NODE | EnsureNode.
PM_FALSE_NODE | FalseNode.
PM_FIND_PATTERN_NODE | FindPatternNode.
PM_FLIP_FLOP_NODE | FlipFlopNode.
PM_FLOAT_NODE | FloatNode.
PM_FOR_NODE | ForNode.
PM_FORWARDING_ARGUMENTS_NODE | ForwardingArgumentsNode.
PM_FORWARDING_PARAMETER_NODE | ForwardingParameterNode.
PM_FORWARDING_SUPER_NODE | ForwardingSuperNode.
PM_GLOBAL_VARIABLE_AND_WRITE_NODE | GlobalVariableAndWriteNode.
PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE | GlobalVariableOperatorWriteNode.
PM_GLOBAL_VARIABLE_OR_WRITE_NODE | GlobalVariableOrWriteNode.
PM_GLOBAL_VARIABLE_READ_NODE | GlobalVariableReadNode.
PM_GLOBAL_VARIABLE_TARGET_NODE | GlobalVariableTargetNode.
PM_GLOBAL_VARIABLE_WRITE_NODE | GlobalVariableWriteNode.
PM_HASH_NODE | HashNode.
PM_HASH_PATTERN_NODE | HashPatternNode.
PM_IF_NODE | IfNode.
PM_IMAGINARY_NODE | ImaginaryNode.
PM_IMPLICIT_NODE | ImplicitNode.
PM_IMPLICIT_REST_NODE | ImplicitRestNode.
PM_IN_NODE | InNode.
PM_INDEX_AND_WRITE_NODE | IndexAndWriteNode.
PM_INDEX_OPERATOR_WRITE_NODE | IndexOperatorWriteNode.
PM_INDEX_OR_WRITE_NODE | IndexOrWriteNode.
PM_INDEX_TARGET_NODE | IndexTargetNode.
PM_INSTANCE_VARIABLE_AND_WRITE_NODE | InstanceVariableAndWriteNode.
PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE | InstanceVariableOperatorWriteNode.
PM_INSTANCE_VARIABLE_OR_WRITE_NODE | InstanceVariableOrWriteNode.
PM_INSTANCE_VARIABLE_READ_NODE | InstanceVariableReadNode.
PM_INSTANCE_VARIABLE_TARGET_NODE | InstanceVariableTargetNode.
PM_INSTANCE_VARIABLE_WRITE_NODE | InstanceVariableWriteNode.
PM_INTEGER_NODE | IntegerNode.
PM_INTERPOLATED_MATCH_LAST_LINE_NODE | InterpolatedMatchLastLineNode.
PM_INTERPOLATED_REGULAR_EXPRESSION_NODE | InterpolatedRegularExpressionNode.
PM_INTERPOLATED_STRING_NODE | InterpolatedStringNode.
PM_INTERPOLATED_SYMBOL_NODE | InterpolatedSymbolNode.
PM_INTERPOLATED_X_STRING_NODE | InterpolatedXStringNode.
PM_IT_LOCAL_VARIABLE_READ_NODE | ItLocalVariableReadNode.
PM_IT_PARAMETERS_NODE | ItParametersNode.
PM_KEYWORD_HASH_NODE | KeywordHashNode.
PM_KEYWORD_REST_PARAMETER_NODE | KeywordRestParameterNode.
PM_LAMBDA_NODE | LambdaNode.
PM_LOCAL_VARIABLE_AND_WRITE_NODE | LocalVariableAndWriteNode.
PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE | LocalVariableOperatorWriteNode.
PM_LOCAL_VARIABLE_OR_WRITE_NODE | LocalVariableOrWriteNode.
PM_LOCAL_VARIABLE_READ_NODE | LocalVariableReadNode.
PM_LOCAL_VARIABLE_TARGET_NODE | LocalVariableTargetNode.
PM_LOCAL_VARIABLE_WRITE_NODE | LocalVariableWriteNode.
PM_MATCH_LAST_LINE_NODE | MatchLastLineNode.
PM_MATCH_PREDICATE_NODE | MatchPredicateNode.
PM_MATCH_REQUIRED_NODE | MatchRequiredNode.
PM_MATCH_WRITE_NODE | MatchWriteNode.
PM_MISSING_NODE | MissingNode.
PM_MODULE_NODE | ModuleNode.
PM_MULTI_TARGET_NODE | MultiTargetNode.
PM_MULTI_WRITE_NODE | MultiWriteNode.
PM_NEXT_NODE | NextNode.
PM_NIL_NODE | NilNode.
PM_NO_KEYWORDS_PARAMETER_NODE | NoKeywordsParameterNode.
PM_NUMBERED_PARAMETERS_NODE | NumberedParametersNode.
PM_NUMBERED_REFERENCE_READ_NODE | NumberedReferenceReadNode.
PM_OPTIONAL_KEYWORD_PARAMETER_NODE | OptionalKeywordParameterNode.
PM_OPTIONAL_PARAMETER_NODE | OptionalParameterNode.
PM_OR_NODE | OrNode.
PM_PARAMETERS_NODE | ParametersNode.
PM_PARENTHESES_NODE | ParenthesesNode.
PM_PINNED_EXPRESSION_NODE | PinnedExpressionNode.
PM_PINNED_VARIABLE_NODE | PinnedVariableNode.
PM_POST_EXECUTION_NODE | PostExecutionNode.
PM_PRE_EXECUTION_NODE | PreExecutionNode.
PM_PROGRAM_NODE | ProgramNode.
PM_RANGE_NODE | RangeNode.
PM_RATIONAL_NODE | RationalNode.
PM_REDO_NODE | RedoNode.
PM_REGULAR_EXPRESSION_NODE | RegularExpressionNode.
PM_REQUIRED_KEYWORD_PARAMETER_NODE | RequiredKeywordParameterNode.
PM_REQUIRED_PARAMETER_NODE | RequiredParameterNode.
PM_RESCUE_MODIFIER_NODE | RescueModifierNode.
PM_RESCUE_NODE | RescueNode.
PM_REST_PARAMETER_NODE | RestParameterNode.
PM_RETRY_NODE | RetryNode.
PM_RETURN_NODE | ReturnNode.
PM_SELF_NODE | SelfNode.
PM_SHAREABLE_CONSTANT_NODE | ShareableConstantNode.
PM_SINGLETON_CLASS_NODE | SingletonClassNode.
PM_SOURCE_ENCODING_NODE | SourceEncodingNode.
PM_SOURCE_FILE_NODE | SourceFileNode.
PM_SOURCE_LINE_NODE | SourceLineNode.
PM_SPLAT_NODE | SplatNode.
PM_STATEMENTS_NODE | StatementsNode.
PM_STRING_NODE | StringNode.
PM_SUPER_NODE | SuperNode.
PM_SYMBOL_NODE | SymbolNode.
PM_TRUE_NODE | TrueNode.
PM_UNDEF_NODE | UndefNode.
PM_UNLESS_NODE | UnlessNode.
PM_UNTIL_NODE | UntilNode.
PM_WHEN_NODE | WhenNode.
PM_WHILE_NODE | WhileNode.
PM_X_STRING_NODE | XStringNode.
PM_YIELD_NODE | YieldNode.
PM_SCOPE_NODE | A special kind of node used for compilation.

Definition at line 572 of file ast.h.

## ◆ pm_parameter_flags

enum pm_parameter_flags

Flags for parameter nodes.

Enumerator
PM_PARAMETER_FLAGS_REPEATED_PARAMETER | a parameter name that has been repeated in the method signature

Definition at line 7844 of file ast.h.

## ◆ pm_range_flags

enum pm_range_flags

Flags for range and flip-flop nodes.

Enumerator
PM_RANGE_FLAGS_EXCLUDE_END | ... operator

Definition at line 7852 of file ast.h.

## ◆ pm_regular_expression_flags

enum pm_regular_expression_flags

Flags for regular expression and match last line nodes.

Enumerator
PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE | i - ignores the case of characters when matching
PM_REGULAR_EXPRESSION_FLAGS_EXTENDED | x - ignores whitespace and allows comments in regular expressions
PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE | m - allows $ to match the end of lines within strings
PM_REGULAR_EXPRESSION_FLAGS_ONCE | o - only interpolates values into the regular expression once
PM_REGULAR_EXPRESSION_FLAGS_EUC_JP | e - forces the EUC-JP encoding
PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT | n - forces the ASCII-8BIT encoding
PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J | s - forces the Windows-31J encoding
PM_REGULAR_EXPRESSION_FLAGS_UTF_8 | u - forces the UTF-8 encoding
PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING | internal bytes forced the encoding to UTF-8
PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING | internal bytes forced the encoding to binary
PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING | internal bytes forced the encoding to US-ASCII

Definition at line 7860 of file ast.h.

## ◆ pm_shareable_constant_node_flags

enum pm_shareable_constant_node_flags

Flags for shareable constant nodes.

Enumerator
PM_SHAREABLE_CONSTANT_NODE_FLAGS_LITERAL | constant writes that should be modified with shareable constant value literal
PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_EVERYTHING | constant writes that should be modified with shareable constant value experimental everything
PM_SHAREABLE_CONSTANT_NODE_FLAGS_EXPERIMENTAL_COPY | constant writes that should be modified with shareable constant value experimental copy

Definition at line 7898 of file ast.h.

## ◆ pm_string_flags

enum pm_string_flags

Flags for string nodes.

Enumerator
PM_STRING_FLAGS_FORCED_UTF8_ENCODING | internal bytes forced the encoding to UTF-8
PM_STRING_FLAGS_FORCED_BINARY_ENCODING | internal bytes forced the encoding to binary
PM_STRING_FLAGS_FROZEN | frozen by virtue of a `frozen_string_literal: true` comment or `--enable-frozen-string-literal`
PM_STRING_FLAGS_MUTABLE | mutable by virtue of a `frozen_string_literal: false` comment or `--disable-frozen-string-literal`

Definition at line 7912 of file ast.h.

## ◆ pm_symbol_flags

enum pm_symbol_flags

Flags for symbol nodes.

Enumerator
PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING | internal bytes forced the encoding to UTF-8
PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING | internal bytes forced the encoding to binary
PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING | internal bytes forced the encoding to US-ASCII

Definition at line 7929 of file ast.h.

## ◆ pm_token_type

enum pm_token_type

This enum represents every type of token in the Ruby source.

Enumerator
PM_TOKEN_EOF | final token in the file
PM_TOKEN_MISSING | a token that was expected but not found
PM_TOKEN_NOT_PROVIDED | a token that was not present but it is okay
PM_TOKEN_AMPERSAND | &
PM_TOKEN_AMPERSAND_AMPERSAND | &&
PM_TOKEN_AMPERSAND_AMPERSAND_EQUAL | &&=
PM_TOKEN_AMPERSAND_DOT | &.
PM_TOKEN_AMPERSAND_EQUAL | &=
PM_TOKEN_BACKTICK | `
PM_TOKEN_BACK_REFERENCE | a back reference
PM_TOKEN_BANG | ! or !@
PM_TOKEN_BANG_EQUAL | !=
PM_TOKEN_BANG_TILDE | ! ~
PM_TOKEN_BRACE_LEFT | {
PM_TOKEN_BRACE_RIGHT | }
PM_TOKEN_BRACKET_LEFT | [
PM_TOKEN_BRACKET_LEFT_ARRAY | [ for the beginning of an array
PM_TOKEN_BRACKET_LEFT_RIGHT | []
PM_TOKEN_BRACKET_LEFT_RIGHT_EQUAL | []=
PM_TOKEN_BRACKET_RIGHT | ]
PM_TOKEN_CARET | ^
PM_TOKEN_CARET_EQUAL | ^=
PM_TOKEN_CHARACTER_LITERAL | a character literal
PM_TOKEN_CLASS_VARIABLE | a class variable
PM_TOKEN_COLON | :
PM_TOKEN_COLON_COLON | ::
PM_TOKEN_COMMA | ,
PM_TOKEN_COMMENT | a comment
PM_TOKEN_CONSTANT | a constant
PM_TOKEN_DOT | the . call operator
PM_TOKEN_DOT_DOT | the . . range operator
PM_TOKEN_DOT_DOT_DOT | the ... range operator or forwarding parameter
PM_TOKEN_EMBDOC_BEGIN | =begin
PM_TOKEN_EMBDOC_END | =end
PM_TOKEN_EMBDOC_LINE | a line inside of embedded documentation
PM_TOKEN_EMBEXPR_BEGIN | #{
PM_TOKEN_EMBEXPR_END | }
PM_TOKEN_EMBVAR | # autotoc_md0
PM_TOKEN_EQUAL | =
PM_TOKEN_EQUAL_EQUAL | ==
PM_TOKEN_EQUAL_EQUAL_EQUAL | ===
PM_TOKEN_EQUAL_GREATER | =>
PM_TOKEN_EQUAL_TILDE | =~
PM_TOKEN_FLOAT | a floating point number
PM_TOKEN_FLOAT_IMAGINARY | a floating pointer number with an imaginary suffix
PM_TOKEN_FLOAT_RATIONAL | a floating pointer number with a rational suffix
PM_TOKEN_FLOAT_RATIONAL_IMAGINARY | a floating pointer number with a rational and imaginary suffix
PM_TOKEN_GLOBAL_VARIABLE | a global variable
PM_TOKEN_GREATER |
PM_TOKEN_GREATER_EQUAL | >=
PM_TOKEN_GREATER_GREATER |
PM_TOKEN_GREATER_GREATER_EQUAL | >=
PM_TOKEN_HEREDOC_END | the end of a heredoc
PM_TOKEN_HEREDOC_START | the start of a heredoc
PM_TOKEN_IDENTIFIER | an identifier
PM_TOKEN_IGNORED_NEWLINE | an ignored newline
PM_TOKEN_INSTANCE_VARIABLE | an instance variable
PM_TOKEN_INTEGER | an integer (any base)
PM_TOKEN_INTEGER_IMAGINARY | an integer with an imaginary suffix
PM_TOKEN_INTEGER_RATIONAL | an integer with a rational suffix
PM_TOKEN_INTEGER_RATIONAL_IMAGINARY | an integer with a rational and imaginary suffix
PM_TOKEN_KEYWORD_ALIAS | alias
PM_TOKEN_KEYWORD_AND | and
PM_TOKEN_KEYWORD_BEGIN | begin
PM_TOKEN_KEYWORD_BEGIN_UPCASE | BEGIN.
PM_TOKEN_KEYWORD_BREAK | break
PM_TOKEN_KEYWORD_CASE | case
PM_TOKEN_KEYWORD_CLASS | class
PM_TOKEN_KEYWORD_DEF | def
PM_TOKEN_KEYWORD_DEFINED | defined?
PM_TOKEN_KEYWORD_DO | do
PM_TOKEN_KEYWORD_DO_LOOP | do keyword for a predicate in a while, until, or for loop
PM_TOKEN_KEYWORD_ELSE | else
PM_TOKEN_KEYWORD_ELSIF | elsif
PM_TOKEN_KEYWORD_END | end
PM_TOKEN_KEYWORD_END_UPCASE | END.
PM_TOKEN_KEYWORD_ENSURE | ensure
PM_TOKEN_KEYWORD_FALSE | false
PM_TOKEN_KEYWORD_FOR | for
PM_TOKEN_KEYWORD_IF | if
PM_TOKEN_KEYWORD_IF_MODIFIER | if in the modifier form
PM_TOKEN_KEYWORD_IN | in
PM_TOKEN_KEYWORD_MODULE | module
PM_TOKEN_KEYWORD_NEXT | next
PM_TOKEN_KEYWORD_NIL | nil
PM_TOKEN_KEYWORD_NOT | not
PM_TOKEN_KEYWORD_OR | or
PM_TOKEN_KEYWORD_REDO | redo
PM_TOKEN_KEYWORD_RESCUE | rescue
PM_TOKEN_KEYWORD_RESCUE_MODIFIER | rescue in the modifier form
PM_TOKEN_KEYWORD_RETRY | retry
PM_TOKEN_KEYWORD_RETURN | return
PM_TOKEN_KEYWORD_SELF | self
PM_TOKEN_KEYWORD_SUPER | super
PM_TOKEN_KEYWORD_THEN | then
PM_TOKEN_KEYWORD_TRUE | true
PM_TOKEN_KEYWORD_UNDEF | undef
PM_TOKEN_KEYWORD_UNLESS | unless
PM_TOKEN_KEYWORD_UNLESS_MODIFIER | unless in the modifier form
PM_TOKEN_KEYWORD_UNTIL | until
PM_TOKEN_KEYWORD_UNTIL_MODIFIER | until in the modifier form
PM_TOKEN_KEYWORD_WHEN | when
PM_TOKEN_KEYWORD_WHILE | while
PM_TOKEN_KEYWORD_WHILE_MODIFIER | while in the modifier form
PM_TOKEN_KEYWORD_YIELD | yield
PM_TOKEN_KEYWORD___ENCODING__ | ENCODING
PM_TOKEN_KEYWORD___FILE__ | FILE
PM_TOKEN_KEYWORD___LINE__ | LINE
PM_TOKEN_LABEL | a label
PM_TOKEN_LABEL_END | the end of a label
PM_TOKEN_LAMBDA_BEGIN | {
PM_TOKEN_LESS | <
PM_TOKEN_LESS_EQUAL | <=
PM_TOKEN_LESS_EQUAL_GREATER | <=>
PM_TOKEN_LESS_LESS | <<
PM_TOKEN_LESS_LESS_EQUAL | <<=
PM_TOKEN_METHOD_NAME | a method name
PM_TOKEN_MINUS |
PM_TOKEN_MINUS_EQUAL | -=
PM_TOKEN_MINUS_GREATER | ->
PM_TOKEN_NEWLINE | a newline character outside of other tokens
PM_TOKEN_NUMBERED_REFERENCE | a numbered reference to a capture group in the previous regular expression match
PM_TOKEN_PARENTHESIS_LEFT | (
PM_TOKEN_PARENTHESIS_LEFT_PARENTHESES | ( for a parentheses node
PM_TOKEN_PARENTHESIS_RIGHT | )
PM_TOKEN_PERCENT | %
PM_TOKEN_PERCENT_EQUAL | %=
PM_TOKEN_PERCENT_LOWER_I | i
PM_TOKEN_PERCENT_LOWER_W | w
PM_TOKEN_PERCENT_LOWER_X | x
PM_TOKEN_PERCENT_UPPER_I | I
PM_TOKEN_PERCENT_UPPER_W | W
PM_TOKEN_PIPE | |
PM_TOKEN_PIPE_EQUAL | |=
PM_TOKEN_PIPE_PIPE | ||
PM_TOKEN_PIPE_PIPE_EQUAL | ||=
PM_TOKEN_PLUS |
PM_TOKEN_PLUS_EQUAL | +=
PM_TOKEN_QUESTION_MARK | ?
PM_TOKEN_REGEXP_BEGIN | the beginning of a regular expression
PM_TOKEN_REGEXP_END | the end of a regular expression
PM_TOKEN_SEMICOLON | ;
PM_TOKEN_SLASH | /
PM_TOKEN_SLASH_EQUAL | /=
PM_TOKEN_STAR |
PM_TOKEN_STAR_EQUAL | *=
PM_TOKEN_STAR_STAR | **
PM_TOKEN_STAR_STAR_EQUAL | **=
PM_TOKEN_STRING_BEGIN | the beginning of a string
PM_TOKEN_STRING_CONTENT | the contents of a string
PM_TOKEN_STRING_END | the end of a string
PM_TOKEN_SYMBOL_BEGIN | the beginning of a symbol
PM_TOKEN_TILDE | ~ or ~@
PM_TOKEN_UAMPERSAND | unary &
PM_TOKEN_UCOLON_COLON | unary ::
PM_TOKEN_UDOT_DOT | unary . . operator
PM_TOKEN_UDOT_DOT_DOT | unary ... operator
PM_TOKEN_UMINUS | -@
PM_TOKEN_UMINUS_NUM | -@ for a number
PM_TOKEN_UPLUS | +@
PM_TOKEN_USTAR | unary *
PM_TOKEN_USTAR_STAR | unary **
PM_TOKEN_WORDS_SEP | a separator between words in a list
PM_TOKEN___END__ | marker for the point in the file at which the parser should stop
PM_TOKEN_MAXIMUM | The maximum token value.

Definition at line 29 of file ast.h.

## Variable Documentation

## ◆ PM_NODE_FLAG_NEWLINE

const pm_node_flags_t PM_NODE_FLAG_NEWLINE = 0x1
| static

We store the flags enum in every node in the tree.

Some flags are common to all nodes (the ones listed below). Others are specific to certain node types.

Definition at line 1046 of file ast.h.

## ◆ PM_NODE_FLAG_STATIC_LITERAL

const pm_node_flags_t PM_NODE_FLAG_STATIC_LITERAL = 0x2
| static

Definition at line 1047 of file ast.h.