Other nodes (Simple_Aggregate … Conditional_Expression)

The diagrams below draw one box per node kind, with one port per field. The edge colours say how a link is held; they are listed in full on the Fields page.

digraph { rankdir="LR" nodesep=0.1 node [shape=point width=0.06 color="#888a85"] edge [fontname="monospace" fontsize=10 minlen=3] l0a -> l0b [label="owned" color="#000000"] l1a -> l1b [label="ref" color="#3465a4" style=dashed] l2a -> l2b [label="maybe ref" color="#3465a4" style=dotted] l3a -> l3b [label="of ref" color="#3465a4" style=dashed] l4a -> l4b [label="of maybe ref" color="#3465a4" style=dotted] l5a -> l5b [label="forward ref" color="#f57900" style=dashed] l6a -> l6b [label="maybe forward ref" color="#f57900" style=dotted] l7a -> l7b [label="chain" color="#4e9a06"] l8a -> l8b [label="chain next" color="#4e9a06" style=bold] }

Iir_Kind_Simple_Aggregate

This node can only be generated by evaluation: it is an unidimensional positional aggregate.

Format: Short

Accessor

Field

Type

Access

Description

Literal_Subtype

Field3

Iir

owned

Same as Type, but marked as property of that node.

Literal_Origin

Field2

Iir

owned

The origin of a literal can be null_iir for a literal generated by the parser, or a node which was statically evaluated to this literal. Such nodes are created by eval_expr.

Simple_Aggregate_List

Field4

Iir_Flist

ref

List of elements (Index 0 is for the leftest element).

Type

Field1

Iir

ref

Expr_Staticness

State1

Iir_Staticness

owned

Expression staticness, defined by rules of LRM 7.4

digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Simple_Aggregate" [style=filled fillcolor="#eeeeec" label="{Simple_Aggregate|{<Literal_Subtype> Literal_Subtype|<Literal_Origin> Literal_Origin|<Simple_Aggregate_List> Simple_Aggregate_List|<Type> Type|<Expr_Staticness> Expr_Staticness}}"] "Simple_Aggregate__Literal_Subtype" [shape=box label="Iir"] "Simple_Aggregate":Literal_Subtype -> "Simple_Aggregate__Literal_Subtype" [color="#000000"] "Simple_Aggregate__Literal_Origin" [shape=box label="Iir"] "Simple_Aggregate":Literal_Origin -> "Simple_Aggregate__Literal_Origin" [color="#000000"] "Simple_Aggregate__Simple_Aggregate_List" [shape=box3d label="Iir_Flist"] "Simple_Aggregate":Simple_Aggregate_List -> "Simple_Aggregate__Simple_Aggregate_List" [color="#3465a4" style=dashed] "Simple_Aggregate__Type" [shape=box label="Iir"] "Simple_Aggregate":Type -> "Simple_Aggregate__Type" [color="#3465a4" style=dashed] }

Iir_Kind_Overflow_Literal

This node can only be generated by evaluation to represent an error: out of range, division by zero…

Format: Short

Accessor

Field

Type

Access

Description

Literal_Origin

Field2

Iir

owned

The origin of a literal can be null_iir for a literal generated by the parser, or a node which was statically evaluated to this literal. Such nodes are created by eval_expr.

Type

Field1

Iir

ref

Expr_Staticness

State1

Iir_Staticness

owned

Expression staticness, defined by rules of LRM 7.4

digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Overflow_Literal" [style=filled fillcolor="#eeeeec" label="{Overflow_Literal|{<Literal_Origin> Literal_Origin|<Type> Type|<Expr_Staticness> Expr_Staticness}}"] "Overflow_Literal__Literal_Origin" [shape=box label="Iir"] "Overflow_Literal":Literal_Origin -> "Overflow_Literal__Literal_Origin" [color="#000000"] "Overflow_Literal__Type" [shape=box label="Iir"] "Overflow_Literal":Type -> "Overflow_Literal__Type" [color="#3465a4" style=dashed] }

Iir_Kind_Unaffected_Waveform

The ‘unaffected’ reserved word when it appears in the sources.

Format: Short

Accessor

Field

Type

Access

Description

Chain

Field2

Iir

chain next

Unaffected replaces a waveform element, so it is considered to be part of a chain. But it is always alone in the chain.

digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Unaffected_Waveform" [style=filled fillcolor="#eeeeec" label="{Unaffected_Waveform|{<Chain> Chain}}"] "Unaffected_Waveform__Chain" [shape=box label="Iir"] "Unaffected_Waveform":Chain -> "Unaffected_Waveform__Chain" [color="#4e9a06" style=bold] }

Iir_Kind_Waveform_Element

Format: Short

Accessor

Field

Type

Access

Description

We_Value

Field1

Iir

owned

Time

Field3

Iir

owned

Chain

Field2

Iir

chain next

digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Waveform_Element" [style=filled fillcolor="#eeeeec" label="{Waveform_Element|{<We_Value> We_Value|<Time> Time|<Chain> Chain}}"] "Waveform_Element__We_Value" [shape=box label="Iir"] "Waveform_Element":We_Value -> "Waveform_Element__We_Value" [color="#000000"] "Waveform_Element__Time" [shape=box label="Iir"] "Waveform_Element":Time -> "Waveform_Element__Time" [color="#000000"] "Waveform_Element__Chain" [shape=box label="Iir"] "Waveform_Element":Chain -> "Waveform_Element__Chain" [color="#4e9a06" style=bold] }

Iir_Kind_Conditional_Waveform

Format: Short

Accessor

Field

Type

Access

Description

Condition

Field1

Iir

maybe ref

Condition of a conditional_waveform, if_statement, elsif, while_loop_statement, next_statement or exit_statement.

Waveform_Chain

Field5

Iir

chain

Chain

Field2

Iir

chain next

Is_Ref

Flag12

Boolean

owned

Set to True if Maybe_Ref fields are references. This cannot be shared with Has_Identifier_List as: Is_Ref is set to True on all items but the first, while Has_Identifier_List is set to True on all items but the last. Furthermore Is_Ref appears in nodes where Has_Identifier_List is not present.

digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Conditional_Waveform" [style=filled fillcolor="#eeeeec" label="{Conditional_Waveform|{<Condition> Condition|<Waveform_Chain> Waveform_Chain|<Chain> Chain|<Is_Ref> Is_Ref}}"] "Conditional_Waveform__Condition" [shape=box label="Iir"] "Conditional_Waveform":Condition -> "Conditional_Waveform__Condition" [color="#3465a4" style=dotted] "Conditional_Waveform__Waveform_Chain" [shape=box label="Iir"] "Conditional_Waveform":Waveform_Chain -> "Conditional_Waveform__Waveform_Chain" [color="#4e9a06"] "Conditional_Waveform__Chain" [shape=box label="Iir"] "Conditional_Waveform":Chain -> "Conditional_Waveform__Chain" [color="#4e9a06" style=bold] }

Iir_Kind_Conditional_Expression

LRM08 10.5.3

conditional_expressions ::=
    expression WHEN condition
  { ELSE expression WHEN condition }
  [ ELSE expression ]

Format: Short

Accessor

Field

Type

Access

Description

Condition

Field1

Iir

maybe ref

Condition of a conditional_waveform, if_statement, elsif, while_loop_statement, next_statement or exit_statement.

Expression

Field5

Iir

owned

Expression for an various nodes.

Chain

Field2

Iir

chain next

Is_Ref

Flag12

Boolean

owned

Set to True if Maybe_Ref fields are references. This cannot be shared with Has_Identifier_List as: Is_Ref is set to True on all items but the first, while Has_Identifier_List is set to True on all items but the last. Furthermore Is_Ref appears in nodes where Has_Identifier_List is not present.

digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Conditional_Expression" [style=filled fillcolor="#eeeeec" label="{Conditional_Expression|{<Condition> Condition|<Expression> Expression|<Chain> Chain|<Is_Ref> Is_Ref}}"] "Conditional_Expression__Condition" [shape=box label="Iir"] "Conditional_Expression":Condition -> "Conditional_Expression__Condition" [color="#3465a4" style=dotted] "Conditional_Expression__Expression" [shape=box label="Iir"] "Conditional_Expression":Expression -> "Conditional_Expression__Expression" [color="#000000"] "Conditional_Expression__Chain" [shape=box label="Iir"] "Conditional_Expression":Chain -> "Conditional_Expression__Chain" [color="#4e9a06" style=bold] }