Ruby: prism/ast.h File Reference

Ruby 3.3.4p94 (2024-07-09 revision be1089c8ec5ba40e09b1553e36b3174bf4014d9d)

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_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_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_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_FLAG_BITS (sizeof(pm_node_flags_t) * 8)
| We store the flags enum in every node in the tree.
#define | PM_NODE_TYPE(node) ((enum pm_node_type) node->type)
| Cast the type to an enum to allow the compiler to provide exhaustiveness checking.
#define | PM_NODE_TYPE_P(node, type) (PM_NODE_TYPE(node) == (type))
| Return true if the type of the given node matches the given type.
#define | PM_NODE_FLAG_P(node, flag) ((((pm_node_t *)(node))->flags & (flag)) != 0)
| Return true if the given flag is set on the given node.
#define | PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS false
| 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_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_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_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_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_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_KEYWORD_HASH_NODE = 88 , PM_KEYWORD_REST_PARAMETER_NODE = 89 , PM_LAMBDA_NODE = 90 , PM_LOCAL_VARIABLE_AND_WRITE_NODE = 91 , PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 92 , PM_LOCAL_VARIABLE_OR_WRITE_NODE = 93 , PM_LOCAL_VARIABLE_READ_NODE = 94 , PM_LOCAL_VARIABLE_TARGET_NODE = 95 , PM_LOCAL_VARIABLE_WRITE_NODE = 96 , PM_MATCH_LAST_LINE_NODE = 97 , PM_MATCH_PREDICATE_NODE = 98 , PM_MATCH_REQUIRED_NODE = 99 , PM_MATCH_WRITE_NODE = 100 , PM_MISSING_NODE = 101 , PM_MODULE_NODE = 102 , PM_MULTI_TARGET_NODE = 103 , PM_MULTI_WRITE_NODE = 104 , PM_NEXT_NODE = 105 , PM_NIL_NODE = 106 , PM_NO_KEYWORDS_PARAMETER_NODE = 107 , PM_NUMBERED_PARAMETERS_NODE = 108 , PM_NUMBERED_REFERENCE_READ_NODE = 109 , PM_OPTIONAL_KEYWORD_PARAMETER_NODE = 110 , PM_OPTIONAL_PARAMETER_NODE = 111 , PM_OR_NODE = 112 , PM_PARAMETERS_NODE = 113 , PM_PARENTHESES_NODE = 114 , PM_PINNED_EXPRESSION_NODE = 115 , PM_PINNED_VARIABLE_NODE = 116 , PM_POST_EXECUTION_NODE = 117 , PM_PRE_EXECUTION_NODE = 118 , PM_PROGRAM_NODE = 119 , PM_RANGE_NODE = 120 , PM_RATIONAL_NODE = 121 , PM_REDO_NODE = 122 , PM_REGULAR_EXPRESSION_NODE = 123 , PM_REQUIRED_KEYWORD_PARAMETER_NODE = 124 , PM_REQUIRED_PARAMETER_NODE = 125 , PM_RESCUE_MODIFIER_NODE = 126 , PM_RESCUE_NODE = 127 , PM_REST_PARAMETER_NODE = 128 , PM_RETRY_NODE = 129 , PM_RETURN_NODE = 130 , PM_SELF_NODE = 131 , PM_SINGLETON_CLASS_NODE = 132 , PM_SOURCE_ENCODING_NODE = 133 , PM_SOURCE_FILE_NODE = 134 , PM_SOURCE_LINE_NODE = 135 , PM_SPLAT_NODE = 136 , PM_STATEMENTS_NODE = 137 , PM_STRING_NODE = 138 , PM_SUPER_NODE = 139 , PM_SYMBOL_NODE = 140 , PM_TRUE_NODE = 141 , PM_UNDEF_NODE = 142 , PM_UNLESS_NODE = 143 , PM_UNTIL_NODE = 144 , PM_WHEN_NODE = 145 , PM_WHILE_NODE = 146 , PM_X_STRING_NODE = 147 , PM_YIELD_NODE = 148 , 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_KEYWORD_SPLAT = 1 }
| Flags for arguments nodes. More...
enum | pm_array_node_flags { PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT = 1 }
| Flags for array nodes. More...
enum | pm_call_node_flags { PM_CALL_NODE_FLAGS_SAFE_NAVIGATION = 1 , PM_CALL_NODE_FLAGS_VARIABLE_CALL = 2 , PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE = 4 }
| Flags for call nodes. More...
enum | pm_encoding_flags { PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING = 1 , PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING = 2 }
| Flags for nodes that have unescaped content. More...
enum | pm_integer_base_flags { PM_INTEGER_BASE_FLAGS_BINARY = 1 , PM_INTEGER_BASE_FLAGS_DECIMAL = 2 , PM_INTEGER_BASE_FLAGS_OCTAL = 4 , PM_INTEGER_BASE_FLAGS_HEXADECIMAL = 8 }
| Flags for integer nodes that correspond to the base of the integer. More...
enum | pm_keyword_hash_node_flags { PM_KEYWORD_HASH_NODE_FLAGS_STATIC_KEYS = 1 }
| Flags for keyword hash nodes. More...
enum | pm_loop_flags { PM_LOOP_FLAGS_BEGIN_MODIFIER = 1 }
| Flags for while and until loop nodes. More...
enum | pm_range_flags { PM_RANGE_FLAGS_EXCLUDE_END = 1 }
| Flags for range and flip-flop nodes. More...
enum | pm_regular_expression_flags { PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 1 , PM_REGULAR_EXPRESSION_FLAGS_EXTENDED = 2 , PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 4 , PM_REGULAR_EXPRESSION_FLAGS_ONCE = 8 , PM_REGULAR_EXPRESSION_FLAGS_EUC_JP = 16 , PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 32 , PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 64 , PM_REGULAR_EXPRESSION_FLAGS_UTF_8 = 128 , PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING = 256 , PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING = 512 , PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING = 1024 }
| Flags for regular expression and match last line nodes. More...
enum | pm_string_flags { PM_STRING_FLAGS_FORCED_UTF8_ENCODING = 1 , PM_STRING_FLAGS_FORCED_BINARY_ENCODING = 2 , PM_STRING_FLAGS_FROZEN = 4 }
| Flags for string nodes. More...
enum | pm_symbol_flags { PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING = 1 , PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING = 2 , PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING = 4 }
| Flags for symbol nodes. More...

