.. # This page is generated by doc/ASTReference.py when Sphinx starts. Do not edit it. Nonoverloadable Declaration ########################### 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 :ref:`INT:AST:Fields` page. .. graphviz:: 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] } .. _INT:AST:Type_Declaration: Iir_Kind_Type_Declaration ========================= LRM08 6.3 Type declarations :: type_declaration ::= full_type_declaration | incomplete_type_declaration :: full_type_declaration ::= TYPE identifier IS type_definition ; :: type_definition ::= scalar_type_definition | composite_type_definition | access_type_definition | file_type_definition | protected_type_definition LRM08 5.4.2 Incomplete type declarations :: incomplete_type_declaration ::= TYPE identifier ; Format: ``Short`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop. * - :ref:`Type_Definition ` - ``Field1`` - ``Iir`` - owned - Definition of the type. Note: the type definition can be a real type (unconstrained array, enumeration, file, record, access) or a subtype (integer, floating point). The parser set this field to null_iir for an incomplete type declaration. This field is set to an incomplete_type_definition node when analyzed. * - :ref:`Chain ` - ``Field2`` - ``Iir`` - chain next - — * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Get/Set the identifier of a declaration. Can also be used instead of get/set_label. * - :ref:`Incomplete_Type_Declaration ` - ``Field5`` - ``Iir`` - ref - Set if the type declaration completes an incomplete type declaration * - :ref:`Visible_Flag ` - ``Flag4`` - ``Boolean`` - owned - Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished. * - :ref:`Use_Flag ` - ``Flag6`` - ``Boolean`` - owned - For a declaration: true if the declaration is used somewhere. .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Type_Declaration" [style=filled fillcolor="#eeeeec" label="{Type_Declaration|{ Parent| Type_Definition| Chain| Identifier| Incomplete_Type_Declaration| Visible_Flag| Use_Flag}}"] "Type_Declaration__Parent" [shape=box label="Iir"] "Type_Declaration":Parent -> "Type_Declaration__Parent" [color="#3465a4" style=dashed] "Type_Declaration__Type_Definition" [shape=box label="Iir"] "Type_Declaration":Type_Definition -> "Type_Declaration__Type_Definition" [color="#000000"] "Type_Declaration__Chain" [shape=box label="Iir"] "Type_Declaration":Chain -> "Type_Declaration__Chain" [color="#4e9a06" style=bold] "Type_Declaration__Incomplete_Type_Declaration" [shape=box label="Iir"] "Type_Declaration":Incomplete_Type_Declaration -> "Type_Declaration__Incomplete_Type_Declaration" [color="#3465a4" style=dashed] } .. _INT:AST:Anonymous_Type_Declaration: Iir_Kind_Anonymous_Type_Declaration =================================== Format: ``Short`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop. * - :ref:`Type_Definition ` - ``Field1`` - ``Iir`` - owned - — * - :ref:`Chain ` - ``Field2`` - ``Iir`` - chain next - — * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Used for informative purpose only. * - :ref:`Subtype_Definition ` - ``Field4`` - ``Iir`` - forward ref - The subtype definition associated with the type declaration (if any). * - :ref:`Incomplete_Type_Declaration ` - ``Field5`` - ``Iir`` - ref - Set if the type declaration completes an incomplete type declaration .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Anonymous_Type_Declaration" [style=filled fillcolor="#eeeeec" label="{Anonymous_Type_Declaration|{ Parent| Type_Definition| Chain| Identifier| Subtype_Definition| Incomplete_Type_Declaration}}"] "Anonymous_Type_Declaration__Parent" [shape=box label="Iir"] "Anonymous_Type_Declaration":Parent -> "Anonymous_Type_Declaration__Parent" [color="#3465a4" style=dashed] "Anonymous_Type_Declaration__Type_Definition" [shape=box label="Iir"] "Anonymous_Type_Declaration":Type_Definition -> "Anonymous_Type_Declaration__Type_Definition" [color="#000000"] "Anonymous_Type_Declaration__Chain" [shape=box label="Iir"] "Anonymous_Type_Declaration":Chain -> "Anonymous_Type_Declaration__Chain" [color="#4e9a06" style=bold] "Anonymous_Type_Declaration__Subtype_Definition" [shape=box label="Iir"] "Anonymous_Type_Declaration":Subtype_Definition -> "Anonymous_Type_Declaration__Subtype_Definition" [color="#f57900" style=dashed] "Anonymous_Type_Declaration__Incomplete_Type_Declaration" [shape=box label="Iir"] "Anonymous_Type_Declaration":Incomplete_Type_Declaration -> "Anonymous_Type_Declaration__Incomplete_Type_Declaration" [color="#3465a4" style=dashed] } .. _INT:AST:Subtype_Declaration: Iir_Kind_Subtype_Declaration ============================ LRM08 6.3 Subtype declarations :: subtype_declaration ::= SUBTYPE identifier IS subtype_indication ; Format: ``Short`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop. * - :ref:`Chain ` - ``Field2`` - ``Iir`` - chain next - — * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Get/Set the identifier of a declaration. Can also be used instead of get/set_label. * - :ref:`Subtype_Indication ` - ``Field5`` - ``Iir`` - maybe ref - For integer and real types, the subtype_indication of the implicitly declared subtype for the type is the subtype definition. * - :ref:`Type ` - ``Field1`` - ``Iir`` - ref - — * - :ref:`Visible_Flag ` - ``Flag4`` - ``Boolean`` - owned - Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished. * - :ref:`Use_Flag ` - ``Flag6`` - ``Boolean`` - owned - For a declaration: true if the declaration is used somewhere. * - :ref:`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. .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Subtype_Declaration" [style=filled fillcolor="#eeeeec" label="{Subtype_Declaration|{ Parent| Chain| Identifier| Subtype_Indication| Type| Visible_Flag| Use_Flag| Is_Ref}}"] "Subtype_Declaration__Parent" [shape=box label="Iir"] "Subtype_Declaration":Parent -> "Subtype_Declaration__Parent" [color="#3465a4" style=dashed] "Subtype_Declaration__Chain" [shape=box label="Iir"] "Subtype_Declaration":Chain -> "Subtype_Declaration__Chain" [color="#4e9a06" style=bold] "Subtype_Declaration__Subtype_Indication" [shape=box label="Iir"] "Subtype_Declaration":Subtype_Indication -> "Subtype_Declaration__Subtype_Indication" [color="#3465a4" style=dotted] "Subtype_Declaration__Type" [shape=box label="Iir"] "Subtype_Declaration":Type -> "Subtype_Declaration__Type" [color="#3465a4" style=dashed] } .. _INT:AST:Nature_Declaration: Iir_Kind_Nature_Declaration =========================== AMS-LRM17 6.11 Nature and subnature declarations :: nature_declaration ::= NATURE identifier IS nature_definition ; Format: ``Short`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop. * - :ref:`Nature_Definition ` - ``Field1`` - ``Iir`` - owned - — * - :ref:`Chain ` - ``Field2`` - ``Iir`` - chain next - — * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Get/Set the identifier of a declaration. Can also be used instead of get/set_label. * - :ref:`Visible_Flag ` - ``Flag4`` - ``Boolean`` - owned - Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished. * - :ref:`Use_Flag ` - ``Flag6`` - ``Boolean`` - owned - For a declaration: true if the declaration is used somewhere. .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Nature_Declaration" [style=filled fillcolor="#eeeeec" label="{Nature_Declaration|{ Parent| Nature_Definition| Chain| Identifier| Visible_Flag| Use_Flag}}"] "Nature_Declaration__Parent" [shape=box label="Iir"] "Nature_Declaration":Parent -> "Nature_Declaration__Parent" [color="#3465a4" style=dashed] "Nature_Declaration__Nature_Definition" [shape=box label="Iir"] "Nature_Declaration":Nature_Definition -> "Nature_Declaration__Nature_Definition" [color="#000000"] "Nature_Declaration__Chain" [shape=box label="Iir"] "Nature_Declaration":Chain -> "Nature_Declaration__Chain" [color="#4e9a06" style=bold] } .. _INT:AST:Subnature_Declaration: Iir_Kind_Subnature_Declaration ============================== AMS-LRM17 6.11 Nature and subnature declarations :: subnature_declaration ::= SUBNATURE identifier IS subnature_indication ; Format: ``Short`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop. * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Get/Set the identifier of a declaration. Can also be used instead of get/set_label. * - :ref:`Subnature_Indication ` - ``Field5`` - ``Iir`` - owned - — * - :ref:`Nature ` - ``Field1`` - ``Iir`` - ref - — * - :ref:`Chain ` - ``Field2`` - ``Iir`` - chain next - — * - :ref:`Visible_Flag ` - ``Flag4`` - ``Boolean`` - owned - Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished. * - :ref:`Use_Flag ` - ``Flag6`` - ``Boolean`` - owned - For a declaration: true if the declaration is used somewhere. .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Subnature_Declaration" [style=filled fillcolor="#eeeeec" label="{Subnature_Declaration|{ Parent| Identifier| Subnature_Indication| Nature| Chain| Visible_Flag| Use_Flag}}"] "Subnature_Declaration__Parent" [shape=box label="Iir"] "Subnature_Declaration":Parent -> "Subnature_Declaration__Parent" [color="#3465a4" style=dashed] "Subnature_Declaration__Subnature_Indication" [shape=box label="Iir"] "Subnature_Declaration":Subnature_Indication -> "Subnature_Declaration__Subnature_Indication" [color="#000000"] "Subnature_Declaration__Nature" [shape=box label="Iir"] "Subnature_Declaration":Nature -> "Subnature_Declaration__Nature" [color="#3465a4" style=dashed] "Subnature_Declaration__Chain" [shape=box label="Iir"] "Subnature_Declaration":Chain -> "Subnature_Declaration__Chain" [color="#4e9a06" style=bold] } .. _INT:AST:Package_Header: Iir_Kind_Package_Header ======================= Format: ``Medium`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Generic_Chain ` - ``Field6`` - ``Iir`` - chain - — * - :ref:`Generic_Map_Aspect_Chain ` - ``Field8`` - ``Iir`` - chain - Generic map aspect list. .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Package_Header" [style=filled fillcolor="#eeeeec" label="{Package_Header|{ Generic_Chain| Generic_Map_Aspect_Chain}}"] "Package_Header__Generic_Chain" [shape=box label="Iir"] "Package_Header":Generic_Chain -> "Package_Header__Generic_Chain" [color="#4e9a06"] "Package_Header__Generic_Map_Aspect_Chain" [shape=box label="Iir"] "Package_Header":Generic_Map_Aspect_Chain -> "Package_Header__Generic_Map_Aspect_Chain" [color="#4e9a06"] } .. _INT:AST:Unit_Declaration: Iir_Kind_Unit_Declaration ========================= LRM08 5.2.4 Physical types :: primary_unit_declaration ::= identifier ; :: secondary_unit_declaration ::= identifier = physical_literal ; :: physical_literal ::= [ abstract_literal ] /unit/_name Format: ``Short`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - The parent of a physical unit is the same parent as the type declaration. * - :ref:`Type ` - ``Field1`` - ``Iir`` - ref - — * - :ref:`Chain ` - ``Field2`` - ``Iir`` - chain next - — * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Get/Set the identifier of a declaration. Can also be used instead of get/set_label. * - :ref:`Physical_Literal ` - ``Field4`` - ``Iir`` - owned - The Physical_Literal is the expression that defines the value of a unit. It is evaluated during analysis and thus expressed as a multiple of the primary unit. That's true even for the primary unit whose value is thus 1. * - :ref:`Expr_Staticness ` - ``State1`` - ``Iir_Staticness`` - owned - Expression staticness, defined by rules of LRM 7.4 * - :ref:`Name_Staticness ` - ``State2`` - ``Iir_Staticness`` - owned - Staticness of a name, according to rules of LRM 6.1 * - :ref:`Visible_Flag ` - ``Flag4`` - ``Boolean`` - owned - Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished. * - :ref:`Use_Flag ` - ``Flag6`` - ``Boolean`` - owned - Used for time literals, to compute minimal resolution. .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Unit_Declaration" [style=filled fillcolor="#eeeeec" label="{Unit_Declaration|{ Parent| Type| Chain| Identifier| Physical_Literal| Expr_Staticness| Name_Staticness| Visible_Flag| Use_Flag}}"] "Unit_Declaration__Parent" [shape=box label="Iir"] "Unit_Declaration":Parent -> "Unit_Declaration__Parent" [color="#3465a4" style=dashed] "Unit_Declaration__Type" [shape=box label="Iir"] "Unit_Declaration":Type -> "Unit_Declaration__Type" [color="#3465a4" style=dashed] "Unit_Declaration__Chain" [shape=box label="Iir"] "Unit_Declaration":Chain -> "Unit_Declaration__Chain" [color="#4e9a06" style=bold] "Unit_Declaration__Physical_Literal" [shape=box label="Iir"] "Unit_Declaration":Physical_Literal -> "Unit_Declaration__Physical_Literal" [color="#000000"] } .. _INT:AST:Library_Declaration: Iir_Kind_Library_Declaration ============================ Format: ``Short`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Design_File_Chain ` - ``Field1`` - ``Iir`` - chain - Design files in the library. * - :ref:`Chain ` - ``Field2`` - ``Iir`` - chain next - — * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - This node is used to contain all a library. Only internally used. Name (identifier) of the library. * - :ref:`Date ` - ``Field4`` - ``Date_Type`` - owned - Most recent date in this library. * - :ref:`Library_Directory ` - ``Field5`` - ``Name_Id`` - owned - System directory where the library is stored. * - :ref:`Elab_Flag ` - ``Flag3`` - ``Boolean`` - owned - Used to compute dependencies. * - :ref:`Visible_Flag ` - ``Flag4`` - ``Boolean`` - owned - Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished. * - :ref:`Vendor_Library_Flag ` - ``Flag1`` - ``Boolean`` - owned - Set on vendor libraries to turn off warnings on unbounded instantiation. The vendor libraries are those providing components/entities for hard-macros. .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Library_Declaration" [style=filled fillcolor="#eeeeec" label="{Library_Declaration|{ Design_File_Chain| Chain| Identifier| Date| Library_Directory| Elab_Flag| Visible_Flag| Vendor_Library_Flag}}"] "Library_Declaration__Design_File_Chain" [shape=box label="Iir"] "Library_Declaration":Design_File_Chain -> "Library_Declaration__Design_File_Chain" [color="#4e9a06"] "Library_Declaration__Chain" [shape=box label="Iir"] "Library_Declaration":Chain -> "Library_Declaration__Chain" [color="#4e9a06" style=bold] } .. _INT:AST:Component_Declaration: Iir_Kind_Component_Declaration ============================== Format: ``Medium`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop. * - :ref:`Chain ` - ``Field2`` - ``Iir`` - chain next - — * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Get/Set the identifier of a declaration. Can also be used instead of get/set_label. * - :ref:`Generic_Chain ` - ``Field6`` - ``Iir`` - chain - — * - :ref:`Port_Chain ` - ``Field7`` - ``Iir`` - chain - — * - :ref:`Macro_Expand_Flag ` - ``Flag2`` - ``Boolean`` - owned - — * - :ref:`Visible_Flag ` - ``Flag4`` - ``Boolean`` - owned - Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished. * - :ref:`Use_Flag ` - ``Flag6`` - ``Boolean`` - owned - For a declaration: true if the declaration is used somewhere. * - :ref:`Has_Is ` - ``Flag7`` - ``Boolean`` - owned - Layout flag: true if 'is' is present. * - :ref:`End_Has_Reserved_Id ` - ``Flag8`` - ``Boolean`` - owned - Should always be true * - :ref:`End_Has_Identifier ` - ``Flag9`` - ``Boolean`` - owned - Layout flag: true if 'end' is followed by the identifier. .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Component_Declaration" [style=filled fillcolor="#eeeeec" label="{Component_Declaration|{ Parent| Chain| Identifier| Generic_Chain| Port_Chain| Macro_Expand_Flag| Visible_Flag| Use_Flag| Has_Is| End_Has_Reserved_Id| End_Has_Identifier}}"] "Component_Declaration__Parent" [shape=box label="Iir"] "Component_Declaration":Parent -> "Component_Declaration__Parent" [color="#3465a4" style=dashed] "Component_Declaration__Chain" [shape=box label="Iir"] "Component_Declaration":Chain -> "Component_Declaration__Chain" [color="#4e9a06" style=bold] "Component_Declaration__Generic_Chain" [shape=box label="Iir"] "Component_Declaration":Generic_Chain -> "Component_Declaration__Generic_Chain" [color="#4e9a06"] "Component_Declaration__Port_Chain" [shape=box label="Iir"] "Component_Declaration":Port_Chain -> "Component_Declaration__Port_Chain" [color="#4e9a06"] } .. _INT:AST:Attribute_Declaration: Iir_Kind_Attribute_Declaration ============================== LRM08 6.7 Attribute declarations :: attribute_declaration ::= ATTRIBUTE identifier : type_mark ; Format: ``Short`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop. * - :ref:`Type ` - ``Field1`` - ``Iir`` - ref - — * - :ref:`Chain ` - ``Field2`` - ``Iir`` - chain next - — * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Get/Set the identifier of a declaration. Can also be used instead of get/set_label. * - :ref:`Type_Mark ` - ``Field4`` - ``Iir`` - owned - The type_mark that appeared in qualified expressions or type conversions. * - :ref:`Visible_Flag ` - ``Flag4`` - ``Boolean`` - owned - Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished. * - :ref:`Use_Flag ` - ``Flag6`` - ``Boolean`` - owned - For a declaration: true if the declaration is used somewhere. .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Attribute_Declaration" [style=filled fillcolor="#eeeeec" label="{Attribute_Declaration|{ Parent| Type| Chain| Identifier| Type_Mark| Visible_Flag| Use_Flag}}"] "Attribute_Declaration__Parent" [shape=box label="Iir"] "Attribute_Declaration":Parent -> "Attribute_Declaration__Parent" [color="#3465a4" style=dashed] "Attribute_Declaration__Type" [shape=box label="Iir"] "Attribute_Declaration":Type -> "Attribute_Declaration__Type" [color="#3465a4" style=dashed] "Attribute_Declaration__Chain" [shape=box label="Iir"] "Attribute_Declaration":Chain -> "Attribute_Declaration__Chain" [color="#4e9a06" style=bold] "Attribute_Declaration__Type_Mark" [shape=box label="Iir"] "Attribute_Declaration":Type_Mark -> "Attribute_Declaration__Type_Mark" [color="#000000"] } .. _INT:AST:Group_Template_Declaration: Iir_Kind_Group_Template_Declaration =================================== Format: ``Short`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop. * - :ref:`Entity_Class_Entry_Chain ` - ``Field1`` - ``Iir`` - chain - List of entity class entry. To handle \`<>', the last element of the list can be an entity_class of kind tok_box. * - :ref:`Chain ` - ``Field2`` - ``Iir`` - chain next - — * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Get/Set the identifier of a declaration. Can also be used instead of get/set_label. * - :ref:`Visible_Flag ` - ``Flag4`` - ``Boolean`` - owned - Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished. * - :ref:`Use_Flag ` - ``Flag6`` - ``Boolean`` - owned - For a declaration: true if the declaration is used somewhere. .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Group_Template_Declaration" [style=filled fillcolor="#eeeeec" label="{Group_Template_Declaration|{ Parent| Entity_Class_Entry_Chain| Chain| Identifier| Visible_Flag| Use_Flag}}"] "Group_Template_Declaration__Parent" [shape=box label="Iir"] "Group_Template_Declaration":Parent -> "Group_Template_Declaration__Parent" [color="#3465a4" style=dashed] "Group_Template_Declaration__Entity_Class_Entry_Chain" [shape=box label="Iir"] "Group_Template_Declaration":Entity_Class_Entry_Chain -> "Group_Template_Declaration__Entity_Class_Entry_Chain" [color="#4e9a06"] "Group_Template_Declaration__Chain" [shape=box label="Iir"] "Group_Template_Declaration":Chain -> "Group_Template_Declaration__Chain" [color="#4e9a06" style=bold] } .. _INT:AST:Group_Declaration: Iir_Kind_Group_Declaration ========================== Format: ``Short`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - The declaration containing this type declaration. * - :ref:`Group_Constituent_List ` - ``Field1`` - ``Iir_Flist`` - owned - List of constituents. * - :ref:`Chain ` - ``Field2`` - ``Iir`` - chain next - — * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Get/Set the identifier of a declaration. Can also be used instead of get/set_label. * - :ref:`Group_Template_Name ` - ``Field5`` - ``Iir`` - owned - — * - :ref:`Visible_Flag ` - ``Flag4`` - ``Boolean`` - owned - Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished. * - :ref:`Use_Flag ` - ``Flag6`` - ``Boolean`` - owned - For a declaration: true if the declaration is used somewhere. .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Group_Declaration" [style=filled fillcolor="#eeeeec" label="{Group_Declaration|{ Parent| Group_Constituent_List| Chain| Identifier| Group_Template_Name| Visible_Flag| Use_Flag}}"] "Group_Declaration__Parent" [shape=box label="Iir"] "Group_Declaration":Parent -> "Group_Declaration__Parent" [color="#3465a4" style=dashed] "Group_Declaration__Group_Constituent_List" [shape=box3d label="Iir_Flist"] "Group_Declaration":Group_Constituent_List -> "Group_Declaration__Group_Constituent_List" [color="#000000"] "Group_Declaration__Chain" [shape=box label="Iir"] "Group_Declaration":Chain -> "Group_Declaration__Chain" [color="#4e9a06" style=bold] "Group_Declaration__Group_Template_Name" [shape=box label="Iir"] "Group_Declaration":Group_Template_Name -> "Group_Declaration__Group_Template_Name" [color="#000000"] } .. _INT:AST:Element_Declaration: Iir_Kind_Element_Declaration ============================ LRM08 5.3.3 Record types :: element_declaration ::= identifier_list : element_subtype_definition ; :: identifier_list ::= identifier { , identifier } :: element_subtype_definition ::= subtype_indication Format: ``Short`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop. * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Get/Set the identifier of a declaration. Can also be used instead of get/set_label. * - :ref:`Subtype_Indication ` - ``Field5`` - ``Iir`` - maybe ref - The subtype indication of a declaration. If several declarations share the same subtype_indication like in: variable a, b : integer := 5; then only the first declaration is the owner of the subtype_indication. * - :ref:`Element_Position ` - ``Field4`` - ``Iir_Index32`` - owned - Return the position of the element in the record, starting from 0 for the first record element, increasing by one for each successive element. * - :ref:`Type ` - ``Field1`` - ``Iir`` - ref - The type can be deduced from the subtype indication, but this field is present for uniformity (and speed). * - :ref:`Has_Identifier_List ` - ``Flag3`` - ``Boolean`` - owned - Layout flag for object declaration. If True, the identifier of this declaration is followed by an identifier (and separated by a comma). This flag is set on all but the last declarations. Eg: on 'signal A, B, C : Bit', the flag is set on A and B (but not C). * - :ref:`Visible_Flag ` - ``Flag4`` - ``Boolean`` - owned - Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished. * - :ref:`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. .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Element_Declaration" [style=filled fillcolor="#eeeeec" label="{Element_Declaration|{ Parent| Identifier| Subtype_Indication| Element_Position| Type| Has_Identifier_List| Visible_Flag| Is_Ref}}"] "Element_Declaration__Parent" [shape=box label="Iir"] "Element_Declaration":Parent -> "Element_Declaration__Parent" [color="#3465a4" style=dashed] "Element_Declaration__Subtype_Indication" [shape=box label="Iir"] "Element_Declaration":Subtype_Indication -> "Element_Declaration__Subtype_Indication" [color="#3465a4" style=dotted] "Element_Declaration__Type" [shape=box label="Iir"] "Element_Declaration":Type -> "Element_Declaration__Type" [color="#3465a4" style=dashed] } .. _INT:AST:Nature_Element_Declaration: Iir_Kind_Nature_Element_Declaration =================================== AMS-LRM17 5.8.3.3 Record natures :: nature_element_declaration ::= identifier_list : element_subnature_definition ; :: element_subnature_definition ::= subnature_indication Format: ``Short`` .. list-table:: :header-rows: 1 :widths: 30 12 18 12 28 * - Accessor - Field - Type - Access - Description * - :ref:`Parent ` - ``Field0`` - ``Iir`` - ref - Get/Set the statement in which TARGET appears. This is used to check if next/exit is in a loop. * - :ref:`Identifier ` - ``Field3`` - ``Name_Id`` - owned - Get/Set the identifier of a declaration. Can also be used instead of get/set_label. * - :ref:`Subnature_Indication ` - ``Field5`` - ``Iir`` - owned - — * - :ref:`Element_Position ` - ``Field4`` - ``Iir_Index32`` - owned - — * - :ref:`Nature ` - ``Field1`` - ``Iir`` - ref - — * - :ref:`Has_Identifier_List ` - ``Flag3`` - ``Boolean`` - owned - Layout flag for object declaration. If True, the identifier of this declaration is followed by an identifier (and separated by a comma). This flag is set on all but the last declarations. Eg: on 'signal A, B, C : Bit', the flag is set on A and B (but not C). * - :ref:`Visible_Flag ` - ``Flag4`` - ``Boolean`` - owned - Get/Set the visible flag of a declaration. The visible flag is true to make invalid the use of the identifier during its declaration. It is set to false when the identifier is added to the name table, and set to true when the declaration is finished. .. graphviz:: digraph { rankdir="LR" node [shape=record fontname="monospace" fontsize=10] edge [fontname="monospace" fontsize=9] "Nature_Element_Declaration" [style=filled fillcolor="#eeeeec" label="{Nature_Element_Declaration|{ Parent| Identifier| Subnature_Indication| Element_Position| Nature| Has_Identifier_List| Visible_Flag}}"] "Nature_Element_Declaration__Parent" [shape=box label="Iir"] "Nature_Element_Declaration":Parent -> "Nature_Element_Declaration__Parent" [color="#3465a4" style=dashed] "Nature_Element_Declaration__Subnature_Indication" [shape=box label="Iir"] "Nature_Element_Declaration":Subnature_Indication -> "Nature_Element_Declaration__Subnature_Indication" [color="#000000"] "Nature_Element_Declaration__Nature" [shape=box label="Iir"] "Nature_Element_Declaration":Nature -> "Nature_Element_Declaration__Nature" [color="#3465a4" style=dashed] }