Prism Ruby parser
|
MatchRequiredNode. More...
#include <ast.h>
Data Fields | |
pm_node_t | base |
The embedded base node. | |
struct pm_node * | value |
MatchRequiredNode::value. | |
struct pm_node * | pattern |
MatchRequiredNode::pattern. | |
pm_location_t | operator_loc |
MatchRequiredNode::operator_loc. | |
![]() | |
pm_node_type_t | type |
This represents the type of the node. | |
pm_node_flags_t | flags |
This represents any flags on the node. | |
uint32_t | node_id |
The unique identifier for this node, which is deterministic based on the source. | |
pm_location_t | location |
This is the location of the node in the source. | |
MatchRequiredNode.
Represents the use of the =>
operator.
foo => bar ^^^^^^^^^^
Type: PM_MATCH_REQUIRED_NODE
struct pm_node* pm_match_required_node::value |
MatchRequiredNode::value.
Represents the left-hand side of the operator.
foo => bar ^^^
struct pm_node* pm_match_required_node::pattern |
MatchRequiredNode::pattern.
Represents the right-hand side of the operator. The type of the node depends on the expression.
Anything that looks like a local variable name (including _
) will result in a LocalVariableTargetNode
.
foo => a # This is equivalent to writing `a = foo` ^
Using an explicit Array
or combining expressions with ,
will result in a ArrayPatternNode
. This can be preceded by a constant.
foo => [a] ^^^ foo => a, b ^^^^ foo => Bar[a, b] ^^^^^^^^^
If the array pattern contains at least two wildcard matches, a FindPatternNode
is created instead.
foo => *, 1, *a ^^^^^
Using an explicit Hash
or a constant with square brackets and hash keys in the square brackets will result in a HashPatternNode
.
foo => { a: 1, b: } foo => Bar[a: 1, b:] foo => Bar[**]
To use any variable that needs run time evaluation, pinning is required. This results in a PinnedVariableNode
foo => ^a ^^
Similar, any expression can be used with pinning. This results in a PinnedExpressionNode
.
foo => ^(a + 1)
Anything else will result in the regular node for that expression, for example a ConstantReadNode
.
foo => CONST
pm_location_t pm_match_required_node::operator_loc |
MatchRequiredNode::operator_loc.
The location of the operator.
foo => bar ^^