## Variables
static const pm_node_flags_t | PM_NODE_FLAG_NEWLINE = (1 << (PM_NODE_FLAG_BITS - 1))
static const pm_node_flags_t | PM_NODE_FLAG_STATIC_LITERAL = (1 << (PM_NODE_FLAG_BITS - 2))
static const pm_node_flags_t | PM_NODE_FLAG_COMMON_MASK = (1 << (PM_NODE_FLAG_BITS - 1)) | (1 << (PM_NODE_FLAG_BITS - 2))

## Detailed Description

The abstract syntax tree.

Definition in file ast.h.

## Macro Definition Documentation

## ◆ PM_NODE_FLAG_BITS

#define PM_NODE_FLAG_BITS (sizeof(pm_node_flags_t) * 8)

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 1035 of file ast.h.

## ◆ PM_NODE_FLAG_P

#define PM_NODE_FLAG_P | ( |  | node,
|  |  | flag ) ((((pm_node_t *)(node))->flags & (flag)) != 0)

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

Definition at line 1055 of file ast.h.

## ◆ PM_NODE_TYPE

#define PM_NODE_TYPE | ( |  | node | ) | ((enum pm_node_type) node->type)

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

Definition at line 1045 of file ast.h.

Referenced by pm_node_destroy().

## ◆ PM_NODE_TYPE_P

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

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

Definition at line 1050 of file ast.h.

## ◆ PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS

#define PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS false

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 4610 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.

Type: PM_ALIAS_GLOBAL_VARIABLE_NODE

## ◆ pm_alias_method_node_t

typedef struct pm_alias_method_node pm_alias_method_node_t

AliasMethodNode.

Type: PM_ALIAS_METHOD_NODE

## ◆ pm_alternation_pattern_node_t

