Prism Ruby parser
Data Fields
pm_if_node Struct Reference

IfNode. More...

#include <ast.h>

Inheritance diagram for pm_if_node:
Inheritance graph
[legend]
Collaboration diagram for pm_if_node:
Collaboration graph
[legend]

Data Fields

pm_node_t base
 The embedded base node.
 
pm_location_t if_keyword_loc
 IfNode::if_keyword_loc. More...
 
struct pm_nodepredicate
 IfNode::predicate. More...
 
pm_location_t then_keyword_loc
 IfNode::then_keyword_loc. More...
 
struct pm_statements_nodestatements
 IfNode::statements. More...
 
struct pm_nodesubsequent
 IfNode::subsequent. More...
 
pm_location_t end_keyword_loc
 IfNode::end_keyword_loc. More...
 
- Data Fields inherited from pm_node
pm_node_type_t type
 This represents the type of the node. More...
 
pm_node_flags_t flags
 This represents any flags on the node. More...
 
uint32_t node_id
 The unique identifier for this node, which is deterministic based on the source. More...
 
pm_location_t location
 This is the location of the node in the source. More...
 

Detailed Description

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

Field Documentation

◆ if_keyword_loc

pm_location_t pm_if_node::if_keyword_loc

IfNode::if_keyword_loc.

The location of the if keyword if present.

bar if foo
    ^^

The if_keyword_loc field will be nil when the IfNode represents a ternary expression.

◆ predicate

struct pm_node* pm_if_node::predicate

IfNode::predicate.

The node for the condition the IfNode is testing.

if foo
   ^^^
  bar
end

bar if foo
       ^^^

foo ? bar : baz
^^^

◆ then_keyword_loc

pm_location_t pm_if_node::then_keyword_loc

IfNode::then_keyword_loc.

The location of the then keyword (if present) or the ? in a ternary expression, nil otherwise.

if foo then bar end
       ^^^^

a ? b : c
  ^

◆ statements

struct pm_statements_node* pm_if_node::statements

IfNode::statements.

Represents the body of statements that will be executed when the predicate is evaluated as truthy. Will be nil when no body is provided.

if foo
  bar
  ^^^
  baz
  ^^^
end

◆ subsequent

struct pm_node* pm_if_node::subsequent

IfNode::subsequent.

Represents an ElseNode or an IfNode when there is an else or an elsif in the if statement.

if foo
  bar
elsif baz
^^^^^^^^^
  qux
  ^^^
end
^^^

if foo then bar else baz end
                ^^^^^^^^^^^^

◆ end_keyword_loc

pm_location_t pm_if_node::end_keyword_loc

IfNode::end_keyword_loc.

The location of the end keyword if present, nil otherwise.

if foo
  bar
end
^^^

The documentation for this struct was generated from the following file: