Serene Runtime 1.0.0-dev
C runtime for the Serene programming language
Loading...
Searching...
No Matches
srn_kleene_node_t Struct Reference

A node of the Kleene tree. tag selects the active union member. More...

#include <kleene.h>

Collaboration diagram for srn_kleene_node_t:
[legend]

Data Fields

srn_kleene_node_tag_t tag
 Which variant as holds.
srn_metadata_t * metadata
 Source metadata for diagnostics, may be NULL.
union { 
   srn_kleene_local_t *   var 
 SRN_KL_VAR. More...
   srn_value_t *   lit 
 SRN_KL_LIT: a literal the reader has already boxed. More...
   srn_kleene_global_t *   global 
 SRN_KL_GLOBAL. More...
   srn_kleene_fn_t *   fn 
 SRN_KL_FN. More...
   srn_kleene_app_t *   app 
 SRN_KL_APP and SRN_KL_PAPP. More...
   srn_kleene_prim_t *   prim 
 SRN_KL_PRIM. More...
   srn_kleene_ctor_t *   ctor 
 SRN_KL_CTOR. More...
   srn_kleene_let_t *   let 
 SRN_KL_LET. More...
   srn_kleene_case_t *   scase 
 SRN_KL_CASE. More...
   srn_kleene_label_t *   label 
 SRN_KL_LABEL. More...
   srn_kleene_jump_t *   jump 
 SRN_KL_JUMP. More...
} as
 Every member is one word, a pointer or an immediate, so the union stays word sized.

Detailed Description

A node of the Kleene tree. tag selects the active union member.

Definition at line 183 of file kleene.h.

Field Documentation

◆ app

srn_kleene_app_t* srn_kleene_node_t::app

SRN_KL_APP and SRN_KL_PAPP.

Definition at line 202 of file kleene.h.

◆ [union]

union { ... } srn_kleene_node_t::as

Every member is one word, a pointer or an immediate, so the union stays word sized.

The static assert below pins this.

◆ ctor

srn_kleene_ctor_t* srn_kleene_node_t::ctor

SRN_KL_CTOR.

Definition at line 206 of file kleene.h.

◆ fn

srn_kleene_fn_t* srn_kleene_node_t::fn

SRN_KL_FN.

Definition at line 200 of file kleene.h.

◆ global

srn_kleene_global_t* srn_kleene_node_t::global

SRN_KL_GLOBAL.

Definition at line 198 of file kleene.h.

◆ jump

srn_kleene_jump_t* srn_kleene_node_t::jump

SRN_KL_JUMP.

Definition at line 214 of file kleene.h.

◆ label

srn_kleene_label_t* srn_kleene_node_t::label

SRN_KL_LABEL.

Definition at line 212 of file kleene.h.

◆ let

srn_kleene_let_t* srn_kleene_node_t::let

SRN_KL_LET.

Definition at line 208 of file kleene.h.

◆ lit

srn_value_t* srn_kleene_node_t::lit

SRN_KL_LIT: a literal the reader has already boxed.

Definition at line 196 of file kleene.h.

◆ metadata

srn_metadata_t* srn_kleene_node_t::metadata

Source metadata for diagnostics, may be NULL.

Definition at line 188 of file kleene.h.

◆ prim

srn_kleene_prim_t* srn_kleene_node_t::prim

SRN_KL_PRIM.

Definition at line 204 of file kleene.h.

◆ scase

srn_kleene_case_t* srn_kleene_node_t::scase

SRN_KL_CASE.

Definition at line 210 of file kleene.h.

◆ tag

srn_kleene_node_tag_t srn_kleene_node_t::tag

Which variant as holds.

Definition at line 185 of file kleene.h.

◆ var

srn_kleene_local_t* srn_kleene_node_t::var

SRN_KL_VAR.

Definition at line 194 of file kleene.h.


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