typedef struct pm_alternation_pattern_node pm_alternation_pattern_node_t

AlternationPatternNode.

Type: PM_ALTERNATION_PATTERN_NODE

## ◆ pm_and_node_t

typedef struct pm_and_node pm_and_node_t

AndNode.

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.

Type: PM_ARGUMENTS_NODE Flags: PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT

## ◆ 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.

Type: 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.

Type: PM_ARRAY_PATTERN_NODE

## ◆ pm_assoc_node_t

typedef struct pm_assoc_node pm_assoc_node_t

AssocNode.

Type: PM_ASSOC_NODE

## ◆ pm_assoc_splat_node_t

typedef struct pm_assoc_splat_node pm_assoc_splat_node_t

AssocSplatNode.

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.

Type: PM_BACK_REFERENCE_READ_NODE

## ◆ pm_begin_node_t

typedef struct pm_begin_node pm_begin_node_t

BeginNode.

Type: PM_BEGIN_NODE

## ◆ pm_block_argument_node_t

typedef struct pm_block_argument_node pm_block_argument_node_t

BlockArgumentNode.

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.

Type: PM_BLOCK_LOCAL_VARIABLE_NODE

## ◆ pm_block_node_t

typedef struct pm_block_node pm_block_node_t

BlockNode.

Type: PM_BLOCK_NODE

## ◆ pm_block_parameter_node_t

typedef struct pm_block_parameter_node pm_block_parameter_node_t

BlockParameterNode.

Type: PM_BLOCK_PARAMETER_NODE

## ◆ pm_block_parameters_node_t

typedef struct pm_block_parameters_node pm_block_parameters_node_t

BlockParametersNode.

Type: PM_BLOCK_PARAMETERS_NODE

## ◆ pm_break_node_t

typedef struct pm_break_node pm_break_node_t

BreakNode.

Type: PM_BREAK_NODE

## ◆ pm_call_and_write_node_t

typedef struct pm_call_and_write_node pm_call_and_write_node_t

CallAndWriteNode.

Type: PM_CALL_AND_WRITE_NODE Flags: PM_CALL_NODE_FLAGS_SAFE_NAVIGATION PM_CALL_NODE_FLAGS_VARIABLE_CALL PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE

## ◆ 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.

Type: PM_CALL_NODE Flags: PM_CALL_NODE_FLAGS_SAFE_NAVIGATION PM_CALL_NODE_FLAGS_VARIABLE_CALL PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE

## ◆ pm_call_operator_write_node_t

typedef struct pm_call_operator_write_node pm_call_operator_write_node_t

CallOperatorWriteNode.

Type: PM_CALL_OPERATOR_WRITE_NODE Flags: PM_CALL_NODE_FLAGS_SAFE_NAVIGATION PM_CALL_NODE_FLAGS_VARIABLE_CALL PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE

## ◆ pm_call_or_write_node_t

typedef struct pm_call_or_write_node pm_call_or_write_node_t

CallOrWriteNode.

Type: PM_CALL_OR_WRITE_NODE Flags: PM_CALL_NODE_FLAGS_SAFE_NAVIGATION PM_CALL_NODE_FLAGS_VARIABLE_CALL PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE

## ◆ pm_call_target_node_t

typedef struct pm_call_target_node pm_call_target_node_t

CallTargetNode.

Type: PM_CALL_TARGET_NODE Flags: PM_CALL_NODE_FLAGS_SAFE_NAVIGATION PM_CALL_NODE_FLAGS_VARIABLE_CALL PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE

## ◆ pm_capture_pattern_node_t

typedef struct pm_capture_pattern_node pm_capture_pattern_node_t

CapturePatternNode.

Type: PM_CAPTURE_PATTERN_NODE

## ◆ pm_case_match_node_t

typedef struct pm_case_match_node pm_case_match_node_t

CaseMatchNode.

Type: PM_CASE_MATCH_NODE

## ◆ pm_case_node_t

typedef struct pm_case_node pm_case_node_t

CaseNode.

Type: PM_CASE_NODE

## ◆ pm_class_node_t

typedef struct pm_class_node pm_class_node_t

ClassNode.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Type: PM_CONSTANT_PATH_AND_WRITE_NODE

## ◆ pm_constant_path_node_t

typedef struct pm_constant_path_node pm_constant_path_node_t

ConstantPathNode.

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.

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.

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.

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.

Type: PM_CONSTANT_PATH_WRITE_NODE

## ◆ pm_constant_read_node_t

typedef struct pm_constant_read_node pm_constant_read_node_t

ConstantReadNode.

Type: PM_CONSTANT_READ_NODE

## ◆ pm_constant_target_node_t

typedef struct pm_constant_target_node pm_constant_target_node_t

ConstantTargetNode.

Type: PM_CONSTANT_TARGET_NODE

## ◆ pm_constant_write_node_t

typedef struct pm_constant_write_node pm_constant_write_node_t

ConstantWriteNode.

Type: PM_CONSTANT_WRITE_NODE

## ◆ pm_def_node_t

typedef struct pm_def_node pm_def_node_t

DefNode.

Type: PM_DEF_NODE

## ◆ pm_defined_node_t

typedef struct pm_defined_node pm_defined_node_t

DefinedNode.

Type: PM_DEFINED_NODE

## ◆ pm_else_node_t

typedef struct pm_else_node pm_else_node_t

ElseNode.

Type: PM_ELSE_NODE

## ◆ pm_embedded_statements_node_t

typedef struct pm_embedded_statements_node pm_embedded_statements_node_t

EmbeddedStatementsNode.

Type: PM_EMBEDDED_STATEMENTS_NODE

## ◆ pm_embedded_variable_node_t

typedef struct pm_embedded_variable_node pm_embedded_variable_node_t

EmbeddedVariableNode.

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.

Type: PM_ENSURE_NODE

## ◆ pm_false_node_t

typedef struct pm_false_node pm_false_node_t

FalseNode.

Type: PM_FALSE_NODE

## ◆ pm_find_pattern_node_t

typedef struct pm_find_pattern_node pm_find_pattern_node_t

FindPatternNode.

Type: PM_FIND_PATTERN_NODE

## ◆ pm_flip_flop_node_t

typedef struct pm_flip_flop_node pm_flip_flop_node_t

FlipFlopNode.

Type: PM_FLIP_FLOP_NODE Flags: PM_RANGE_FLAGS_EXCLUDE_END

## ◆ pm_float_node_t

typedef struct pm_float_node pm_float_node_t

FloatNode.

Type: PM_FLOAT_NODE

## ◆ pm_for_node_t

typedef struct pm_for_node pm_for_node_t

ForNode.

Type: PM_FOR_NODE

## ◆ pm_forwarding_arguments_node_t

typedef struct pm_forwarding_arguments_node pm_forwarding_arguments_node_t

ForwardingArgumentsNode.

Type: PM_FORWARDING_ARGUMENTS_NODE

## ◆ pm_forwarding_parameter_node_t

typedef struct pm_forwarding_parameter_node pm_forwarding_parameter_node_t

ForwardingParameterNode.

Type: PM_FORWARDING_PARAMETER_NODE

## ◆ pm_forwarding_super_node_t

typedef struct pm_forwarding_super_node pm_forwarding_super_node_t

ForwardingSuperNode.

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.

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.

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.

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.

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.

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.

Type: PM_GLOBAL_VARIABLE_WRITE_NODE

## ◆ pm_hash_node_t

typedef struct pm_hash_node pm_hash_node_t

HashNode.

Type: PM_HASH_NODE

## ◆ pm_hash_pattern_node_t

typedef struct pm_hash_pattern_node pm_hash_pattern_node_t

HashPatternNode.

Type: PM_HASH_PATTERN_NODE

## ◆ pm_if_node_t

typedef struct pm_if_node pm_if_node_t

IfNode.

Type: PM_IF_NODE

## ◆ pm_imaginary_node_t

typedef struct pm_imaginary_node pm_imaginary_node_t

ImaginaryNode.

Type: PM_IMAGINARY_NODE

## ◆ pm_implicit_node_t

typedef struct pm_implicit_node pm_implicit_node_t

ImplicitNode.

Type: PM_IMPLICIT_NODE

## ◆ pm_implicit_rest_node_t

typedef struct pm_implicit_rest_node pm_implicit_rest_node_t

ImplicitRestNode.

Type: PM_IMPLICIT_REST_NODE

## ◆ pm_in_node_t

typedef struct pm_in_node pm_in_node_t

InNode.

Type: PM_IN_NODE

## ◆ pm_index_and_write_node_t

typedef struct pm_index_and_write_node pm_index_and_write_node_t

IndexAndWriteNode.

Type: PM_INDEX_AND_WRITE_NODE Flags: PM_CALL_NODE_FLAGS_SAFE_NAVIGATION PM_CALL_NODE_FLAGS_VARIABLE_CALL PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE

## ◆ pm_index_operator_write_node_t

typedef struct pm_index_operator_write_node pm_index_operator_write_node_t

IndexOperatorWriteNode.

Type: PM_INDEX_OPERATOR_WRITE_NODE Flags: PM_CALL_NODE_FLAGS_SAFE_NAVIGATION PM_CALL_NODE_FLAGS_VARIABLE_CALL PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE

## ◆ pm_index_or_write_node_t

typedef struct pm_index_or_write_node pm_index_or_write_node_t

IndexOrWriteNode.

Type: PM_INDEX_OR_WRITE_NODE Flags: PM_CALL_NODE_FLAGS_SAFE_NAVIGATION PM_CALL_NODE_FLAGS_VARIABLE_CALL PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE

## ◆ pm_index_target_node_t

typedef struct pm_index_target_node pm_index_target_node_t

IndexTargetNode.

Type: PM_INDEX_TARGET_NODE Flags: PM_CALL_NODE_FLAGS_SAFE_NAVIGATION PM_CALL_NODE_FLAGS_VARIABLE_CALL PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE

## ◆ pm_instance_variable_and_write_node_t

typedef struct pm_instance_variable_and_write_node pm_instance_variable_and_write_node_t

InstanceVariableAndWriteNode.

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.

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.

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.

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.

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.

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.

Type: PM_INTEGER_NODE 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.

Type: PM_INTERPOLATED_MATCH_LAST_LINE_NODE 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.

Type: PM_INTERPOLATED_REGULAR_EXPRESSION_NODE 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_t

typedef struct pm_interpolated_string_node pm_interpolated_string_node_t

InterpolatedStringNode.

Type: PM_INTERPOLATED_STRING_NODE

## ◆ pm_interpolated_symbol_node_t

typedef struct pm_interpolated_symbol_node pm_interpolated_symbol_node_t

InterpolatedSymbolNode.

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.

Type: PM_INTERPOLATED_X_STRING_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.

Type: PM_KEYWORD_HASH_NODE Flags: PM_KEYWORD_HASH_NODE_FLAGS_STATIC_KEYS

## ◆ pm_keyword_rest_parameter_node_t

typedef struct pm_keyword_rest_parameter_node pm_keyword_rest_parameter_node_t

KeywordRestParameterNode.

Type: PM_KEYWORD_REST_PARAMETER_NODE

## ◆ pm_lambda_node_t

typedef struct pm_lambda_node pm_lambda_node_t

LambdaNode.

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.

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.

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.

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.

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.

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.

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.

Type: PM_MATCH_LAST_LINE_NODE 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.

Type: PM_MATCH_PREDICATE_NODE

## ◆ pm_match_required_node_t

typedef struct pm_match_required_node pm_match_required_node_t

MatchRequiredNode.

Type: PM_MATCH_REQUIRED_NODE

## ◆ pm_match_write_node_t

typedef struct pm_match_write_node pm_match_write_node_t

MatchWriteNode.

Type: PM_MATCH_WRITE_NODE

## ◆ pm_missing_node_t

typedef struct pm_missing_node pm_missing_node_t

MissingNode.

Type: PM_MISSING_NODE

## ◆ pm_module_node_t

typedef struct pm_module_node pm_module_node_t

ModuleNode.

Type: PM_MODULE_NODE

## ◆ pm_multi_target_node_t

typedef struct pm_multi_target_node pm_multi_target_node_t

MultiTargetNode.

Type: PM_MULTI_TARGET_NODE

## ◆ pm_multi_write_node_t

typedef struct pm_multi_write_node pm_multi_write_node_t

MultiWriteNode.

Type: PM_MULTI_WRITE_NODE

## ◆ pm_next_node_t

typedef struct pm_next_node pm_next_node_t

NextNode.

Type: PM_NEXT_NODE

## ◆ pm_nil_node_t

typedef struct pm_nil_node pm_nil_node_t

NilNode.

Type: PM_NIL_NODE

## ◆ pm_no_keywords_parameter_node_t

typedef struct pm_no_keywords_parameter_node pm_no_keywords_parameter_node_t

NoKeywordsParameterNode.

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 1029 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 1023 of file ast.h.

## ◆ pm_numbered_parameters_node_t

typedef struct pm_numbered_parameters_node pm_numbered_parameters_node_t

NumberedParametersNode.

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.

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.

Type: PM_OPTIONAL_KEYWORD_PARAMETER_NODE

## ◆ pm_optional_parameter_node_t

typedef struct pm_optional_parameter_node pm_optional_parameter_node_t

OptionalParameterNode.

Type: PM_OPTIONAL_PARAMETER_NODE

## ◆ pm_or_node_t

typedef struct pm_or_node pm_or_node_t

OrNode.

Type: PM_OR_NODE

## ◆ pm_parameters_node_t

typedef struct pm_parameters_node pm_parameters_node_t

ParametersNode.

Type: PM_PARAMETERS_NODE

## ◆ pm_parentheses_node_t

typedef struct pm_parentheses_node pm_parentheses_node_t

ParenthesesNode.

Type: PM_PARENTHESES_NODE

## ◆ pm_pinned_expression_node_t

typedef struct pm_pinned_expression_node pm_pinned_expression_node_t

PinnedExpressionNode.

Type: PM_PINNED_EXPRESSION_NODE

## ◆ pm_pinned_variable_node_t

typedef struct pm_pinned_variable_node pm_pinned_variable_node_t

PinnedVariableNode.

Type: PM_PINNED_VARIABLE_NODE

## ◆ pm_post_execution_node_t

typedef struct pm_post_execution_node pm_post_execution_node_t

PostExecutionNode.

Type: PM_POST_EXECUTION_NODE

## ◆ pm_pre_execution_node_t

typedef struct pm_pre_execution_node pm_pre_execution_node_t

PreExecutionNode.

Type: PM_PRE_EXECUTION_NODE

## ◆ pm_program_node_t

typedef struct pm_program_node pm_program_node_t

ProgramNode.

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.

Type: PM_RANGE_NODE Flags: PM_RANGE_FLAGS_EXCLUDE_END

## ◆ pm_rational_node_t

typedef struct pm_rational_node pm_rational_node_t

RationalNode.

Type: PM_RATIONAL_NODE

## ◆ pm_redo_node_t

typedef struct pm_redo_node pm_redo_node_t

RedoNode.

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.

Type: PM_REGULAR_EXPRESSION_NODE 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.

Type: PM_REQUIRED_KEYWORD_PARAMETER_NODE

## ◆ pm_required_parameter_node_t

typedef struct pm_required_parameter_node pm_required_parameter_node_t

RequiredParameterNode.

Type: PM_REQUIRED_PARAMETER_NODE

## ◆ pm_rescue_modifier_node_t

typedef struct pm_rescue_modifier_node pm_rescue_modifier_node_t

RescueModifierNode.

Type: PM_RESCUE_MODIFIER_NODE

## ◆ pm_rescue_node_t

typedef struct pm_rescue_node pm_rescue_node_t

RescueNode.

Type: PM_RESCUE_NODE

## ◆ pm_rest_parameter_node_t

typedef struct pm_rest_parameter_node pm_rest_parameter_node_t

RestParameterNode.

Type: PM_REST_PARAMETER_NODE

## ◆ pm_retry_node_t

typedef struct pm_retry_node pm_retry_node_t

RetryNode.

Type: PM_RETRY_NODE

## ◆ pm_return_node_t

typedef struct pm_return_node pm_return_node_t

ReturnNode.

Type: PM_RETURN_NODE

## ◆ pm_self_node_t

typedef struct pm_self_node pm_self_node_t

SelfNode.

Type: PM_SELF_NODE

## ◆ pm_singleton_class_node_t

typedef struct pm_singleton_class_node pm_singleton_class_node_t

SingletonClassNode.

Type: PM_SINGLETON_CLASS_NODE

## ◆ pm_source_encoding_node_t

typedef struct pm_source_encoding_node pm_source_encoding_node_t

SourceEncodingNode.

Type: PM_SOURCE_ENCODING_NODE

## ◆ pm_source_file_node_t

typedef struct pm_source_file_node pm_source_file_node_t

SourceFileNode.

Type: PM_SOURCE_FILE_NODE

## ◆ pm_source_line_node_t

typedef struct pm_source_line_node pm_source_line_node_t

SourceLineNode.

Type: PM_SOURCE_LINE_NODE

## ◆ pm_splat_node_t

typedef struct pm_splat_node pm_splat_node_t

SplatNode.

Type: PM_SPLAT_NODE

## ◆ pm_statements_node_t

typedef struct pm_statements_node pm_statements_node_t

StatementsNode.

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.

Type: PM_STRING_NODE Flags: PM_STRING_FLAGS_FORCED_UTF8_ENCODING PM_STRING_FLAGS_FORCED_BINARY_ENCODING PM_STRING_FLAGS_FROZEN

## ◆ pm_super_node_t

typedef struct pm_super_node pm_super_node_t

SuperNode.

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.

Type: PM_SYMBOL_NODE 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.

Type: PM_TRUE_NODE

## ◆ pm_undef_node_t

typedef struct pm_undef_node pm_undef_node_t

UndefNode.

Type: PM_UNDEF_NODE

## ◆ pm_unless_node_t

typedef struct pm_unless_node pm_unless_node_t

UnlessNode.

Type: PM_UNLESS_NODE

## ◆ pm_until_node_t

typedef struct pm_until_node pm_until_node_t

UntilNode.

Type: PM_UNTIL_NODE Flags: PM_LOOP_FLAGS_BEGIN_MODIFIER

## ◆ pm_when_node_t

typedef struct pm_when_node pm_when_node_t

WhenNode.

Type: PM_WHEN_NODE

## ◆ pm_while_node_t

typedef struct pm_while_node pm_while_node_t

WhileNode.

Type: PM_WHILE_NODE Flags: PM_LOOP_FLAGS_BEGIN_MODIFIER

## ◆ pm_x_string_node_t

typedef struct pm_x_string_node pm_x_string_node_t

XStringNode.

Type: PM_X_STRING_NODE 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.

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_KEYWORD_SPLAT | if arguments contain keyword splat

Definition at line 4459 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 4467 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

Definition at line 4475 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 4489 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 4500 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_STATIC_KEYS | a keyword hash which only has `AssocNode` elements all with static literal keys, which means the elements can be treated as keyword arguments

Definition at line 4517 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 4525 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_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_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 570 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 4533 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 4541 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` comment

Definition at line 4579 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 4593 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 27 of file ast.h.

## Variable Documentation

## ◆ PM_NODE_FLAG_COMMON_MASK

const pm_node_flags_t PM_NODE_FLAG_COMMON_MASK = (1 << (PM_NODE_FLAG_BITS - 1)) | (1 << (PM_NODE_FLAG_BITS - 2))
| static

Definition at line 1039 of file ast.h.

## ◆ PM_NODE_FLAG_NEWLINE

const pm_node_flags_t PM_NODE_FLAG_NEWLINE = (1 << (PM_NODE_FLAG_BITS - 1))
| static

Definition at line 1037 of file ast.h.

## ◆ PM_NODE_FLAG_STATIC_LITERAL

const pm_node_flags_t PM_NODE_FLAG_STATIC_LITERAL = (1 << (PM_NODE_FLAG_BITS - 2))
| static

Definition at line 1038 of file ast.h.