-- -- Copyright (C) 2014-2022, AdaCore -- SPDX-License-Identifier: Apache-2.0 -- with Ada.Containers.Vectors; with Ada.Exceptions; with Ada.Unchecked_Deallocation; with Langkit_Support.Diagnostics; use Langkit_Support.Diagnostics; with Langkit_Support.Packrat; with Langkit_Support.Slocs; use Langkit_Support.Slocs; pragma Warnings (Off, "referenced"); with Langkit_Support.Symbols; use Langkit_Support.Symbols; pragma Warnings (On, "referenced"); with Langkit_Support.Text; use Langkit_Support.Text; with Libadalang.Common; use Libadalang.Common; with Libadalang.Implementation; use Libadalang.Implementation; use Libadalang.Implementation.Precomputed_Symbols; pragma Warnings (Off, "referenced"); with Libadalang.Private_Converters; use Libadalang.Private_Converters; pragma Warnings (On, "referenced"); package body Libadalang.Parsers is pragma Warnings (Off, "use clause"); use all type Langkit_Support.Symbols.Symbol_Type; pragma Warnings (On, "use clause"); -- Prepare packrat instantiations: one per enum type and onefor each kind -- of node (including lists). Likewise for bump ptr. allocators, except -- we need them only for non-abstract AST nodes. pragma Warnings (Off, "is not referenced"); package Bare_Ada_Node_Memos is new Langkit_Support.Packrat (Bare_Ada_Node, Token_Index); package Bare_Abort_Node_Memos is new Langkit_Support.Packrat (Bare_Abort_Node, Token_Index); package Bare_Abort_Absent_Memos is new Langkit_Support.Packrat (Bare_Abort_Absent, Token_Index); subtype Subtype_For_Abort_Absent is Root_Node_Record (Ada_Abort_Absent); type Access_To_Subtype_For_Abort_Absent is access all Subtype_For_Abort_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_Abort_Absent); package Bare_Abort_Absent_Alloc is new Alloc (Subtype_For_Abort_Absent, Access_To_Subtype_For_Abort_Absent); function Allocate_Abort_Absent (Pool : Bump_Ptr_Pool) return Bare_Abort_Absent; function Allocate_Abort_Absent (Pool : Bump_Ptr_Pool) return Bare_Abort_Absent is Result : constant Access_To_Subtype_For_Abort_Absent := Bare_Abort_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Abort_Absent; return Bare_Abort_Absent (Result); end Allocate_Abort_Absent; package Bare_Abort_Present_Memos is new Langkit_Support.Packrat (Bare_Abort_Present, Token_Index); subtype Subtype_For_Abort_Present is Root_Node_Record (Ada_Abort_Present); type Access_To_Subtype_For_Abort_Present is access all Subtype_For_Abort_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_Abort_Present); package Bare_Abort_Present_Alloc is new Alloc (Subtype_For_Abort_Present, Access_To_Subtype_For_Abort_Present); function Allocate_Abort_Present (Pool : Bump_Ptr_Pool) return Bare_Abort_Present; function Allocate_Abort_Present (Pool : Bump_Ptr_Pool) return Bare_Abort_Present is Result : constant Access_To_Subtype_For_Abort_Present := Bare_Abort_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Abort_Present; return Bare_Abort_Present (Result); end Allocate_Abort_Present; package Bare_Abstract_Node_Memos is new Langkit_Support.Packrat (Bare_Abstract_Node, Token_Index); package Bare_Abstract_Absent_Memos is new Langkit_Support.Packrat (Bare_Abstract_Absent, Token_Index); subtype Subtype_For_Abstract_Absent is Root_Node_Record (Ada_Abstract_Absent); type Access_To_Subtype_For_Abstract_Absent is access all Subtype_For_Abstract_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_Abstract_Absent); package Bare_Abstract_Absent_Alloc is new Alloc (Subtype_For_Abstract_Absent, Access_To_Subtype_For_Abstract_Absent); function Allocate_Abstract_Absent (Pool : Bump_Ptr_Pool) return Bare_Abstract_Absent; function Allocate_Abstract_Absent (Pool : Bump_Ptr_Pool) return Bare_Abstract_Absent is Result : constant Access_To_Subtype_For_Abstract_Absent := Bare_Abstract_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Abstract_Absent; return Bare_Abstract_Absent (Result); end Allocate_Abstract_Absent; package Bare_Abstract_Present_Memos is new Langkit_Support.Packrat (Bare_Abstract_Present, Token_Index); subtype Subtype_For_Abstract_Present is Root_Node_Record (Ada_Abstract_Present); type Access_To_Subtype_For_Abstract_Present is access all Subtype_For_Abstract_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_Abstract_Present); package Bare_Abstract_Present_Alloc is new Alloc (Subtype_For_Abstract_Present, Access_To_Subtype_For_Abstract_Present); function Allocate_Abstract_Present (Pool : Bump_Ptr_Pool) return Bare_Abstract_Present; function Allocate_Abstract_Present (Pool : Bump_Ptr_Pool) return Bare_Abstract_Present is Result : constant Access_To_Subtype_For_Abstract_Present := Bare_Abstract_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Abstract_Present; return Bare_Abstract_Present (Result); end Allocate_Abstract_Present; package Bare_Ada_List_Memos is new Langkit_Support.Packrat (Bare_Ada_List, Token_Index); package Bare_Ada_Node_List_Memos is new Langkit_Support.Packrat (Bare_Ada_Node_List, Token_Index); subtype Subtype_For_Ada_Node_List is Root_Node_Record (Ada_Ada_Node_List); type Access_To_Subtype_For_Ada_Node_List is access all Subtype_For_Ada_Node_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Ada_Node_List); package Bare_Ada_Node_List_Alloc is new Alloc (Subtype_For_Ada_Node_List, Access_To_Subtype_For_Ada_Node_List); function Allocate_Ada_Node_List (Pool : Bump_Ptr_Pool) return Bare_Ada_Node_List; function Allocate_Ada_Node_List (Pool : Bump_Ptr_Pool) return Bare_Ada_Node_List is Result : constant Access_To_Subtype_For_Ada_Node_List := Bare_Ada_Node_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Ada_Node_List; return Bare_Ada_Node_List (Result); end Allocate_Ada_Node_List; package Bare_Abstract_State_Decl_List_Memos is new Langkit_Support.Packrat (Bare_Abstract_State_Decl_List, Token_Index); subtype Subtype_For_Abstract_State_Decl_List is Root_Node_Record (Ada_Abstract_State_Decl_List); type Access_To_Subtype_For_Abstract_State_Decl_List is access all Subtype_For_Abstract_State_Decl_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Abstract_State_Decl_List); package Bare_Abstract_State_Decl_List_Alloc is new Alloc (Subtype_For_Abstract_State_Decl_List, Access_To_Subtype_For_Abstract_State_Decl_List); function Allocate_Abstract_State_Decl_List (Pool : Bump_Ptr_Pool) return Bare_Abstract_State_Decl_List; function Allocate_Abstract_State_Decl_List (Pool : Bump_Ptr_Pool) return Bare_Abstract_State_Decl_List is Result : constant Access_To_Subtype_For_Abstract_State_Decl_List := Bare_Abstract_State_Decl_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Abstract_State_Decl_List; return Bare_Abstract_State_Decl_List (Result); end Allocate_Abstract_State_Decl_List; package Bare_Alternatives_List_Memos is new Langkit_Support.Packrat (Bare_Alternatives_List, Token_Index); subtype Subtype_For_Alternatives_List is Root_Node_Record (Ada_Alternatives_List); type Access_To_Subtype_For_Alternatives_List is access all Subtype_For_Alternatives_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Alternatives_List); package Bare_Alternatives_List_Alloc is new Alloc (Subtype_For_Alternatives_List, Access_To_Subtype_For_Alternatives_List); function Allocate_Alternatives_List (Pool : Bump_Ptr_Pool) return Bare_Alternatives_List; function Allocate_Alternatives_List (Pool : Bump_Ptr_Pool) return Bare_Alternatives_List is Result : constant Access_To_Subtype_For_Alternatives_List := Bare_Alternatives_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Alternatives_List; return Bare_Alternatives_List (Result); end Allocate_Alternatives_List; package Bare_Constraint_List_Memos is new Langkit_Support.Packrat (Bare_Constraint_List, Token_Index); subtype Subtype_For_Constraint_List is Root_Node_Record (Ada_Constraint_List); type Access_To_Subtype_For_Constraint_List is access all Subtype_For_Constraint_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Constraint_List); package Bare_Constraint_List_Alloc is new Alloc (Subtype_For_Constraint_List, Access_To_Subtype_For_Constraint_List); function Allocate_Constraint_List (Pool : Bump_Ptr_Pool) return Bare_Constraint_List; function Allocate_Constraint_List (Pool : Bump_Ptr_Pool) return Bare_Constraint_List is Result : constant Access_To_Subtype_For_Constraint_List := Bare_Constraint_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Constraint_List; return Bare_Constraint_List (Result); end Allocate_Constraint_List; package Bare_Decl_List_Memos is new Langkit_Support.Packrat (Bare_Decl_List, Token_Index); subtype Subtype_For_Decl_List is Root_Node_Record (Ada_Decl_List); type Access_To_Subtype_For_Decl_List is access all Subtype_For_Decl_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Decl_List); package Bare_Decl_List_Alloc is new Alloc (Subtype_For_Decl_List, Access_To_Subtype_For_Decl_List); function Allocate_Decl_List (Pool : Bump_Ptr_Pool) return Bare_Decl_List; function Allocate_Decl_List (Pool : Bump_Ptr_Pool) return Bare_Decl_List is Result : constant Access_To_Subtype_For_Decl_List := Bare_Decl_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Decl_List; return Bare_Decl_List (Result); end Allocate_Decl_List; package Bare_Stmt_List_Memos is new Langkit_Support.Packrat (Bare_Stmt_List, Token_Index); subtype Subtype_For_Stmt_List is Root_Node_Record (Ada_Stmt_List); type Access_To_Subtype_For_Stmt_List is access all Subtype_For_Stmt_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Stmt_List); package Bare_Stmt_List_Alloc is new Alloc (Subtype_For_Stmt_List, Access_To_Subtype_For_Stmt_List); function Allocate_Stmt_List (Pool : Bump_Ptr_Pool) return Bare_Stmt_List; function Allocate_Stmt_List (Pool : Bump_Ptr_Pool) return Bare_Stmt_List is Result : constant Access_To_Subtype_For_Stmt_List := Bare_Stmt_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Stmt_List; return Bare_Stmt_List (Result); end Allocate_Stmt_List; package Bare_Aspect_Assoc_List_Memos is new Langkit_Support.Packrat (Bare_Aspect_Assoc_List, Token_Index); subtype Subtype_For_Aspect_Assoc_List is Root_Node_Record (Ada_Aspect_Assoc_List); type Access_To_Subtype_For_Aspect_Assoc_List is access all Subtype_For_Aspect_Assoc_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Aspect_Assoc_List); package Bare_Aspect_Assoc_List_Alloc is new Alloc (Subtype_For_Aspect_Assoc_List, Access_To_Subtype_For_Aspect_Assoc_List); function Allocate_Aspect_Assoc_List (Pool : Bump_Ptr_Pool) return Bare_Aspect_Assoc_List; function Allocate_Aspect_Assoc_List (Pool : Bump_Ptr_Pool) return Bare_Aspect_Assoc_List is Result : constant Access_To_Subtype_For_Aspect_Assoc_List := Bare_Aspect_Assoc_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Aspect_Assoc_List; return Bare_Aspect_Assoc_List (Result); end Allocate_Aspect_Assoc_List; package Bare_Base_Assoc_List_Memos is new Langkit_Support.Packrat (Bare_Base_Assoc_List, Token_Index); subtype Subtype_For_Base_Assoc_List is Root_Node_Record (Ada_Base_Assoc_List); type Access_To_Subtype_For_Base_Assoc_List is access all Subtype_For_Base_Assoc_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Base_Assoc_List); package Bare_Base_Assoc_List_Alloc is new Alloc (Subtype_For_Base_Assoc_List, Access_To_Subtype_For_Base_Assoc_List); function Allocate_Base_Assoc_List (Pool : Bump_Ptr_Pool) return Bare_Base_Assoc_List; function Allocate_Base_Assoc_List (Pool : Bump_Ptr_Pool) return Bare_Base_Assoc_List is Result : constant Access_To_Subtype_For_Base_Assoc_List := Bare_Base_Assoc_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Base_Assoc_List; return Bare_Base_Assoc_List (Result); end Allocate_Base_Assoc_List; package Bare_Basic_Assoc_List_Memos is new Langkit_Support.Packrat (Bare_Basic_Assoc_List, Token_Index); package Bare_Assoc_List_Memos is new Langkit_Support.Packrat (Bare_Assoc_List, Token_Index); subtype Subtype_For_Assoc_List is Root_Node_Record (Ada_Assoc_List); type Access_To_Subtype_For_Assoc_List is access all Subtype_For_Assoc_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Assoc_List); package Bare_Assoc_List_Alloc is new Alloc (Subtype_For_Assoc_List, Access_To_Subtype_For_Assoc_List); function Allocate_Assoc_List (Pool : Bump_Ptr_Pool) return Bare_Assoc_List; function Allocate_Assoc_List (Pool : Bump_Ptr_Pool) return Bare_Assoc_List is Result : constant Access_To_Subtype_For_Assoc_List := Bare_Assoc_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Assoc_List; return Bare_Assoc_List (Result); end Allocate_Assoc_List; package Bare_Basic_Decl_List_Memos is new Langkit_Support.Packrat (Bare_Basic_Decl_List, Token_Index); subtype Subtype_For_Basic_Decl_List is Root_Node_Record (Ada_Basic_Decl_List); type Access_To_Subtype_For_Basic_Decl_List is access all Subtype_For_Basic_Decl_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Basic_Decl_List); package Bare_Basic_Decl_List_Alloc is new Alloc (Subtype_For_Basic_Decl_List, Access_To_Subtype_For_Basic_Decl_List); function Allocate_Basic_Decl_List (Pool : Bump_Ptr_Pool) return Bare_Basic_Decl_List; function Allocate_Basic_Decl_List (Pool : Bump_Ptr_Pool) return Bare_Basic_Decl_List is Result : constant Access_To_Subtype_For_Basic_Decl_List := Bare_Basic_Decl_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Basic_Decl_List; return Bare_Basic_Decl_List (Result); end Allocate_Basic_Decl_List; package Bare_Case_Expr_Alternative_List_Memos is new Langkit_Support.Packrat (Bare_Case_Expr_Alternative_List, Token_Index); subtype Subtype_For_Case_Expr_Alternative_List is Root_Node_Record (Ada_Case_Expr_Alternative_List); type Access_To_Subtype_For_Case_Expr_Alternative_List is access all Subtype_For_Case_Expr_Alternative_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Case_Expr_Alternative_List); package Bare_Case_Expr_Alternative_List_Alloc is new Alloc (Subtype_For_Case_Expr_Alternative_List, Access_To_Subtype_For_Case_Expr_Alternative_List); function Allocate_Case_Expr_Alternative_List (Pool : Bump_Ptr_Pool) return Bare_Case_Expr_Alternative_List; function Allocate_Case_Expr_Alternative_List (Pool : Bump_Ptr_Pool) return Bare_Case_Expr_Alternative_List is Result : constant Access_To_Subtype_For_Case_Expr_Alternative_List := Bare_Case_Expr_Alternative_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Case_Expr_Alternative_List; return Bare_Case_Expr_Alternative_List (Result); end Allocate_Case_Expr_Alternative_List; package Bare_Case_Stmt_Alternative_List_Memos is new Langkit_Support.Packrat (Bare_Case_Stmt_Alternative_List, Token_Index); subtype Subtype_For_Case_Stmt_Alternative_List is Root_Node_Record (Ada_Case_Stmt_Alternative_List); type Access_To_Subtype_For_Case_Stmt_Alternative_List is access all Subtype_For_Case_Stmt_Alternative_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Case_Stmt_Alternative_List); package Bare_Case_Stmt_Alternative_List_Alloc is new Alloc (Subtype_For_Case_Stmt_Alternative_List, Access_To_Subtype_For_Case_Stmt_Alternative_List); function Allocate_Case_Stmt_Alternative_List (Pool : Bump_Ptr_Pool) return Bare_Case_Stmt_Alternative_List; function Allocate_Case_Stmt_Alternative_List (Pool : Bump_Ptr_Pool) return Bare_Case_Stmt_Alternative_List is Result : constant Access_To_Subtype_For_Case_Stmt_Alternative_List := Bare_Case_Stmt_Alternative_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Case_Stmt_Alternative_List; return Bare_Case_Stmt_Alternative_List (Result); end Allocate_Case_Stmt_Alternative_List; package Bare_Compilation_Unit_List_Memos is new Langkit_Support.Packrat (Bare_Compilation_Unit_List, Token_Index); subtype Subtype_For_Compilation_Unit_List is Root_Node_Record (Ada_Compilation_Unit_List); type Access_To_Subtype_For_Compilation_Unit_List is access all Subtype_For_Compilation_Unit_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Compilation_Unit_List); package Bare_Compilation_Unit_List_Alloc is new Alloc (Subtype_For_Compilation_Unit_List, Access_To_Subtype_For_Compilation_Unit_List); function Allocate_Compilation_Unit_List (Pool : Bump_Ptr_Pool) return Bare_Compilation_Unit_List; function Allocate_Compilation_Unit_List (Pool : Bump_Ptr_Pool) return Bare_Compilation_Unit_List is Result : constant Access_To_Subtype_For_Compilation_Unit_List := Bare_Compilation_Unit_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Compilation_Unit_List; return Bare_Compilation_Unit_List (Result); end Allocate_Compilation_Unit_List; package Bare_Concat_Operand_List_Memos is new Langkit_Support.Packrat (Bare_Concat_Operand_List, Token_Index); subtype Subtype_For_Concat_Operand_List is Root_Node_Record (Ada_Concat_Operand_List); type Access_To_Subtype_For_Concat_Operand_List is access all Subtype_For_Concat_Operand_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Concat_Operand_List); package Bare_Concat_Operand_List_Alloc is new Alloc (Subtype_For_Concat_Operand_List, Access_To_Subtype_For_Concat_Operand_List); function Allocate_Concat_Operand_List (Pool : Bump_Ptr_Pool) return Bare_Concat_Operand_List; function Allocate_Concat_Operand_List (Pool : Bump_Ptr_Pool) return Bare_Concat_Operand_List is Result : constant Access_To_Subtype_For_Concat_Operand_List := Bare_Concat_Operand_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Concat_Operand_List; return Bare_Concat_Operand_List (Result); end Allocate_Concat_Operand_List; package Bare_Contract_Case_Assoc_List_Memos is new Langkit_Support.Packrat (Bare_Contract_Case_Assoc_List, Token_Index); subtype Subtype_For_Contract_Case_Assoc_List is Root_Node_Record (Ada_Contract_Case_Assoc_List); type Access_To_Subtype_For_Contract_Case_Assoc_List is access all Subtype_For_Contract_Case_Assoc_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Contract_Case_Assoc_List); package Bare_Contract_Case_Assoc_List_Alloc is new Alloc (Subtype_For_Contract_Case_Assoc_List, Access_To_Subtype_For_Contract_Case_Assoc_List); function Allocate_Contract_Case_Assoc_List (Pool : Bump_Ptr_Pool) return Bare_Contract_Case_Assoc_List; function Allocate_Contract_Case_Assoc_List (Pool : Bump_Ptr_Pool) return Bare_Contract_Case_Assoc_List is Result : constant Access_To_Subtype_For_Contract_Case_Assoc_List := Bare_Contract_Case_Assoc_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Contract_Case_Assoc_List; return Bare_Contract_Case_Assoc_List (Result); end Allocate_Contract_Case_Assoc_List; package Bare_Defining_Name_List_Memos is new Langkit_Support.Packrat (Bare_Defining_Name_List, Token_Index); subtype Subtype_For_Defining_Name_List is Root_Node_Record (Ada_Defining_Name_List); type Access_To_Subtype_For_Defining_Name_List is access all Subtype_For_Defining_Name_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Defining_Name_List); package Bare_Defining_Name_List_Alloc is new Alloc (Subtype_For_Defining_Name_List, Access_To_Subtype_For_Defining_Name_List); function Allocate_Defining_Name_List (Pool : Bump_Ptr_Pool) return Bare_Defining_Name_List; function Allocate_Defining_Name_List (Pool : Bump_Ptr_Pool) return Bare_Defining_Name_List is Result : constant Access_To_Subtype_For_Defining_Name_List := Bare_Defining_Name_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Defining_Name_List; return Bare_Defining_Name_List (Result); end Allocate_Defining_Name_List; package Bare_Discriminant_Spec_List_Memos is new Langkit_Support.Packrat (Bare_Discriminant_Spec_List, Token_Index); subtype Subtype_For_Discriminant_Spec_List is Root_Node_Record (Ada_Discriminant_Spec_List); type Access_To_Subtype_For_Discriminant_Spec_List is access all Subtype_For_Discriminant_Spec_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Discriminant_Spec_List); package Bare_Discriminant_Spec_List_Alloc is new Alloc (Subtype_For_Discriminant_Spec_List, Access_To_Subtype_For_Discriminant_Spec_List); function Allocate_Discriminant_Spec_List (Pool : Bump_Ptr_Pool) return Bare_Discriminant_Spec_List; function Allocate_Discriminant_Spec_List (Pool : Bump_Ptr_Pool) return Bare_Discriminant_Spec_List is Result : constant Access_To_Subtype_For_Discriminant_Spec_List := Bare_Discriminant_Spec_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Discriminant_Spec_List; return Bare_Discriminant_Spec_List (Result); end Allocate_Discriminant_Spec_List; package Bare_Elsif_Expr_Part_List_Memos is new Langkit_Support.Packrat (Bare_Elsif_Expr_Part_List, Token_Index); subtype Subtype_For_Elsif_Expr_Part_List is Root_Node_Record (Ada_Elsif_Expr_Part_List); type Access_To_Subtype_For_Elsif_Expr_Part_List is access all Subtype_For_Elsif_Expr_Part_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Elsif_Expr_Part_List); package Bare_Elsif_Expr_Part_List_Alloc is new Alloc (Subtype_For_Elsif_Expr_Part_List, Access_To_Subtype_For_Elsif_Expr_Part_List); function Allocate_Elsif_Expr_Part_List (Pool : Bump_Ptr_Pool) return Bare_Elsif_Expr_Part_List; function Allocate_Elsif_Expr_Part_List (Pool : Bump_Ptr_Pool) return Bare_Elsif_Expr_Part_List is Result : constant Access_To_Subtype_For_Elsif_Expr_Part_List := Bare_Elsif_Expr_Part_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Elsif_Expr_Part_List; return Bare_Elsif_Expr_Part_List (Result); end Allocate_Elsif_Expr_Part_List; package Bare_Elsif_Stmt_Part_List_Memos is new Langkit_Support.Packrat (Bare_Elsif_Stmt_Part_List, Token_Index); subtype Subtype_For_Elsif_Stmt_Part_List is Root_Node_Record (Ada_Elsif_Stmt_Part_List); type Access_To_Subtype_For_Elsif_Stmt_Part_List is access all Subtype_For_Elsif_Stmt_Part_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Elsif_Stmt_Part_List); package Bare_Elsif_Stmt_Part_List_Alloc is new Alloc (Subtype_For_Elsif_Stmt_Part_List, Access_To_Subtype_For_Elsif_Stmt_Part_List); function Allocate_Elsif_Stmt_Part_List (Pool : Bump_Ptr_Pool) return Bare_Elsif_Stmt_Part_List; function Allocate_Elsif_Stmt_Part_List (Pool : Bump_Ptr_Pool) return Bare_Elsif_Stmt_Part_List is Result : constant Access_To_Subtype_For_Elsif_Stmt_Part_List := Bare_Elsif_Stmt_Part_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Elsif_Stmt_Part_List; return Bare_Elsif_Stmt_Part_List (Result); end Allocate_Elsif_Stmt_Part_List; package Bare_Enum_Literal_Decl_List_Memos is new Langkit_Support.Packrat (Bare_Enum_Literal_Decl_List, Token_Index); subtype Subtype_For_Enum_Literal_Decl_List is Root_Node_Record (Ada_Enum_Literal_Decl_List); type Access_To_Subtype_For_Enum_Literal_Decl_List is access all Subtype_For_Enum_Literal_Decl_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Enum_Literal_Decl_List); package Bare_Enum_Literal_Decl_List_Alloc is new Alloc (Subtype_For_Enum_Literal_Decl_List, Access_To_Subtype_For_Enum_Literal_Decl_List); function Allocate_Enum_Literal_Decl_List (Pool : Bump_Ptr_Pool) return Bare_Enum_Literal_Decl_List; function Allocate_Enum_Literal_Decl_List (Pool : Bump_Ptr_Pool) return Bare_Enum_Literal_Decl_List is Result : constant Access_To_Subtype_For_Enum_Literal_Decl_List := Bare_Enum_Literal_Decl_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Enum_Literal_Decl_List; return Bare_Enum_Literal_Decl_List (Result); end Allocate_Enum_Literal_Decl_List; package Bare_Expr_List_Memos is new Langkit_Support.Packrat (Bare_Expr_List, Token_Index); package Bare_Expr_Alternatives_List_Memos is new Langkit_Support.Packrat (Bare_Expr_Alternatives_List, Token_Index); subtype Subtype_For_Expr_Alternatives_List is Root_Node_Record (Ada_Expr_Alternatives_List); type Access_To_Subtype_For_Expr_Alternatives_List is access all Subtype_For_Expr_Alternatives_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Expr_Alternatives_List); package Bare_Expr_Alternatives_List_Alloc is new Alloc (Subtype_For_Expr_Alternatives_List, Access_To_Subtype_For_Expr_Alternatives_List); function Allocate_Expr_Alternatives_List (Pool : Bump_Ptr_Pool) return Bare_Expr_Alternatives_List; function Allocate_Expr_Alternatives_List (Pool : Bump_Ptr_Pool) return Bare_Expr_Alternatives_List is Result : constant Access_To_Subtype_For_Expr_Alternatives_List := Bare_Expr_Alternatives_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Expr_Alternatives_List; return Bare_Expr_Alternatives_List (Result); end Allocate_Expr_Alternatives_List; package Bare_Identifier_List_Memos is new Langkit_Support.Packrat (Bare_Identifier_List, Token_Index); package Bare_Discriminant_Choice_List_Memos is new Langkit_Support.Packrat (Bare_Discriminant_Choice_List, Token_Index); subtype Subtype_For_Discriminant_Choice_List is Root_Node_Record (Ada_Discriminant_Choice_List); type Access_To_Subtype_For_Discriminant_Choice_List is access all Subtype_For_Discriminant_Choice_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Discriminant_Choice_List); package Bare_Discriminant_Choice_List_Alloc is new Alloc (Subtype_For_Discriminant_Choice_List, Access_To_Subtype_For_Discriminant_Choice_List); function Allocate_Discriminant_Choice_List (Pool : Bump_Ptr_Pool) return Bare_Discriminant_Choice_List; function Allocate_Discriminant_Choice_List (Pool : Bump_Ptr_Pool) return Bare_Discriminant_Choice_List is Result : constant Access_To_Subtype_For_Discriminant_Choice_List := Bare_Discriminant_Choice_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Discriminant_Choice_List; return Bare_Discriminant_Choice_List (Result); end Allocate_Discriminant_Choice_List; package Bare_Name_List_Memos is new Langkit_Support.Packrat (Bare_Name_List, Token_Index); subtype Subtype_For_Name_List is Root_Node_Record (Ada_Name_List); type Access_To_Subtype_For_Name_List is access all Subtype_For_Name_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Name_List); package Bare_Name_List_Alloc is new Alloc (Subtype_For_Name_List, Access_To_Subtype_For_Name_List); function Allocate_Name_List (Pool : Bump_Ptr_Pool) return Bare_Name_List; function Allocate_Name_List (Pool : Bump_Ptr_Pool) return Bare_Name_List is Result : constant Access_To_Subtype_For_Name_List := Bare_Name_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Name_List; return Bare_Name_List (Result); end Allocate_Name_List; package Bare_Parent_List_Memos is new Langkit_Support.Packrat (Bare_Parent_List, Token_Index); subtype Subtype_For_Parent_List is Root_Node_Record (Ada_Parent_List); type Access_To_Subtype_For_Parent_List is access all Subtype_For_Parent_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Parent_List); package Bare_Parent_List_Alloc is new Alloc (Subtype_For_Parent_List, Access_To_Subtype_For_Parent_List); function Allocate_Parent_List (Pool : Bump_Ptr_Pool) return Bare_Parent_List; function Allocate_Parent_List (Pool : Bump_Ptr_Pool) return Bare_Parent_List is Result : constant Access_To_Subtype_For_Parent_List := Bare_Parent_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Parent_List; return Bare_Parent_List (Result); end Allocate_Parent_List; package Bare_Param_Spec_List_Memos is new Langkit_Support.Packrat (Bare_Param_Spec_List, Token_Index); subtype Subtype_For_Param_Spec_List is Root_Node_Record (Ada_Param_Spec_List); type Access_To_Subtype_For_Param_Spec_List is access all Subtype_For_Param_Spec_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Param_Spec_List); package Bare_Param_Spec_List_Alloc is new Alloc (Subtype_For_Param_Spec_List, Access_To_Subtype_For_Param_Spec_List); function Allocate_Param_Spec_List (Pool : Bump_Ptr_Pool) return Bare_Param_Spec_List; function Allocate_Param_Spec_List (Pool : Bump_Ptr_Pool) return Bare_Param_Spec_List is Result : constant Access_To_Subtype_For_Param_Spec_List := Bare_Param_Spec_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Param_Spec_List; return Bare_Param_Spec_List (Result); end Allocate_Param_Spec_List; package Bare_Pragma_Node_List_Memos is new Langkit_Support.Packrat (Bare_Pragma_Node_List, Token_Index); subtype Subtype_For_Pragma_Node_List is Root_Node_Record (Ada_Pragma_Node_List); type Access_To_Subtype_For_Pragma_Node_List is access all Subtype_For_Pragma_Node_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Pragma_Node_List); package Bare_Pragma_Node_List_Alloc is new Alloc (Subtype_For_Pragma_Node_List, Access_To_Subtype_For_Pragma_Node_List); function Allocate_Pragma_Node_List (Pool : Bump_Ptr_Pool) return Bare_Pragma_Node_List; function Allocate_Pragma_Node_List (Pool : Bump_Ptr_Pool) return Bare_Pragma_Node_List is Result : constant Access_To_Subtype_For_Pragma_Node_List := Bare_Pragma_Node_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Pragma_Node_List; return Bare_Pragma_Node_List (Result); end Allocate_Pragma_Node_List; package Bare_Select_When_Part_List_Memos is new Langkit_Support.Packrat (Bare_Select_When_Part_List, Token_Index); subtype Subtype_For_Select_When_Part_List is Root_Node_Record (Ada_Select_When_Part_List); type Access_To_Subtype_For_Select_When_Part_List is access all Subtype_For_Select_When_Part_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Select_When_Part_List); package Bare_Select_When_Part_List_Alloc is new Alloc (Subtype_For_Select_When_Part_List, Access_To_Subtype_For_Select_When_Part_List); function Allocate_Select_When_Part_List (Pool : Bump_Ptr_Pool) return Bare_Select_When_Part_List; function Allocate_Select_When_Part_List (Pool : Bump_Ptr_Pool) return Bare_Select_When_Part_List is Result : constant Access_To_Subtype_For_Select_When_Part_List := Bare_Select_When_Part_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Select_When_Part_List; return Bare_Select_When_Part_List (Result); end Allocate_Select_When_Part_List; package Bare_Unconstrained_Array_Index_List_Memos is new Langkit_Support.Packrat (Bare_Unconstrained_Array_Index_List, Token_Index); subtype Subtype_For_Unconstrained_Array_Index_List is Root_Node_Record (Ada_Unconstrained_Array_Index_List); type Access_To_Subtype_For_Unconstrained_Array_Index_List is access all Subtype_For_Unconstrained_Array_Index_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Unconstrained_Array_Index_List); package Bare_Unconstrained_Array_Index_List_Alloc is new Alloc (Subtype_For_Unconstrained_Array_Index_List, Access_To_Subtype_For_Unconstrained_Array_Index_List); function Allocate_Unconstrained_Array_Index_List (Pool : Bump_Ptr_Pool) return Bare_Unconstrained_Array_Index_List; function Allocate_Unconstrained_Array_Index_List (Pool : Bump_Ptr_Pool) return Bare_Unconstrained_Array_Index_List is Result : constant Access_To_Subtype_For_Unconstrained_Array_Index_List := Bare_Unconstrained_Array_Index_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Unconstrained_Array_Index_List; return Bare_Unconstrained_Array_Index_List (Result); end Allocate_Unconstrained_Array_Index_List; package Bare_Variant_List_Memos is new Langkit_Support.Packrat (Bare_Variant_List, Token_Index); subtype Subtype_For_Variant_List is Root_Node_Record (Ada_Variant_List); type Access_To_Subtype_For_Variant_List is access all Subtype_For_Variant_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Variant_List); package Bare_Variant_List_Alloc is new Alloc (Subtype_For_Variant_List, Access_To_Subtype_For_Variant_List); function Allocate_Variant_List (Pool : Bump_Ptr_Pool) return Bare_Variant_List; function Allocate_Variant_List (Pool : Bump_Ptr_Pool) return Bare_Variant_List is Result : constant Access_To_Subtype_For_Variant_List := Bare_Variant_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Variant_List; return Bare_Variant_List (Result); end Allocate_Variant_List; package Bare_Aliased_Node_Memos is new Langkit_Support.Packrat (Bare_Aliased_Node, Token_Index); package Bare_Aliased_Absent_Memos is new Langkit_Support.Packrat (Bare_Aliased_Absent, Token_Index); subtype Subtype_For_Aliased_Absent is Root_Node_Record (Ada_Aliased_Absent); type Access_To_Subtype_For_Aliased_Absent is access all Subtype_For_Aliased_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_Aliased_Absent); package Bare_Aliased_Absent_Alloc is new Alloc (Subtype_For_Aliased_Absent, Access_To_Subtype_For_Aliased_Absent); function Allocate_Aliased_Absent (Pool : Bump_Ptr_Pool) return Bare_Aliased_Absent; function Allocate_Aliased_Absent (Pool : Bump_Ptr_Pool) return Bare_Aliased_Absent is Result : constant Access_To_Subtype_For_Aliased_Absent := Bare_Aliased_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Aliased_Absent; return Bare_Aliased_Absent (Result); end Allocate_Aliased_Absent; package Bare_Aliased_Present_Memos is new Langkit_Support.Packrat (Bare_Aliased_Present, Token_Index); subtype Subtype_For_Aliased_Present is Root_Node_Record (Ada_Aliased_Present); type Access_To_Subtype_For_Aliased_Present is access all Subtype_For_Aliased_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_Aliased_Present); package Bare_Aliased_Present_Alloc is new Alloc (Subtype_For_Aliased_Present, Access_To_Subtype_For_Aliased_Present); function Allocate_Aliased_Present (Pool : Bump_Ptr_Pool) return Bare_Aliased_Present; function Allocate_Aliased_Present (Pool : Bump_Ptr_Pool) return Bare_Aliased_Present is Result : constant Access_To_Subtype_For_Aliased_Present := Bare_Aliased_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Aliased_Present; return Bare_Aliased_Present (Result); end Allocate_Aliased_Present; package Bare_All_Node_Memos is new Langkit_Support.Packrat (Bare_All_Node, Token_Index); package Bare_All_Absent_Memos is new Langkit_Support.Packrat (Bare_All_Absent, Token_Index); subtype Subtype_For_All_Absent is Root_Node_Record (Ada_All_Absent); type Access_To_Subtype_For_All_Absent is access all Subtype_For_All_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_All_Absent); package Bare_All_Absent_Alloc is new Alloc (Subtype_For_All_Absent, Access_To_Subtype_For_All_Absent); function Allocate_All_Absent (Pool : Bump_Ptr_Pool) return Bare_All_Absent; function Allocate_All_Absent (Pool : Bump_Ptr_Pool) return Bare_All_Absent is Result : constant Access_To_Subtype_For_All_Absent := Bare_All_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_All_Absent; return Bare_All_Absent (Result); end Allocate_All_Absent; package Bare_All_Present_Memos is new Langkit_Support.Packrat (Bare_All_Present, Token_Index); subtype Subtype_For_All_Present is Root_Node_Record (Ada_All_Present); type Access_To_Subtype_For_All_Present is access all Subtype_For_All_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_All_Present); package Bare_All_Present_Alloc is new Alloc (Subtype_For_All_Present, Access_To_Subtype_For_All_Present); function Allocate_All_Present (Pool : Bump_Ptr_Pool) return Bare_All_Present; function Allocate_All_Present (Pool : Bump_Ptr_Pool) return Bare_All_Present is Result : constant Access_To_Subtype_For_All_Present := Bare_All_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_All_Present; return Bare_All_Present (Result); end Allocate_All_Present; package Bare_Array_Indices_Memos is new Langkit_Support.Packrat (Bare_Array_Indices, Token_Index); package Bare_Constrained_Array_Indices_Memos is new Langkit_Support.Packrat (Bare_Constrained_Array_Indices, Token_Index); subtype Subtype_For_Constrained_Array_Indices is Root_Node_Record (Ada_Constrained_Array_Indices); type Access_To_Subtype_For_Constrained_Array_Indices is access all Subtype_For_Constrained_Array_Indices; pragma No_Strict_Aliasing (Access_To_Subtype_For_Constrained_Array_Indices); package Bare_Constrained_Array_Indices_Alloc is new Alloc (Subtype_For_Constrained_Array_Indices, Access_To_Subtype_For_Constrained_Array_Indices); function Allocate_Constrained_Array_Indices (Pool : Bump_Ptr_Pool) return Bare_Constrained_Array_Indices; function Allocate_Constrained_Array_Indices (Pool : Bump_Ptr_Pool) return Bare_Constrained_Array_Indices is Result : constant Access_To_Subtype_For_Constrained_Array_Indices := Bare_Constrained_Array_Indices_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Constrained_Array_Indices; return Bare_Constrained_Array_Indices (Result); end Allocate_Constrained_Array_Indices; package Bare_Unconstrained_Array_Indices_Memos is new Langkit_Support.Packrat (Bare_Unconstrained_Array_Indices, Token_Index); subtype Subtype_For_Unconstrained_Array_Indices is Root_Node_Record (Ada_Unconstrained_Array_Indices); type Access_To_Subtype_For_Unconstrained_Array_Indices is access all Subtype_For_Unconstrained_Array_Indices; pragma No_Strict_Aliasing (Access_To_Subtype_For_Unconstrained_Array_Indices); package Bare_Unconstrained_Array_Indices_Alloc is new Alloc (Subtype_For_Unconstrained_Array_Indices, Access_To_Subtype_For_Unconstrained_Array_Indices); function Allocate_Unconstrained_Array_Indices (Pool : Bump_Ptr_Pool) return Bare_Unconstrained_Array_Indices; function Allocate_Unconstrained_Array_Indices (Pool : Bump_Ptr_Pool) return Bare_Unconstrained_Array_Indices is Result : constant Access_To_Subtype_For_Unconstrained_Array_Indices := Bare_Unconstrained_Array_Indices_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Unconstrained_Array_Indices; return Bare_Unconstrained_Array_Indices (Result); end Allocate_Unconstrained_Array_Indices; package Bare_Aspect_Assoc_Memos is new Langkit_Support.Packrat (Bare_Aspect_Assoc, Token_Index); subtype Subtype_For_Aspect_Assoc is Root_Node_Record (Ada_Aspect_Assoc); type Access_To_Subtype_For_Aspect_Assoc is access all Subtype_For_Aspect_Assoc; pragma No_Strict_Aliasing (Access_To_Subtype_For_Aspect_Assoc); package Bare_Aspect_Assoc_Alloc is new Alloc (Subtype_For_Aspect_Assoc, Access_To_Subtype_For_Aspect_Assoc); function Allocate_Aspect_Assoc (Pool : Bump_Ptr_Pool) return Bare_Aspect_Assoc; function Allocate_Aspect_Assoc (Pool : Bump_Ptr_Pool) return Bare_Aspect_Assoc is Result : constant Access_To_Subtype_For_Aspect_Assoc := Bare_Aspect_Assoc_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Aspect_Assoc; return Bare_Aspect_Assoc (Result); end Allocate_Aspect_Assoc; package Bare_Aspect_Clause_Memos is new Langkit_Support.Packrat (Bare_Aspect_Clause, Token_Index); package Bare_At_Clause_Memos is new Langkit_Support.Packrat (Bare_At_Clause, Token_Index); subtype Subtype_For_At_Clause is Root_Node_Record (Ada_At_Clause); type Access_To_Subtype_For_At_Clause is access all Subtype_For_At_Clause; pragma No_Strict_Aliasing (Access_To_Subtype_For_At_Clause); package Bare_At_Clause_Alloc is new Alloc (Subtype_For_At_Clause, Access_To_Subtype_For_At_Clause); function Allocate_At_Clause (Pool : Bump_Ptr_Pool) return Bare_At_Clause; function Allocate_At_Clause (Pool : Bump_Ptr_Pool) return Bare_At_Clause is Result : constant Access_To_Subtype_For_At_Clause := Bare_At_Clause_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_At_Clause; return Bare_At_Clause (Result); end Allocate_At_Clause; package Bare_Attribute_Def_Clause_Memos is new Langkit_Support.Packrat (Bare_Attribute_Def_Clause, Token_Index); subtype Subtype_For_Attribute_Def_Clause is Root_Node_Record (Ada_Attribute_Def_Clause); type Access_To_Subtype_For_Attribute_Def_Clause is access all Subtype_For_Attribute_Def_Clause; pragma No_Strict_Aliasing (Access_To_Subtype_For_Attribute_Def_Clause); package Bare_Attribute_Def_Clause_Alloc is new Alloc (Subtype_For_Attribute_Def_Clause, Access_To_Subtype_For_Attribute_Def_Clause); function Allocate_Attribute_Def_Clause (Pool : Bump_Ptr_Pool) return Bare_Attribute_Def_Clause; function Allocate_Attribute_Def_Clause (Pool : Bump_Ptr_Pool) return Bare_Attribute_Def_Clause is Result : constant Access_To_Subtype_For_Attribute_Def_Clause := Bare_Attribute_Def_Clause_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Attribute_Def_Clause; return Bare_Attribute_Def_Clause (Result); end Allocate_Attribute_Def_Clause; package Bare_Enum_Rep_Clause_Memos is new Langkit_Support.Packrat (Bare_Enum_Rep_Clause, Token_Index); subtype Subtype_For_Enum_Rep_Clause is Root_Node_Record (Ada_Enum_Rep_Clause); type Access_To_Subtype_For_Enum_Rep_Clause is access all Subtype_For_Enum_Rep_Clause; pragma No_Strict_Aliasing (Access_To_Subtype_For_Enum_Rep_Clause); package Bare_Enum_Rep_Clause_Alloc is new Alloc (Subtype_For_Enum_Rep_Clause, Access_To_Subtype_For_Enum_Rep_Clause); function Allocate_Enum_Rep_Clause (Pool : Bump_Ptr_Pool) return Bare_Enum_Rep_Clause; function Allocate_Enum_Rep_Clause (Pool : Bump_Ptr_Pool) return Bare_Enum_Rep_Clause is Result : constant Access_To_Subtype_For_Enum_Rep_Clause := Bare_Enum_Rep_Clause_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Enum_Rep_Clause; return Bare_Enum_Rep_Clause (Result); end Allocate_Enum_Rep_Clause; package Bare_Record_Rep_Clause_Memos is new Langkit_Support.Packrat (Bare_Record_Rep_Clause, Token_Index); subtype Subtype_For_Record_Rep_Clause is Root_Node_Record (Ada_Record_Rep_Clause); type Access_To_Subtype_For_Record_Rep_Clause is access all Subtype_For_Record_Rep_Clause; pragma No_Strict_Aliasing (Access_To_Subtype_For_Record_Rep_Clause); package Bare_Record_Rep_Clause_Alloc is new Alloc (Subtype_For_Record_Rep_Clause, Access_To_Subtype_For_Record_Rep_Clause); function Allocate_Record_Rep_Clause (Pool : Bump_Ptr_Pool) return Bare_Record_Rep_Clause; function Allocate_Record_Rep_Clause (Pool : Bump_Ptr_Pool) return Bare_Record_Rep_Clause is Result : constant Access_To_Subtype_For_Record_Rep_Clause := Bare_Record_Rep_Clause_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Record_Rep_Clause; return Bare_Record_Rep_Clause (Result); end Allocate_Record_Rep_Clause; package Bare_Aspect_Spec_Memos is new Langkit_Support.Packrat (Bare_Aspect_Spec, Token_Index); subtype Subtype_For_Aspect_Spec is Root_Node_Record (Ada_Aspect_Spec); type Access_To_Subtype_For_Aspect_Spec is access all Subtype_For_Aspect_Spec; pragma No_Strict_Aliasing (Access_To_Subtype_For_Aspect_Spec); package Bare_Aspect_Spec_Alloc is new Alloc (Subtype_For_Aspect_Spec, Access_To_Subtype_For_Aspect_Spec); function Allocate_Aspect_Spec (Pool : Bump_Ptr_Pool) return Bare_Aspect_Spec; function Allocate_Aspect_Spec (Pool : Bump_Ptr_Pool) return Bare_Aspect_Spec is Result : constant Access_To_Subtype_For_Aspect_Spec := Bare_Aspect_Spec_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Aspect_Spec; return Bare_Aspect_Spec (Result); end Allocate_Aspect_Spec; package Bare_Base_Assoc_Memos is new Langkit_Support.Packrat (Bare_Base_Assoc, Token_Index); package Bare_Contract_Case_Assoc_Memos is new Langkit_Support.Packrat (Bare_Contract_Case_Assoc, Token_Index); subtype Subtype_For_Contract_Case_Assoc is Root_Node_Record (Ada_Contract_Case_Assoc); type Access_To_Subtype_For_Contract_Case_Assoc is access all Subtype_For_Contract_Case_Assoc; pragma No_Strict_Aliasing (Access_To_Subtype_For_Contract_Case_Assoc); package Bare_Contract_Case_Assoc_Alloc is new Alloc (Subtype_For_Contract_Case_Assoc, Access_To_Subtype_For_Contract_Case_Assoc); function Allocate_Contract_Case_Assoc (Pool : Bump_Ptr_Pool) return Bare_Contract_Case_Assoc; function Allocate_Contract_Case_Assoc (Pool : Bump_Ptr_Pool) return Bare_Contract_Case_Assoc is Result : constant Access_To_Subtype_For_Contract_Case_Assoc := Bare_Contract_Case_Assoc_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Contract_Case_Assoc; return Bare_Contract_Case_Assoc (Result); end Allocate_Contract_Case_Assoc; package Bare_Pragma_Argument_Assoc_Memos is new Langkit_Support.Packrat (Bare_Pragma_Argument_Assoc, Token_Index); subtype Subtype_For_Pragma_Argument_Assoc is Root_Node_Record (Ada_Pragma_Argument_Assoc); type Access_To_Subtype_For_Pragma_Argument_Assoc is access all Subtype_For_Pragma_Argument_Assoc; pragma No_Strict_Aliasing (Access_To_Subtype_For_Pragma_Argument_Assoc); package Bare_Pragma_Argument_Assoc_Alloc is new Alloc (Subtype_For_Pragma_Argument_Assoc, Access_To_Subtype_For_Pragma_Argument_Assoc); function Allocate_Pragma_Argument_Assoc (Pool : Bump_Ptr_Pool) return Bare_Pragma_Argument_Assoc; function Allocate_Pragma_Argument_Assoc (Pool : Bump_Ptr_Pool) return Bare_Pragma_Argument_Assoc is Result : constant Access_To_Subtype_For_Pragma_Argument_Assoc := Bare_Pragma_Argument_Assoc_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Pragma_Argument_Assoc; return Bare_Pragma_Argument_Assoc (Result); end Allocate_Pragma_Argument_Assoc; package Bare_Base_Formal_Param_Holder_Memos is new Langkit_Support.Packrat (Bare_Base_Formal_Param_Holder, Token_Index); package Bare_Base_Subp_Spec_Memos is new Langkit_Support.Packrat (Bare_Base_Subp_Spec, Token_Index); package Bare_Entry_Spec_Memos is new Langkit_Support.Packrat (Bare_Entry_Spec, Token_Index); subtype Subtype_For_Entry_Spec is Root_Node_Record (Ada_Entry_Spec); type Access_To_Subtype_For_Entry_Spec is access all Subtype_For_Entry_Spec; pragma No_Strict_Aliasing (Access_To_Subtype_For_Entry_Spec); package Bare_Entry_Spec_Alloc is new Alloc (Subtype_For_Entry_Spec, Access_To_Subtype_For_Entry_Spec); function Allocate_Entry_Spec (Pool : Bump_Ptr_Pool) return Bare_Entry_Spec; function Allocate_Entry_Spec (Pool : Bump_Ptr_Pool) return Bare_Entry_Spec is Result : constant Access_To_Subtype_For_Entry_Spec := Bare_Entry_Spec_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Entry_Spec; return Bare_Entry_Spec (Result); end Allocate_Entry_Spec; package Bare_Enum_Subp_Spec_Memos is new Langkit_Support.Packrat (Bare_Enum_Subp_Spec, Token_Index); subtype Subtype_For_Enum_Subp_Spec is Root_Node_Record (Ada_Enum_Subp_Spec); type Access_To_Subtype_For_Enum_Subp_Spec is access all Subtype_For_Enum_Subp_Spec; pragma No_Strict_Aliasing (Access_To_Subtype_For_Enum_Subp_Spec); package Bare_Enum_Subp_Spec_Alloc is new Alloc (Subtype_For_Enum_Subp_Spec, Access_To_Subtype_For_Enum_Subp_Spec); function Allocate_Enum_Subp_Spec (Pool : Bump_Ptr_Pool) return Bare_Enum_Subp_Spec; function Allocate_Enum_Subp_Spec (Pool : Bump_Ptr_Pool) return Bare_Enum_Subp_Spec is Result : constant Access_To_Subtype_For_Enum_Subp_Spec := Bare_Enum_Subp_Spec_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Enum_Subp_Spec; return Bare_Enum_Subp_Spec (Result); end Allocate_Enum_Subp_Spec; package Bare_Subp_Spec_Memos is new Langkit_Support.Packrat (Bare_Subp_Spec, Token_Index); subtype Subtype_For_Subp_Spec is Root_Node_Record (Ada_Subp_Spec); type Access_To_Subtype_For_Subp_Spec is access all Subtype_For_Subp_Spec; pragma No_Strict_Aliasing (Access_To_Subtype_For_Subp_Spec); package Bare_Subp_Spec_Alloc is new Alloc (Subtype_For_Subp_Spec, Access_To_Subtype_For_Subp_Spec); function Allocate_Subp_Spec (Pool : Bump_Ptr_Pool) return Bare_Subp_Spec; function Allocate_Subp_Spec (Pool : Bump_Ptr_Pool) return Bare_Subp_Spec is Result : constant Access_To_Subtype_For_Subp_Spec := Bare_Subp_Spec_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Subp_Spec; return Bare_Subp_Spec (Result); end Allocate_Subp_Spec; package Bare_Synthetic_Binary_Spec_Memos is new Langkit_Support.Packrat (Bare_Synthetic_Binary_Spec, Token_Index); subtype Subtype_For_Synthetic_Binary_Spec is Root_Node_Record (Ada_Synthetic_Binary_Spec); type Access_To_Subtype_For_Synthetic_Binary_Spec is access all Subtype_For_Synthetic_Binary_Spec; pragma No_Strict_Aliasing (Access_To_Subtype_For_Synthetic_Binary_Spec); package Bare_Synthetic_Binary_Spec_Alloc is new Alloc (Subtype_For_Synthetic_Binary_Spec, Access_To_Subtype_For_Synthetic_Binary_Spec); function Allocate_Synthetic_Binary_Spec (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Binary_Spec; function Allocate_Synthetic_Binary_Spec (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Binary_Spec is Result : constant Access_To_Subtype_For_Synthetic_Binary_Spec := Bare_Synthetic_Binary_Spec_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Synthetic_Binary_Spec; return Bare_Synthetic_Binary_Spec (Result); end Allocate_Synthetic_Binary_Spec; package Bare_Synthetic_Unary_Spec_Memos is new Langkit_Support.Packrat (Bare_Synthetic_Unary_Spec, Token_Index); subtype Subtype_For_Synthetic_Unary_Spec is Root_Node_Record (Ada_Synthetic_Unary_Spec); type Access_To_Subtype_For_Synthetic_Unary_Spec is access all Subtype_For_Synthetic_Unary_Spec; pragma No_Strict_Aliasing (Access_To_Subtype_For_Synthetic_Unary_Spec); package Bare_Synthetic_Unary_Spec_Alloc is new Alloc (Subtype_For_Synthetic_Unary_Spec, Access_To_Subtype_For_Synthetic_Unary_Spec); function Allocate_Synthetic_Unary_Spec (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Unary_Spec; function Allocate_Synthetic_Unary_Spec (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Unary_Spec is Result : constant Access_To_Subtype_For_Synthetic_Unary_Spec := Bare_Synthetic_Unary_Spec_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Synthetic_Unary_Spec; return Bare_Synthetic_Unary_Spec (Result); end Allocate_Synthetic_Unary_Spec; package Bare_Component_List_Memos is new Langkit_Support.Packrat (Bare_Component_List, Token_Index); subtype Subtype_For_Component_List is Root_Node_Record (Ada_Component_List); type Access_To_Subtype_For_Component_List is access all Subtype_For_Component_List; pragma No_Strict_Aliasing (Access_To_Subtype_For_Component_List); package Bare_Component_List_Alloc is new Alloc (Subtype_For_Component_List, Access_To_Subtype_For_Component_List); function Allocate_Component_List (Pool : Bump_Ptr_Pool) return Bare_Component_List; function Allocate_Component_List (Pool : Bump_Ptr_Pool) return Bare_Component_List is Result : constant Access_To_Subtype_For_Component_List := Bare_Component_List_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Component_List; return Bare_Component_List (Result); end Allocate_Component_List; package Bare_Discriminant_Part_Memos is new Langkit_Support.Packrat (Bare_Discriminant_Part, Token_Index); package Bare_Known_Discriminant_Part_Memos is new Langkit_Support.Packrat (Bare_Known_Discriminant_Part, Token_Index); subtype Subtype_For_Known_Discriminant_Part is Root_Node_Record (Ada_Known_Discriminant_Part); type Access_To_Subtype_For_Known_Discriminant_Part is access all Subtype_For_Known_Discriminant_Part; pragma No_Strict_Aliasing (Access_To_Subtype_For_Known_Discriminant_Part); package Bare_Known_Discriminant_Part_Alloc is new Alloc (Subtype_For_Known_Discriminant_Part, Access_To_Subtype_For_Known_Discriminant_Part); function Allocate_Known_Discriminant_Part (Pool : Bump_Ptr_Pool) return Bare_Known_Discriminant_Part; function Allocate_Known_Discriminant_Part (Pool : Bump_Ptr_Pool) return Bare_Known_Discriminant_Part is Result : constant Access_To_Subtype_For_Known_Discriminant_Part := Bare_Known_Discriminant_Part_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Known_Discriminant_Part; return Bare_Known_Discriminant_Part (Result); end Allocate_Known_Discriminant_Part; package Bare_Unknown_Discriminant_Part_Memos is new Langkit_Support.Packrat (Bare_Unknown_Discriminant_Part, Token_Index); subtype Subtype_For_Unknown_Discriminant_Part is Root_Node_Record (Ada_Unknown_Discriminant_Part); type Access_To_Subtype_For_Unknown_Discriminant_Part is access all Subtype_For_Unknown_Discriminant_Part; pragma No_Strict_Aliasing (Access_To_Subtype_For_Unknown_Discriminant_Part); package Bare_Unknown_Discriminant_Part_Alloc is new Alloc (Subtype_For_Unknown_Discriminant_Part, Access_To_Subtype_For_Unknown_Discriminant_Part); function Allocate_Unknown_Discriminant_Part (Pool : Bump_Ptr_Pool) return Bare_Unknown_Discriminant_Part; function Allocate_Unknown_Discriminant_Part (Pool : Bump_Ptr_Pool) return Bare_Unknown_Discriminant_Part is Result : constant Access_To_Subtype_For_Unknown_Discriminant_Part := Bare_Unknown_Discriminant_Part_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Unknown_Discriminant_Part; return Bare_Unknown_Discriminant_Part (Result); end Allocate_Unknown_Discriminant_Part; package Bare_Entry_Completion_Formal_Params_Memos is new Langkit_Support.Packrat (Bare_Entry_Completion_Formal_Params, Token_Index); subtype Subtype_For_Entry_Completion_Formal_Params is Root_Node_Record (Ada_Entry_Completion_Formal_Params); type Access_To_Subtype_For_Entry_Completion_Formal_Params is access all Subtype_For_Entry_Completion_Formal_Params; pragma No_Strict_Aliasing (Access_To_Subtype_For_Entry_Completion_Formal_Params); package Bare_Entry_Completion_Formal_Params_Alloc is new Alloc (Subtype_For_Entry_Completion_Formal_Params, Access_To_Subtype_For_Entry_Completion_Formal_Params); function Allocate_Entry_Completion_Formal_Params (Pool : Bump_Ptr_Pool) return Bare_Entry_Completion_Formal_Params; function Allocate_Entry_Completion_Formal_Params (Pool : Bump_Ptr_Pool) return Bare_Entry_Completion_Formal_Params is Result : constant Access_To_Subtype_For_Entry_Completion_Formal_Params := Bare_Entry_Completion_Formal_Params_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Entry_Completion_Formal_Params; return Bare_Entry_Completion_Formal_Params (Result); end Allocate_Entry_Completion_Formal_Params; package Bare_Generic_Formal_Part_Memos is new Langkit_Support.Packrat (Bare_Generic_Formal_Part, Token_Index); subtype Subtype_For_Generic_Formal_Part is Root_Node_Record (Ada_Generic_Formal_Part); type Access_To_Subtype_For_Generic_Formal_Part is access all Subtype_For_Generic_Formal_Part; pragma No_Strict_Aliasing (Access_To_Subtype_For_Generic_Formal_Part); package Bare_Generic_Formal_Part_Alloc is new Alloc (Subtype_For_Generic_Formal_Part, Access_To_Subtype_For_Generic_Formal_Part); function Allocate_Generic_Formal_Part (Pool : Bump_Ptr_Pool) return Bare_Generic_Formal_Part; function Allocate_Generic_Formal_Part (Pool : Bump_Ptr_Pool) return Bare_Generic_Formal_Part is Result : constant Access_To_Subtype_For_Generic_Formal_Part := Bare_Generic_Formal_Part_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Generic_Formal_Part; return Bare_Generic_Formal_Part (Result); end Allocate_Generic_Formal_Part; package Bare_Base_Record_Def_Memos is new Langkit_Support.Packrat (Bare_Base_Record_Def, Token_Index); package Bare_Null_Record_Def_Memos is new Langkit_Support.Packrat (Bare_Null_Record_Def, Token_Index); subtype Subtype_For_Null_Record_Def is Root_Node_Record (Ada_Null_Record_Def); type Access_To_Subtype_For_Null_Record_Def is access all Subtype_For_Null_Record_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Null_Record_Def); package Bare_Null_Record_Def_Alloc is new Alloc (Subtype_For_Null_Record_Def, Access_To_Subtype_For_Null_Record_Def); function Allocate_Null_Record_Def (Pool : Bump_Ptr_Pool) return Bare_Null_Record_Def; function Allocate_Null_Record_Def (Pool : Bump_Ptr_Pool) return Bare_Null_Record_Def is Result : constant Access_To_Subtype_For_Null_Record_Def := Bare_Null_Record_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Null_Record_Def; return Bare_Null_Record_Def (Result); end Allocate_Null_Record_Def; package Bare_Record_Def_Memos is new Langkit_Support.Packrat (Bare_Record_Def, Token_Index); subtype Subtype_For_Record_Def is Root_Node_Record (Ada_Record_Def); type Access_To_Subtype_For_Record_Def is access all Subtype_For_Record_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Record_Def); package Bare_Record_Def_Alloc is new Alloc (Subtype_For_Record_Def, Access_To_Subtype_For_Record_Def); function Allocate_Record_Def (Pool : Bump_Ptr_Pool) return Bare_Record_Def; function Allocate_Record_Def (Pool : Bump_Ptr_Pool) return Bare_Record_Def is Result : constant Access_To_Subtype_For_Record_Def := Bare_Record_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Record_Def; return Bare_Record_Def (Result); end Allocate_Record_Def; package Bare_Basic_Assoc_Memos is new Langkit_Support.Packrat (Bare_Basic_Assoc, Token_Index); package Bare_Aggregate_Assoc_Memos is new Langkit_Support.Packrat (Bare_Aggregate_Assoc, Token_Index); subtype Subtype_For_Aggregate_Assoc is Root_Node_Record (Ada_Aggregate_Assoc); type Access_To_Subtype_For_Aggregate_Assoc is access all Subtype_For_Aggregate_Assoc; pragma No_Strict_Aliasing (Access_To_Subtype_For_Aggregate_Assoc); package Bare_Aggregate_Assoc_Alloc is new Alloc (Subtype_For_Aggregate_Assoc, Access_To_Subtype_For_Aggregate_Assoc); function Allocate_Aggregate_Assoc (Pool : Bump_Ptr_Pool) return Bare_Aggregate_Assoc; function Allocate_Aggregate_Assoc (Pool : Bump_Ptr_Pool) return Bare_Aggregate_Assoc is Result : constant Access_To_Subtype_For_Aggregate_Assoc := Bare_Aggregate_Assoc_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Aggregate_Assoc; return Bare_Aggregate_Assoc (Result); end Allocate_Aggregate_Assoc; package Bare_Multi_Dim_Array_Assoc_Memos is new Langkit_Support.Packrat (Bare_Multi_Dim_Array_Assoc, Token_Index); subtype Subtype_For_Multi_Dim_Array_Assoc is Root_Node_Record (Ada_Multi_Dim_Array_Assoc); type Access_To_Subtype_For_Multi_Dim_Array_Assoc is access all Subtype_For_Multi_Dim_Array_Assoc; pragma No_Strict_Aliasing (Access_To_Subtype_For_Multi_Dim_Array_Assoc); package Bare_Multi_Dim_Array_Assoc_Alloc is new Alloc (Subtype_For_Multi_Dim_Array_Assoc, Access_To_Subtype_For_Multi_Dim_Array_Assoc); function Allocate_Multi_Dim_Array_Assoc (Pool : Bump_Ptr_Pool) return Bare_Multi_Dim_Array_Assoc; function Allocate_Multi_Dim_Array_Assoc (Pool : Bump_Ptr_Pool) return Bare_Multi_Dim_Array_Assoc is Result : constant Access_To_Subtype_For_Multi_Dim_Array_Assoc := Bare_Multi_Dim_Array_Assoc_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Multi_Dim_Array_Assoc; return Bare_Multi_Dim_Array_Assoc (Result); end Allocate_Multi_Dim_Array_Assoc; package Bare_Composite_Constraint_Assoc_Memos is new Langkit_Support.Packrat (Bare_Composite_Constraint_Assoc, Token_Index); subtype Subtype_For_Composite_Constraint_Assoc is Root_Node_Record (Ada_Composite_Constraint_Assoc); type Access_To_Subtype_For_Composite_Constraint_Assoc is access all Subtype_For_Composite_Constraint_Assoc; pragma No_Strict_Aliasing (Access_To_Subtype_For_Composite_Constraint_Assoc); package Bare_Composite_Constraint_Assoc_Alloc is new Alloc (Subtype_For_Composite_Constraint_Assoc, Access_To_Subtype_For_Composite_Constraint_Assoc); function Allocate_Composite_Constraint_Assoc (Pool : Bump_Ptr_Pool) return Bare_Composite_Constraint_Assoc; function Allocate_Composite_Constraint_Assoc (Pool : Bump_Ptr_Pool) return Bare_Composite_Constraint_Assoc is Result : constant Access_To_Subtype_For_Composite_Constraint_Assoc := Bare_Composite_Constraint_Assoc_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Composite_Constraint_Assoc; return Bare_Composite_Constraint_Assoc (Result); end Allocate_Composite_Constraint_Assoc; package Bare_Iterated_Assoc_Memos is new Langkit_Support.Packrat (Bare_Iterated_Assoc, Token_Index); subtype Subtype_For_Iterated_Assoc is Root_Node_Record (Ada_Iterated_Assoc); type Access_To_Subtype_For_Iterated_Assoc is access all Subtype_For_Iterated_Assoc; pragma No_Strict_Aliasing (Access_To_Subtype_For_Iterated_Assoc); package Bare_Iterated_Assoc_Alloc is new Alloc (Subtype_For_Iterated_Assoc, Access_To_Subtype_For_Iterated_Assoc); function Allocate_Iterated_Assoc (Pool : Bump_Ptr_Pool) return Bare_Iterated_Assoc; function Allocate_Iterated_Assoc (Pool : Bump_Ptr_Pool) return Bare_Iterated_Assoc is Result : constant Access_To_Subtype_For_Iterated_Assoc := Bare_Iterated_Assoc_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Iterated_Assoc; return Bare_Iterated_Assoc (Result); end Allocate_Iterated_Assoc; package Bare_Param_Assoc_Memos is new Langkit_Support.Packrat (Bare_Param_Assoc, Token_Index); subtype Subtype_For_Param_Assoc is Root_Node_Record (Ada_Param_Assoc); type Access_To_Subtype_For_Param_Assoc is access all Subtype_For_Param_Assoc; pragma No_Strict_Aliasing (Access_To_Subtype_For_Param_Assoc); package Bare_Param_Assoc_Alloc is new Alloc (Subtype_For_Param_Assoc, Access_To_Subtype_For_Param_Assoc); function Allocate_Param_Assoc (Pool : Bump_Ptr_Pool) return Bare_Param_Assoc; function Allocate_Param_Assoc (Pool : Bump_Ptr_Pool) return Bare_Param_Assoc is Result : constant Access_To_Subtype_For_Param_Assoc := Bare_Param_Assoc_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Param_Assoc; return Bare_Param_Assoc (Result); end Allocate_Param_Assoc; package Bare_Basic_Decl_Memos is new Langkit_Support.Packrat (Bare_Basic_Decl, Token_Index); package Bare_Abstract_State_Decl_Memos is new Langkit_Support.Packrat (Bare_Abstract_State_Decl, Token_Index); subtype Subtype_For_Abstract_State_Decl is Root_Node_Record (Ada_Abstract_State_Decl); type Access_To_Subtype_For_Abstract_State_Decl is access all Subtype_For_Abstract_State_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Abstract_State_Decl); package Bare_Abstract_State_Decl_Alloc is new Alloc (Subtype_For_Abstract_State_Decl, Access_To_Subtype_For_Abstract_State_Decl); function Allocate_Abstract_State_Decl (Pool : Bump_Ptr_Pool) return Bare_Abstract_State_Decl; function Allocate_Abstract_State_Decl (Pool : Bump_Ptr_Pool) return Bare_Abstract_State_Decl is Result : constant Access_To_Subtype_For_Abstract_State_Decl := Bare_Abstract_State_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Abstract_State_Decl; return Bare_Abstract_State_Decl (Result); end Allocate_Abstract_State_Decl; package Bare_Anonymous_Expr_Decl_Memos is new Langkit_Support.Packrat (Bare_Anonymous_Expr_Decl, Token_Index); subtype Subtype_For_Anonymous_Expr_Decl is Root_Node_Record (Ada_Anonymous_Expr_Decl); type Access_To_Subtype_For_Anonymous_Expr_Decl is access all Subtype_For_Anonymous_Expr_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Anonymous_Expr_Decl); package Bare_Anonymous_Expr_Decl_Alloc is new Alloc (Subtype_For_Anonymous_Expr_Decl, Access_To_Subtype_For_Anonymous_Expr_Decl); function Allocate_Anonymous_Expr_Decl (Pool : Bump_Ptr_Pool) return Bare_Anonymous_Expr_Decl; function Allocate_Anonymous_Expr_Decl (Pool : Bump_Ptr_Pool) return Bare_Anonymous_Expr_Decl is Result : constant Access_To_Subtype_For_Anonymous_Expr_Decl := Bare_Anonymous_Expr_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Anonymous_Expr_Decl; return Bare_Anonymous_Expr_Decl (Result); end Allocate_Anonymous_Expr_Decl; package Bare_Base_Formal_Param_Decl_Memos is new Langkit_Support.Packrat (Bare_Base_Formal_Param_Decl, Token_Index); package Bare_Component_Decl_Memos is new Langkit_Support.Packrat (Bare_Component_Decl, Token_Index); subtype Subtype_For_Component_Decl is Root_Node_Record (Ada_Component_Decl); type Access_To_Subtype_For_Component_Decl is access all Subtype_For_Component_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Component_Decl); package Bare_Component_Decl_Alloc is new Alloc (Subtype_For_Component_Decl, Access_To_Subtype_For_Component_Decl); function Allocate_Component_Decl (Pool : Bump_Ptr_Pool) return Bare_Component_Decl; function Allocate_Component_Decl (Pool : Bump_Ptr_Pool) return Bare_Component_Decl is Result : constant Access_To_Subtype_For_Component_Decl := Bare_Component_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Component_Decl; return Bare_Component_Decl (Result); end Allocate_Component_Decl; package Bare_Discriminant_Spec_Memos is new Langkit_Support.Packrat (Bare_Discriminant_Spec, Token_Index); subtype Subtype_For_Discriminant_Spec is Root_Node_Record (Ada_Discriminant_Spec); type Access_To_Subtype_For_Discriminant_Spec is access all Subtype_For_Discriminant_Spec; pragma No_Strict_Aliasing (Access_To_Subtype_For_Discriminant_Spec); package Bare_Discriminant_Spec_Alloc is new Alloc (Subtype_For_Discriminant_Spec, Access_To_Subtype_For_Discriminant_Spec); function Allocate_Discriminant_Spec (Pool : Bump_Ptr_Pool) return Bare_Discriminant_Spec; function Allocate_Discriminant_Spec (Pool : Bump_Ptr_Pool) return Bare_Discriminant_Spec is Result : constant Access_To_Subtype_For_Discriminant_Spec := Bare_Discriminant_Spec_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Discriminant_Spec; return Bare_Discriminant_Spec (Result); end Allocate_Discriminant_Spec; package Bare_Generic_Formal_Memos is new Langkit_Support.Packrat (Bare_Generic_Formal, Token_Index); package Bare_Generic_Formal_Obj_Decl_Memos is new Langkit_Support.Packrat (Bare_Generic_Formal_Obj_Decl, Token_Index); subtype Subtype_For_Generic_Formal_Obj_Decl is Root_Node_Record (Ada_Generic_Formal_Obj_Decl); type Access_To_Subtype_For_Generic_Formal_Obj_Decl is access all Subtype_For_Generic_Formal_Obj_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Generic_Formal_Obj_Decl); package Bare_Generic_Formal_Obj_Decl_Alloc is new Alloc (Subtype_For_Generic_Formal_Obj_Decl, Access_To_Subtype_For_Generic_Formal_Obj_Decl); function Allocate_Generic_Formal_Obj_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Formal_Obj_Decl; function Allocate_Generic_Formal_Obj_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Formal_Obj_Decl is Result : constant Access_To_Subtype_For_Generic_Formal_Obj_Decl := Bare_Generic_Formal_Obj_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Generic_Formal_Obj_Decl; return Bare_Generic_Formal_Obj_Decl (Result); end Allocate_Generic_Formal_Obj_Decl; package Bare_Generic_Formal_Package_Memos is new Langkit_Support.Packrat (Bare_Generic_Formal_Package, Token_Index); subtype Subtype_For_Generic_Formal_Package is Root_Node_Record (Ada_Generic_Formal_Package); type Access_To_Subtype_For_Generic_Formal_Package is access all Subtype_For_Generic_Formal_Package; pragma No_Strict_Aliasing (Access_To_Subtype_For_Generic_Formal_Package); package Bare_Generic_Formal_Package_Alloc is new Alloc (Subtype_For_Generic_Formal_Package, Access_To_Subtype_For_Generic_Formal_Package); function Allocate_Generic_Formal_Package (Pool : Bump_Ptr_Pool) return Bare_Generic_Formal_Package; function Allocate_Generic_Formal_Package (Pool : Bump_Ptr_Pool) return Bare_Generic_Formal_Package is Result : constant Access_To_Subtype_For_Generic_Formal_Package := Bare_Generic_Formal_Package_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Generic_Formal_Package; return Bare_Generic_Formal_Package (Result); end Allocate_Generic_Formal_Package; package Bare_Generic_Formal_Subp_Decl_Memos is new Langkit_Support.Packrat (Bare_Generic_Formal_Subp_Decl, Token_Index); subtype Subtype_For_Generic_Formal_Subp_Decl is Root_Node_Record (Ada_Generic_Formal_Subp_Decl); type Access_To_Subtype_For_Generic_Formal_Subp_Decl is access all Subtype_For_Generic_Formal_Subp_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Generic_Formal_Subp_Decl); package Bare_Generic_Formal_Subp_Decl_Alloc is new Alloc (Subtype_For_Generic_Formal_Subp_Decl, Access_To_Subtype_For_Generic_Formal_Subp_Decl); function Allocate_Generic_Formal_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Formal_Subp_Decl; function Allocate_Generic_Formal_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Formal_Subp_Decl is Result : constant Access_To_Subtype_For_Generic_Formal_Subp_Decl := Bare_Generic_Formal_Subp_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Generic_Formal_Subp_Decl; return Bare_Generic_Formal_Subp_Decl (Result); end Allocate_Generic_Formal_Subp_Decl; package Bare_Generic_Formal_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Generic_Formal_Type_Decl, Token_Index); subtype Subtype_For_Generic_Formal_Type_Decl is Root_Node_Record (Ada_Generic_Formal_Type_Decl); type Access_To_Subtype_For_Generic_Formal_Type_Decl is access all Subtype_For_Generic_Formal_Type_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Generic_Formal_Type_Decl); package Bare_Generic_Formal_Type_Decl_Alloc is new Alloc (Subtype_For_Generic_Formal_Type_Decl, Access_To_Subtype_For_Generic_Formal_Type_Decl); function Allocate_Generic_Formal_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Formal_Type_Decl; function Allocate_Generic_Formal_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Formal_Type_Decl is Result : constant Access_To_Subtype_For_Generic_Formal_Type_Decl := Bare_Generic_Formal_Type_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Generic_Formal_Type_Decl; return Bare_Generic_Formal_Type_Decl (Result); end Allocate_Generic_Formal_Type_Decl; package Bare_Param_Spec_Memos is new Langkit_Support.Packrat (Bare_Param_Spec, Token_Index); subtype Subtype_For_Param_Spec is Root_Node_Record (Ada_Param_Spec); type Access_To_Subtype_For_Param_Spec is access all Subtype_For_Param_Spec; pragma No_Strict_Aliasing (Access_To_Subtype_For_Param_Spec); package Bare_Param_Spec_Alloc is new Alloc (Subtype_For_Param_Spec, Access_To_Subtype_For_Param_Spec); function Allocate_Param_Spec (Pool : Bump_Ptr_Pool) return Bare_Param_Spec; function Allocate_Param_Spec (Pool : Bump_Ptr_Pool) return Bare_Param_Spec is Result : constant Access_To_Subtype_For_Param_Spec := Bare_Param_Spec_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Param_Spec; return Bare_Param_Spec (Result); end Allocate_Param_Spec; package Bare_Synthetic_Formal_Param_Decl_Memos is new Langkit_Support.Packrat (Bare_Synthetic_Formal_Param_Decl, Token_Index); subtype Subtype_For_Synthetic_Formal_Param_Decl is Root_Node_Record (Ada_Synthetic_Formal_Param_Decl); type Access_To_Subtype_For_Synthetic_Formal_Param_Decl is access all Subtype_For_Synthetic_Formal_Param_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Synthetic_Formal_Param_Decl); package Bare_Synthetic_Formal_Param_Decl_Alloc is new Alloc (Subtype_For_Synthetic_Formal_Param_Decl, Access_To_Subtype_For_Synthetic_Formal_Param_Decl); function Allocate_Synthetic_Formal_Param_Decl (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Formal_Param_Decl; function Allocate_Synthetic_Formal_Param_Decl (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Formal_Param_Decl is Result : constant Access_To_Subtype_For_Synthetic_Formal_Param_Decl := Bare_Synthetic_Formal_Param_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Synthetic_Formal_Param_Decl; return Bare_Synthetic_Formal_Param_Decl (Result); end Allocate_Synthetic_Formal_Param_Decl; package Bare_Base_Package_Decl_Memos is new Langkit_Support.Packrat (Bare_Base_Package_Decl, Token_Index); package Bare_Generic_Package_Internal_Memos is new Langkit_Support.Packrat (Bare_Generic_Package_Internal, Token_Index); subtype Subtype_For_Generic_Package_Internal is Root_Node_Record (Ada_Generic_Package_Internal); type Access_To_Subtype_For_Generic_Package_Internal is access all Subtype_For_Generic_Package_Internal; pragma No_Strict_Aliasing (Access_To_Subtype_For_Generic_Package_Internal); package Bare_Generic_Package_Internal_Alloc is new Alloc (Subtype_For_Generic_Package_Internal, Access_To_Subtype_For_Generic_Package_Internal); function Allocate_Generic_Package_Internal (Pool : Bump_Ptr_Pool) return Bare_Generic_Package_Internal; function Allocate_Generic_Package_Internal (Pool : Bump_Ptr_Pool) return Bare_Generic_Package_Internal is Result : constant Access_To_Subtype_For_Generic_Package_Internal := Bare_Generic_Package_Internal_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Generic_Package_Internal; return Bare_Generic_Package_Internal (Result); end Allocate_Generic_Package_Internal; package Bare_Package_Decl_Memos is new Langkit_Support.Packrat (Bare_Package_Decl, Token_Index); subtype Subtype_For_Package_Decl is Root_Node_Record (Ada_Package_Decl); type Access_To_Subtype_For_Package_Decl is access all Subtype_For_Package_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Package_Decl); package Bare_Package_Decl_Alloc is new Alloc (Subtype_For_Package_Decl, Access_To_Subtype_For_Package_Decl); function Allocate_Package_Decl (Pool : Bump_Ptr_Pool) return Bare_Package_Decl; function Allocate_Package_Decl (Pool : Bump_Ptr_Pool) return Bare_Package_Decl is Result : constant Access_To_Subtype_For_Package_Decl := Bare_Package_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Package_Decl; return Bare_Package_Decl (Result); end Allocate_Package_Decl; package Bare_Base_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Base_Type_Decl, Token_Index); package Bare_Base_Subtype_Decl_Memos is new Langkit_Support.Packrat (Bare_Base_Subtype_Decl, Token_Index); package Bare_Discrete_Base_Subtype_Decl_Memos is new Langkit_Support.Packrat (Bare_Discrete_Base_Subtype_Decl, Token_Index); subtype Subtype_For_Discrete_Base_Subtype_Decl is Root_Node_Record (Ada_Discrete_Base_Subtype_Decl); type Access_To_Subtype_For_Discrete_Base_Subtype_Decl is access all Subtype_For_Discrete_Base_Subtype_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Discrete_Base_Subtype_Decl); package Bare_Discrete_Base_Subtype_Decl_Alloc is new Alloc (Subtype_For_Discrete_Base_Subtype_Decl, Access_To_Subtype_For_Discrete_Base_Subtype_Decl); function Allocate_Discrete_Base_Subtype_Decl (Pool : Bump_Ptr_Pool) return Bare_Discrete_Base_Subtype_Decl; function Allocate_Discrete_Base_Subtype_Decl (Pool : Bump_Ptr_Pool) return Bare_Discrete_Base_Subtype_Decl is Result : constant Access_To_Subtype_For_Discrete_Base_Subtype_Decl := Bare_Discrete_Base_Subtype_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Discrete_Base_Subtype_Decl; return Bare_Discrete_Base_Subtype_Decl (Result); end Allocate_Discrete_Base_Subtype_Decl; package Bare_Subtype_Decl_Memos is new Langkit_Support.Packrat (Bare_Subtype_Decl, Token_Index); subtype Subtype_For_Subtype_Decl is Root_Node_Record (Ada_Subtype_Decl); type Access_To_Subtype_For_Subtype_Decl is access all Subtype_For_Subtype_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Subtype_Decl); package Bare_Subtype_Decl_Alloc is new Alloc (Subtype_For_Subtype_Decl, Access_To_Subtype_For_Subtype_Decl); function Allocate_Subtype_Decl (Pool : Bump_Ptr_Pool) return Bare_Subtype_Decl; function Allocate_Subtype_Decl (Pool : Bump_Ptr_Pool) return Bare_Subtype_Decl is Result : constant Access_To_Subtype_For_Subtype_Decl := Bare_Subtype_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Subtype_Decl; return Bare_Subtype_Decl (Result); end Allocate_Subtype_Decl; package Bare_Classwide_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Classwide_Type_Decl, Token_Index); subtype Subtype_For_Classwide_Type_Decl is Root_Node_Record (Ada_Classwide_Type_Decl); type Access_To_Subtype_For_Classwide_Type_Decl is access all Subtype_For_Classwide_Type_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Classwide_Type_Decl); package Bare_Classwide_Type_Decl_Alloc is new Alloc (Subtype_For_Classwide_Type_Decl, Access_To_Subtype_For_Classwide_Type_Decl); function Allocate_Classwide_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Classwide_Type_Decl; function Allocate_Classwide_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Classwide_Type_Decl is Result : constant Access_To_Subtype_For_Classwide_Type_Decl := Bare_Classwide_Type_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Classwide_Type_Decl; return Bare_Classwide_Type_Decl (Result); end Allocate_Classwide_Type_Decl; package Bare_Incomplete_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Incomplete_Type_Decl, Token_Index); subtype Subtype_For_Incomplete_Type_Decl is Root_Node_Record (Ada_Incomplete_Type_Decl); type Access_To_Subtype_For_Incomplete_Type_Decl is access all Subtype_For_Incomplete_Type_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Incomplete_Type_Decl); package Bare_Incomplete_Type_Decl_Alloc is new Alloc (Subtype_For_Incomplete_Type_Decl, Access_To_Subtype_For_Incomplete_Type_Decl); function Allocate_Incomplete_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Incomplete_Type_Decl; function Allocate_Incomplete_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Incomplete_Type_Decl is Result : constant Access_To_Subtype_For_Incomplete_Type_Decl := Bare_Incomplete_Type_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Incomplete_Type_Decl; return Bare_Incomplete_Type_Decl (Result); end Allocate_Incomplete_Type_Decl; package Bare_Incomplete_Formal_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Incomplete_Formal_Type_Decl, Token_Index); subtype Subtype_For_Incomplete_Formal_Type_Decl is Root_Node_Record (Ada_Incomplete_Formal_Type_Decl); type Access_To_Subtype_For_Incomplete_Formal_Type_Decl is access all Subtype_For_Incomplete_Formal_Type_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Incomplete_Formal_Type_Decl); package Bare_Incomplete_Formal_Type_Decl_Alloc is new Alloc (Subtype_For_Incomplete_Formal_Type_Decl, Access_To_Subtype_For_Incomplete_Formal_Type_Decl); function Allocate_Incomplete_Formal_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Incomplete_Formal_Type_Decl; function Allocate_Incomplete_Formal_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Incomplete_Formal_Type_Decl is Result : constant Access_To_Subtype_For_Incomplete_Formal_Type_Decl := Bare_Incomplete_Formal_Type_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Incomplete_Formal_Type_Decl; return Bare_Incomplete_Formal_Type_Decl (Result); end Allocate_Incomplete_Formal_Type_Decl; package Bare_Incomplete_Tagged_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Incomplete_Tagged_Type_Decl, Token_Index); subtype Subtype_For_Incomplete_Tagged_Type_Decl is Root_Node_Record (Ada_Incomplete_Tagged_Type_Decl); type Access_To_Subtype_For_Incomplete_Tagged_Type_Decl is access all Subtype_For_Incomplete_Tagged_Type_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Incomplete_Tagged_Type_Decl); package Bare_Incomplete_Tagged_Type_Decl_Alloc is new Alloc (Subtype_For_Incomplete_Tagged_Type_Decl, Access_To_Subtype_For_Incomplete_Tagged_Type_Decl); function Allocate_Incomplete_Tagged_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Incomplete_Tagged_Type_Decl; function Allocate_Incomplete_Tagged_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Incomplete_Tagged_Type_Decl is Result : constant Access_To_Subtype_For_Incomplete_Tagged_Type_Decl := Bare_Incomplete_Tagged_Type_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Incomplete_Tagged_Type_Decl; return Bare_Incomplete_Tagged_Type_Decl (Result); end Allocate_Incomplete_Tagged_Type_Decl; package Bare_Protected_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Protected_Type_Decl, Token_Index); subtype Subtype_For_Protected_Type_Decl is Root_Node_Record (Ada_Protected_Type_Decl); type Access_To_Subtype_For_Protected_Type_Decl is access all Subtype_For_Protected_Type_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Protected_Type_Decl); package Bare_Protected_Type_Decl_Alloc is new Alloc (Subtype_For_Protected_Type_Decl, Access_To_Subtype_For_Protected_Type_Decl); function Allocate_Protected_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Protected_Type_Decl; function Allocate_Protected_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Protected_Type_Decl is Result : constant Access_To_Subtype_For_Protected_Type_Decl := Bare_Protected_Type_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Protected_Type_Decl; return Bare_Protected_Type_Decl (Result); end Allocate_Protected_Type_Decl; package Bare_Task_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Task_Type_Decl, Token_Index); subtype Subtype_For_Task_Type_Decl is Root_Node_Record (Ada_Task_Type_Decl); type Access_To_Subtype_For_Task_Type_Decl is access all Subtype_For_Task_Type_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Task_Type_Decl); package Bare_Task_Type_Decl_Alloc is new Alloc (Subtype_For_Task_Type_Decl, Access_To_Subtype_For_Task_Type_Decl); function Allocate_Task_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Task_Type_Decl; function Allocate_Task_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Task_Type_Decl is Result : constant Access_To_Subtype_For_Task_Type_Decl := Bare_Task_Type_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Task_Type_Decl; return Bare_Task_Type_Decl (Result); end Allocate_Task_Type_Decl; package Bare_Single_Task_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Single_Task_Type_Decl, Token_Index); subtype Subtype_For_Single_Task_Type_Decl is Root_Node_Record (Ada_Single_Task_Type_Decl); type Access_To_Subtype_For_Single_Task_Type_Decl is access all Subtype_For_Single_Task_Type_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Single_Task_Type_Decl); package Bare_Single_Task_Type_Decl_Alloc is new Alloc (Subtype_For_Single_Task_Type_Decl, Access_To_Subtype_For_Single_Task_Type_Decl); function Allocate_Single_Task_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Single_Task_Type_Decl; function Allocate_Single_Task_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Single_Task_Type_Decl is Result : constant Access_To_Subtype_For_Single_Task_Type_Decl := Bare_Single_Task_Type_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Single_Task_Type_Decl; return Bare_Single_Task_Type_Decl (Result); end Allocate_Single_Task_Type_Decl; package Bare_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Type_Decl, Token_Index); package Bare_Anonymous_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Anonymous_Type_Decl, Token_Index); subtype Subtype_For_Anonymous_Type_Decl is Root_Node_Record (Ada_Anonymous_Type_Decl); type Access_To_Subtype_For_Anonymous_Type_Decl is access all Subtype_For_Anonymous_Type_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Anonymous_Type_Decl); package Bare_Anonymous_Type_Decl_Alloc is new Alloc (Subtype_For_Anonymous_Type_Decl, Access_To_Subtype_For_Anonymous_Type_Decl); function Allocate_Anonymous_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Anonymous_Type_Decl; function Allocate_Anonymous_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Anonymous_Type_Decl is Result : constant Access_To_Subtype_For_Anonymous_Type_Decl := Bare_Anonymous_Type_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Anonymous_Type_Decl; return Bare_Anonymous_Type_Decl (Result); end Allocate_Anonymous_Type_Decl; package Bare_Synth_Anonymous_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Synth_Anonymous_Type_Decl, Token_Index); subtype Subtype_For_Synth_Anonymous_Type_Decl is Root_Node_Record (Ada_Synth_Anonymous_Type_Decl); type Access_To_Subtype_For_Synth_Anonymous_Type_Decl is access all Subtype_For_Synth_Anonymous_Type_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Synth_Anonymous_Type_Decl); package Bare_Synth_Anonymous_Type_Decl_Alloc is new Alloc (Subtype_For_Synth_Anonymous_Type_Decl, Access_To_Subtype_For_Synth_Anonymous_Type_Decl); function Allocate_Synth_Anonymous_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Synth_Anonymous_Type_Decl; function Allocate_Synth_Anonymous_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Synth_Anonymous_Type_Decl is Result : constant Access_To_Subtype_For_Synth_Anonymous_Type_Decl := Bare_Synth_Anonymous_Type_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Synth_Anonymous_Type_Decl; return Bare_Synth_Anonymous_Type_Decl (Result); end Allocate_Synth_Anonymous_Type_Decl; package Bare_Concrete_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Concrete_Type_Decl, Token_Index); subtype Subtype_For_Concrete_Type_Decl is Root_Node_Record (Ada_Concrete_Type_Decl); type Access_To_Subtype_For_Concrete_Type_Decl is access all Subtype_For_Concrete_Type_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Concrete_Type_Decl); package Bare_Concrete_Type_Decl_Alloc is new Alloc (Subtype_For_Concrete_Type_Decl, Access_To_Subtype_For_Concrete_Type_Decl); function Allocate_Concrete_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Concrete_Type_Decl; function Allocate_Concrete_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Concrete_Type_Decl is Result : constant Access_To_Subtype_For_Concrete_Type_Decl := Bare_Concrete_Type_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Concrete_Type_Decl; return Bare_Concrete_Type_Decl (Result); end Allocate_Concrete_Type_Decl; package Bare_Formal_Type_Decl_Memos is new Langkit_Support.Packrat (Bare_Formal_Type_Decl, Token_Index); subtype Subtype_For_Formal_Type_Decl is Root_Node_Record (Ada_Formal_Type_Decl); type Access_To_Subtype_For_Formal_Type_Decl is access all Subtype_For_Formal_Type_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Formal_Type_Decl); package Bare_Formal_Type_Decl_Alloc is new Alloc (Subtype_For_Formal_Type_Decl, Access_To_Subtype_For_Formal_Type_Decl); function Allocate_Formal_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Formal_Type_Decl; function Allocate_Formal_Type_Decl (Pool : Bump_Ptr_Pool) return Bare_Formal_Type_Decl is Result : constant Access_To_Subtype_For_Formal_Type_Decl := Bare_Formal_Type_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Formal_Type_Decl; return Bare_Formal_Type_Decl (Result); end Allocate_Formal_Type_Decl; package Bare_Basic_Subp_Decl_Memos is new Langkit_Support.Packrat (Bare_Basic_Subp_Decl, Token_Index); package Bare_Classic_Subp_Decl_Memos is new Langkit_Support.Packrat (Bare_Classic_Subp_Decl, Token_Index); package Bare_Abstract_Subp_Decl_Memos is new Langkit_Support.Packrat (Bare_Abstract_Subp_Decl, Token_Index); subtype Subtype_For_Abstract_Subp_Decl is Root_Node_Record (Ada_Abstract_Subp_Decl); type Access_To_Subtype_For_Abstract_Subp_Decl is access all Subtype_For_Abstract_Subp_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Abstract_Subp_Decl); package Bare_Abstract_Subp_Decl_Alloc is new Alloc (Subtype_For_Abstract_Subp_Decl, Access_To_Subtype_For_Abstract_Subp_Decl); function Allocate_Abstract_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Abstract_Subp_Decl; function Allocate_Abstract_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Abstract_Subp_Decl is Result : constant Access_To_Subtype_For_Abstract_Subp_Decl := Bare_Abstract_Subp_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Abstract_Subp_Decl; return Bare_Abstract_Subp_Decl (Result); end Allocate_Abstract_Subp_Decl; package Bare_Formal_Subp_Decl_Memos is new Langkit_Support.Packrat (Bare_Formal_Subp_Decl, Token_Index); package Bare_Abstract_Formal_Subp_Decl_Memos is new Langkit_Support.Packrat (Bare_Abstract_Formal_Subp_Decl, Token_Index); subtype Subtype_For_Abstract_Formal_Subp_Decl is Root_Node_Record (Ada_Abstract_Formal_Subp_Decl); type Access_To_Subtype_For_Abstract_Formal_Subp_Decl is access all Subtype_For_Abstract_Formal_Subp_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Abstract_Formal_Subp_Decl); package Bare_Abstract_Formal_Subp_Decl_Alloc is new Alloc (Subtype_For_Abstract_Formal_Subp_Decl, Access_To_Subtype_For_Abstract_Formal_Subp_Decl); function Allocate_Abstract_Formal_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Abstract_Formal_Subp_Decl; function Allocate_Abstract_Formal_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Abstract_Formal_Subp_Decl is Result : constant Access_To_Subtype_For_Abstract_Formal_Subp_Decl := Bare_Abstract_Formal_Subp_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Abstract_Formal_Subp_Decl; return Bare_Abstract_Formal_Subp_Decl (Result); end Allocate_Abstract_Formal_Subp_Decl; package Bare_Concrete_Formal_Subp_Decl_Memos is new Langkit_Support.Packrat (Bare_Concrete_Formal_Subp_Decl, Token_Index); subtype Subtype_For_Concrete_Formal_Subp_Decl is Root_Node_Record (Ada_Concrete_Formal_Subp_Decl); type Access_To_Subtype_For_Concrete_Formal_Subp_Decl is access all Subtype_For_Concrete_Formal_Subp_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Concrete_Formal_Subp_Decl); package Bare_Concrete_Formal_Subp_Decl_Alloc is new Alloc (Subtype_For_Concrete_Formal_Subp_Decl, Access_To_Subtype_For_Concrete_Formal_Subp_Decl); function Allocate_Concrete_Formal_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Concrete_Formal_Subp_Decl; function Allocate_Concrete_Formal_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Concrete_Formal_Subp_Decl is Result : constant Access_To_Subtype_For_Concrete_Formal_Subp_Decl := Bare_Concrete_Formal_Subp_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Concrete_Formal_Subp_Decl; return Bare_Concrete_Formal_Subp_Decl (Result); end Allocate_Concrete_Formal_Subp_Decl; package Bare_Subp_Decl_Memos is new Langkit_Support.Packrat (Bare_Subp_Decl, Token_Index); subtype Subtype_For_Subp_Decl is Root_Node_Record (Ada_Subp_Decl); type Access_To_Subtype_For_Subp_Decl is access all Subtype_For_Subp_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Subp_Decl); package Bare_Subp_Decl_Alloc is new Alloc (Subtype_For_Subp_Decl, Access_To_Subtype_For_Subp_Decl); function Allocate_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Subp_Decl; function Allocate_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Subp_Decl is Result : constant Access_To_Subtype_For_Subp_Decl := Bare_Subp_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Subp_Decl; return Bare_Subp_Decl (Result); end Allocate_Subp_Decl; package Bare_Entry_Decl_Memos is new Langkit_Support.Packrat (Bare_Entry_Decl, Token_Index); subtype Subtype_For_Entry_Decl is Root_Node_Record (Ada_Entry_Decl); type Access_To_Subtype_For_Entry_Decl is access all Subtype_For_Entry_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Entry_Decl); package Bare_Entry_Decl_Alloc is new Alloc (Subtype_For_Entry_Decl, Access_To_Subtype_For_Entry_Decl); function Allocate_Entry_Decl (Pool : Bump_Ptr_Pool) return Bare_Entry_Decl; function Allocate_Entry_Decl (Pool : Bump_Ptr_Pool) return Bare_Entry_Decl is Result : constant Access_To_Subtype_For_Entry_Decl := Bare_Entry_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Entry_Decl; return Bare_Entry_Decl (Result); end Allocate_Entry_Decl; package Bare_Enum_Literal_Decl_Memos is new Langkit_Support.Packrat (Bare_Enum_Literal_Decl, Token_Index); subtype Subtype_For_Enum_Literal_Decl is Root_Node_Record (Ada_Enum_Literal_Decl); type Access_To_Subtype_For_Enum_Literal_Decl is access all Subtype_For_Enum_Literal_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Enum_Literal_Decl); package Bare_Enum_Literal_Decl_Alloc is new Alloc (Subtype_For_Enum_Literal_Decl, Access_To_Subtype_For_Enum_Literal_Decl); function Allocate_Enum_Literal_Decl (Pool : Bump_Ptr_Pool) return Bare_Enum_Literal_Decl; function Allocate_Enum_Literal_Decl (Pool : Bump_Ptr_Pool) return Bare_Enum_Literal_Decl is Result : constant Access_To_Subtype_For_Enum_Literal_Decl := Bare_Enum_Literal_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Enum_Literal_Decl; return Bare_Enum_Literal_Decl (Result); end Allocate_Enum_Literal_Decl; package Bare_Synthetic_Char_Enum_Lit_Memos is new Langkit_Support.Packrat (Bare_Synthetic_Char_Enum_Lit, Token_Index); subtype Subtype_For_Synthetic_Char_Enum_Lit is Root_Node_Record (Ada_Synthetic_Char_Enum_Lit); type Access_To_Subtype_For_Synthetic_Char_Enum_Lit is access all Subtype_For_Synthetic_Char_Enum_Lit; pragma No_Strict_Aliasing (Access_To_Subtype_For_Synthetic_Char_Enum_Lit); package Bare_Synthetic_Char_Enum_Lit_Alloc is new Alloc (Subtype_For_Synthetic_Char_Enum_Lit, Access_To_Subtype_For_Synthetic_Char_Enum_Lit); function Allocate_Synthetic_Char_Enum_Lit (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Char_Enum_Lit; function Allocate_Synthetic_Char_Enum_Lit (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Char_Enum_Lit is Result : constant Access_To_Subtype_For_Synthetic_Char_Enum_Lit := Bare_Synthetic_Char_Enum_Lit_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Synthetic_Char_Enum_Lit; return Bare_Synthetic_Char_Enum_Lit (Result); end Allocate_Synthetic_Char_Enum_Lit; package Bare_Generic_Subp_Internal_Memos is new Langkit_Support.Packrat (Bare_Generic_Subp_Internal, Token_Index); subtype Subtype_For_Generic_Subp_Internal is Root_Node_Record (Ada_Generic_Subp_Internal); type Access_To_Subtype_For_Generic_Subp_Internal is access all Subtype_For_Generic_Subp_Internal; pragma No_Strict_Aliasing (Access_To_Subtype_For_Generic_Subp_Internal); package Bare_Generic_Subp_Internal_Alloc is new Alloc (Subtype_For_Generic_Subp_Internal, Access_To_Subtype_For_Generic_Subp_Internal); function Allocate_Generic_Subp_Internal (Pool : Bump_Ptr_Pool) return Bare_Generic_Subp_Internal; function Allocate_Generic_Subp_Internal (Pool : Bump_Ptr_Pool) return Bare_Generic_Subp_Internal is Result : constant Access_To_Subtype_For_Generic_Subp_Internal := Bare_Generic_Subp_Internal_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Generic_Subp_Internal; return Bare_Generic_Subp_Internal (Result); end Allocate_Generic_Subp_Internal; package Bare_Synthetic_Subp_Decl_Memos is new Langkit_Support.Packrat (Bare_Synthetic_Subp_Decl, Token_Index); subtype Subtype_For_Synthetic_Subp_Decl is Root_Node_Record (Ada_Synthetic_Subp_Decl); type Access_To_Subtype_For_Synthetic_Subp_Decl is access all Subtype_For_Synthetic_Subp_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Synthetic_Subp_Decl); package Bare_Synthetic_Subp_Decl_Alloc is new Alloc (Subtype_For_Synthetic_Subp_Decl, Access_To_Subtype_For_Synthetic_Subp_Decl); function Allocate_Synthetic_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Subp_Decl; function Allocate_Synthetic_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Subp_Decl is Result : constant Access_To_Subtype_For_Synthetic_Subp_Decl := Bare_Synthetic_Subp_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Synthetic_Subp_Decl; return Bare_Synthetic_Subp_Decl (Result); end Allocate_Synthetic_Subp_Decl; package Bare_Body_Node_Memos is new Langkit_Support.Packrat (Bare_Body_Node, Token_Index); package Bare_Accept_Stmt_Body_Memos is new Langkit_Support.Packrat (Bare_Accept_Stmt_Body, Token_Index); subtype Subtype_For_Accept_Stmt_Body is Root_Node_Record (Ada_Accept_Stmt_Body); type Access_To_Subtype_For_Accept_Stmt_Body is access all Subtype_For_Accept_Stmt_Body; pragma No_Strict_Aliasing (Access_To_Subtype_For_Accept_Stmt_Body); package Bare_Accept_Stmt_Body_Alloc is new Alloc (Subtype_For_Accept_Stmt_Body, Access_To_Subtype_For_Accept_Stmt_Body); function Allocate_Accept_Stmt_Body (Pool : Bump_Ptr_Pool) return Bare_Accept_Stmt_Body; function Allocate_Accept_Stmt_Body (Pool : Bump_Ptr_Pool) return Bare_Accept_Stmt_Body is Result : constant Access_To_Subtype_For_Accept_Stmt_Body := Bare_Accept_Stmt_Body_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Accept_Stmt_Body; return Bare_Accept_Stmt_Body (Result); end Allocate_Accept_Stmt_Body; package Bare_Base_Subp_Body_Memos is new Langkit_Support.Packrat (Bare_Base_Subp_Body, Token_Index); package Bare_Expr_Function_Memos is new Langkit_Support.Packrat (Bare_Expr_Function, Token_Index); subtype Subtype_For_Expr_Function is Root_Node_Record (Ada_Expr_Function); type Access_To_Subtype_For_Expr_Function is access all Subtype_For_Expr_Function; pragma No_Strict_Aliasing (Access_To_Subtype_For_Expr_Function); package Bare_Expr_Function_Alloc is new Alloc (Subtype_For_Expr_Function, Access_To_Subtype_For_Expr_Function); function Allocate_Expr_Function (Pool : Bump_Ptr_Pool) return Bare_Expr_Function; function Allocate_Expr_Function (Pool : Bump_Ptr_Pool) return Bare_Expr_Function is Result : constant Access_To_Subtype_For_Expr_Function := Bare_Expr_Function_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Expr_Function; return Bare_Expr_Function (Result); end Allocate_Expr_Function; package Bare_Null_Subp_Decl_Memos is new Langkit_Support.Packrat (Bare_Null_Subp_Decl, Token_Index); subtype Subtype_For_Null_Subp_Decl is Root_Node_Record (Ada_Null_Subp_Decl); type Access_To_Subtype_For_Null_Subp_Decl is access all Subtype_For_Null_Subp_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Null_Subp_Decl); package Bare_Null_Subp_Decl_Alloc is new Alloc (Subtype_For_Null_Subp_Decl, Access_To_Subtype_For_Null_Subp_Decl); function Allocate_Null_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Null_Subp_Decl; function Allocate_Null_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Null_Subp_Decl is Result : constant Access_To_Subtype_For_Null_Subp_Decl := Bare_Null_Subp_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Null_Subp_Decl; return Bare_Null_Subp_Decl (Result); end Allocate_Null_Subp_Decl; package Bare_Subp_Body_Memos is new Langkit_Support.Packrat (Bare_Subp_Body, Token_Index); subtype Subtype_For_Subp_Body is Root_Node_Record (Ada_Subp_Body); type Access_To_Subtype_For_Subp_Body is access all Subtype_For_Subp_Body; pragma No_Strict_Aliasing (Access_To_Subtype_For_Subp_Body); package Bare_Subp_Body_Alloc is new Alloc (Subtype_For_Subp_Body, Access_To_Subtype_For_Subp_Body); function Allocate_Subp_Body (Pool : Bump_Ptr_Pool) return Bare_Subp_Body; function Allocate_Subp_Body (Pool : Bump_Ptr_Pool) return Bare_Subp_Body is Result : constant Access_To_Subtype_For_Subp_Body := Bare_Subp_Body_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Subp_Body; return Bare_Subp_Body (Result); end Allocate_Subp_Body; package Bare_Subp_Renaming_Decl_Memos is new Langkit_Support.Packrat (Bare_Subp_Renaming_Decl, Token_Index); subtype Subtype_For_Subp_Renaming_Decl is Root_Node_Record (Ada_Subp_Renaming_Decl); type Access_To_Subtype_For_Subp_Renaming_Decl is access all Subtype_For_Subp_Renaming_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Subp_Renaming_Decl); package Bare_Subp_Renaming_Decl_Alloc is new Alloc (Subtype_For_Subp_Renaming_Decl, Access_To_Subtype_For_Subp_Renaming_Decl); function Allocate_Subp_Renaming_Decl (Pool : Bump_Ptr_Pool) return Bare_Subp_Renaming_Decl; function Allocate_Subp_Renaming_Decl (Pool : Bump_Ptr_Pool) return Bare_Subp_Renaming_Decl is Result : constant Access_To_Subtype_For_Subp_Renaming_Decl := Bare_Subp_Renaming_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Subp_Renaming_Decl; return Bare_Subp_Renaming_Decl (Result); end Allocate_Subp_Renaming_Decl; package Bare_Body_Stub_Memos is new Langkit_Support.Packrat (Bare_Body_Stub, Token_Index); package Bare_Package_Body_Stub_Memos is new Langkit_Support.Packrat (Bare_Package_Body_Stub, Token_Index); subtype Subtype_For_Package_Body_Stub is Root_Node_Record (Ada_Package_Body_Stub); type Access_To_Subtype_For_Package_Body_Stub is access all Subtype_For_Package_Body_Stub; pragma No_Strict_Aliasing (Access_To_Subtype_For_Package_Body_Stub); package Bare_Package_Body_Stub_Alloc is new Alloc (Subtype_For_Package_Body_Stub, Access_To_Subtype_For_Package_Body_Stub); function Allocate_Package_Body_Stub (Pool : Bump_Ptr_Pool) return Bare_Package_Body_Stub; function Allocate_Package_Body_Stub (Pool : Bump_Ptr_Pool) return Bare_Package_Body_Stub is Result : constant Access_To_Subtype_For_Package_Body_Stub := Bare_Package_Body_Stub_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Package_Body_Stub; return Bare_Package_Body_Stub (Result); end Allocate_Package_Body_Stub; package Bare_Protected_Body_Stub_Memos is new Langkit_Support.Packrat (Bare_Protected_Body_Stub, Token_Index); subtype Subtype_For_Protected_Body_Stub is Root_Node_Record (Ada_Protected_Body_Stub); type Access_To_Subtype_For_Protected_Body_Stub is access all Subtype_For_Protected_Body_Stub; pragma No_Strict_Aliasing (Access_To_Subtype_For_Protected_Body_Stub); package Bare_Protected_Body_Stub_Alloc is new Alloc (Subtype_For_Protected_Body_Stub, Access_To_Subtype_For_Protected_Body_Stub); function Allocate_Protected_Body_Stub (Pool : Bump_Ptr_Pool) return Bare_Protected_Body_Stub; function Allocate_Protected_Body_Stub (Pool : Bump_Ptr_Pool) return Bare_Protected_Body_Stub is Result : constant Access_To_Subtype_For_Protected_Body_Stub := Bare_Protected_Body_Stub_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Protected_Body_Stub; return Bare_Protected_Body_Stub (Result); end Allocate_Protected_Body_Stub; package Bare_Subp_Body_Stub_Memos is new Langkit_Support.Packrat (Bare_Subp_Body_Stub, Token_Index); subtype Subtype_For_Subp_Body_Stub is Root_Node_Record (Ada_Subp_Body_Stub); type Access_To_Subtype_For_Subp_Body_Stub is access all Subtype_For_Subp_Body_Stub; pragma No_Strict_Aliasing (Access_To_Subtype_For_Subp_Body_Stub); package Bare_Subp_Body_Stub_Alloc is new Alloc (Subtype_For_Subp_Body_Stub, Access_To_Subtype_For_Subp_Body_Stub); function Allocate_Subp_Body_Stub (Pool : Bump_Ptr_Pool) return Bare_Subp_Body_Stub; function Allocate_Subp_Body_Stub (Pool : Bump_Ptr_Pool) return Bare_Subp_Body_Stub is Result : constant Access_To_Subtype_For_Subp_Body_Stub := Bare_Subp_Body_Stub_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Subp_Body_Stub; return Bare_Subp_Body_Stub (Result); end Allocate_Subp_Body_Stub; package Bare_Task_Body_Stub_Memos is new Langkit_Support.Packrat (Bare_Task_Body_Stub, Token_Index); subtype Subtype_For_Task_Body_Stub is Root_Node_Record (Ada_Task_Body_Stub); type Access_To_Subtype_For_Task_Body_Stub is access all Subtype_For_Task_Body_Stub; pragma No_Strict_Aliasing (Access_To_Subtype_For_Task_Body_Stub); package Bare_Task_Body_Stub_Alloc is new Alloc (Subtype_For_Task_Body_Stub, Access_To_Subtype_For_Task_Body_Stub); function Allocate_Task_Body_Stub (Pool : Bump_Ptr_Pool) return Bare_Task_Body_Stub; function Allocate_Task_Body_Stub (Pool : Bump_Ptr_Pool) return Bare_Task_Body_Stub is Result : constant Access_To_Subtype_For_Task_Body_Stub := Bare_Task_Body_Stub_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Task_Body_Stub; return Bare_Task_Body_Stub (Result); end Allocate_Task_Body_Stub; package Bare_Entry_Body_Memos is new Langkit_Support.Packrat (Bare_Entry_Body, Token_Index); subtype Subtype_For_Entry_Body is Root_Node_Record (Ada_Entry_Body); type Access_To_Subtype_For_Entry_Body is access all Subtype_For_Entry_Body; pragma No_Strict_Aliasing (Access_To_Subtype_For_Entry_Body); package Bare_Entry_Body_Alloc is new Alloc (Subtype_For_Entry_Body, Access_To_Subtype_For_Entry_Body); function Allocate_Entry_Body (Pool : Bump_Ptr_Pool) return Bare_Entry_Body; function Allocate_Entry_Body (Pool : Bump_Ptr_Pool) return Bare_Entry_Body is Result : constant Access_To_Subtype_For_Entry_Body := Bare_Entry_Body_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Entry_Body; return Bare_Entry_Body (Result); end Allocate_Entry_Body; package Bare_Package_Body_Memos is new Langkit_Support.Packrat (Bare_Package_Body, Token_Index); subtype Subtype_For_Package_Body is Root_Node_Record (Ada_Package_Body); type Access_To_Subtype_For_Package_Body is access all Subtype_For_Package_Body; pragma No_Strict_Aliasing (Access_To_Subtype_For_Package_Body); package Bare_Package_Body_Alloc is new Alloc (Subtype_For_Package_Body, Access_To_Subtype_For_Package_Body); function Allocate_Package_Body (Pool : Bump_Ptr_Pool) return Bare_Package_Body; function Allocate_Package_Body (Pool : Bump_Ptr_Pool) return Bare_Package_Body is Result : constant Access_To_Subtype_For_Package_Body := Bare_Package_Body_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Package_Body; return Bare_Package_Body (Result); end Allocate_Package_Body; package Bare_Protected_Body_Memos is new Langkit_Support.Packrat (Bare_Protected_Body, Token_Index); subtype Subtype_For_Protected_Body is Root_Node_Record (Ada_Protected_Body); type Access_To_Subtype_For_Protected_Body is access all Subtype_For_Protected_Body; pragma No_Strict_Aliasing (Access_To_Subtype_For_Protected_Body); package Bare_Protected_Body_Alloc is new Alloc (Subtype_For_Protected_Body, Access_To_Subtype_For_Protected_Body); function Allocate_Protected_Body (Pool : Bump_Ptr_Pool) return Bare_Protected_Body; function Allocate_Protected_Body (Pool : Bump_Ptr_Pool) return Bare_Protected_Body is Result : constant Access_To_Subtype_For_Protected_Body := Bare_Protected_Body_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Protected_Body; return Bare_Protected_Body (Result); end Allocate_Protected_Body; package Bare_Task_Body_Memos is new Langkit_Support.Packrat (Bare_Task_Body, Token_Index); subtype Subtype_For_Task_Body is Root_Node_Record (Ada_Task_Body); type Access_To_Subtype_For_Task_Body is access all Subtype_For_Task_Body; pragma No_Strict_Aliasing (Access_To_Subtype_For_Task_Body); package Bare_Task_Body_Alloc is new Alloc (Subtype_For_Task_Body, Access_To_Subtype_For_Task_Body); function Allocate_Task_Body (Pool : Bump_Ptr_Pool) return Bare_Task_Body; function Allocate_Task_Body (Pool : Bump_Ptr_Pool) return Bare_Task_Body is Result : constant Access_To_Subtype_For_Task_Body := Bare_Task_Body_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Task_Body; return Bare_Task_Body (Result); end Allocate_Task_Body; package Bare_Entry_Index_Spec_Memos is new Langkit_Support.Packrat (Bare_Entry_Index_Spec, Token_Index); subtype Subtype_For_Entry_Index_Spec is Root_Node_Record (Ada_Entry_Index_Spec); type Access_To_Subtype_For_Entry_Index_Spec is access all Subtype_For_Entry_Index_Spec; pragma No_Strict_Aliasing (Access_To_Subtype_For_Entry_Index_Spec); package Bare_Entry_Index_Spec_Alloc is new Alloc (Subtype_For_Entry_Index_Spec, Access_To_Subtype_For_Entry_Index_Spec); function Allocate_Entry_Index_Spec (Pool : Bump_Ptr_Pool) return Bare_Entry_Index_Spec; function Allocate_Entry_Index_Spec (Pool : Bump_Ptr_Pool) return Bare_Entry_Index_Spec is Result : constant Access_To_Subtype_For_Entry_Index_Spec := Bare_Entry_Index_Spec_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Entry_Index_Spec; return Bare_Entry_Index_Spec (Result); end Allocate_Entry_Index_Spec; package Bare_Error_Decl_Memos is new Langkit_Support.Packrat (Bare_Error_Decl, Token_Index); subtype Subtype_For_Error_Decl is Root_Node_Record (Ada_Error_Decl); type Access_To_Subtype_For_Error_Decl is access all Subtype_For_Error_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Error_Decl); package Bare_Error_Decl_Alloc is new Alloc (Subtype_For_Error_Decl, Access_To_Subtype_For_Error_Decl); function Allocate_Error_Decl (Pool : Bump_Ptr_Pool) return Bare_Error_Decl; function Allocate_Error_Decl (Pool : Bump_Ptr_Pool) return Bare_Error_Decl is Result : constant Access_To_Subtype_For_Error_Decl := Bare_Error_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Error_Decl; return Bare_Error_Decl (Result); end Allocate_Error_Decl; package Bare_Exception_Decl_Memos is new Langkit_Support.Packrat (Bare_Exception_Decl, Token_Index); subtype Subtype_For_Exception_Decl is Root_Node_Record (Ada_Exception_Decl); type Access_To_Subtype_For_Exception_Decl is access all Subtype_For_Exception_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Exception_Decl); package Bare_Exception_Decl_Alloc is new Alloc (Subtype_For_Exception_Decl, Access_To_Subtype_For_Exception_Decl); function Allocate_Exception_Decl (Pool : Bump_Ptr_Pool) return Bare_Exception_Decl; function Allocate_Exception_Decl (Pool : Bump_Ptr_Pool) return Bare_Exception_Decl is Result : constant Access_To_Subtype_For_Exception_Decl := Bare_Exception_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Exception_Decl; return Bare_Exception_Decl (Result); end Allocate_Exception_Decl; package Bare_Exception_Handler_Memos is new Langkit_Support.Packrat (Bare_Exception_Handler, Token_Index); subtype Subtype_For_Exception_Handler is Root_Node_Record (Ada_Exception_Handler); type Access_To_Subtype_For_Exception_Handler is access all Subtype_For_Exception_Handler; pragma No_Strict_Aliasing (Access_To_Subtype_For_Exception_Handler); package Bare_Exception_Handler_Alloc is new Alloc (Subtype_For_Exception_Handler, Access_To_Subtype_For_Exception_Handler); function Allocate_Exception_Handler (Pool : Bump_Ptr_Pool) return Bare_Exception_Handler; function Allocate_Exception_Handler (Pool : Bump_Ptr_Pool) return Bare_Exception_Handler is Result : constant Access_To_Subtype_For_Exception_Handler := Bare_Exception_Handler_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Exception_Handler; return Bare_Exception_Handler (Result); end Allocate_Exception_Handler; package Bare_For_Loop_Var_Decl_Memos is new Langkit_Support.Packrat (Bare_For_Loop_Var_Decl, Token_Index); subtype Subtype_For_For_Loop_Var_Decl is Root_Node_Record (Ada_For_Loop_Var_Decl); type Access_To_Subtype_For_For_Loop_Var_Decl is access all Subtype_For_For_Loop_Var_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_For_Loop_Var_Decl); package Bare_For_Loop_Var_Decl_Alloc is new Alloc (Subtype_For_For_Loop_Var_Decl, Access_To_Subtype_For_For_Loop_Var_Decl); function Allocate_For_Loop_Var_Decl (Pool : Bump_Ptr_Pool) return Bare_For_Loop_Var_Decl; function Allocate_For_Loop_Var_Decl (Pool : Bump_Ptr_Pool) return Bare_For_Loop_Var_Decl is Result : constant Access_To_Subtype_For_For_Loop_Var_Decl := Bare_For_Loop_Var_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_For_Loop_Var_Decl; return Bare_For_Loop_Var_Decl (Result); end Allocate_For_Loop_Var_Decl; package Bare_Generic_Decl_Memos is new Langkit_Support.Packrat (Bare_Generic_Decl, Token_Index); package Bare_Generic_Package_Decl_Memos is new Langkit_Support.Packrat (Bare_Generic_Package_Decl, Token_Index); subtype Subtype_For_Generic_Package_Decl is Root_Node_Record (Ada_Generic_Package_Decl); type Access_To_Subtype_For_Generic_Package_Decl is access all Subtype_For_Generic_Package_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Generic_Package_Decl); package Bare_Generic_Package_Decl_Alloc is new Alloc (Subtype_For_Generic_Package_Decl, Access_To_Subtype_For_Generic_Package_Decl); function Allocate_Generic_Package_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Package_Decl; function Allocate_Generic_Package_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Package_Decl is Result : constant Access_To_Subtype_For_Generic_Package_Decl := Bare_Generic_Package_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Generic_Package_Decl; return Bare_Generic_Package_Decl (Result); end Allocate_Generic_Package_Decl; package Bare_Generic_Subp_Decl_Memos is new Langkit_Support.Packrat (Bare_Generic_Subp_Decl, Token_Index); subtype Subtype_For_Generic_Subp_Decl is Root_Node_Record (Ada_Generic_Subp_Decl); type Access_To_Subtype_For_Generic_Subp_Decl is access all Subtype_For_Generic_Subp_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Generic_Subp_Decl); package Bare_Generic_Subp_Decl_Alloc is new Alloc (Subtype_For_Generic_Subp_Decl, Access_To_Subtype_For_Generic_Subp_Decl); function Allocate_Generic_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Subp_Decl; function Allocate_Generic_Subp_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Subp_Decl is Result : constant Access_To_Subtype_For_Generic_Subp_Decl := Bare_Generic_Subp_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Generic_Subp_Decl; return Bare_Generic_Subp_Decl (Result); end Allocate_Generic_Subp_Decl; package Bare_Generic_Instantiation_Memos is new Langkit_Support.Packrat (Bare_Generic_Instantiation, Token_Index); package Bare_Generic_Package_Instantiation_Memos is new Langkit_Support.Packrat (Bare_Generic_Package_Instantiation, Token_Index); subtype Subtype_For_Generic_Package_Instantiation is Root_Node_Record (Ada_Generic_Package_Instantiation); type Access_To_Subtype_For_Generic_Package_Instantiation is access all Subtype_For_Generic_Package_Instantiation; pragma No_Strict_Aliasing (Access_To_Subtype_For_Generic_Package_Instantiation); package Bare_Generic_Package_Instantiation_Alloc is new Alloc (Subtype_For_Generic_Package_Instantiation, Access_To_Subtype_For_Generic_Package_Instantiation); function Allocate_Generic_Package_Instantiation (Pool : Bump_Ptr_Pool) return Bare_Generic_Package_Instantiation; function Allocate_Generic_Package_Instantiation (Pool : Bump_Ptr_Pool) return Bare_Generic_Package_Instantiation is Result : constant Access_To_Subtype_For_Generic_Package_Instantiation := Bare_Generic_Package_Instantiation_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Generic_Package_Instantiation; return Bare_Generic_Package_Instantiation (Result); end Allocate_Generic_Package_Instantiation; package Bare_Generic_Subp_Instantiation_Memos is new Langkit_Support.Packrat (Bare_Generic_Subp_Instantiation, Token_Index); subtype Subtype_For_Generic_Subp_Instantiation is Root_Node_Record (Ada_Generic_Subp_Instantiation); type Access_To_Subtype_For_Generic_Subp_Instantiation is access all Subtype_For_Generic_Subp_Instantiation; pragma No_Strict_Aliasing (Access_To_Subtype_For_Generic_Subp_Instantiation); package Bare_Generic_Subp_Instantiation_Alloc is new Alloc (Subtype_For_Generic_Subp_Instantiation, Access_To_Subtype_For_Generic_Subp_Instantiation); function Allocate_Generic_Subp_Instantiation (Pool : Bump_Ptr_Pool) return Bare_Generic_Subp_Instantiation; function Allocate_Generic_Subp_Instantiation (Pool : Bump_Ptr_Pool) return Bare_Generic_Subp_Instantiation is Result : constant Access_To_Subtype_For_Generic_Subp_Instantiation := Bare_Generic_Subp_Instantiation_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Generic_Subp_Instantiation; return Bare_Generic_Subp_Instantiation (Result); end Allocate_Generic_Subp_Instantiation; package Bare_Generic_Renaming_Decl_Memos is new Langkit_Support.Packrat (Bare_Generic_Renaming_Decl, Token_Index); package Bare_Generic_Package_Renaming_Decl_Memos is new Langkit_Support.Packrat (Bare_Generic_Package_Renaming_Decl, Token_Index); subtype Subtype_For_Generic_Package_Renaming_Decl is Root_Node_Record (Ada_Generic_Package_Renaming_Decl); type Access_To_Subtype_For_Generic_Package_Renaming_Decl is access all Subtype_For_Generic_Package_Renaming_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Generic_Package_Renaming_Decl); package Bare_Generic_Package_Renaming_Decl_Alloc is new Alloc (Subtype_For_Generic_Package_Renaming_Decl, Access_To_Subtype_For_Generic_Package_Renaming_Decl); function Allocate_Generic_Package_Renaming_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Package_Renaming_Decl; function Allocate_Generic_Package_Renaming_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Package_Renaming_Decl is Result : constant Access_To_Subtype_For_Generic_Package_Renaming_Decl := Bare_Generic_Package_Renaming_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Generic_Package_Renaming_Decl; return Bare_Generic_Package_Renaming_Decl (Result); end Allocate_Generic_Package_Renaming_Decl; package Bare_Generic_Subp_Renaming_Decl_Memos is new Langkit_Support.Packrat (Bare_Generic_Subp_Renaming_Decl, Token_Index); subtype Subtype_For_Generic_Subp_Renaming_Decl is Root_Node_Record (Ada_Generic_Subp_Renaming_Decl); type Access_To_Subtype_For_Generic_Subp_Renaming_Decl is access all Subtype_For_Generic_Subp_Renaming_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Generic_Subp_Renaming_Decl); package Bare_Generic_Subp_Renaming_Decl_Alloc is new Alloc (Subtype_For_Generic_Subp_Renaming_Decl, Access_To_Subtype_For_Generic_Subp_Renaming_Decl); function Allocate_Generic_Subp_Renaming_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Subp_Renaming_Decl; function Allocate_Generic_Subp_Renaming_Decl (Pool : Bump_Ptr_Pool) return Bare_Generic_Subp_Renaming_Decl is Result : constant Access_To_Subtype_For_Generic_Subp_Renaming_Decl := Bare_Generic_Subp_Renaming_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Generic_Subp_Renaming_Decl; return Bare_Generic_Subp_Renaming_Decl (Result); end Allocate_Generic_Subp_Renaming_Decl; package Bare_Label_Decl_Memos is new Langkit_Support.Packrat (Bare_Label_Decl, Token_Index); subtype Subtype_For_Label_Decl is Root_Node_Record (Ada_Label_Decl); type Access_To_Subtype_For_Label_Decl is access all Subtype_For_Label_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Label_Decl); package Bare_Label_Decl_Alloc is new Alloc (Subtype_For_Label_Decl, Access_To_Subtype_For_Label_Decl); function Allocate_Label_Decl (Pool : Bump_Ptr_Pool) return Bare_Label_Decl; function Allocate_Label_Decl (Pool : Bump_Ptr_Pool) return Bare_Label_Decl is Result : constant Access_To_Subtype_For_Label_Decl := Bare_Label_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Label_Decl; return Bare_Label_Decl (Result); end Allocate_Label_Decl; package Bare_Named_Stmt_Decl_Memos is new Langkit_Support.Packrat (Bare_Named_Stmt_Decl, Token_Index); subtype Subtype_For_Named_Stmt_Decl is Root_Node_Record (Ada_Named_Stmt_Decl); type Access_To_Subtype_For_Named_Stmt_Decl is access all Subtype_For_Named_Stmt_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Named_Stmt_Decl); package Bare_Named_Stmt_Decl_Alloc is new Alloc (Subtype_For_Named_Stmt_Decl, Access_To_Subtype_For_Named_Stmt_Decl); function Allocate_Named_Stmt_Decl (Pool : Bump_Ptr_Pool) return Bare_Named_Stmt_Decl; function Allocate_Named_Stmt_Decl (Pool : Bump_Ptr_Pool) return Bare_Named_Stmt_Decl is Result : constant Access_To_Subtype_For_Named_Stmt_Decl := Bare_Named_Stmt_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Named_Stmt_Decl; return Bare_Named_Stmt_Decl (Result); end Allocate_Named_Stmt_Decl; package Bare_Number_Decl_Memos is new Langkit_Support.Packrat (Bare_Number_Decl, Token_Index); subtype Subtype_For_Number_Decl is Root_Node_Record (Ada_Number_Decl); type Access_To_Subtype_For_Number_Decl is access all Subtype_For_Number_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Number_Decl); package Bare_Number_Decl_Alloc is new Alloc (Subtype_For_Number_Decl, Access_To_Subtype_For_Number_Decl); function Allocate_Number_Decl (Pool : Bump_Ptr_Pool) return Bare_Number_Decl; function Allocate_Number_Decl (Pool : Bump_Ptr_Pool) return Bare_Number_Decl is Result : constant Access_To_Subtype_For_Number_Decl := Bare_Number_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Number_Decl; return Bare_Number_Decl (Result); end Allocate_Number_Decl; package Bare_Object_Decl_Memos is new Langkit_Support.Packrat (Bare_Object_Decl, Token_Index); subtype Subtype_For_Object_Decl is Root_Node_Record (Ada_Object_Decl); type Access_To_Subtype_For_Object_Decl is access all Subtype_For_Object_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Object_Decl); package Bare_Object_Decl_Alloc is new Alloc (Subtype_For_Object_Decl, Access_To_Subtype_For_Object_Decl); function Allocate_Object_Decl (Pool : Bump_Ptr_Pool) return Bare_Object_Decl; function Allocate_Object_Decl (Pool : Bump_Ptr_Pool) return Bare_Object_Decl is Result : constant Access_To_Subtype_For_Object_Decl := Bare_Object_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Object_Decl; return Bare_Object_Decl (Result); end Allocate_Object_Decl; package Bare_Extended_Return_Stmt_Object_Decl_Memos is new Langkit_Support.Packrat (Bare_Extended_Return_Stmt_Object_Decl, Token_Index); subtype Subtype_For_Extended_Return_Stmt_Object_Decl is Root_Node_Record (Ada_Extended_Return_Stmt_Object_Decl); type Access_To_Subtype_For_Extended_Return_Stmt_Object_Decl is access all Subtype_For_Extended_Return_Stmt_Object_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Extended_Return_Stmt_Object_Decl); package Bare_Extended_Return_Stmt_Object_Decl_Alloc is new Alloc (Subtype_For_Extended_Return_Stmt_Object_Decl, Access_To_Subtype_For_Extended_Return_Stmt_Object_Decl); function Allocate_Extended_Return_Stmt_Object_Decl (Pool : Bump_Ptr_Pool) return Bare_Extended_Return_Stmt_Object_Decl; function Allocate_Extended_Return_Stmt_Object_Decl (Pool : Bump_Ptr_Pool) return Bare_Extended_Return_Stmt_Object_Decl is Result : constant Access_To_Subtype_For_Extended_Return_Stmt_Object_Decl := Bare_Extended_Return_Stmt_Object_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Extended_Return_Stmt_Object_Decl; return Bare_Extended_Return_Stmt_Object_Decl (Result); end Allocate_Extended_Return_Stmt_Object_Decl; package Bare_No_Type_Object_Renaming_Decl_Memos is new Langkit_Support.Packrat (Bare_No_Type_Object_Renaming_Decl, Token_Index); subtype Subtype_For_No_Type_Object_Renaming_Decl is Root_Node_Record (Ada_No_Type_Object_Renaming_Decl); type Access_To_Subtype_For_No_Type_Object_Renaming_Decl is access all Subtype_For_No_Type_Object_Renaming_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_No_Type_Object_Renaming_Decl); package Bare_No_Type_Object_Renaming_Decl_Alloc is new Alloc (Subtype_For_No_Type_Object_Renaming_Decl, Access_To_Subtype_For_No_Type_Object_Renaming_Decl); function Allocate_No_Type_Object_Renaming_Decl (Pool : Bump_Ptr_Pool) return Bare_No_Type_Object_Renaming_Decl; function Allocate_No_Type_Object_Renaming_Decl (Pool : Bump_Ptr_Pool) return Bare_No_Type_Object_Renaming_Decl is Result : constant Access_To_Subtype_For_No_Type_Object_Renaming_Decl := Bare_No_Type_Object_Renaming_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_No_Type_Object_Renaming_Decl; return Bare_No_Type_Object_Renaming_Decl (Result); end Allocate_No_Type_Object_Renaming_Decl; package Bare_Package_Renaming_Decl_Memos is new Langkit_Support.Packrat (Bare_Package_Renaming_Decl, Token_Index); subtype Subtype_For_Package_Renaming_Decl is Root_Node_Record (Ada_Package_Renaming_Decl); type Access_To_Subtype_For_Package_Renaming_Decl is access all Subtype_For_Package_Renaming_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Package_Renaming_Decl); package Bare_Package_Renaming_Decl_Alloc is new Alloc (Subtype_For_Package_Renaming_Decl, Access_To_Subtype_For_Package_Renaming_Decl); function Allocate_Package_Renaming_Decl (Pool : Bump_Ptr_Pool) return Bare_Package_Renaming_Decl; function Allocate_Package_Renaming_Decl (Pool : Bump_Ptr_Pool) return Bare_Package_Renaming_Decl is Result : constant Access_To_Subtype_For_Package_Renaming_Decl := Bare_Package_Renaming_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Package_Renaming_Decl; return Bare_Package_Renaming_Decl (Result); end Allocate_Package_Renaming_Decl; package Bare_Single_Protected_Decl_Memos is new Langkit_Support.Packrat (Bare_Single_Protected_Decl, Token_Index); subtype Subtype_For_Single_Protected_Decl is Root_Node_Record (Ada_Single_Protected_Decl); type Access_To_Subtype_For_Single_Protected_Decl is access all Subtype_For_Single_Protected_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Single_Protected_Decl); package Bare_Single_Protected_Decl_Alloc is new Alloc (Subtype_For_Single_Protected_Decl, Access_To_Subtype_For_Single_Protected_Decl); function Allocate_Single_Protected_Decl (Pool : Bump_Ptr_Pool) return Bare_Single_Protected_Decl; function Allocate_Single_Protected_Decl (Pool : Bump_Ptr_Pool) return Bare_Single_Protected_Decl is Result : constant Access_To_Subtype_For_Single_Protected_Decl := Bare_Single_Protected_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Single_Protected_Decl; return Bare_Single_Protected_Decl (Result); end Allocate_Single_Protected_Decl; package Bare_Single_Task_Decl_Memos is new Langkit_Support.Packrat (Bare_Single_Task_Decl, Token_Index); subtype Subtype_For_Single_Task_Decl is Root_Node_Record (Ada_Single_Task_Decl); type Access_To_Subtype_For_Single_Task_Decl is access all Subtype_For_Single_Task_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Single_Task_Decl); package Bare_Single_Task_Decl_Alloc is new Alloc (Subtype_For_Single_Task_Decl, Access_To_Subtype_For_Single_Task_Decl); function Allocate_Single_Task_Decl (Pool : Bump_Ptr_Pool) return Bare_Single_Task_Decl; function Allocate_Single_Task_Decl (Pool : Bump_Ptr_Pool) return Bare_Single_Task_Decl is Result : constant Access_To_Subtype_For_Single_Task_Decl := Bare_Single_Task_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Single_Task_Decl; return Bare_Single_Task_Decl (Result); end Allocate_Single_Task_Decl; package Bare_Case_Stmt_Alternative_Memos is new Langkit_Support.Packrat (Bare_Case_Stmt_Alternative, Token_Index); subtype Subtype_For_Case_Stmt_Alternative is Root_Node_Record (Ada_Case_Stmt_Alternative); type Access_To_Subtype_For_Case_Stmt_Alternative is access all Subtype_For_Case_Stmt_Alternative; pragma No_Strict_Aliasing (Access_To_Subtype_For_Case_Stmt_Alternative); package Bare_Case_Stmt_Alternative_Alloc is new Alloc (Subtype_For_Case_Stmt_Alternative, Access_To_Subtype_For_Case_Stmt_Alternative); function Allocate_Case_Stmt_Alternative (Pool : Bump_Ptr_Pool) return Bare_Case_Stmt_Alternative; function Allocate_Case_Stmt_Alternative (Pool : Bump_Ptr_Pool) return Bare_Case_Stmt_Alternative is Result : constant Access_To_Subtype_For_Case_Stmt_Alternative := Bare_Case_Stmt_Alternative_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Case_Stmt_Alternative; return Bare_Case_Stmt_Alternative (Result); end Allocate_Case_Stmt_Alternative; package Bare_Compilation_Unit_Memos is new Langkit_Support.Packrat (Bare_Compilation_Unit, Token_Index); subtype Subtype_For_Compilation_Unit is Root_Node_Record (Ada_Compilation_Unit); type Access_To_Subtype_For_Compilation_Unit is access all Subtype_For_Compilation_Unit; pragma No_Strict_Aliasing (Access_To_Subtype_For_Compilation_Unit); package Bare_Compilation_Unit_Alloc is new Alloc (Subtype_For_Compilation_Unit, Access_To_Subtype_For_Compilation_Unit); function Allocate_Compilation_Unit (Pool : Bump_Ptr_Pool) return Bare_Compilation_Unit; function Allocate_Compilation_Unit (Pool : Bump_Ptr_Pool) return Bare_Compilation_Unit is Result : constant Access_To_Subtype_For_Compilation_Unit := Bare_Compilation_Unit_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Compilation_Unit; return Bare_Compilation_Unit (Result); end Allocate_Compilation_Unit; package Bare_Component_Clause_Memos is new Langkit_Support.Packrat (Bare_Component_Clause, Token_Index); subtype Subtype_For_Component_Clause is Root_Node_Record (Ada_Component_Clause); type Access_To_Subtype_For_Component_Clause is access all Subtype_For_Component_Clause; pragma No_Strict_Aliasing (Access_To_Subtype_For_Component_Clause); package Bare_Component_Clause_Alloc is new Alloc (Subtype_For_Component_Clause, Access_To_Subtype_For_Component_Clause); function Allocate_Component_Clause (Pool : Bump_Ptr_Pool) return Bare_Component_Clause; function Allocate_Component_Clause (Pool : Bump_Ptr_Pool) return Bare_Component_Clause is Result : constant Access_To_Subtype_For_Component_Clause := Bare_Component_Clause_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Component_Clause; return Bare_Component_Clause (Result); end Allocate_Component_Clause; package Bare_Component_Def_Memos is new Langkit_Support.Packrat (Bare_Component_Def, Token_Index); subtype Subtype_For_Component_Def is Root_Node_Record (Ada_Component_Def); type Access_To_Subtype_For_Component_Def is access all Subtype_For_Component_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Component_Def); package Bare_Component_Def_Alloc is new Alloc (Subtype_For_Component_Def, Access_To_Subtype_For_Component_Def); function Allocate_Component_Def (Pool : Bump_Ptr_Pool) return Bare_Component_Def; function Allocate_Component_Def (Pool : Bump_Ptr_Pool) return Bare_Component_Def is Result : constant Access_To_Subtype_For_Component_Def := Bare_Component_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Component_Def; return Bare_Component_Def (Result); end Allocate_Component_Def; package Bare_Constant_Node_Memos is new Langkit_Support.Packrat (Bare_Constant_Node, Token_Index); package Bare_Constant_Absent_Memos is new Langkit_Support.Packrat (Bare_Constant_Absent, Token_Index); subtype Subtype_For_Constant_Absent is Root_Node_Record (Ada_Constant_Absent); type Access_To_Subtype_For_Constant_Absent is access all Subtype_For_Constant_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_Constant_Absent); package Bare_Constant_Absent_Alloc is new Alloc (Subtype_For_Constant_Absent, Access_To_Subtype_For_Constant_Absent); function Allocate_Constant_Absent (Pool : Bump_Ptr_Pool) return Bare_Constant_Absent; function Allocate_Constant_Absent (Pool : Bump_Ptr_Pool) return Bare_Constant_Absent is Result : constant Access_To_Subtype_For_Constant_Absent := Bare_Constant_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Constant_Absent; return Bare_Constant_Absent (Result); end Allocate_Constant_Absent; package Bare_Constant_Present_Memos is new Langkit_Support.Packrat (Bare_Constant_Present, Token_Index); subtype Subtype_For_Constant_Present is Root_Node_Record (Ada_Constant_Present); type Access_To_Subtype_For_Constant_Present is access all Subtype_For_Constant_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_Constant_Present); package Bare_Constant_Present_Alloc is new Alloc (Subtype_For_Constant_Present, Access_To_Subtype_For_Constant_Present); function Allocate_Constant_Present (Pool : Bump_Ptr_Pool) return Bare_Constant_Present; function Allocate_Constant_Present (Pool : Bump_Ptr_Pool) return Bare_Constant_Present is Result : constant Access_To_Subtype_For_Constant_Present := Bare_Constant_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Constant_Present; return Bare_Constant_Present (Result); end Allocate_Constant_Present; package Bare_Constraint_Memos is new Langkit_Support.Packrat (Bare_Constraint, Token_Index); package Bare_Composite_Constraint_Memos is new Langkit_Support.Packrat (Bare_Composite_Constraint, Token_Index); subtype Subtype_For_Composite_Constraint is Root_Node_Record (Ada_Composite_Constraint); type Access_To_Subtype_For_Composite_Constraint is access all Subtype_For_Composite_Constraint; pragma No_Strict_Aliasing (Access_To_Subtype_For_Composite_Constraint); package Bare_Composite_Constraint_Alloc is new Alloc (Subtype_For_Composite_Constraint, Access_To_Subtype_For_Composite_Constraint); function Allocate_Composite_Constraint (Pool : Bump_Ptr_Pool) return Bare_Composite_Constraint; function Allocate_Composite_Constraint (Pool : Bump_Ptr_Pool) return Bare_Composite_Constraint is Result : constant Access_To_Subtype_For_Composite_Constraint := Bare_Composite_Constraint_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Composite_Constraint; return Bare_Composite_Constraint (Result); end Allocate_Composite_Constraint; package Bare_Delta_Constraint_Memos is new Langkit_Support.Packrat (Bare_Delta_Constraint, Token_Index); subtype Subtype_For_Delta_Constraint is Root_Node_Record (Ada_Delta_Constraint); type Access_To_Subtype_For_Delta_Constraint is access all Subtype_For_Delta_Constraint; pragma No_Strict_Aliasing (Access_To_Subtype_For_Delta_Constraint); package Bare_Delta_Constraint_Alloc is new Alloc (Subtype_For_Delta_Constraint, Access_To_Subtype_For_Delta_Constraint); function Allocate_Delta_Constraint (Pool : Bump_Ptr_Pool) return Bare_Delta_Constraint; function Allocate_Delta_Constraint (Pool : Bump_Ptr_Pool) return Bare_Delta_Constraint is Result : constant Access_To_Subtype_For_Delta_Constraint := Bare_Delta_Constraint_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Delta_Constraint; return Bare_Delta_Constraint (Result); end Allocate_Delta_Constraint; package Bare_Digits_Constraint_Memos is new Langkit_Support.Packrat (Bare_Digits_Constraint, Token_Index); subtype Subtype_For_Digits_Constraint is Root_Node_Record (Ada_Digits_Constraint); type Access_To_Subtype_For_Digits_Constraint is access all Subtype_For_Digits_Constraint; pragma No_Strict_Aliasing (Access_To_Subtype_For_Digits_Constraint); package Bare_Digits_Constraint_Alloc is new Alloc (Subtype_For_Digits_Constraint, Access_To_Subtype_For_Digits_Constraint); function Allocate_Digits_Constraint (Pool : Bump_Ptr_Pool) return Bare_Digits_Constraint; function Allocate_Digits_Constraint (Pool : Bump_Ptr_Pool) return Bare_Digits_Constraint is Result : constant Access_To_Subtype_For_Digits_Constraint := Bare_Digits_Constraint_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Digits_Constraint; return Bare_Digits_Constraint (Result); end Allocate_Digits_Constraint; package Bare_Range_Constraint_Memos is new Langkit_Support.Packrat (Bare_Range_Constraint, Token_Index); subtype Subtype_For_Range_Constraint is Root_Node_Record (Ada_Range_Constraint); type Access_To_Subtype_For_Range_Constraint is access all Subtype_For_Range_Constraint; pragma No_Strict_Aliasing (Access_To_Subtype_For_Range_Constraint); package Bare_Range_Constraint_Alloc is new Alloc (Subtype_For_Range_Constraint, Access_To_Subtype_For_Range_Constraint); function Allocate_Range_Constraint (Pool : Bump_Ptr_Pool) return Bare_Range_Constraint; function Allocate_Range_Constraint (Pool : Bump_Ptr_Pool) return Bare_Range_Constraint is Result : constant Access_To_Subtype_For_Range_Constraint := Bare_Range_Constraint_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Range_Constraint; return Bare_Range_Constraint (Result); end Allocate_Range_Constraint; package Bare_Declarative_Part_Memos is new Langkit_Support.Packrat (Bare_Declarative_Part, Token_Index); subtype Subtype_For_Declarative_Part is Root_Node_Record (Ada_Declarative_Part); type Access_To_Subtype_For_Declarative_Part is access all Subtype_For_Declarative_Part; pragma No_Strict_Aliasing (Access_To_Subtype_For_Declarative_Part); package Bare_Declarative_Part_Alloc is new Alloc (Subtype_For_Declarative_Part, Access_To_Subtype_For_Declarative_Part); function Allocate_Declarative_Part (Pool : Bump_Ptr_Pool) return Bare_Declarative_Part; function Allocate_Declarative_Part (Pool : Bump_Ptr_Pool) return Bare_Declarative_Part is Result : constant Access_To_Subtype_For_Declarative_Part := Bare_Declarative_Part_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Declarative_Part; return Bare_Declarative_Part (Result); end Allocate_Declarative_Part; package Bare_Private_Part_Memos is new Langkit_Support.Packrat (Bare_Private_Part, Token_Index); subtype Subtype_For_Private_Part is Root_Node_Record (Ada_Private_Part); type Access_To_Subtype_For_Private_Part is access all Subtype_For_Private_Part; pragma No_Strict_Aliasing (Access_To_Subtype_For_Private_Part); package Bare_Private_Part_Alloc is new Alloc (Subtype_For_Private_Part, Access_To_Subtype_For_Private_Part); function Allocate_Private_Part (Pool : Bump_Ptr_Pool) return Bare_Private_Part; function Allocate_Private_Part (Pool : Bump_Ptr_Pool) return Bare_Private_Part is Result : constant Access_To_Subtype_For_Private_Part := Bare_Private_Part_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Private_Part; return Bare_Private_Part (Result); end Allocate_Private_Part; package Bare_Public_Part_Memos is new Langkit_Support.Packrat (Bare_Public_Part, Token_Index); subtype Subtype_For_Public_Part is Root_Node_Record (Ada_Public_Part); type Access_To_Subtype_For_Public_Part is access all Subtype_For_Public_Part; pragma No_Strict_Aliasing (Access_To_Subtype_For_Public_Part); package Bare_Public_Part_Alloc is new Alloc (Subtype_For_Public_Part, Access_To_Subtype_For_Public_Part); function Allocate_Public_Part (Pool : Bump_Ptr_Pool) return Bare_Public_Part; function Allocate_Public_Part (Pool : Bump_Ptr_Pool) return Bare_Public_Part is Result : constant Access_To_Subtype_For_Public_Part := Bare_Public_Part_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Public_Part; return Bare_Public_Part (Result); end Allocate_Public_Part; package Bare_Elsif_Expr_Part_Memos is new Langkit_Support.Packrat (Bare_Elsif_Expr_Part, Token_Index); subtype Subtype_For_Elsif_Expr_Part is Root_Node_Record (Ada_Elsif_Expr_Part); type Access_To_Subtype_For_Elsif_Expr_Part is access all Subtype_For_Elsif_Expr_Part; pragma No_Strict_Aliasing (Access_To_Subtype_For_Elsif_Expr_Part); package Bare_Elsif_Expr_Part_Alloc is new Alloc (Subtype_For_Elsif_Expr_Part, Access_To_Subtype_For_Elsif_Expr_Part); function Allocate_Elsif_Expr_Part (Pool : Bump_Ptr_Pool) return Bare_Elsif_Expr_Part; function Allocate_Elsif_Expr_Part (Pool : Bump_Ptr_Pool) return Bare_Elsif_Expr_Part is Result : constant Access_To_Subtype_For_Elsif_Expr_Part := Bare_Elsif_Expr_Part_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Elsif_Expr_Part; return Bare_Elsif_Expr_Part (Result); end Allocate_Elsif_Expr_Part; package Bare_Elsif_Stmt_Part_Memos is new Langkit_Support.Packrat (Bare_Elsif_Stmt_Part, Token_Index); subtype Subtype_For_Elsif_Stmt_Part is Root_Node_Record (Ada_Elsif_Stmt_Part); type Access_To_Subtype_For_Elsif_Stmt_Part is access all Subtype_For_Elsif_Stmt_Part; pragma No_Strict_Aliasing (Access_To_Subtype_For_Elsif_Stmt_Part); package Bare_Elsif_Stmt_Part_Alloc is new Alloc (Subtype_For_Elsif_Stmt_Part, Access_To_Subtype_For_Elsif_Stmt_Part); function Allocate_Elsif_Stmt_Part (Pool : Bump_Ptr_Pool) return Bare_Elsif_Stmt_Part; function Allocate_Elsif_Stmt_Part (Pool : Bump_Ptr_Pool) return Bare_Elsif_Stmt_Part is Result : constant Access_To_Subtype_For_Elsif_Stmt_Part := Bare_Elsif_Stmt_Part_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Elsif_Stmt_Part; return Bare_Elsif_Stmt_Part (Result); end Allocate_Elsif_Stmt_Part; package Bare_Expr_Memos is new Langkit_Support.Packrat (Bare_Expr, Token_Index); package Bare_Abstract_State_Decl_Expr_Memos is new Langkit_Support.Packrat (Bare_Abstract_State_Decl_Expr, Token_Index); subtype Subtype_For_Abstract_State_Decl_Expr is Root_Node_Record (Ada_Abstract_State_Decl_Expr); type Access_To_Subtype_For_Abstract_State_Decl_Expr is access all Subtype_For_Abstract_State_Decl_Expr; pragma No_Strict_Aliasing (Access_To_Subtype_For_Abstract_State_Decl_Expr); package Bare_Abstract_State_Decl_Expr_Alloc is new Alloc (Subtype_For_Abstract_State_Decl_Expr, Access_To_Subtype_For_Abstract_State_Decl_Expr); function Allocate_Abstract_State_Decl_Expr (Pool : Bump_Ptr_Pool) return Bare_Abstract_State_Decl_Expr; function Allocate_Abstract_State_Decl_Expr (Pool : Bump_Ptr_Pool) return Bare_Abstract_State_Decl_Expr is Result : constant Access_To_Subtype_For_Abstract_State_Decl_Expr := Bare_Abstract_State_Decl_Expr_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Abstract_State_Decl_Expr; return Bare_Abstract_State_Decl_Expr (Result); end Allocate_Abstract_State_Decl_Expr; package Bare_Allocator_Memos is new Langkit_Support.Packrat (Bare_Allocator, Token_Index); subtype Subtype_For_Allocator is Root_Node_Record (Ada_Allocator); type Access_To_Subtype_For_Allocator is access all Subtype_For_Allocator; pragma No_Strict_Aliasing (Access_To_Subtype_For_Allocator); package Bare_Allocator_Alloc is new Alloc (Subtype_For_Allocator, Access_To_Subtype_For_Allocator); function Allocate_Allocator (Pool : Bump_Ptr_Pool) return Bare_Allocator; function Allocate_Allocator (Pool : Bump_Ptr_Pool) return Bare_Allocator is Result : constant Access_To_Subtype_For_Allocator := Bare_Allocator_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Allocator; return Bare_Allocator (Result); end Allocate_Allocator; package Bare_Base_Aggregate_Memos is new Langkit_Support.Packrat (Bare_Base_Aggregate, Token_Index); package Bare_Aggregate_Memos is new Langkit_Support.Packrat (Bare_Aggregate, Token_Index); subtype Subtype_For_Aggregate is Root_Node_Record (Ada_Aggregate); type Access_To_Subtype_For_Aggregate is access all Subtype_For_Aggregate; pragma No_Strict_Aliasing (Access_To_Subtype_For_Aggregate); package Bare_Aggregate_Alloc is new Alloc (Subtype_For_Aggregate, Access_To_Subtype_For_Aggregate); function Allocate_Aggregate (Pool : Bump_Ptr_Pool) return Bare_Aggregate; function Allocate_Aggregate (Pool : Bump_Ptr_Pool) return Bare_Aggregate is Result : constant Access_To_Subtype_For_Aggregate := Bare_Aggregate_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Aggregate; return Bare_Aggregate (Result); end Allocate_Aggregate; package Bare_Bracket_Aggregate_Memos is new Langkit_Support.Packrat (Bare_Bracket_Aggregate, Token_Index); subtype Subtype_For_Bracket_Aggregate is Root_Node_Record (Ada_Bracket_Aggregate); type Access_To_Subtype_For_Bracket_Aggregate is access all Subtype_For_Bracket_Aggregate; pragma No_Strict_Aliasing (Access_To_Subtype_For_Bracket_Aggregate); package Bare_Bracket_Aggregate_Alloc is new Alloc (Subtype_For_Bracket_Aggregate, Access_To_Subtype_For_Bracket_Aggregate); function Allocate_Bracket_Aggregate (Pool : Bump_Ptr_Pool) return Bare_Bracket_Aggregate; function Allocate_Bracket_Aggregate (Pool : Bump_Ptr_Pool) return Bare_Bracket_Aggregate is Result : constant Access_To_Subtype_For_Bracket_Aggregate := Bare_Bracket_Aggregate_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Bracket_Aggregate; return Bare_Bracket_Aggregate (Result); end Allocate_Bracket_Aggregate; package Bare_Delta_Aggregate_Memos is new Langkit_Support.Packrat (Bare_Delta_Aggregate, Token_Index); subtype Subtype_For_Delta_Aggregate is Root_Node_Record (Ada_Delta_Aggregate); type Access_To_Subtype_For_Delta_Aggregate is access all Subtype_For_Delta_Aggregate; pragma No_Strict_Aliasing (Access_To_Subtype_For_Delta_Aggregate); package Bare_Delta_Aggregate_Alloc is new Alloc (Subtype_For_Delta_Aggregate, Access_To_Subtype_For_Delta_Aggregate); function Allocate_Delta_Aggregate (Pool : Bump_Ptr_Pool) return Bare_Delta_Aggregate; function Allocate_Delta_Aggregate (Pool : Bump_Ptr_Pool) return Bare_Delta_Aggregate is Result : constant Access_To_Subtype_For_Delta_Aggregate := Bare_Delta_Aggregate_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Delta_Aggregate; return Bare_Delta_Aggregate (Result); end Allocate_Delta_Aggregate; package Bare_Bracket_Delta_Aggregate_Memos is new Langkit_Support.Packrat (Bare_Bracket_Delta_Aggregate, Token_Index); subtype Subtype_For_Bracket_Delta_Aggregate is Root_Node_Record (Ada_Bracket_Delta_Aggregate); type Access_To_Subtype_For_Bracket_Delta_Aggregate is access all Subtype_For_Bracket_Delta_Aggregate; pragma No_Strict_Aliasing (Access_To_Subtype_For_Bracket_Delta_Aggregate); package Bare_Bracket_Delta_Aggregate_Alloc is new Alloc (Subtype_For_Bracket_Delta_Aggregate, Access_To_Subtype_For_Bracket_Delta_Aggregate); function Allocate_Bracket_Delta_Aggregate (Pool : Bump_Ptr_Pool) return Bare_Bracket_Delta_Aggregate; function Allocate_Bracket_Delta_Aggregate (Pool : Bump_Ptr_Pool) return Bare_Bracket_Delta_Aggregate is Result : constant Access_To_Subtype_For_Bracket_Delta_Aggregate := Bare_Bracket_Delta_Aggregate_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Bracket_Delta_Aggregate; return Bare_Bracket_Delta_Aggregate (Result); end Allocate_Bracket_Delta_Aggregate; package Bare_Null_Record_Aggregate_Memos is new Langkit_Support.Packrat (Bare_Null_Record_Aggregate, Token_Index); subtype Subtype_For_Null_Record_Aggregate is Root_Node_Record (Ada_Null_Record_Aggregate); type Access_To_Subtype_For_Null_Record_Aggregate is access all Subtype_For_Null_Record_Aggregate; pragma No_Strict_Aliasing (Access_To_Subtype_For_Null_Record_Aggregate); package Bare_Null_Record_Aggregate_Alloc is new Alloc (Subtype_For_Null_Record_Aggregate, Access_To_Subtype_For_Null_Record_Aggregate); function Allocate_Null_Record_Aggregate (Pool : Bump_Ptr_Pool) return Bare_Null_Record_Aggregate; function Allocate_Null_Record_Aggregate (Pool : Bump_Ptr_Pool) return Bare_Null_Record_Aggregate is Result : constant Access_To_Subtype_For_Null_Record_Aggregate := Bare_Null_Record_Aggregate_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Null_Record_Aggregate; return Bare_Null_Record_Aggregate (Result); end Allocate_Null_Record_Aggregate; package Bare_Bin_Op_Memos is new Langkit_Support.Packrat (Bare_Bin_Op, Token_Index); subtype Subtype_For_Bin_Op is Root_Node_Record (Ada_Bin_Op); type Access_To_Subtype_For_Bin_Op is access all Subtype_For_Bin_Op; pragma No_Strict_Aliasing (Access_To_Subtype_For_Bin_Op); package Bare_Bin_Op_Alloc is new Alloc (Subtype_For_Bin_Op, Access_To_Subtype_For_Bin_Op); function Allocate_Bin_Op (Pool : Bump_Ptr_Pool) return Bare_Bin_Op; function Allocate_Bin_Op (Pool : Bump_Ptr_Pool) return Bare_Bin_Op is Result : constant Access_To_Subtype_For_Bin_Op := Bare_Bin_Op_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Bin_Op; return Bare_Bin_Op (Result); end Allocate_Bin_Op; package Bare_Relation_Op_Memos is new Langkit_Support.Packrat (Bare_Relation_Op, Token_Index); subtype Subtype_For_Relation_Op is Root_Node_Record (Ada_Relation_Op); type Access_To_Subtype_For_Relation_Op is access all Subtype_For_Relation_Op; pragma No_Strict_Aliasing (Access_To_Subtype_For_Relation_Op); package Bare_Relation_Op_Alloc is new Alloc (Subtype_For_Relation_Op, Access_To_Subtype_For_Relation_Op); function Allocate_Relation_Op (Pool : Bump_Ptr_Pool) return Bare_Relation_Op; function Allocate_Relation_Op (Pool : Bump_Ptr_Pool) return Bare_Relation_Op is Result : constant Access_To_Subtype_For_Relation_Op := Bare_Relation_Op_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Relation_Op; return Bare_Relation_Op (Result); end Allocate_Relation_Op; package Bare_Box_Expr_Memos is new Langkit_Support.Packrat (Bare_Box_Expr, Token_Index); subtype Subtype_For_Box_Expr is Root_Node_Record (Ada_Box_Expr); type Access_To_Subtype_For_Box_Expr is access all Subtype_For_Box_Expr; pragma No_Strict_Aliasing (Access_To_Subtype_For_Box_Expr); package Bare_Box_Expr_Alloc is new Alloc (Subtype_For_Box_Expr, Access_To_Subtype_For_Box_Expr); function Allocate_Box_Expr (Pool : Bump_Ptr_Pool) return Bare_Box_Expr; function Allocate_Box_Expr (Pool : Bump_Ptr_Pool) return Bare_Box_Expr is Result : constant Access_To_Subtype_For_Box_Expr := Bare_Box_Expr_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Box_Expr; return Bare_Box_Expr (Result); end Allocate_Box_Expr; package Bare_Case_Expr_Alternative_Memos is new Langkit_Support.Packrat (Bare_Case_Expr_Alternative, Token_Index); subtype Subtype_For_Case_Expr_Alternative is Root_Node_Record (Ada_Case_Expr_Alternative); type Access_To_Subtype_For_Case_Expr_Alternative is access all Subtype_For_Case_Expr_Alternative; pragma No_Strict_Aliasing (Access_To_Subtype_For_Case_Expr_Alternative); package Bare_Case_Expr_Alternative_Alloc is new Alloc (Subtype_For_Case_Expr_Alternative, Access_To_Subtype_For_Case_Expr_Alternative); function Allocate_Case_Expr_Alternative (Pool : Bump_Ptr_Pool) return Bare_Case_Expr_Alternative; function Allocate_Case_Expr_Alternative (Pool : Bump_Ptr_Pool) return Bare_Case_Expr_Alternative is Result : constant Access_To_Subtype_For_Case_Expr_Alternative := Bare_Case_Expr_Alternative_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Case_Expr_Alternative; return Bare_Case_Expr_Alternative (Result); end Allocate_Case_Expr_Alternative; package Bare_Concat_Op_Memos is new Langkit_Support.Packrat (Bare_Concat_Op, Token_Index); subtype Subtype_For_Concat_Op is Root_Node_Record (Ada_Concat_Op); type Access_To_Subtype_For_Concat_Op is access all Subtype_For_Concat_Op; pragma No_Strict_Aliasing (Access_To_Subtype_For_Concat_Op); package Bare_Concat_Op_Alloc is new Alloc (Subtype_For_Concat_Op, Access_To_Subtype_For_Concat_Op); function Allocate_Concat_Op (Pool : Bump_Ptr_Pool) return Bare_Concat_Op; function Allocate_Concat_Op (Pool : Bump_Ptr_Pool) return Bare_Concat_Op is Result : constant Access_To_Subtype_For_Concat_Op := Bare_Concat_Op_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Concat_Op; return Bare_Concat_Op (Result); end Allocate_Concat_Op; package Bare_Concat_Operand_Memos is new Langkit_Support.Packrat (Bare_Concat_Operand, Token_Index); subtype Subtype_For_Concat_Operand is Root_Node_Record (Ada_Concat_Operand); type Access_To_Subtype_For_Concat_Operand is access all Subtype_For_Concat_Operand; pragma No_Strict_Aliasing (Access_To_Subtype_For_Concat_Operand); package Bare_Concat_Operand_Alloc is new Alloc (Subtype_For_Concat_Operand, Access_To_Subtype_For_Concat_Operand); function Allocate_Concat_Operand (Pool : Bump_Ptr_Pool) return Bare_Concat_Operand; function Allocate_Concat_Operand (Pool : Bump_Ptr_Pool) return Bare_Concat_Operand is Result : constant Access_To_Subtype_For_Concat_Operand := Bare_Concat_Operand_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Concat_Operand; return Bare_Concat_Operand (Result); end Allocate_Concat_Operand; package Bare_Cond_Expr_Memos is new Langkit_Support.Packrat (Bare_Cond_Expr, Token_Index); package Bare_Case_Expr_Memos is new Langkit_Support.Packrat (Bare_Case_Expr, Token_Index); subtype Subtype_For_Case_Expr is Root_Node_Record (Ada_Case_Expr); type Access_To_Subtype_For_Case_Expr is access all Subtype_For_Case_Expr; pragma No_Strict_Aliasing (Access_To_Subtype_For_Case_Expr); package Bare_Case_Expr_Alloc is new Alloc (Subtype_For_Case_Expr, Access_To_Subtype_For_Case_Expr); function Allocate_Case_Expr (Pool : Bump_Ptr_Pool) return Bare_Case_Expr; function Allocate_Case_Expr (Pool : Bump_Ptr_Pool) return Bare_Case_Expr is Result : constant Access_To_Subtype_For_Case_Expr := Bare_Case_Expr_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Case_Expr; return Bare_Case_Expr (Result); end Allocate_Case_Expr; package Bare_If_Expr_Memos is new Langkit_Support.Packrat (Bare_If_Expr, Token_Index); subtype Subtype_For_If_Expr is Root_Node_Record (Ada_If_Expr); type Access_To_Subtype_For_If_Expr is access all Subtype_For_If_Expr; pragma No_Strict_Aliasing (Access_To_Subtype_For_If_Expr); package Bare_If_Expr_Alloc is new Alloc (Subtype_For_If_Expr, Access_To_Subtype_For_If_Expr); function Allocate_If_Expr (Pool : Bump_Ptr_Pool) return Bare_If_Expr; function Allocate_If_Expr (Pool : Bump_Ptr_Pool) return Bare_If_Expr is Result : constant Access_To_Subtype_For_If_Expr := Bare_If_Expr_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_If_Expr; return Bare_If_Expr (Result); end Allocate_If_Expr; package Bare_Contract_Cases_Memos is new Langkit_Support.Packrat (Bare_Contract_Cases, Token_Index); subtype Subtype_For_Contract_Cases is Root_Node_Record (Ada_Contract_Cases); type Access_To_Subtype_For_Contract_Cases is access all Subtype_For_Contract_Cases; pragma No_Strict_Aliasing (Access_To_Subtype_For_Contract_Cases); package Bare_Contract_Cases_Alloc is new Alloc (Subtype_For_Contract_Cases, Access_To_Subtype_For_Contract_Cases); function Allocate_Contract_Cases (Pool : Bump_Ptr_Pool) return Bare_Contract_Cases; function Allocate_Contract_Cases (Pool : Bump_Ptr_Pool) return Bare_Contract_Cases is Result : constant Access_To_Subtype_For_Contract_Cases := Bare_Contract_Cases_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Contract_Cases; return Bare_Contract_Cases (Result); end Allocate_Contract_Cases; package Bare_Decl_Expr_Memos is new Langkit_Support.Packrat (Bare_Decl_Expr, Token_Index); subtype Subtype_For_Decl_Expr is Root_Node_Record (Ada_Decl_Expr); type Access_To_Subtype_For_Decl_Expr is access all Subtype_For_Decl_Expr; pragma No_Strict_Aliasing (Access_To_Subtype_For_Decl_Expr); package Bare_Decl_Expr_Alloc is new Alloc (Subtype_For_Decl_Expr, Access_To_Subtype_For_Decl_Expr); function Allocate_Decl_Expr (Pool : Bump_Ptr_Pool) return Bare_Decl_Expr; function Allocate_Decl_Expr (Pool : Bump_Ptr_Pool) return Bare_Decl_Expr is Result : constant Access_To_Subtype_For_Decl_Expr := Bare_Decl_Expr_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Decl_Expr; return Bare_Decl_Expr (Result); end Allocate_Decl_Expr; package Bare_Membership_Expr_Memos is new Langkit_Support.Packrat (Bare_Membership_Expr, Token_Index); subtype Subtype_For_Membership_Expr is Root_Node_Record (Ada_Membership_Expr); type Access_To_Subtype_For_Membership_Expr is access all Subtype_For_Membership_Expr; pragma No_Strict_Aliasing (Access_To_Subtype_For_Membership_Expr); package Bare_Membership_Expr_Alloc is new Alloc (Subtype_For_Membership_Expr, Access_To_Subtype_For_Membership_Expr); function Allocate_Membership_Expr (Pool : Bump_Ptr_Pool) return Bare_Membership_Expr; function Allocate_Membership_Expr (Pool : Bump_Ptr_Pool) return Bare_Membership_Expr is Result : constant Access_To_Subtype_For_Membership_Expr := Bare_Membership_Expr_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Membership_Expr; return Bare_Membership_Expr (Result); end Allocate_Membership_Expr; package Bare_Name_Memos is new Langkit_Support.Packrat (Bare_Name, Token_Index); package Bare_Attribute_Ref_Memos is new Langkit_Support.Packrat (Bare_Attribute_Ref, Token_Index); subtype Subtype_For_Attribute_Ref is Root_Node_Record (Ada_Attribute_Ref); type Access_To_Subtype_For_Attribute_Ref is access all Subtype_For_Attribute_Ref; pragma No_Strict_Aliasing (Access_To_Subtype_For_Attribute_Ref); package Bare_Attribute_Ref_Alloc is new Alloc (Subtype_For_Attribute_Ref, Access_To_Subtype_For_Attribute_Ref); function Allocate_Attribute_Ref (Pool : Bump_Ptr_Pool) return Bare_Attribute_Ref; function Allocate_Attribute_Ref (Pool : Bump_Ptr_Pool) return Bare_Attribute_Ref is Result : constant Access_To_Subtype_For_Attribute_Ref := Bare_Attribute_Ref_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Attribute_Ref; return Bare_Attribute_Ref (Result); end Allocate_Attribute_Ref; package Bare_Call_Expr_Memos is new Langkit_Support.Packrat (Bare_Call_Expr, Token_Index); subtype Subtype_For_Call_Expr is Root_Node_Record (Ada_Call_Expr); type Access_To_Subtype_For_Call_Expr is access all Subtype_For_Call_Expr; pragma No_Strict_Aliasing (Access_To_Subtype_For_Call_Expr); package Bare_Call_Expr_Alloc is new Alloc (Subtype_For_Call_Expr, Access_To_Subtype_For_Call_Expr); function Allocate_Call_Expr (Pool : Bump_Ptr_Pool) return Bare_Call_Expr; function Allocate_Call_Expr (Pool : Bump_Ptr_Pool) return Bare_Call_Expr is Result : constant Access_To_Subtype_For_Call_Expr := Bare_Call_Expr_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Call_Expr; return Bare_Call_Expr (Result); end Allocate_Call_Expr; package Bare_Defining_Name_Memos is new Langkit_Support.Packrat (Bare_Defining_Name, Token_Index); subtype Subtype_For_Defining_Name is Root_Node_Record (Ada_Defining_Name); type Access_To_Subtype_For_Defining_Name is access all Subtype_For_Defining_Name; pragma No_Strict_Aliasing (Access_To_Subtype_For_Defining_Name); package Bare_Defining_Name_Alloc is new Alloc (Subtype_For_Defining_Name, Access_To_Subtype_For_Defining_Name); function Allocate_Defining_Name (Pool : Bump_Ptr_Pool) return Bare_Defining_Name; function Allocate_Defining_Name (Pool : Bump_Ptr_Pool) return Bare_Defining_Name is Result : constant Access_To_Subtype_For_Defining_Name := Bare_Defining_Name_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Defining_Name; return Bare_Defining_Name (Result); end Allocate_Defining_Name; package Bare_Synthetic_Defining_Name_Memos is new Langkit_Support.Packrat (Bare_Synthetic_Defining_Name, Token_Index); subtype Subtype_For_Synthetic_Defining_Name is Root_Node_Record (Ada_Synthetic_Defining_Name); type Access_To_Subtype_For_Synthetic_Defining_Name is access all Subtype_For_Synthetic_Defining_Name; pragma No_Strict_Aliasing (Access_To_Subtype_For_Synthetic_Defining_Name); package Bare_Synthetic_Defining_Name_Alloc is new Alloc (Subtype_For_Synthetic_Defining_Name, Access_To_Subtype_For_Synthetic_Defining_Name); function Allocate_Synthetic_Defining_Name (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Defining_Name; function Allocate_Synthetic_Defining_Name (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Defining_Name is Result : constant Access_To_Subtype_For_Synthetic_Defining_Name := Bare_Synthetic_Defining_Name_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Synthetic_Defining_Name; return Bare_Synthetic_Defining_Name (Result); end Allocate_Synthetic_Defining_Name; package Bare_Discrete_Subtype_Name_Memos is new Langkit_Support.Packrat (Bare_Discrete_Subtype_Name, Token_Index); subtype Subtype_For_Discrete_Subtype_Name is Root_Node_Record (Ada_Discrete_Subtype_Name); type Access_To_Subtype_For_Discrete_Subtype_Name is access all Subtype_For_Discrete_Subtype_Name; pragma No_Strict_Aliasing (Access_To_Subtype_For_Discrete_Subtype_Name); package Bare_Discrete_Subtype_Name_Alloc is new Alloc (Subtype_For_Discrete_Subtype_Name, Access_To_Subtype_For_Discrete_Subtype_Name); function Allocate_Discrete_Subtype_Name (Pool : Bump_Ptr_Pool) return Bare_Discrete_Subtype_Name; function Allocate_Discrete_Subtype_Name (Pool : Bump_Ptr_Pool) return Bare_Discrete_Subtype_Name is Result : constant Access_To_Subtype_For_Discrete_Subtype_Name := Bare_Discrete_Subtype_Name_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Discrete_Subtype_Name; return Bare_Discrete_Subtype_Name (Result); end Allocate_Discrete_Subtype_Name; package Bare_Dotted_Name_Memos is new Langkit_Support.Packrat (Bare_Dotted_Name, Token_Index); subtype Subtype_For_Dotted_Name is Root_Node_Record (Ada_Dotted_Name); type Access_To_Subtype_For_Dotted_Name is access all Subtype_For_Dotted_Name; pragma No_Strict_Aliasing (Access_To_Subtype_For_Dotted_Name); package Bare_Dotted_Name_Alloc is new Alloc (Subtype_For_Dotted_Name, Access_To_Subtype_For_Dotted_Name); function Allocate_Dotted_Name (Pool : Bump_Ptr_Pool) return Bare_Dotted_Name; function Allocate_Dotted_Name (Pool : Bump_Ptr_Pool) return Bare_Dotted_Name is Result : constant Access_To_Subtype_For_Dotted_Name := Bare_Dotted_Name_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Dotted_Name; return Bare_Dotted_Name (Result); end Allocate_Dotted_Name; package Bare_End_Name_Memos is new Langkit_Support.Packrat (Bare_End_Name, Token_Index); subtype Subtype_For_End_Name is Root_Node_Record (Ada_End_Name); type Access_To_Subtype_For_End_Name is access all Subtype_For_End_Name; pragma No_Strict_Aliasing (Access_To_Subtype_For_End_Name); package Bare_End_Name_Alloc is new Alloc (Subtype_For_End_Name, Access_To_Subtype_For_End_Name); function Allocate_End_Name (Pool : Bump_Ptr_Pool) return Bare_End_Name; function Allocate_End_Name (Pool : Bump_Ptr_Pool) return Bare_End_Name is Result : constant Access_To_Subtype_For_End_Name := Bare_End_Name_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_End_Name; return Bare_End_Name (Result); end Allocate_End_Name; package Bare_Explicit_Deref_Memos is new Langkit_Support.Packrat (Bare_Explicit_Deref, Token_Index); subtype Subtype_For_Explicit_Deref is Root_Node_Record (Ada_Explicit_Deref); type Access_To_Subtype_For_Explicit_Deref is access all Subtype_For_Explicit_Deref; pragma No_Strict_Aliasing (Access_To_Subtype_For_Explicit_Deref); package Bare_Explicit_Deref_Alloc is new Alloc (Subtype_For_Explicit_Deref, Access_To_Subtype_For_Explicit_Deref); function Allocate_Explicit_Deref (Pool : Bump_Ptr_Pool) return Bare_Explicit_Deref; function Allocate_Explicit_Deref (Pool : Bump_Ptr_Pool) return Bare_Explicit_Deref is Result : constant Access_To_Subtype_For_Explicit_Deref := Bare_Explicit_Deref_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Explicit_Deref; return Bare_Explicit_Deref (Result); end Allocate_Explicit_Deref; package Bare_Qual_Expr_Memos is new Langkit_Support.Packrat (Bare_Qual_Expr, Token_Index); subtype Subtype_For_Qual_Expr is Root_Node_Record (Ada_Qual_Expr); type Access_To_Subtype_For_Qual_Expr is access all Subtype_For_Qual_Expr; pragma No_Strict_Aliasing (Access_To_Subtype_For_Qual_Expr); package Bare_Qual_Expr_Alloc is new Alloc (Subtype_For_Qual_Expr, Access_To_Subtype_For_Qual_Expr); function Allocate_Qual_Expr (Pool : Bump_Ptr_Pool) return Bare_Qual_Expr; function Allocate_Qual_Expr (Pool : Bump_Ptr_Pool) return Bare_Qual_Expr is Result : constant Access_To_Subtype_For_Qual_Expr := Bare_Qual_Expr_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Qual_Expr; return Bare_Qual_Expr (Result); end Allocate_Qual_Expr; package Bare_Reduce_Attribute_Ref_Memos is new Langkit_Support.Packrat (Bare_Reduce_Attribute_Ref, Token_Index); subtype Subtype_For_Reduce_Attribute_Ref is Root_Node_Record (Ada_Reduce_Attribute_Ref); type Access_To_Subtype_For_Reduce_Attribute_Ref is access all Subtype_For_Reduce_Attribute_Ref; pragma No_Strict_Aliasing (Access_To_Subtype_For_Reduce_Attribute_Ref); package Bare_Reduce_Attribute_Ref_Alloc is new Alloc (Subtype_For_Reduce_Attribute_Ref, Access_To_Subtype_For_Reduce_Attribute_Ref); function Allocate_Reduce_Attribute_Ref (Pool : Bump_Ptr_Pool) return Bare_Reduce_Attribute_Ref; function Allocate_Reduce_Attribute_Ref (Pool : Bump_Ptr_Pool) return Bare_Reduce_Attribute_Ref is Result : constant Access_To_Subtype_For_Reduce_Attribute_Ref := Bare_Reduce_Attribute_Ref_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Reduce_Attribute_Ref; return Bare_Reduce_Attribute_Ref (Result); end Allocate_Reduce_Attribute_Ref; package Bare_Single_Tok_Node_Memos is new Langkit_Support.Packrat (Bare_Single_Tok_Node, Token_Index); package Bare_Base_Id_Memos is new Langkit_Support.Packrat (Bare_Base_Id, Token_Index); package Bare_Char_Literal_Memos is new Langkit_Support.Packrat (Bare_Char_Literal, Token_Index); subtype Subtype_For_Char_Literal is Root_Node_Record (Ada_Char_Literal); type Access_To_Subtype_For_Char_Literal is access all Subtype_For_Char_Literal; pragma No_Strict_Aliasing (Access_To_Subtype_For_Char_Literal); package Bare_Char_Literal_Alloc is new Alloc (Subtype_For_Char_Literal, Access_To_Subtype_For_Char_Literal); function Allocate_Char_Literal (Pool : Bump_Ptr_Pool) return Bare_Char_Literal; function Allocate_Char_Literal (Pool : Bump_Ptr_Pool) return Bare_Char_Literal is Result : constant Access_To_Subtype_For_Char_Literal := Bare_Char_Literal_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Char_Literal; return Bare_Char_Literal (Result); end Allocate_Char_Literal; package Bare_Identifier_Memos is new Langkit_Support.Packrat (Bare_Identifier, Token_Index); subtype Subtype_For_Identifier is Root_Node_Record (Ada_Identifier); type Access_To_Subtype_For_Identifier is access all Subtype_For_Identifier; pragma No_Strict_Aliasing (Access_To_Subtype_For_Identifier); package Bare_Identifier_Alloc is new Alloc (Subtype_For_Identifier, Access_To_Subtype_For_Identifier); function Allocate_Identifier (Pool : Bump_Ptr_Pool) return Bare_Identifier; function Allocate_Identifier (Pool : Bump_Ptr_Pool) return Bare_Identifier is Result : constant Access_To_Subtype_For_Identifier := Bare_Identifier_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Identifier; return Bare_Identifier (Result); end Allocate_Identifier; package Bare_Op_Memos is new Langkit_Support.Packrat (Bare_Op, Token_Index); package Bare_Op_Abs_Memos is new Langkit_Support.Packrat (Bare_Op_Abs, Token_Index); subtype Subtype_For_Op_Abs is Root_Node_Record (Ada_Op_Abs); type Access_To_Subtype_For_Op_Abs is access all Subtype_For_Op_Abs; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Abs); package Bare_Op_Abs_Alloc is new Alloc (Subtype_For_Op_Abs, Access_To_Subtype_For_Op_Abs); function Allocate_Op_Abs (Pool : Bump_Ptr_Pool) return Bare_Op_Abs; function Allocate_Op_Abs (Pool : Bump_Ptr_Pool) return Bare_Op_Abs is Result : constant Access_To_Subtype_For_Op_Abs := Bare_Op_Abs_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Abs; return Bare_Op_Abs (Result); end Allocate_Op_Abs; package Bare_Op_And_Memos is new Langkit_Support.Packrat (Bare_Op_And, Token_Index); subtype Subtype_For_Op_And is Root_Node_Record (Ada_Op_And); type Access_To_Subtype_For_Op_And is access all Subtype_For_Op_And; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_And); package Bare_Op_And_Alloc is new Alloc (Subtype_For_Op_And, Access_To_Subtype_For_Op_And); function Allocate_Op_And (Pool : Bump_Ptr_Pool) return Bare_Op_And; function Allocate_Op_And (Pool : Bump_Ptr_Pool) return Bare_Op_And is Result : constant Access_To_Subtype_For_Op_And := Bare_Op_And_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_And; return Bare_Op_And (Result); end Allocate_Op_And; package Bare_Op_And_Then_Memos is new Langkit_Support.Packrat (Bare_Op_And_Then, Token_Index); subtype Subtype_For_Op_And_Then is Root_Node_Record (Ada_Op_And_Then); type Access_To_Subtype_For_Op_And_Then is access all Subtype_For_Op_And_Then; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_And_Then); package Bare_Op_And_Then_Alloc is new Alloc (Subtype_For_Op_And_Then, Access_To_Subtype_For_Op_And_Then); function Allocate_Op_And_Then (Pool : Bump_Ptr_Pool) return Bare_Op_And_Then; function Allocate_Op_And_Then (Pool : Bump_Ptr_Pool) return Bare_Op_And_Then is Result : constant Access_To_Subtype_For_Op_And_Then := Bare_Op_And_Then_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_And_Then; return Bare_Op_And_Then (Result); end Allocate_Op_And_Then; package Bare_Op_Concat_Memos is new Langkit_Support.Packrat (Bare_Op_Concat, Token_Index); subtype Subtype_For_Op_Concat is Root_Node_Record (Ada_Op_Concat); type Access_To_Subtype_For_Op_Concat is access all Subtype_For_Op_Concat; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Concat); package Bare_Op_Concat_Alloc is new Alloc (Subtype_For_Op_Concat, Access_To_Subtype_For_Op_Concat); function Allocate_Op_Concat (Pool : Bump_Ptr_Pool) return Bare_Op_Concat; function Allocate_Op_Concat (Pool : Bump_Ptr_Pool) return Bare_Op_Concat is Result : constant Access_To_Subtype_For_Op_Concat := Bare_Op_Concat_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Concat; return Bare_Op_Concat (Result); end Allocate_Op_Concat; package Bare_Op_Div_Memos is new Langkit_Support.Packrat (Bare_Op_Div, Token_Index); subtype Subtype_For_Op_Div is Root_Node_Record (Ada_Op_Div); type Access_To_Subtype_For_Op_Div is access all Subtype_For_Op_Div; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Div); package Bare_Op_Div_Alloc is new Alloc (Subtype_For_Op_Div, Access_To_Subtype_For_Op_Div); function Allocate_Op_Div (Pool : Bump_Ptr_Pool) return Bare_Op_Div; function Allocate_Op_Div (Pool : Bump_Ptr_Pool) return Bare_Op_Div is Result : constant Access_To_Subtype_For_Op_Div := Bare_Op_Div_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Div; return Bare_Op_Div (Result); end Allocate_Op_Div; package Bare_Op_Double_Dot_Memos is new Langkit_Support.Packrat (Bare_Op_Double_Dot, Token_Index); subtype Subtype_For_Op_Double_Dot is Root_Node_Record (Ada_Op_Double_Dot); type Access_To_Subtype_For_Op_Double_Dot is access all Subtype_For_Op_Double_Dot; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Double_Dot); package Bare_Op_Double_Dot_Alloc is new Alloc (Subtype_For_Op_Double_Dot, Access_To_Subtype_For_Op_Double_Dot); function Allocate_Op_Double_Dot (Pool : Bump_Ptr_Pool) return Bare_Op_Double_Dot; function Allocate_Op_Double_Dot (Pool : Bump_Ptr_Pool) return Bare_Op_Double_Dot is Result : constant Access_To_Subtype_For_Op_Double_Dot := Bare_Op_Double_Dot_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Double_Dot; return Bare_Op_Double_Dot (Result); end Allocate_Op_Double_Dot; package Bare_Op_Eq_Memos is new Langkit_Support.Packrat (Bare_Op_Eq, Token_Index); subtype Subtype_For_Op_Eq is Root_Node_Record (Ada_Op_Eq); type Access_To_Subtype_For_Op_Eq is access all Subtype_For_Op_Eq; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Eq); package Bare_Op_Eq_Alloc is new Alloc (Subtype_For_Op_Eq, Access_To_Subtype_For_Op_Eq); function Allocate_Op_Eq (Pool : Bump_Ptr_Pool) return Bare_Op_Eq; function Allocate_Op_Eq (Pool : Bump_Ptr_Pool) return Bare_Op_Eq is Result : constant Access_To_Subtype_For_Op_Eq := Bare_Op_Eq_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Eq; return Bare_Op_Eq (Result); end Allocate_Op_Eq; package Bare_Op_Gt_Memos is new Langkit_Support.Packrat (Bare_Op_Gt, Token_Index); subtype Subtype_For_Op_Gt is Root_Node_Record (Ada_Op_Gt); type Access_To_Subtype_For_Op_Gt is access all Subtype_For_Op_Gt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Gt); package Bare_Op_Gt_Alloc is new Alloc (Subtype_For_Op_Gt, Access_To_Subtype_For_Op_Gt); function Allocate_Op_Gt (Pool : Bump_Ptr_Pool) return Bare_Op_Gt; function Allocate_Op_Gt (Pool : Bump_Ptr_Pool) return Bare_Op_Gt is Result : constant Access_To_Subtype_For_Op_Gt := Bare_Op_Gt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Gt; return Bare_Op_Gt (Result); end Allocate_Op_Gt; package Bare_Op_Gte_Memos is new Langkit_Support.Packrat (Bare_Op_Gte, Token_Index); subtype Subtype_For_Op_Gte is Root_Node_Record (Ada_Op_Gte); type Access_To_Subtype_For_Op_Gte is access all Subtype_For_Op_Gte; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Gte); package Bare_Op_Gte_Alloc is new Alloc (Subtype_For_Op_Gte, Access_To_Subtype_For_Op_Gte); function Allocate_Op_Gte (Pool : Bump_Ptr_Pool) return Bare_Op_Gte; function Allocate_Op_Gte (Pool : Bump_Ptr_Pool) return Bare_Op_Gte is Result : constant Access_To_Subtype_For_Op_Gte := Bare_Op_Gte_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Gte; return Bare_Op_Gte (Result); end Allocate_Op_Gte; package Bare_Op_In_Memos is new Langkit_Support.Packrat (Bare_Op_In, Token_Index); subtype Subtype_For_Op_In is Root_Node_Record (Ada_Op_In); type Access_To_Subtype_For_Op_In is access all Subtype_For_Op_In; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_In); package Bare_Op_In_Alloc is new Alloc (Subtype_For_Op_In, Access_To_Subtype_For_Op_In); function Allocate_Op_In (Pool : Bump_Ptr_Pool) return Bare_Op_In; function Allocate_Op_In (Pool : Bump_Ptr_Pool) return Bare_Op_In is Result : constant Access_To_Subtype_For_Op_In := Bare_Op_In_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_In; return Bare_Op_In (Result); end Allocate_Op_In; package Bare_Op_Lt_Memos is new Langkit_Support.Packrat (Bare_Op_Lt, Token_Index); subtype Subtype_For_Op_Lt is Root_Node_Record (Ada_Op_Lt); type Access_To_Subtype_For_Op_Lt is access all Subtype_For_Op_Lt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Lt); package Bare_Op_Lt_Alloc is new Alloc (Subtype_For_Op_Lt, Access_To_Subtype_For_Op_Lt); function Allocate_Op_Lt (Pool : Bump_Ptr_Pool) return Bare_Op_Lt; function Allocate_Op_Lt (Pool : Bump_Ptr_Pool) return Bare_Op_Lt is Result : constant Access_To_Subtype_For_Op_Lt := Bare_Op_Lt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Lt; return Bare_Op_Lt (Result); end Allocate_Op_Lt; package Bare_Op_Lte_Memos is new Langkit_Support.Packrat (Bare_Op_Lte, Token_Index); subtype Subtype_For_Op_Lte is Root_Node_Record (Ada_Op_Lte); type Access_To_Subtype_For_Op_Lte is access all Subtype_For_Op_Lte; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Lte); package Bare_Op_Lte_Alloc is new Alloc (Subtype_For_Op_Lte, Access_To_Subtype_For_Op_Lte); function Allocate_Op_Lte (Pool : Bump_Ptr_Pool) return Bare_Op_Lte; function Allocate_Op_Lte (Pool : Bump_Ptr_Pool) return Bare_Op_Lte is Result : constant Access_To_Subtype_For_Op_Lte := Bare_Op_Lte_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Lte; return Bare_Op_Lte (Result); end Allocate_Op_Lte; package Bare_Op_Minus_Memos is new Langkit_Support.Packrat (Bare_Op_Minus, Token_Index); subtype Subtype_For_Op_Minus is Root_Node_Record (Ada_Op_Minus); type Access_To_Subtype_For_Op_Minus is access all Subtype_For_Op_Minus; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Minus); package Bare_Op_Minus_Alloc is new Alloc (Subtype_For_Op_Minus, Access_To_Subtype_For_Op_Minus); function Allocate_Op_Minus (Pool : Bump_Ptr_Pool) return Bare_Op_Minus; function Allocate_Op_Minus (Pool : Bump_Ptr_Pool) return Bare_Op_Minus is Result : constant Access_To_Subtype_For_Op_Minus := Bare_Op_Minus_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Minus; return Bare_Op_Minus (Result); end Allocate_Op_Minus; package Bare_Op_Mod_Memos is new Langkit_Support.Packrat (Bare_Op_Mod, Token_Index); subtype Subtype_For_Op_Mod is Root_Node_Record (Ada_Op_Mod); type Access_To_Subtype_For_Op_Mod is access all Subtype_For_Op_Mod; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Mod); package Bare_Op_Mod_Alloc is new Alloc (Subtype_For_Op_Mod, Access_To_Subtype_For_Op_Mod); function Allocate_Op_Mod (Pool : Bump_Ptr_Pool) return Bare_Op_Mod; function Allocate_Op_Mod (Pool : Bump_Ptr_Pool) return Bare_Op_Mod is Result : constant Access_To_Subtype_For_Op_Mod := Bare_Op_Mod_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Mod; return Bare_Op_Mod (Result); end Allocate_Op_Mod; package Bare_Op_Mult_Memos is new Langkit_Support.Packrat (Bare_Op_Mult, Token_Index); subtype Subtype_For_Op_Mult is Root_Node_Record (Ada_Op_Mult); type Access_To_Subtype_For_Op_Mult is access all Subtype_For_Op_Mult; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Mult); package Bare_Op_Mult_Alloc is new Alloc (Subtype_For_Op_Mult, Access_To_Subtype_For_Op_Mult); function Allocate_Op_Mult (Pool : Bump_Ptr_Pool) return Bare_Op_Mult; function Allocate_Op_Mult (Pool : Bump_Ptr_Pool) return Bare_Op_Mult is Result : constant Access_To_Subtype_For_Op_Mult := Bare_Op_Mult_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Mult; return Bare_Op_Mult (Result); end Allocate_Op_Mult; package Bare_Op_Neq_Memos is new Langkit_Support.Packrat (Bare_Op_Neq, Token_Index); subtype Subtype_For_Op_Neq is Root_Node_Record (Ada_Op_Neq); type Access_To_Subtype_For_Op_Neq is access all Subtype_For_Op_Neq; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Neq); package Bare_Op_Neq_Alloc is new Alloc (Subtype_For_Op_Neq, Access_To_Subtype_For_Op_Neq); function Allocate_Op_Neq (Pool : Bump_Ptr_Pool) return Bare_Op_Neq; function Allocate_Op_Neq (Pool : Bump_Ptr_Pool) return Bare_Op_Neq is Result : constant Access_To_Subtype_For_Op_Neq := Bare_Op_Neq_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Neq; return Bare_Op_Neq (Result); end Allocate_Op_Neq; package Bare_Op_Not_Memos is new Langkit_Support.Packrat (Bare_Op_Not, Token_Index); subtype Subtype_For_Op_Not is Root_Node_Record (Ada_Op_Not); type Access_To_Subtype_For_Op_Not is access all Subtype_For_Op_Not; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Not); package Bare_Op_Not_Alloc is new Alloc (Subtype_For_Op_Not, Access_To_Subtype_For_Op_Not); function Allocate_Op_Not (Pool : Bump_Ptr_Pool) return Bare_Op_Not; function Allocate_Op_Not (Pool : Bump_Ptr_Pool) return Bare_Op_Not is Result : constant Access_To_Subtype_For_Op_Not := Bare_Op_Not_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Not; return Bare_Op_Not (Result); end Allocate_Op_Not; package Bare_Op_Not_In_Memos is new Langkit_Support.Packrat (Bare_Op_Not_In, Token_Index); subtype Subtype_For_Op_Not_In is Root_Node_Record (Ada_Op_Not_In); type Access_To_Subtype_For_Op_Not_In is access all Subtype_For_Op_Not_In; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Not_In); package Bare_Op_Not_In_Alloc is new Alloc (Subtype_For_Op_Not_In, Access_To_Subtype_For_Op_Not_In); function Allocate_Op_Not_In (Pool : Bump_Ptr_Pool) return Bare_Op_Not_In; function Allocate_Op_Not_In (Pool : Bump_Ptr_Pool) return Bare_Op_Not_In is Result : constant Access_To_Subtype_For_Op_Not_In := Bare_Op_Not_In_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Not_In; return Bare_Op_Not_In (Result); end Allocate_Op_Not_In; package Bare_Op_Or_Memos is new Langkit_Support.Packrat (Bare_Op_Or, Token_Index); subtype Subtype_For_Op_Or is Root_Node_Record (Ada_Op_Or); type Access_To_Subtype_For_Op_Or is access all Subtype_For_Op_Or; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Or); package Bare_Op_Or_Alloc is new Alloc (Subtype_For_Op_Or, Access_To_Subtype_For_Op_Or); function Allocate_Op_Or (Pool : Bump_Ptr_Pool) return Bare_Op_Or; function Allocate_Op_Or (Pool : Bump_Ptr_Pool) return Bare_Op_Or is Result : constant Access_To_Subtype_For_Op_Or := Bare_Op_Or_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Or; return Bare_Op_Or (Result); end Allocate_Op_Or; package Bare_Op_Or_Else_Memos is new Langkit_Support.Packrat (Bare_Op_Or_Else, Token_Index); subtype Subtype_For_Op_Or_Else is Root_Node_Record (Ada_Op_Or_Else); type Access_To_Subtype_For_Op_Or_Else is access all Subtype_For_Op_Or_Else; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Or_Else); package Bare_Op_Or_Else_Alloc is new Alloc (Subtype_For_Op_Or_Else, Access_To_Subtype_For_Op_Or_Else); function Allocate_Op_Or_Else (Pool : Bump_Ptr_Pool) return Bare_Op_Or_Else; function Allocate_Op_Or_Else (Pool : Bump_Ptr_Pool) return Bare_Op_Or_Else is Result : constant Access_To_Subtype_For_Op_Or_Else := Bare_Op_Or_Else_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Or_Else; return Bare_Op_Or_Else (Result); end Allocate_Op_Or_Else; package Bare_Op_Plus_Memos is new Langkit_Support.Packrat (Bare_Op_Plus, Token_Index); subtype Subtype_For_Op_Plus is Root_Node_Record (Ada_Op_Plus); type Access_To_Subtype_For_Op_Plus is access all Subtype_For_Op_Plus; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Plus); package Bare_Op_Plus_Alloc is new Alloc (Subtype_For_Op_Plus, Access_To_Subtype_For_Op_Plus); function Allocate_Op_Plus (Pool : Bump_Ptr_Pool) return Bare_Op_Plus; function Allocate_Op_Plus (Pool : Bump_Ptr_Pool) return Bare_Op_Plus is Result : constant Access_To_Subtype_For_Op_Plus := Bare_Op_Plus_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Plus; return Bare_Op_Plus (Result); end Allocate_Op_Plus; package Bare_Op_Pow_Memos is new Langkit_Support.Packrat (Bare_Op_Pow, Token_Index); subtype Subtype_For_Op_Pow is Root_Node_Record (Ada_Op_Pow); type Access_To_Subtype_For_Op_Pow is access all Subtype_For_Op_Pow; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Pow); package Bare_Op_Pow_Alloc is new Alloc (Subtype_For_Op_Pow, Access_To_Subtype_For_Op_Pow); function Allocate_Op_Pow (Pool : Bump_Ptr_Pool) return Bare_Op_Pow; function Allocate_Op_Pow (Pool : Bump_Ptr_Pool) return Bare_Op_Pow is Result : constant Access_To_Subtype_For_Op_Pow := Bare_Op_Pow_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Pow; return Bare_Op_Pow (Result); end Allocate_Op_Pow; package Bare_Op_Rem_Memos is new Langkit_Support.Packrat (Bare_Op_Rem, Token_Index); subtype Subtype_For_Op_Rem is Root_Node_Record (Ada_Op_Rem); type Access_To_Subtype_For_Op_Rem is access all Subtype_For_Op_Rem; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Rem); package Bare_Op_Rem_Alloc is new Alloc (Subtype_For_Op_Rem, Access_To_Subtype_For_Op_Rem); function Allocate_Op_Rem (Pool : Bump_Ptr_Pool) return Bare_Op_Rem; function Allocate_Op_Rem (Pool : Bump_Ptr_Pool) return Bare_Op_Rem is Result : constant Access_To_Subtype_For_Op_Rem := Bare_Op_Rem_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Rem; return Bare_Op_Rem (Result); end Allocate_Op_Rem; package Bare_Op_Xor_Memos is new Langkit_Support.Packrat (Bare_Op_Xor, Token_Index); subtype Subtype_For_Op_Xor is Root_Node_Record (Ada_Op_Xor); type Access_To_Subtype_For_Op_Xor is access all Subtype_For_Op_Xor; pragma No_Strict_Aliasing (Access_To_Subtype_For_Op_Xor); package Bare_Op_Xor_Alloc is new Alloc (Subtype_For_Op_Xor, Access_To_Subtype_For_Op_Xor); function Allocate_Op_Xor (Pool : Bump_Ptr_Pool) return Bare_Op_Xor; function Allocate_Op_Xor (Pool : Bump_Ptr_Pool) return Bare_Op_Xor is Result : constant Access_To_Subtype_For_Op_Xor := Bare_Op_Xor_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Op_Xor; return Bare_Op_Xor (Result); end Allocate_Op_Xor; package Bare_String_Literal_Memos is new Langkit_Support.Packrat (Bare_String_Literal, Token_Index); subtype Subtype_For_String_Literal is Root_Node_Record (Ada_String_Literal); type Access_To_Subtype_For_String_Literal is access all Subtype_For_String_Literal; pragma No_Strict_Aliasing (Access_To_Subtype_For_String_Literal); package Bare_String_Literal_Alloc is new Alloc (Subtype_For_String_Literal, Access_To_Subtype_For_String_Literal); function Allocate_String_Literal (Pool : Bump_Ptr_Pool) return Bare_String_Literal; function Allocate_String_Literal (Pool : Bump_Ptr_Pool) return Bare_String_Literal is Result : constant Access_To_Subtype_For_String_Literal := Bare_String_Literal_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_String_Literal; return Bare_String_Literal (Result); end Allocate_String_Literal; package Bare_Null_Literal_Memos is new Langkit_Support.Packrat (Bare_Null_Literal, Token_Index); subtype Subtype_For_Null_Literal is Root_Node_Record (Ada_Null_Literal); type Access_To_Subtype_For_Null_Literal is access all Subtype_For_Null_Literal; pragma No_Strict_Aliasing (Access_To_Subtype_For_Null_Literal); package Bare_Null_Literal_Alloc is new Alloc (Subtype_For_Null_Literal, Access_To_Subtype_For_Null_Literal); function Allocate_Null_Literal (Pool : Bump_Ptr_Pool) return Bare_Null_Literal; function Allocate_Null_Literal (Pool : Bump_Ptr_Pool) return Bare_Null_Literal is Result : constant Access_To_Subtype_For_Null_Literal := Bare_Null_Literal_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Null_Literal; return Bare_Null_Literal (Result); end Allocate_Null_Literal; package Bare_Num_Literal_Memos is new Langkit_Support.Packrat (Bare_Num_Literal, Token_Index); package Bare_Int_Literal_Memos is new Langkit_Support.Packrat (Bare_Int_Literal, Token_Index); subtype Subtype_For_Int_Literal is Root_Node_Record (Ada_Int_Literal); type Access_To_Subtype_For_Int_Literal is access all Subtype_For_Int_Literal; pragma No_Strict_Aliasing (Access_To_Subtype_For_Int_Literal); package Bare_Int_Literal_Alloc is new Alloc (Subtype_For_Int_Literal, Access_To_Subtype_For_Int_Literal); function Allocate_Int_Literal (Pool : Bump_Ptr_Pool) return Bare_Int_Literal; function Allocate_Int_Literal (Pool : Bump_Ptr_Pool) return Bare_Int_Literal is Result : constant Access_To_Subtype_For_Int_Literal := Bare_Int_Literal_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Int_Literal; return Bare_Int_Literal (Result); end Allocate_Int_Literal; package Bare_Real_Literal_Memos is new Langkit_Support.Packrat (Bare_Real_Literal, Token_Index); subtype Subtype_For_Real_Literal is Root_Node_Record (Ada_Real_Literal); type Access_To_Subtype_For_Real_Literal is access all Subtype_For_Real_Literal; pragma No_Strict_Aliasing (Access_To_Subtype_For_Real_Literal); package Bare_Real_Literal_Alloc is new Alloc (Subtype_For_Real_Literal, Access_To_Subtype_For_Real_Literal); function Allocate_Real_Literal (Pool : Bump_Ptr_Pool) return Bare_Real_Literal; function Allocate_Real_Literal (Pool : Bump_Ptr_Pool) return Bare_Real_Literal is Result : constant Access_To_Subtype_For_Real_Literal := Bare_Real_Literal_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Real_Literal; return Bare_Real_Literal (Result); end Allocate_Real_Literal; package Bare_Synthetic_Identifier_Memos is new Langkit_Support.Packrat (Bare_Synthetic_Identifier, Token_Index); subtype Subtype_For_Synthetic_Identifier is Root_Node_Record (Ada_Synthetic_Identifier); type Access_To_Subtype_For_Synthetic_Identifier is access all Subtype_For_Synthetic_Identifier; pragma No_Strict_Aliasing (Access_To_Subtype_For_Synthetic_Identifier); package Bare_Synthetic_Identifier_Alloc is new Alloc (Subtype_For_Synthetic_Identifier, Access_To_Subtype_For_Synthetic_Identifier); function Allocate_Synthetic_Identifier (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Identifier; function Allocate_Synthetic_Identifier (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Identifier is Result : constant Access_To_Subtype_For_Synthetic_Identifier := Bare_Synthetic_Identifier_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Synthetic_Identifier; return Bare_Synthetic_Identifier (Result); end Allocate_Synthetic_Identifier; package Bare_Target_Name_Memos is new Langkit_Support.Packrat (Bare_Target_Name, Token_Index); subtype Subtype_For_Target_Name is Root_Node_Record (Ada_Target_Name); type Access_To_Subtype_For_Target_Name is access all Subtype_For_Target_Name; pragma No_Strict_Aliasing (Access_To_Subtype_For_Target_Name); package Bare_Target_Name_Alloc is new Alloc (Subtype_For_Target_Name, Access_To_Subtype_For_Target_Name); function Allocate_Target_Name (Pool : Bump_Ptr_Pool) return Bare_Target_Name; function Allocate_Target_Name (Pool : Bump_Ptr_Pool) return Bare_Target_Name is Result : constant Access_To_Subtype_For_Target_Name := Bare_Target_Name_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Target_Name; return Bare_Target_Name (Result); end Allocate_Target_Name; package Bare_Update_Attribute_Ref_Memos is new Langkit_Support.Packrat (Bare_Update_Attribute_Ref, Token_Index); subtype Subtype_For_Update_Attribute_Ref is Root_Node_Record (Ada_Update_Attribute_Ref); type Access_To_Subtype_For_Update_Attribute_Ref is access all Subtype_For_Update_Attribute_Ref; pragma No_Strict_Aliasing (Access_To_Subtype_For_Update_Attribute_Ref); package Bare_Update_Attribute_Ref_Alloc is new Alloc (Subtype_For_Update_Attribute_Ref, Access_To_Subtype_For_Update_Attribute_Ref); function Allocate_Update_Attribute_Ref (Pool : Bump_Ptr_Pool) return Bare_Update_Attribute_Ref; function Allocate_Update_Attribute_Ref (Pool : Bump_Ptr_Pool) return Bare_Update_Attribute_Ref is Result : constant Access_To_Subtype_For_Update_Attribute_Ref := Bare_Update_Attribute_Ref_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Update_Attribute_Ref; return Bare_Update_Attribute_Ref (Result); end Allocate_Update_Attribute_Ref; package Bare_Paren_Expr_Memos is new Langkit_Support.Packrat (Bare_Paren_Expr, Token_Index); subtype Subtype_For_Paren_Expr is Root_Node_Record (Ada_Paren_Expr); type Access_To_Subtype_For_Paren_Expr is access all Subtype_For_Paren_Expr; pragma No_Strict_Aliasing (Access_To_Subtype_For_Paren_Expr); package Bare_Paren_Expr_Alloc is new Alloc (Subtype_For_Paren_Expr, Access_To_Subtype_For_Paren_Expr); function Allocate_Paren_Expr (Pool : Bump_Ptr_Pool) return Bare_Paren_Expr; function Allocate_Paren_Expr (Pool : Bump_Ptr_Pool) return Bare_Paren_Expr is Result : constant Access_To_Subtype_For_Paren_Expr := Bare_Paren_Expr_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Paren_Expr; return Bare_Paren_Expr (Result); end Allocate_Paren_Expr; package Bare_Quantified_Expr_Memos is new Langkit_Support.Packrat (Bare_Quantified_Expr, Token_Index); subtype Subtype_For_Quantified_Expr is Root_Node_Record (Ada_Quantified_Expr); type Access_To_Subtype_For_Quantified_Expr is access all Subtype_For_Quantified_Expr; pragma No_Strict_Aliasing (Access_To_Subtype_For_Quantified_Expr); package Bare_Quantified_Expr_Alloc is new Alloc (Subtype_For_Quantified_Expr, Access_To_Subtype_For_Quantified_Expr); function Allocate_Quantified_Expr (Pool : Bump_Ptr_Pool) return Bare_Quantified_Expr; function Allocate_Quantified_Expr (Pool : Bump_Ptr_Pool) return Bare_Quantified_Expr is Result : constant Access_To_Subtype_For_Quantified_Expr := Bare_Quantified_Expr_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Quantified_Expr; return Bare_Quantified_Expr (Result); end Allocate_Quantified_Expr; package Bare_Raise_Expr_Memos is new Langkit_Support.Packrat (Bare_Raise_Expr, Token_Index); subtype Subtype_For_Raise_Expr is Root_Node_Record (Ada_Raise_Expr); type Access_To_Subtype_For_Raise_Expr is access all Subtype_For_Raise_Expr; pragma No_Strict_Aliasing (Access_To_Subtype_For_Raise_Expr); package Bare_Raise_Expr_Alloc is new Alloc (Subtype_For_Raise_Expr, Access_To_Subtype_For_Raise_Expr); function Allocate_Raise_Expr (Pool : Bump_Ptr_Pool) return Bare_Raise_Expr; function Allocate_Raise_Expr (Pool : Bump_Ptr_Pool) return Bare_Raise_Expr is Result : constant Access_To_Subtype_For_Raise_Expr := Bare_Raise_Expr_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Raise_Expr; return Bare_Raise_Expr (Result); end Allocate_Raise_Expr; package Bare_Un_Op_Memos is new Langkit_Support.Packrat (Bare_Un_Op, Token_Index); subtype Subtype_For_Un_Op is Root_Node_Record (Ada_Un_Op); type Access_To_Subtype_For_Un_Op is access all Subtype_For_Un_Op; pragma No_Strict_Aliasing (Access_To_Subtype_For_Un_Op); package Bare_Un_Op_Alloc is new Alloc (Subtype_For_Un_Op, Access_To_Subtype_For_Un_Op); function Allocate_Un_Op (Pool : Bump_Ptr_Pool) return Bare_Un_Op; function Allocate_Un_Op (Pool : Bump_Ptr_Pool) return Bare_Un_Op is Result : constant Access_To_Subtype_For_Un_Op := Bare_Un_Op_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Un_Op; return Bare_Un_Op (Result); end Allocate_Un_Op; package Bare_Handled_Stmts_Memos is new Langkit_Support.Packrat (Bare_Handled_Stmts, Token_Index); subtype Subtype_For_Handled_Stmts is Root_Node_Record (Ada_Handled_Stmts); type Access_To_Subtype_For_Handled_Stmts is access all Subtype_For_Handled_Stmts; pragma No_Strict_Aliasing (Access_To_Subtype_For_Handled_Stmts); package Bare_Handled_Stmts_Alloc is new Alloc (Subtype_For_Handled_Stmts, Access_To_Subtype_For_Handled_Stmts); function Allocate_Handled_Stmts (Pool : Bump_Ptr_Pool) return Bare_Handled_Stmts; function Allocate_Handled_Stmts (Pool : Bump_Ptr_Pool) return Bare_Handled_Stmts is Result : constant Access_To_Subtype_For_Handled_Stmts := Bare_Handled_Stmts_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Handled_Stmts; return Bare_Handled_Stmts (Result); end Allocate_Handled_Stmts; package Bare_Interface_Kind_Memos is new Langkit_Support.Packrat (Bare_Interface_Kind, Token_Index); package Bare_Interface_Kind_Limited_Memos is new Langkit_Support.Packrat (Bare_Interface_Kind_Limited, Token_Index); subtype Subtype_For_Interface_Kind_Limited is Root_Node_Record (Ada_Interface_Kind_Limited); type Access_To_Subtype_For_Interface_Kind_Limited is access all Subtype_For_Interface_Kind_Limited; pragma No_Strict_Aliasing (Access_To_Subtype_For_Interface_Kind_Limited); package Bare_Interface_Kind_Limited_Alloc is new Alloc (Subtype_For_Interface_Kind_Limited, Access_To_Subtype_For_Interface_Kind_Limited); function Allocate_Interface_Kind_Limited (Pool : Bump_Ptr_Pool) return Bare_Interface_Kind_Limited; function Allocate_Interface_Kind_Limited (Pool : Bump_Ptr_Pool) return Bare_Interface_Kind_Limited is Result : constant Access_To_Subtype_For_Interface_Kind_Limited := Bare_Interface_Kind_Limited_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Interface_Kind_Limited; return Bare_Interface_Kind_Limited (Result); end Allocate_Interface_Kind_Limited; package Bare_Interface_Kind_Protected_Memos is new Langkit_Support.Packrat (Bare_Interface_Kind_Protected, Token_Index); subtype Subtype_For_Interface_Kind_Protected is Root_Node_Record (Ada_Interface_Kind_Protected); type Access_To_Subtype_For_Interface_Kind_Protected is access all Subtype_For_Interface_Kind_Protected; pragma No_Strict_Aliasing (Access_To_Subtype_For_Interface_Kind_Protected); package Bare_Interface_Kind_Protected_Alloc is new Alloc (Subtype_For_Interface_Kind_Protected, Access_To_Subtype_For_Interface_Kind_Protected); function Allocate_Interface_Kind_Protected (Pool : Bump_Ptr_Pool) return Bare_Interface_Kind_Protected; function Allocate_Interface_Kind_Protected (Pool : Bump_Ptr_Pool) return Bare_Interface_Kind_Protected is Result : constant Access_To_Subtype_For_Interface_Kind_Protected := Bare_Interface_Kind_Protected_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Interface_Kind_Protected; return Bare_Interface_Kind_Protected (Result); end Allocate_Interface_Kind_Protected; package Bare_Interface_Kind_Synchronized_Memos is new Langkit_Support.Packrat (Bare_Interface_Kind_Synchronized, Token_Index); subtype Subtype_For_Interface_Kind_Synchronized is Root_Node_Record (Ada_Interface_Kind_Synchronized); type Access_To_Subtype_For_Interface_Kind_Synchronized is access all Subtype_For_Interface_Kind_Synchronized; pragma No_Strict_Aliasing (Access_To_Subtype_For_Interface_Kind_Synchronized); package Bare_Interface_Kind_Synchronized_Alloc is new Alloc (Subtype_For_Interface_Kind_Synchronized, Access_To_Subtype_For_Interface_Kind_Synchronized); function Allocate_Interface_Kind_Synchronized (Pool : Bump_Ptr_Pool) return Bare_Interface_Kind_Synchronized; function Allocate_Interface_Kind_Synchronized (Pool : Bump_Ptr_Pool) return Bare_Interface_Kind_Synchronized is Result : constant Access_To_Subtype_For_Interface_Kind_Synchronized := Bare_Interface_Kind_Synchronized_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Interface_Kind_Synchronized; return Bare_Interface_Kind_Synchronized (Result); end Allocate_Interface_Kind_Synchronized; package Bare_Interface_Kind_Task_Memos is new Langkit_Support.Packrat (Bare_Interface_Kind_Task, Token_Index); subtype Subtype_For_Interface_Kind_Task is Root_Node_Record (Ada_Interface_Kind_Task); type Access_To_Subtype_For_Interface_Kind_Task is access all Subtype_For_Interface_Kind_Task; pragma No_Strict_Aliasing (Access_To_Subtype_For_Interface_Kind_Task); package Bare_Interface_Kind_Task_Alloc is new Alloc (Subtype_For_Interface_Kind_Task, Access_To_Subtype_For_Interface_Kind_Task); function Allocate_Interface_Kind_Task (Pool : Bump_Ptr_Pool) return Bare_Interface_Kind_Task; function Allocate_Interface_Kind_Task (Pool : Bump_Ptr_Pool) return Bare_Interface_Kind_Task is Result : constant Access_To_Subtype_For_Interface_Kind_Task := Bare_Interface_Kind_Task_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Interface_Kind_Task; return Bare_Interface_Kind_Task (Result); end Allocate_Interface_Kind_Task; package Bare_Iter_Type_Memos is new Langkit_Support.Packrat (Bare_Iter_Type, Token_Index); package Bare_Iter_Type_In_Memos is new Langkit_Support.Packrat (Bare_Iter_Type_In, Token_Index); subtype Subtype_For_Iter_Type_In is Root_Node_Record (Ada_Iter_Type_In); type Access_To_Subtype_For_Iter_Type_In is access all Subtype_For_Iter_Type_In; pragma No_Strict_Aliasing (Access_To_Subtype_For_Iter_Type_In); package Bare_Iter_Type_In_Alloc is new Alloc (Subtype_For_Iter_Type_In, Access_To_Subtype_For_Iter_Type_In); function Allocate_Iter_Type_In (Pool : Bump_Ptr_Pool) return Bare_Iter_Type_In; function Allocate_Iter_Type_In (Pool : Bump_Ptr_Pool) return Bare_Iter_Type_In is Result : constant Access_To_Subtype_For_Iter_Type_In := Bare_Iter_Type_In_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Iter_Type_In; return Bare_Iter_Type_In (Result); end Allocate_Iter_Type_In; package Bare_Iter_Type_Of_Memos is new Langkit_Support.Packrat (Bare_Iter_Type_Of, Token_Index); subtype Subtype_For_Iter_Type_Of is Root_Node_Record (Ada_Iter_Type_Of); type Access_To_Subtype_For_Iter_Type_Of is access all Subtype_For_Iter_Type_Of; pragma No_Strict_Aliasing (Access_To_Subtype_For_Iter_Type_Of); package Bare_Iter_Type_Of_Alloc is new Alloc (Subtype_For_Iter_Type_Of, Access_To_Subtype_For_Iter_Type_Of); function Allocate_Iter_Type_Of (Pool : Bump_Ptr_Pool) return Bare_Iter_Type_Of; function Allocate_Iter_Type_Of (Pool : Bump_Ptr_Pool) return Bare_Iter_Type_Of is Result : constant Access_To_Subtype_For_Iter_Type_Of := Bare_Iter_Type_Of_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Iter_Type_Of; return Bare_Iter_Type_Of (Result); end Allocate_Iter_Type_Of; package Bare_Library_Item_Memos is new Langkit_Support.Packrat (Bare_Library_Item, Token_Index); subtype Subtype_For_Library_Item is Root_Node_Record (Ada_Library_Item); type Access_To_Subtype_For_Library_Item is access all Subtype_For_Library_Item; pragma No_Strict_Aliasing (Access_To_Subtype_For_Library_Item); package Bare_Library_Item_Alloc is new Alloc (Subtype_For_Library_Item, Access_To_Subtype_For_Library_Item); function Allocate_Library_Item (Pool : Bump_Ptr_Pool) return Bare_Library_Item; function Allocate_Library_Item (Pool : Bump_Ptr_Pool) return Bare_Library_Item is Result : constant Access_To_Subtype_For_Library_Item := Bare_Library_Item_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Library_Item; return Bare_Library_Item (Result); end Allocate_Library_Item; package Bare_Limited_Node_Memos is new Langkit_Support.Packrat (Bare_Limited_Node, Token_Index); package Bare_Limited_Absent_Memos is new Langkit_Support.Packrat (Bare_Limited_Absent, Token_Index); subtype Subtype_For_Limited_Absent is Root_Node_Record (Ada_Limited_Absent); type Access_To_Subtype_For_Limited_Absent is access all Subtype_For_Limited_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_Limited_Absent); package Bare_Limited_Absent_Alloc is new Alloc (Subtype_For_Limited_Absent, Access_To_Subtype_For_Limited_Absent); function Allocate_Limited_Absent (Pool : Bump_Ptr_Pool) return Bare_Limited_Absent; function Allocate_Limited_Absent (Pool : Bump_Ptr_Pool) return Bare_Limited_Absent is Result : constant Access_To_Subtype_For_Limited_Absent := Bare_Limited_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Limited_Absent; return Bare_Limited_Absent (Result); end Allocate_Limited_Absent; package Bare_Limited_Present_Memos is new Langkit_Support.Packrat (Bare_Limited_Present, Token_Index); subtype Subtype_For_Limited_Present is Root_Node_Record (Ada_Limited_Present); type Access_To_Subtype_For_Limited_Present is access all Subtype_For_Limited_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_Limited_Present); package Bare_Limited_Present_Alloc is new Alloc (Subtype_For_Limited_Present, Access_To_Subtype_For_Limited_Present); function Allocate_Limited_Present (Pool : Bump_Ptr_Pool) return Bare_Limited_Present; function Allocate_Limited_Present (Pool : Bump_Ptr_Pool) return Bare_Limited_Present is Result : constant Access_To_Subtype_For_Limited_Present := Bare_Limited_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Limited_Present; return Bare_Limited_Present (Result); end Allocate_Limited_Present; package Bare_Loop_Spec_Memos is new Langkit_Support.Packrat (Bare_Loop_Spec, Token_Index); package Bare_For_Loop_Spec_Memos is new Langkit_Support.Packrat (Bare_For_Loop_Spec, Token_Index); subtype Subtype_For_For_Loop_Spec is Root_Node_Record (Ada_For_Loop_Spec); type Access_To_Subtype_For_For_Loop_Spec is access all Subtype_For_For_Loop_Spec; pragma No_Strict_Aliasing (Access_To_Subtype_For_For_Loop_Spec); package Bare_For_Loop_Spec_Alloc is new Alloc (Subtype_For_For_Loop_Spec, Access_To_Subtype_For_For_Loop_Spec); function Allocate_For_Loop_Spec (Pool : Bump_Ptr_Pool) return Bare_For_Loop_Spec; function Allocate_For_Loop_Spec (Pool : Bump_Ptr_Pool) return Bare_For_Loop_Spec is Result : constant Access_To_Subtype_For_For_Loop_Spec := Bare_For_Loop_Spec_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_For_Loop_Spec; return Bare_For_Loop_Spec (Result); end Allocate_For_Loop_Spec; package Bare_While_Loop_Spec_Memos is new Langkit_Support.Packrat (Bare_While_Loop_Spec, Token_Index); subtype Subtype_For_While_Loop_Spec is Root_Node_Record (Ada_While_Loop_Spec); type Access_To_Subtype_For_While_Loop_Spec is access all Subtype_For_While_Loop_Spec; pragma No_Strict_Aliasing (Access_To_Subtype_For_While_Loop_Spec); package Bare_While_Loop_Spec_Alloc is new Alloc (Subtype_For_While_Loop_Spec, Access_To_Subtype_For_While_Loop_Spec); function Allocate_While_Loop_Spec (Pool : Bump_Ptr_Pool) return Bare_While_Loop_Spec; function Allocate_While_Loop_Spec (Pool : Bump_Ptr_Pool) return Bare_While_Loop_Spec is Result : constant Access_To_Subtype_For_While_Loop_Spec := Bare_While_Loop_Spec_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_While_Loop_Spec; return Bare_While_Loop_Spec (Result); end Allocate_While_Loop_Spec; package Bare_Mode_Memos is new Langkit_Support.Packrat (Bare_Mode, Token_Index); package Bare_Mode_Default_Memos is new Langkit_Support.Packrat (Bare_Mode_Default, Token_Index); subtype Subtype_For_Mode_Default is Root_Node_Record (Ada_Mode_Default); type Access_To_Subtype_For_Mode_Default is access all Subtype_For_Mode_Default; pragma No_Strict_Aliasing (Access_To_Subtype_For_Mode_Default); package Bare_Mode_Default_Alloc is new Alloc (Subtype_For_Mode_Default, Access_To_Subtype_For_Mode_Default); function Allocate_Mode_Default (Pool : Bump_Ptr_Pool) return Bare_Mode_Default; function Allocate_Mode_Default (Pool : Bump_Ptr_Pool) return Bare_Mode_Default is Result : constant Access_To_Subtype_For_Mode_Default := Bare_Mode_Default_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Mode_Default; return Bare_Mode_Default (Result); end Allocate_Mode_Default; package Bare_Mode_In_Memos is new Langkit_Support.Packrat (Bare_Mode_In, Token_Index); subtype Subtype_For_Mode_In is Root_Node_Record (Ada_Mode_In); type Access_To_Subtype_For_Mode_In is access all Subtype_For_Mode_In; pragma No_Strict_Aliasing (Access_To_Subtype_For_Mode_In); package Bare_Mode_In_Alloc is new Alloc (Subtype_For_Mode_In, Access_To_Subtype_For_Mode_In); function Allocate_Mode_In (Pool : Bump_Ptr_Pool) return Bare_Mode_In; function Allocate_Mode_In (Pool : Bump_Ptr_Pool) return Bare_Mode_In is Result : constant Access_To_Subtype_For_Mode_In := Bare_Mode_In_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Mode_In; return Bare_Mode_In (Result); end Allocate_Mode_In; package Bare_Mode_In_Out_Memos is new Langkit_Support.Packrat (Bare_Mode_In_Out, Token_Index); subtype Subtype_For_Mode_In_Out is Root_Node_Record (Ada_Mode_In_Out); type Access_To_Subtype_For_Mode_In_Out is access all Subtype_For_Mode_In_Out; pragma No_Strict_Aliasing (Access_To_Subtype_For_Mode_In_Out); package Bare_Mode_In_Out_Alloc is new Alloc (Subtype_For_Mode_In_Out, Access_To_Subtype_For_Mode_In_Out); function Allocate_Mode_In_Out (Pool : Bump_Ptr_Pool) return Bare_Mode_In_Out; function Allocate_Mode_In_Out (Pool : Bump_Ptr_Pool) return Bare_Mode_In_Out is Result : constant Access_To_Subtype_For_Mode_In_Out := Bare_Mode_In_Out_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Mode_In_Out; return Bare_Mode_In_Out (Result); end Allocate_Mode_In_Out; package Bare_Mode_Out_Memos is new Langkit_Support.Packrat (Bare_Mode_Out, Token_Index); subtype Subtype_For_Mode_Out is Root_Node_Record (Ada_Mode_Out); type Access_To_Subtype_For_Mode_Out is access all Subtype_For_Mode_Out; pragma No_Strict_Aliasing (Access_To_Subtype_For_Mode_Out); package Bare_Mode_Out_Alloc is new Alloc (Subtype_For_Mode_Out, Access_To_Subtype_For_Mode_Out); function Allocate_Mode_Out (Pool : Bump_Ptr_Pool) return Bare_Mode_Out; function Allocate_Mode_Out (Pool : Bump_Ptr_Pool) return Bare_Mode_Out is Result : constant Access_To_Subtype_For_Mode_Out := Bare_Mode_Out_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Mode_Out; return Bare_Mode_Out (Result); end Allocate_Mode_Out; package Bare_Multi_Abstract_State_Decl_Memos is new Langkit_Support.Packrat (Bare_Multi_Abstract_State_Decl, Token_Index); subtype Subtype_For_Multi_Abstract_State_Decl is Root_Node_Record (Ada_Multi_Abstract_State_Decl); type Access_To_Subtype_For_Multi_Abstract_State_Decl is access all Subtype_For_Multi_Abstract_State_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Multi_Abstract_State_Decl); package Bare_Multi_Abstract_State_Decl_Alloc is new Alloc (Subtype_For_Multi_Abstract_State_Decl, Access_To_Subtype_For_Multi_Abstract_State_Decl); function Allocate_Multi_Abstract_State_Decl (Pool : Bump_Ptr_Pool) return Bare_Multi_Abstract_State_Decl; function Allocate_Multi_Abstract_State_Decl (Pool : Bump_Ptr_Pool) return Bare_Multi_Abstract_State_Decl is Result : constant Access_To_Subtype_For_Multi_Abstract_State_Decl := Bare_Multi_Abstract_State_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Multi_Abstract_State_Decl; return Bare_Multi_Abstract_State_Decl (Result); end Allocate_Multi_Abstract_State_Decl; package Bare_Not_Null_Memos is new Langkit_Support.Packrat (Bare_Not_Null, Token_Index); package Bare_Not_Null_Absent_Memos is new Langkit_Support.Packrat (Bare_Not_Null_Absent, Token_Index); subtype Subtype_For_Not_Null_Absent is Root_Node_Record (Ada_Not_Null_Absent); type Access_To_Subtype_For_Not_Null_Absent is access all Subtype_For_Not_Null_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_Not_Null_Absent); package Bare_Not_Null_Absent_Alloc is new Alloc (Subtype_For_Not_Null_Absent, Access_To_Subtype_For_Not_Null_Absent); function Allocate_Not_Null_Absent (Pool : Bump_Ptr_Pool) return Bare_Not_Null_Absent; function Allocate_Not_Null_Absent (Pool : Bump_Ptr_Pool) return Bare_Not_Null_Absent is Result : constant Access_To_Subtype_For_Not_Null_Absent := Bare_Not_Null_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Not_Null_Absent; return Bare_Not_Null_Absent (Result); end Allocate_Not_Null_Absent; package Bare_Not_Null_Present_Memos is new Langkit_Support.Packrat (Bare_Not_Null_Present, Token_Index); subtype Subtype_For_Not_Null_Present is Root_Node_Record (Ada_Not_Null_Present); type Access_To_Subtype_For_Not_Null_Present is access all Subtype_For_Not_Null_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_Not_Null_Present); package Bare_Not_Null_Present_Alloc is new Alloc (Subtype_For_Not_Null_Present, Access_To_Subtype_For_Not_Null_Present); function Allocate_Not_Null_Present (Pool : Bump_Ptr_Pool) return Bare_Not_Null_Present; function Allocate_Not_Null_Present (Pool : Bump_Ptr_Pool) return Bare_Not_Null_Present is Result : constant Access_To_Subtype_For_Not_Null_Present := Bare_Not_Null_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Not_Null_Present; return Bare_Not_Null_Present (Result); end Allocate_Not_Null_Present; package Bare_Null_Component_Decl_Memos is new Langkit_Support.Packrat (Bare_Null_Component_Decl, Token_Index); subtype Subtype_For_Null_Component_Decl is Root_Node_Record (Ada_Null_Component_Decl); type Access_To_Subtype_For_Null_Component_Decl is access all Subtype_For_Null_Component_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Null_Component_Decl); package Bare_Null_Component_Decl_Alloc is new Alloc (Subtype_For_Null_Component_Decl, Access_To_Subtype_For_Null_Component_Decl); function Allocate_Null_Component_Decl (Pool : Bump_Ptr_Pool) return Bare_Null_Component_Decl; function Allocate_Null_Component_Decl (Pool : Bump_Ptr_Pool) return Bare_Null_Component_Decl is Result : constant Access_To_Subtype_For_Null_Component_Decl := Bare_Null_Component_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Null_Component_Decl; return Bare_Null_Component_Decl (Result); end Allocate_Null_Component_Decl; package Bare_Others_Designator_Memos is new Langkit_Support.Packrat (Bare_Others_Designator, Token_Index); subtype Subtype_For_Others_Designator is Root_Node_Record (Ada_Others_Designator); type Access_To_Subtype_For_Others_Designator is access all Subtype_For_Others_Designator; pragma No_Strict_Aliasing (Access_To_Subtype_For_Others_Designator); package Bare_Others_Designator_Alloc is new Alloc (Subtype_For_Others_Designator, Access_To_Subtype_For_Others_Designator); function Allocate_Others_Designator (Pool : Bump_Ptr_Pool) return Bare_Others_Designator; function Allocate_Others_Designator (Pool : Bump_Ptr_Pool) return Bare_Others_Designator is Result : constant Access_To_Subtype_For_Others_Designator := Bare_Others_Designator_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Others_Designator; return Bare_Others_Designator (Result); end Allocate_Others_Designator; package Bare_Overriding_Node_Memos is new Langkit_Support.Packrat (Bare_Overriding_Node, Token_Index); package Bare_Overriding_Not_Overriding_Memos is new Langkit_Support.Packrat (Bare_Overriding_Not_Overriding, Token_Index); subtype Subtype_For_Overriding_Not_Overriding is Root_Node_Record (Ada_Overriding_Not_Overriding); type Access_To_Subtype_For_Overriding_Not_Overriding is access all Subtype_For_Overriding_Not_Overriding; pragma No_Strict_Aliasing (Access_To_Subtype_For_Overriding_Not_Overriding); package Bare_Overriding_Not_Overriding_Alloc is new Alloc (Subtype_For_Overriding_Not_Overriding, Access_To_Subtype_For_Overriding_Not_Overriding); function Allocate_Overriding_Not_Overriding (Pool : Bump_Ptr_Pool) return Bare_Overriding_Not_Overriding; function Allocate_Overriding_Not_Overriding (Pool : Bump_Ptr_Pool) return Bare_Overriding_Not_Overriding is Result : constant Access_To_Subtype_For_Overriding_Not_Overriding := Bare_Overriding_Not_Overriding_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Overriding_Not_Overriding; return Bare_Overriding_Not_Overriding (Result); end Allocate_Overriding_Not_Overriding; package Bare_Overriding_Overriding_Memos is new Langkit_Support.Packrat (Bare_Overriding_Overriding, Token_Index); subtype Subtype_For_Overriding_Overriding is Root_Node_Record (Ada_Overriding_Overriding); type Access_To_Subtype_For_Overriding_Overriding is access all Subtype_For_Overriding_Overriding; pragma No_Strict_Aliasing (Access_To_Subtype_For_Overriding_Overriding); package Bare_Overriding_Overriding_Alloc is new Alloc (Subtype_For_Overriding_Overriding, Access_To_Subtype_For_Overriding_Overriding); function Allocate_Overriding_Overriding (Pool : Bump_Ptr_Pool) return Bare_Overriding_Overriding; function Allocate_Overriding_Overriding (Pool : Bump_Ptr_Pool) return Bare_Overriding_Overriding is Result : constant Access_To_Subtype_For_Overriding_Overriding := Bare_Overriding_Overriding_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Overriding_Overriding; return Bare_Overriding_Overriding (Result); end Allocate_Overriding_Overriding; package Bare_Overriding_Unspecified_Memos is new Langkit_Support.Packrat (Bare_Overriding_Unspecified, Token_Index); subtype Subtype_For_Overriding_Unspecified is Root_Node_Record (Ada_Overriding_Unspecified); type Access_To_Subtype_For_Overriding_Unspecified is access all Subtype_For_Overriding_Unspecified; pragma No_Strict_Aliasing (Access_To_Subtype_For_Overriding_Unspecified); package Bare_Overriding_Unspecified_Alloc is new Alloc (Subtype_For_Overriding_Unspecified, Access_To_Subtype_For_Overriding_Unspecified); function Allocate_Overriding_Unspecified (Pool : Bump_Ptr_Pool) return Bare_Overriding_Unspecified; function Allocate_Overriding_Unspecified (Pool : Bump_Ptr_Pool) return Bare_Overriding_Unspecified is Result : constant Access_To_Subtype_For_Overriding_Unspecified := Bare_Overriding_Unspecified_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Overriding_Unspecified; return Bare_Overriding_Unspecified (Result); end Allocate_Overriding_Unspecified; package Bare_Params_Memos is new Langkit_Support.Packrat (Bare_Params, Token_Index); subtype Subtype_For_Params is Root_Node_Record (Ada_Params); type Access_To_Subtype_For_Params is access all Subtype_For_Params; pragma No_Strict_Aliasing (Access_To_Subtype_For_Params); package Bare_Params_Alloc is new Alloc (Subtype_For_Params, Access_To_Subtype_For_Params); function Allocate_Params (Pool : Bump_Ptr_Pool) return Bare_Params; function Allocate_Params (Pool : Bump_Ptr_Pool) return Bare_Params is Result : constant Access_To_Subtype_For_Params := Bare_Params_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Params; return Bare_Params (Result); end Allocate_Params; package Bare_Paren_Abstract_State_Decl_Memos is new Langkit_Support.Packrat (Bare_Paren_Abstract_State_Decl, Token_Index); subtype Subtype_For_Paren_Abstract_State_Decl is Root_Node_Record (Ada_Paren_Abstract_State_Decl); type Access_To_Subtype_For_Paren_Abstract_State_Decl is access all Subtype_For_Paren_Abstract_State_Decl; pragma No_Strict_Aliasing (Access_To_Subtype_For_Paren_Abstract_State_Decl); package Bare_Paren_Abstract_State_Decl_Alloc is new Alloc (Subtype_For_Paren_Abstract_State_Decl, Access_To_Subtype_For_Paren_Abstract_State_Decl); function Allocate_Paren_Abstract_State_Decl (Pool : Bump_Ptr_Pool) return Bare_Paren_Abstract_State_Decl; function Allocate_Paren_Abstract_State_Decl (Pool : Bump_Ptr_Pool) return Bare_Paren_Abstract_State_Decl is Result : constant Access_To_Subtype_For_Paren_Abstract_State_Decl := Bare_Paren_Abstract_State_Decl_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Paren_Abstract_State_Decl; return Bare_Paren_Abstract_State_Decl (Result); end Allocate_Paren_Abstract_State_Decl; package Bare_Pp_Directive_Memos is new Langkit_Support.Packrat (Bare_Pp_Directive, Token_Index); package Bare_Pp_Else_Directive_Memos is new Langkit_Support.Packrat (Bare_Pp_Else_Directive, Token_Index); subtype Subtype_For_Pp_Else_Directive is Root_Node_Record (Ada_Pp_Else_Directive); type Access_To_Subtype_For_Pp_Else_Directive is access all Subtype_For_Pp_Else_Directive; pragma No_Strict_Aliasing (Access_To_Subtype_For_Pp_Else_Directive); package Bare_Pp_Else_Directive_Alloc is new Alloc (Subtype_For_Pp_Else_Directive, Access_To_Subtype_For_Pp_Else_Directive); function Allocate_Pp_Else_Directive (Pool : Bump_Ptr_Pool) return Bare_Pp_Else_Directive; function Allocate_Pp_Else_Directive (Pool : Bump_Ptr_Pool) return Bare_Pp_Else_Directive is Result : constant Access_To_Subtype_For_Pp_Else_Directive := Bare_Pp_Else_Directive_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Pp_Else_Directive; return Bare_Pp_Else_Directive (Result); end Allocate_Pp_Else_Directive; package Bare_Pp_Elsif_Directive_Memos is new Langkit_Support.Packrat (Bare_Pp_Elsif_Directive, Token_Index); subtype Subtype_For_Pp_Elsif_Directive is Root_Node_Record (Ada_Pp_Elsif_Directive); type Access_To_Subtype_For_Pp_Elsif_Directive is access all Subtype_For_Pp_Elsif_Directive; pragma No_Strict_Aliasing (Access_To_Subtype_For_Pp_Elsif_Directive); package Bare_Pp_Elsif_Directive_Alloc is new Alloc (Subtype_For_Pp_Elsif_Directive, Access_To_Subtype_For_Pp_Elsif_Directive); function Allocate_Pp_Elsif_Directive (Pool : Bump_Ptr_Pool) return Bare_Pp_Elsif_Directive; function Allocate_Pp_Elsif_Directive (Pool : Bump_Ptr_Pool) return Bare_Pp_Elsif_Directive is Result : constant Access_To_Subtype_For_Pp_Elsif_Directive := Bare_Pp_Elsif_Directive_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Pp_Elsif_Directive; return Bare_Pp_Elsif_Directive (Result); end Allocate_Pp_Elsif_Directive; package Bare_Pp_End_If_Directive_Memos is new Langkit_Support.Packrat (Bare_Pp_End_If_Directive, Token_Index); subtype Subtype_For_Pp_End_If_Directive is Root_Node_Record (Ada_Pp_End_If_Directive); type Access_To_Subtype_For_Pp_End_If_Directive is access all Subtype_For_Pp_End_If_Directive; pragma No_Strict_Aliasing (Access_To_Subtype_For_Pp_End_If_Directive); package Bare_Pp_End_If_Directive_Alloc is new Alloc (Subtype_For_Pp_End_If_Directive, Access_To_Subtype_For_Pp_End_If_Directive); function Allocate_Pp_End_If_Directive (Pool : Bump_Ptr_Pool) return Bare_Pp_End_If_Directive; function Allocate_Pp_End_If_Directive (Pool : Bump_Ptr_Pool) return Bare_Pp_End_If_Directive is Result : constant Access_To_Subtype_For_Pp_End_If_Directive := Bare_Pp_End_If_Directive_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Pp_End_If_Directive; return Bare_Pp_End_If_Directive (Result); end Allocate_Pp_End_If_Directive; package Bare_Pp_If_Directive_Memos is new Langkit_Support.Packrat (Bare_Pp_If_Directive, Token_Index); subtype Subtype_For_Pp_If_Directive is Root_Node_Record (Ada_Pp_If_Directive); type Access_To_Subtype_For_Pp_If_Directive is access all Subtype_For_Pp_If_Directive; pragma No_Strict_Aliasing (Access_To_Subtype_For_Pp_If_Directive); package Bare_Pp_If_Directive_Alloc is new Alloc (Subtype_For_Pp_If_Directive, Access_To_Subtype_For_Pp_If_Directive); function Allocate_Pp_If_Directive (Pool : Bump_Ptr_Pool) return Bare_Pp_If_Directive; function Allocate_Pp_If_Directive (Pool : Bump_Ptr_Pool) return Bare_Pp_If_Directive is Result : constant Access_To_Subtype_For_Pp_If_Directive := Bare_Pp_If_Directive_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Pp_If_Directive; return Bare_Pp_If_Directive (Result); end Allocate_Pp_If_Directive; package Bare_Pp_Then_Kw_Memos is new Langkit_Support.Packrat (Bare_Pp_Then_Kw, Token_Index); subtype Subtype_For_Pp_Then_Kw is Root_Node_Record (Ada_Pp_Then_Kw); type Access_To_Subtype_For_Pp_Then_Kw is access all Subtype_For_Pp_Then_Kw; pragma No_Strict_Aliasing (Access_To_Subtype_For_Pp_Then_Kw); package Bare_Pp_Then_Kw_Alloc is new Alloc (Subtype_For_Pp_Then_Kw, Access_To_Subtype_For_Pp_Then_Kw); function Allocate_Pp_Then_Kw (Pool : Bump_Ptr_Pool) return Bare_Pp_Then_Kw; function Allocate_Pp_Then_Kw (Pool : Bump_Ptr_Pool) return Bare_Pp_Then_Kw is Result : constant Access_To_Subtype_For_Pp_Then_Kw := Bare_Pp_Then_Kw_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Pp_Then_Kw; return Bare_Pp_Then_Kw (Result); end Allocate_Pp_Then_Kw; package Bare_Pragma_Node_Memos is new Langkit_Support.Packrat (Bare_Pragma_Node, Token_Index); subtype Subtype_For_Pragma_Node is Root_Node_Record (Ada_Pragma_Node); type Access_To_Subtype_For_Pragma_Node is access all Subtype_For_Pragma_Node; pragma No_Strict_Aliasing (Access_To_Subtype_For_Pragma_Node); package Bare_Pragma_Node_Alloc is new Alloc (Subtype_For_Pragma_Node, Access_To_Subtype_For_Pragma_Node); function Allocate_Pragma_Node (Pool : Bump_Ptr_Pool) return Bare_Pragma_Node; function Allocate_Pragma_Node (Pool : Bump_Ptr_Pool) return Bare_Pragma_Node is Result : constant Access_To_Subtype_For_Pragma_Node := Bare_Pragma_Node_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Pragma_Node; return Bare_Pragma_Node (Result); end Allocate_Pragma_Node; package Bare_Private_Node_Memos is new Langkit_Support.Packrat (Bare_Private_Node, Token_Index); package Bare_Private_Absent_Memos is new Langkit_Support.Packrat (Bare_Private_Absent, Token_Index); subtype Subtype_For_Private_Absent is Root_Node_Record (Ada_Private_Absent); type Access_To_Subtype_For_Private_Absent is access all Subtype_For_Private_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_Private_Absent); package Bare_Private_Absent_Alloc is new Alloc (Subtype_For_Private_Absent, Access_To_Subtype_For_Private_Absent); function Allocate_Private_Absent (Pool : Bump_Ptr_Pool) return Bare_Private_Absent; function Allocate_Private_Absent (Pool : Bump_Ptr_Pool) return Bare_Private_Absent is Result : constant Access_To_Subtype_For_Private_Absent := Bare_Private_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Private_Absent; return Bare_Private_Absent (Result); end Allocate_Private_Absent; package Bare_Private_Present_Memos is new Langkit_Support.Packrat (Bare_Private_Present, Token_Index); subtype Subtype_For_Private_Present is Root_Node_Record (Ada_Private_Present); type Access_To_Subtype_For_Private_Present is access all Subtype_For_Private_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_Private_Present); package Bare_Private_Present_Alloc is new Alloc (Subtype_For_Private_Present, Access_To_Subtype_For_Private_Present); function Allocate_Private_Present (Pool : Bump_Ptr_Pool) return Bare_Private_Present; function Allocate_Private_Present (Pool : Bump_Ptr_Pool) return Bare_Private_Present is Result : constant Access_To_Subtype_For_Private_Present := Bare_Private_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Private_Present; return Bare_Private_Present (Result); end Allocate_Private_Present; package Bare_Protected_Def_Memos is new Langkit_Support.Packrat (Bare_Protected_Def, Token_Index); subtype Subtype_For_Protected_Def is Root_Node_Record (Ada_Protected_Def); type Access_To_Subtype_For_Protected_Def is access all Subtype_For_Protected_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Protected_Def); package Bare_Protected_Def_Alloc is new Alloc (Subtype_For_Protected_Def, Access_To_Subtype_For_Protected_Def); function Allocate_Protected_Def (Pool : Bump_Ptr_Pool) return Bare_Protected_Def; function Allocate_Protected_Def (Pool : Bump_Ptr_Pool) return Bare_Protected_Def is Result : constant Access_To_Subtype_For_Protected_Def := Bare_Protected_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Protected_Def; return Bare_Protected_Def (Result); end Allocate_Protected_Def; package Bare_Protected_Node_Memos is new Langkit_Support.Packrat (Bare_Protected_Node, Token_Index); package Bare_Protected_Absent_Memos is new Langkit_Support.Packrat (Bare_Protected_Absent, Token_Index); subtype Subtype_For_Protected_Absent is Root_Node_Record (Ada_Protected_Absent); type Access_To_Subtype_For_Protected_Absent is access all Subtype_For_Protected_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_Protected_Absent); package Bare_Protected_Absent_Alloc is new Alloc (Subtype_For_Protected_Absent, Access_To_Subtype_For_Protected_Absent); function Allocate_Protected_Absent (Pool : Bump_Ptr_Pool) return Bare_Protected_Absent; function Allocate_Protected_Absent (Pool : Bump_Ptr_Pool) return Bare_Protected_Absent is Result : constant Access_To_Subtype_For_Protected_Absent := Bare_Protected_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Protected_Absent; return Bare_Protected_Absent (Result); end Allocate_Protected_Absent; package Bare_Protected_Present_Memos is new Langkit_Support.Packrat (Bare_Protected_Present, Token_Index); subtype Subtype_For_Protected_Present is Root_Node_Record (Ada_Protected_Present); type Access_To_Subtype_For_Protected_Present is access all Subtype_For_Protected_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_Protected_Present); package Bare_Protected_Present_Alloc is new Alloc (Subtype_For_Protected_Present, Access_To_Subtype_For_Protected_Present); function Allocate_Protected_Present (Pool : Bump_Ptr_Pool) return Bare_Protected_Present; function Allocate_Protected_Present (Pool : Bump_Ptr_Pool) return Bare_Protected_Present is Result : constant Access_To_Subtype_For_Protected_Present := Bare_Protected_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Protected_Present; return Bare_Protected_Present (Result); end Allocate_Protected_Present; package Bare_Quantifier_Memos is new Langkit_Support.Packrat (Bare_Quantifier, Token_Index); package Bare_Quantifier_All_Memos is new Langkit_Support.Packrat (Bare_Quantifier_All, Token_Index); subtype Subtype_For_Quantifier_All is Root_Node_Record (Ada_Quantifier_All); type Access_To_Subtype_For_Quantifier_All is access all Subtype_For_Quantifier_All; pragma No_Strict_Aliasing (Access_To_Subtype_For_Quantifier_All); package Bare_Quantifier_All_Alloc is new Alloc (Subtype_For_Quantifier_All, Access_To_Subtype_For_Quantifier_All); function Allocate_Quantifier_All (Pool : Bump_Ptr_Pool) return Bare_Quantifier_All; function Allocate_Quantifier_All (Pool : Bump_Ptr_Pool) return Bare_Quantifier_All is Result : constant Access_To_Subtype_For_Quantifier_All := Bare_Quantifier_All_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Quantifier_All; return Bare_Quantifier_All (Result); end Allocate_Quantifier_All; package Bare_Quantifier_Some_Memos is new Langkit_Support.Packrat (Bare_Quantifier_Some, Token_Index); subtype Subtype_For_Quantifier_Some is Root_Node_Record (Ada_Quantifier_Some); type Access_To_Subtype_For_Quantifier_Some is access all Subtype_For_Quantifier_Some; pragma No_Strict_Aliasing (Access_To_Subtype_For_Quantifier_Some); package Bare_Quantifier_Some_Alloc is new Alloc (Subtype_For_Quantifier_Some, Access_To_Subtype_For_Quantifier_Some); function Allocate_Quantifier_Some (Pool : Bump_Ptr_Pool) return Bare_Quantifier_Some; function Allocate_Quantifier_Some (Pool : Bump_Ptr_Pool) return Bare_Quantifier_Some is Result : constant Access_To_Subtype_For_Quantifier_Some := Bare_Quantifier_Some_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Quantifier_Some; return Bare_Quantifier_Some (Result); end Allocate_Quantifier_Some; package Bare_Range_Spec_Memos is new Langkit_Support.Packrat (Bare_Range_Spec, Token_Index); subtype Subtype_For_Range_Spec is Root_Node_Record (Ada_Range_Spec); type Access_To_Subtype_For_Range_Spec is access all Subtype_For_Range_Spec; pragma No_Strict_Aliasing (Access_To_Subtype_For_Range_Spec); package Bare_Range_Spec_Alloc is new Alloc (Subtype_For_Range_Spec, Access_To_Subtype_For_Range_Spec); function Allocate_Range_Spec (Pool : Bump_Ptr_Pool) return Bare_Range_Spec; function Allocate_Range_Spec (Pool : Bump_Ptr_Pool) return Bare_Range_Spec is Result : constant Access_To_Subtype_For_Range_Spec := Bare_Range_Spec_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Range_Spec; return Bare_Range_Spec (Result); end Allocate_Range_Spec; package Bare_Renaming_Clause_Memos is new Langkit_Support.Packrat (Bare_Renaming_Clause, Token_Index); subtype Subtype_For_Renaming_Clause is Root_Node_Record (Ada_Renaming_Clause); type Access_To_Subtype_For_Renaming_Clause is access all Subtype_For_Renaming_Clause; pragma No_Strict_Aliasing (Access_To_Subtype_For_Renaming_Clause); package Bare_Renaming_Clause_Alloc is new Alloc (Subtype_For_Renaming_Clause, Access_To_Subtype_For_Renaming_Clause); function Allocate_Renaming_Clause (Pool : Bump_Ptr_Pool) return Bare_Renaming_Clause; function Allocate_Renaming_Clause (Pool : Bump_Ptr_Pool) return Bare_Renaming_Clause is Result : constant Access_To_Subtype_For_Renaming_Clause := Bare_Renaming_Clause_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Renaming_Clause; return Bare_Renaming_Clause (Result); end Allocate_Renaming_Clause; package Bare_Synthetic_Renaming_Clause_Memos is new Langkit_Support.Packrat (Bare_Synthetic_Renaming_Clause, Token_Index); subtype Subtype_For_Synthetic_Renaming_Clause is Root_Node_Record (Ada_Synthetic_Renaming_Clause); type Access_To_Subtype_For_Synthetic_Renaming_Clause is access all Subtype_For_Synthetic_Renaming_Clause; pragma No_Strict_Aliasing (Access_To_Subtype_For_Synthetic_Renaming_Clause); package Bare_Synthetic_Renaming_Clause_Alloc is new Alloc (Subtype_For_Synthetic_Renaming_Clause, Access_To_Subtype_For_Synthetic_Renaming_Clause); function Allocate_Synthetic_Renaming_Clause (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Renaming_Clause; function Allocate_Synthetic_Renaming_Clause (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Renaming_Clause is Result : constant Access_To_Subtype_For_Synthetic_Renaming_Clause := Bare_Synthetic_Renaming_Clause_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Synthetic_Renaming_Clause; return Bare_Synthetic_Renaming_Clause (Result); end Allocate_Synthetic_Renaming_Clause; package Bare_Reverse_Node_Memos is new Langkit_Support.Packrat (Bare_Reverse_Node, Token_Index); package Bare_Reverse_Absent_Memos is new Langkit_Support.Packrat (Bare_Reverse_Absent, Token_Index); subtype Subtype_For_Reverse_Absent is Root_Node_Record (Ada_Reverse_Absent); type Access_To_Subtype_For_Reverse_Absent is access all Subtype_For_Reverse_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_Reverse_Absent); package Bare_Reverse_Absent_Alloc is new Alloc (Subtype_For_Reverse_Absent, Access_To_Subtype_For_Reverse_Absent); function Allocate_Reverse_Absent (Pool : Bump_Ptr_Pool) return Bare_Reverse_Absent; function Allocate_Reverse_Absent (Pool : Bump_Ptr_Pool) return Bare_Reverse_Absent is Result : constant Access_To_Subtype_For_Reverse_Absent := Bare_Reverse_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Reverse_Absent; return Bare_Reverse_Absent (Result); end Allocate_Reverse_Absent; package Bare_Reverse_Present_Memos is new Langkit_Support.Packrat (Bare_Reverse_Present, Token_Index); subtype Subtype_For_Reverse_Present is Root_Node_Record (Ada_Reverse_Present); type Access_To_Subtype_For_Reverse_Present is access all Subtype_For_Reverse_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_Reverse_Present); package Bare_Reverse_Present_Alloc is new Alloc (Subtype_For_Reverse_Present, Access_To_Subtype_For_Reverse_Present); function Allocate_Reverse_Present (Pool : Bump_Ptr_Pool) return Bare_Reverse_Present; function Allocate_Reverse_Present (Pool : Bump_Ptr_Pool) return Bare_Reverse_Present is Result : constant Access_To_Subtype_For_Reverse_Present := Bare_Reverse_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Reverse_Present; return Bare_Reverse_Present (Result); end Allocate_Reverse_Present; package Bare_Select_When_Part_Memos is new Langkit_Support.Packrat (Bare_Select_When_Part, Token_Index); subtype Subtype_For_Select_When_Part is Root_Node_Record (Ada_Select_When_Part); type Access_To_Subtype_For_Select_When_Part is access all Subtype_For_Select_When_Part; pragma No_Strict_Aliasing (Access_To_Subtype_For_Select_When_Part); package Bare_Select_When_Part_Alloc is new Alloc (Subtype_For_Select_When_Part, Access_To_Subtype_For_Select_When_Part); function Allocate_Select_When_Part (Pool : Bump_Ptr_Pool) return Bare_Select_When_Part; function Allocate_Select_When_Part (Pool : Bump_Ptr_Pool) return Bare_Select_When_Part is Result : constant Access_To_Subtype_For_Select_When_Part := Bare_Select_When_Part_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Select_When_Part; return Bare_Select_When_Part (Result); end Allocate_Select_When_Part; package Bare_Stmt_Memos is new Langkit_Support.Packrat (Bare_Stmt, Token_Index); package Bare_Composite_Stmt_Memos is new Langkit_Support.Packrat (Bare_Composite_Stmt, Token_Index); package Bare_Accept_Stmt_Memos is new Langkit_Support.Packrat (Bare_Accept_Stmt, Token_Index); subtype Subtype_For_Accept_Stmt is Root_Node_Record (Ada_Accept_Stmt); type Access_To_Subtype_For_Accept_Stmt is access all Subtype_For_Accept_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Accept_Stmt); package Bare_Accept_Stmt_Alloc is new Alloc (Subtype_For_Accept_Stmt, Access_To_Subtype_For_Accept_Stmt); function Allocate_Accept_Stmt (Pool : Bump_Ptr_Pool) return Bare_Accept_Stmt; function Allocate_Accept_Stmt (Pool : Bump_Ptr_Pool) return Bare_Accept_Stmt is Result : constant Access_To_Subtype_For_Accept_Stmt := Bare_Accept_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Accept_Stmt; return Bare_Accept_Stmt (Result); end Allocate_Accept_Stmt; package Bare_Accept_Stmt_With_Stmts_Memos is new Langkit_Support.Packrat (Bare_Accept_Stmt_With_Stmts, Token_Index); subtype Subtype_For_Accept_Stmt_With_Stmts is Root_Node_Record (Ada_Accept_Stmt_With_Stmts); type Access_To_Subtype_For_Accept_Stmt_With_Stmts is access all Subtype_For_Accept_Stmt_With_Stmts; pragma No_Strict_Aliasing (Access_To_Subtype_For_Accept_Stmt_With_Stmts); package Bare_Accept_Stmt_With_Stmts_Alloc is new Alloc (Subtype_For_Accept_Stmt_With_Stmts, Access_To_Subtype_For_Accept_Stmt_With_Stmts); function Allocate_Accept_Stmt_With_Stmts (Pool : Bump_Ptr_Pool) return Bare_Accept_Stmt_With_Stmts; function Allocate_Accept_Stmt_With_Stmts (Pool : Bump_Ptr_Pool) return Bare_Accept_Stmt_With_Stmts is Result : constant Access_To_Subtype_For_Accept_Stmt_With_Stmts := Bare_Accept_Stmt_With_Stmts_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Accept_Stmt_With_Stmts; return Bare_Accept_Stmt_With_Stmts (Result); end Allocate_Accept_Stmt_With_Stmts; package Bare_Base_Loop_Stmt_Memos is new Langkit_Support.Packrat (Bare_Base_Loop_Stmt, Token_Index); package Bare_For_Loop_Stmt_Memos is new Langkit_Support.Packrat (Bare_For_Loop_Stmt, Token_Index); subtype Subtype_For_For_Loop_Stmt is Root_Node_Record (Ada_For_Loop_Stmt); type Access_To_Subtype_For_For_Loop_Stmt is access all Subtype_For_For_Loop_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_For_Loop_Stmt); package Bare_For_Loop_Stmt_Alloc is new Alloc (Subtype_For_For_Loop_Stmt, Access_To_Subtype_For_For_Loop_Stmt); function Allocate_For_Loop_Stmt (Pool : Bump_Ptr_Pool) return Bare_For_Loop_Stmt; function Allocate_For_Loop_Stmt (Pool : Bump_Ptr_Pool) return Bare_For_Loop_Stmt is Result : constant Access_To_Subtype_For_For_Loop_Stmt := Bare_For_Loop_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_For_Loop_Stmt; return Bare_For_Loop_Stmt (Result); end Allocate_For_Loop_Stmt; package Bare_Loop_Stmt_Memos is new Langkit_Support.Packrat (Bare_Loop_Stmt, Token_Index); subtype Subtype_For_Loop_Stmt is Root_Node_Record (Ada_Loop_Stmt); type Access_To_Subtype_For_Loop_Stmt is access all Subtype_For_Loop_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Loop_Stmt); package Bare_Loop_Stmt_Alloc is new Alloc (Subtype_For_Loop_Stmt, Access_To_Subtype_For_Loop_Stmt); function Allocate_Loop_Stmt (Pool : Bump_Ptr_Pool) return Bare_Loop_Stmt; function Allocate_Loop_Stmt (Pool : Bump_Ptr_Pool) return Bare_Loop_Stmt is Result : constant Access_To_Subtype_For_Loop_Stmt := Bare_Loop_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Loop_Stmt; return Bare_Loop_Stmt (Result); end Allocate_Loop_Stmt; package Bare_While_Loop_Stmt_Memos is new Langkit_Support.Packrat (Bare_While_Loop_Stmt, Token_Index); subtype Subtype_For_While_Loop_Stmt is Root_Node_Record (Ada_While_Loop_Stmt); type Access_To_Subtype_For_While_Loop_Stmt is access all Subtype_For_While_Loop_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_While_Loop_Stmt); package Bare_While_Loop_Stmt_Alloc is new Alloc (Subtype_For_While_Loop_Stmt, Access_To_Subtype_For_While_Loop_Stmt); function Allocate_While_Loop_Stmt (Pool : Bump_Ptr_Pool) return Bare_While_Loop_Stmt; function Allocate_While_Loop_Stmt (Pool : Bump_Ptr_Pool) return Bare_While_Loop_Stmt is Result : constant Access_To_Subtype_For_While_Loop_Stmt := Bare_While_Loop_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_While_Loop_Stmt; return Bare_While_Loop_Stmt (Result); end Allocate_While_Loop_Stmt; package Bare_Block_Stmt_Memos is new Langkit_Support.Packrat (Bare_Block_Stmt, Token_Index); package Bare_Begin_Block_Memos is new Langkit_Support.Packrat (Bare_Begin_Block, Token_Index); subtype Subtype_For_Begin_Block is Root_Node_Record (Ada_Begin_Block); type Access_To_Subtype_For_Begin_Block is access all Subtype_For_Begin_Block; pragma No_Strict_Aliasing (Access_To_Subtype_For_Begin_Block); package Bare_Begin_Block_Alloc is new Alloc (Subtype_For_Begin_Block, Access_To_Subtype_For_Begin_Block); function Allocate_Begin_Block (Pool : Bump_Ptr_Pool) return Bare_Begin_Block; function Allocate_Begin_Block (Pool : Bump_Ptr_Pool) return Bare_Begin_Block is Result : constant Access_To_Subtype_For_Begin_Block := Bare_Begin_Block_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Begin_Block; return Bare_Begin_Block (Result); end Allocate_Begin_Block; package Bare_Decl_Block_Memos is new Langkit_Support.Packrat (Bare_Decl_Block, Token_Index); subtype Subtype_For_Decl_Block is Root_Node_Record (Ada_Decl_Block); type Access_To_Subtype_For_Decl_Block is access all Subtype_For_Decl_Block; pragma No_Strict_Aliasing (Access_To_Subtype_For_Decl_Block); package Bare_Decl_Block_Alloc is new Alloc (Subtype_For_Decl_Block, Access_To_Subtype_For_Decl_Block); function Allocate_Decl_Block (Pool : Bump_Ptr_Pool) return Bare_Decl_Block; function Allocate_Decl_Block (Pool : Bump_Ptr_Pool) return Bare_Decl_Block is Result : constant Access_To_Subtype_For_Decl_Block := Bare_Decl_Block_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Decl_Block; return Bare_Decl_Block (Result); end Allocate_Decl_Block; package Bare_Case_Stmt_Memos is new Langkit_Support.Packrat (Bare_Case_Stmt, Token_Index); subtype Subtype_For_Case_Stmt is Root_Node_Record (Ada_Case_Stmt); type Access_To_Subtype_For_Case_Stmt is access all Subtype_For_Case_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Case_Stmt); package Bare_Case_Stmt_Alloc is new Alloc (Subtype_For_Case_Stmt, Access_To_Subtype_For_Case_Stmt); function Allocate_Case_Stmt (Pool : Bump_Ptr_Pool) return Bare_Case_Stmt; function Allocate_Case_Stmt (Pool : Bump_Ptr_Pool) return Bare_Case_Stmt is Result : constant Access_To_Subtype_For_Case_Stmt := Bare_Case_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Case_Stmt; return Bare_Case_Stmt (Result); end Allocate_Case_Stmt; package Bare_Extended_Return_Stmt_Memos is new Langkit_Support.Packrat (Bare_Extended_Return_Stmt, Token_Index); subtype Subtype_For_Extended_Return_Stmt is Root_Node_Record (Ada_Extended_Return_Stmt); type Access_To_Subtype_For_Extended_Return_Stmt is access all Subtype_For_Extended_Return_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Extended_Return_Stmt); package Bare_Extended_Return_Stmt_Alloc is new Alloc (Subtype_For_Extended_Return_Stmt, Access_To_Subtype_For_Extended_Return_Stmt); function Allocate_Extended_Return_Stmt (Pool : Bump_Ptr_Pool) return Bare_Extended_Return_Stmt; function Allocate_Extended_Return_Stmt (Pool : Bump_Ptr_Pool) return Bare_Extended_Return_Stmt is Result : constant Access_To_Subtype_For_Extended_Return_Stmt := Bare_Extended_Return_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Extended_Return_Stmt; return Bare_Extended_Return_Stmt (Result); end Allocate_Extended_Return_Stmt; package Bare_If_Stmt_Memos is new Langkit_Support.Packrat (Bare_If_Stmt, Token_Index); subtype Subtype_For_If_Stmt is Root_Node_Record (Ada_If_Stmt); type Access_To_Subtype_For_If_Stmt is access all Subtype_For_If_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_If_Stmt); package Bare_If_Stmt_Alloc is new Alloc (Subtype_For_If_Stmt, Access_To_Subtype_For_If_Stmt); function Allocate_If_Stmt (Pool : Bump_Ptr_Pool) return Bare_If_Stmt; function Allocate_If_Stmt (Pool : Bump_Ptr_Pool) return Bare_If_Stmt is Result : constant Access_To_Subtype_For_If_Stmt := Bare_If_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_If_Stmt; return Bare_If_Stmt (Result); end Allocate_If_Stmt; package Bare_Named_Stmt_Memos is new Langkit_Support.Packrat (Bare_Named_Stmt, Token_Index); subtype Subtype_For_Named_Stmt is Root_Node_Record (Ada_Named_Stmt); type Access_To_Subtype_For_Named_Stmt is access all Subtype_For_Named_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Named_Stmt); package Bare_Named_Stmt_Alloc is new Alloc (Subtype_For_Named_Stmt, Access_To_Subtype_For_Named_Stmt); function Allocate_Named_Stmt (Pool : Bump_Ptr_Pool) return Bare_Named_Stmt; function Allocate_Named_Stmt (Pool : Bump_Ptr_Pool) return Bare_Named_Stmt is Result : constant Access_To_Subtype_For_Named_Stmt := Bare_Named_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Named_Stmt; return Bare_Named_Stmt (Result); end Allocate_Named_Stmt; package Bare_Select_Stmt_Memos is new Langkit_Support.Packrat (Bare_Select_Stmt, Token_Index); subtype Subtype_For_Select_Stmt is Root_Node_Record (Ada_Select_Stmt); type Access_To_Subtype_For_Select_Stmt is access all Subtype_For_Select_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Select_Stmt); package Bare_Select_Stmt_Alloc is new Alloc (Subtype_For_Select_Stmt, Access_To_Subtype_For_Select_Stmt); function Allocate_Select_Stmt (Pool : Bump_Ptr_Pool) return Bare_Select_Stmt; function Allocate_Select_Stmt (Pool : Bump_Ptr_Pool) return Bare_Select_Stmt is Result : constant Access_To_Subtype_For_Select_Stmt := Bare_Select_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Select_Stmt; return Bare_Select_Stmt (Result); end Allocate_Select_Stmt; package Bare_Error_Stmt_Memos is new Langkit_Support.Packrat (Bare_Error_Stmt, Token_Index); subtype Subtype_For_Error_Stmt is Root_Node_Record (Ada_Error_Stmt); type Access_To_Subtype_For_Error_Stmt is access all Subtype_For_Error_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Error_Stmt); package Bare_Error_Stmt_Alloc is new Alloc (Subtype_For_Error_Stmt, Access_To_Subtype_For_Error_Stmt); function Allocate_Error_Stmt (Pool : Bump_Ptr_Pool) return Bare_Error_Stmt; function Allocate_Error_Stmt (Pool : Bump_Ptr_Pool) return Bare_Error_Stmt is Result : constant Access_To_Subtype_For_Error_Stmt := Bare_Error_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Error_Stmt; return Bare_Error_Stmt (Result); end Allocate_Error_Stmt; package Bare_Simple_Stmt_Memos is new Langkit_Support.Packrat (Bare_Simple_Stmt, Token_Index); package Bare_Abort_Stmt_Memos is new Langkit_Support.Packrat (Bare_Abort_Stmt, Token_Index); subtype Subtype_For_Abort_Stmt is Root_Node_Record (Ada_Abort_Stmt); type Access_To_Subtype_For_Abort_Stmt is access all Subtype_For_Abort_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Abort_Stmt); package Bare_Abort_Stmt_Alloc is new Alloc (Subtype_For_Abort_Stmt, Access_To_Subtype_For_Abort_Stmt); function Allocate_Abort_Stmt (Pool : Bump_Ptr_Pool) return Bare_Abort_Stmt; function Allocate_Abort_Stmt (Pool : Bump_Ptr_Pool) return Bare_Abort_Stmt is Result : constant Access_To_Subtype_For_Abort_Stmt := Bare_Abort_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Abort_Stmt; return Bare_Abort_Stmt (Result); end Allocate_Abort_Stmt; package Bare_Assign_Stmt_Memos is new Langkit_Support.Packrat (Bare_Assign_Stmt, Token_Index); subtype Subtype_For_Assign_Stmt is Root_Node_Record (Ada_Assign_Stmt); type Access_To_Subtype_For_Assign_Stmt is access all Subtype_For_Assign_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Assign_Stmt); package Bare_Assign_Stmt_Alloc is new Alloc (Subtype_For_Assign_Stmt, Access_To_Subtype_For_Assign_Stmt); function Allocate_Assign_Stmt (Pool : Bump_Ptr_Pool) return Bare_Assign_Stmt; function Allocate_Assign_Stmt (Pool : Bump_Ptr_Pool) return Bare_Assign_Stmt is Result : constant Access_To_Subtype_For_Assign_Stmt := Bare_Assign_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Assign_Stmt; return Bare_Assign_Stmt (Result); end Allocate_Assign_Stmt; package Bare_Call_Stmt_Memos is new Langkit_Support.Packrat (Bare_Call_Stmt, Token_Index); subtype Subtype_For_Call_Stmt is Root_Node_Record (Ada_Call_Stmt); type Access_To_Subtype_For_Call_Stmt is access all Subtype_For_Call_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Call_Stmt); package Bare_Call_Stmt_Alloc is new Alloc (Subtype_For_Call_Stmt, Access_To_Subtype_For_Call_Stmt); function Allocate_Call_Stmt (Pool : Bump_Ptr_Pool) return Bare_Call_Stmt; function Allocate_Call_Stmt (Pool : Bump_Ptr_Pool) return Bare_Call_Stmt is Result : constant Access_To_Subtype_For_Call_Stmt := Bare_Call_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Call_Stmt; return Bare_Call_Stmt (Result); end Allocate_Call_Stmt; package Bare_Delay_Stmt_Memos is new Langkit_Support.Packrat (Bare_Delay_Stmt, Token_Index); subtype Subtype_For_Delay_Stmt is Root_Node_Record (Ada_Delay_Stmt); type Access_To_Subtype_For_Delay_Stmt is access all Subtype_For_Delay_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Delay_Stmt); package Bare_Delay_Stmt_Alloc is new Alloc (Subtype_For_Delay_Stmt, Access_To_Subtype_For_Delay_Stmt); function Allocate_Delay_Stmt (Pool : Bump_Ptr_Pool) return Bare_Delay_Stmt; function Allocate_Delay_Stmt (Pool : Bump_Ptr_Pool) return Bare_Delay_Stmt is Result : constant Access_To_Subtype_For_Delay_Stmt := Bare_Delay_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Delay_Stmt; return Bare_Delay_Stmt (Result); end Allocate_Delay_Stmt; package Bare_Exit_Stmt_Memos is new Langkit_Support.Packrat (Bare_Exit_Stmt, Token_Index); subtype Subtype_For_Exit_Stmt is Root_Node_Record (Ada_Exit_Stmt); type Access_To_Subtype_For_Exit_Stmt is access all Subtype_For_Exit_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Exit_Stmt); package Bare_Exit_Stmt_Alloc is new Alloc (Subtype_For_Exit_Stmt, Access_To_Subtype_For_Exit_Stmt); function Allocate_Exit_Stmt (Pool : Bump_Ptr_Pool) return Bare_Exit_Stmt; function Allocate_Exit_Stmt (Pool : Bump_Ptr_Pool) return Bare_Exit_Stmt is Result : constant Access_To_Subtype_For_Exit_Stmt := Bare_Exit_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Exit_Stmt; return Bare_Exit_Stmt (Result); end Allocate_Exit_Stmt; package Bare_Goto_Stmt_Memos is new Langkit_Support.Packrat (Bare_Goto_Stmt, Token_Index); subtype Subtype_For_Goto_Stmt is Root_Node_Record (Ada_Goto_Stmt); type Access_To_Subtype_For_Goto_Stmt is access all Subtype_For_Goto_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Goto_Stmt); package Bare_Goto_Stmt_Alloc is new Alloc (Subtype_For_Goto_Stmt, Access_To_Subtype_For_Goto_Stmt); function Allocate_Goto_Stmt (Pool : Bump_Ptr_Pool) return Bare_Goto_Stmt; function Allocate_Goto_Stmt (Pool : Bump_Ptr_Pool) return Bare_Goto_Stmt is Result : constant Access_To_Subtype_For_Goto_Stmt := Bare_Goto_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Goto_Stmt; return Bare_Goto_Stmt (Result); end Allocate_Goto_Stmt; package Bare_Label_Memos is new Langkit_Support.Packrat (Bare_Label, Token_Index); subtype Subtype_For_Label is Root_Node_Record (Ada_Label); type Access_To_Subtype_For_Label is access all Subtype_For_Label; pragma No_Strict_Aliasing (Access_To_Subtype_For_Label); package Bare_Label_Alloc is new Alloc (Subtype_For_Label, Access_To_Subtype_For_Label); function Allocate_Label (Pool : Bump_Ptr_Pool) return Bare_Label; function Allocate_Label (Pool : Bump_Ptr_Pool) return Bare_Label is Result : constant Access_To_Subtype_For_Label := Bare_Label_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Label; return Bare_Label (Result); end Allocate_Label; package Bare_Null_Stmt_Memos is new Langkit_Support.Packrat (Bare_Null_Stmt, Token_Index); subtype Subtype_For_Null_Stmt is Root_Node_Record (Ada_Null_Stmt); type Access_To_Subtype_For_Null_Stmt is access all Subtype_For_Null_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Null_Stmt); package Bare_Null_Stmt_Alloc is new Alloc (Subtype_For_Null_Stmt, Access_To_Subtype_For_Null_Stmt); function Allocate_Null_Stmt (Pool : Bump_Ptr_Pool) return Bare_Null_Stmt; function Allocate_Null_Stmt (Pool : Bump_Ptr_Pool) return Bare_Null_Stmt is Result : constant Access_To_Subtype_For_Null_Stmt := Bare_Null_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Null_Stmt; return Bare_Null_Stmt (Result); end Allocate_Null_Stmt; package Bare_Raise_Stmt_Memos is new Langkit_Support.Packrat (Bare_Raise_Stmt, Token_Index); subtype Subtype_For_Raise_Stmt is Root_Node_Record (Ada_Raise_Stmt); type Access_To_Subtype_For_Raise_Stmt is access all Subtype_For_Raise_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Raise_Stmt); package Bare_Raise_Stmt_Alloc is new Alloc (Subtype_For_Raise_Stmt, Access_To_Subtype_For_Raise_Stmt); function Allocate_Raise_Stmt (Pool : Bump_Ptr_Pool) return Bare_Raise_Stmt; function Allocate_Raise_Stmt (Pool : Bump_Ptr_Pool) return Bare_Raise_Stmt is Result : constant Access_To_Subtype_For_Raise_Stmt := Bare_Raise_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Raise_Stmt; return Bare_Raise_Stmt (Result); end Allocate_Raise_Stmt; package Bare_Requeue_Stmt_Memos is new Langkit_Support.Packrat (Bare_Requeue_Stmt, Token_Index); subtype Subtype_For_Requeue_Stmt is Root_Node_Record (Ada_Requeue_Stmt); type Access_To_Subtype_For_Requeue_Stmt is access all Subtype_For_Requeue_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Requeue_Stmt); package Bare_Requeue_Stmt_Alloc is new Alloc (Subtype_For_Requeue_Stmt, Access_To_Subtype_For_Requeue_Stmt); function Allocate_Requeue_Stmt (Pool : Bump_Ptr_Pool) return Bare_Requeue_Stmt; function Allocate_Requeue_Stmt (Pool : Bump_Ptr_Pool) return Bare_Requeue_Stmt is Result : constant Access_To_Subtype_For_Requeue_Stmt := Bare_Requeue_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Requeue_Stmt; return Bare_Requeue_Stmt (Result); end Allocate_Requeue_Stmt; package Bare_Return_Stmt_Memos is new Langkit_Support.Packrat (Bare_Return_Stmt, Token_Index); subtype Subtype_For_Return_Stmt is Root_Node_Record (Ada_Return_Stmt); type Access_To_Subtype_For_Return_Stmt is access all Subtype_For_Return_Stmt; pragma No_Strict_Aliasing (Access_To_Subtype_For_Return_Stmt); package Bare_Return_Stmt_Alloc is new Alloc (Subtype_For_Return_Stmt, Access_To_Subtype_For_Return_Stmt); function Allocate_Return_Stmt (Pool : Bump_Ptr_Pool) return Bare_Return_Stmt; function Allocate_Return_Stmt (Pool : Bump_Ptr_Pool) return Bare_Return_Stmt is Result : constant Access_To_Subtype_For_Return_Stmt := Bare_Return_Stmt_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Return_Stmt; return Bare_Return_Stmt (Result); end Allocate_Return_Stmt; package Bare_Terminate_Alternative_Memos is new Langkit_Support.Packrat (Bare_Terminate_Alternative, Token_Index); subtype Subtype_For_Terminate_Alternative is Root_Node_Record (Ada_Terminate_Alternative); type Access_To_Subtype_For_Terminate_Alternative is access all Subtype_For_Terminate_Alternative; pragma No_Strict_Aliasing (Access_To_Subtype_For_Terminate_Alternative); package Bare_Terminate_Alternative_Alloc is new Alloc (Subtype_For_Terminate_Alternative, Access_To_Subtype_For_Terminate_Alternative); function Allocate_Terminate_Alternative (Pool : Bump_Ptr_Pool) return Bare_Terminate_Alternative; function Allocate_Terminate_Alternative (Pool : Bump_Ptr_Pool) return Bare_Terminate_Alternative is Result : constant Access_To_Subtype_For_Terminate_Alternative := Bare_Terminate_Alternative_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Terminate_Alternative; return Bare_Terminate_Alternative (Result); end Allocate_Terminate_Alternative; package Bare_Subp_Kind_Memos is new Langkit_Support.Packrat (Bare_Subp_Kind, Token_Index); package Bare_Subp_Kind_Function_Memos is new Langkit_Support.Packrat (Bare_Subp_Kind_Function, Token_Index); subtype Subtype_For_Subp_Kind_Function is Root_Node_Record (Ada_Subp_Kind_Function); type Access_To_Subtype_For_Subp_Kind_Function is access all Subtype_For_Subp_Kind_Function; pragma No_Strict_Aliasing (Access_To_Subtype_For_Subp_Kind_Function); package Bare_Subp_Kind_Function_Alloc is new Alloc (Subtype_For_Subp_Kind_Function, Access_To_Subtype_For_Subp_Kind_Function); function Allocate_Subp_Kind_Function (Pool : Bump_Ptr_Pool) return Bare_Subp_Kind_Function; function Allocate_Subp_Kind_Function (Pool : Bump_Ptr_Pool) return Bare_Subp_Kind_Function is Result : constant Access_To_Subtype_For_Subp_Kind_Function := Bare_Subp_Kind_Function_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Subp_Kind_Function; return Bare_Subp_Kind_Function (Result); end Allocate_Subp_Kind_Function; package Bare_Subp_Kind_Procedure_Memos is new Langkit_Support.Packrat (Bare_Subp_Kind_Procedure, Token_Index); subtype Subtype_For_Subp_Kind_Procedure is Root_Node_Record (Ada_Subp_Kind_Procedure); type Access_To_Subtype_For_Subp_Kind_Procedure is access all Subtype_For_Subp_Kind_Procedure; pragma No_Strict_Aliasing (Access_To_Subtype_For_Subp_Kind_Procedure); package Bare_Subp_Kind_Procedure_Alloc is new Alloc (Subtype_For_Subp_Kind_Procedure, Access_To_Subtype_For_Subp_Kind_Procedure); function Allocate_Subp_Kind_Procedure (Pool : Bump_Ptr_Pool) return Bare_Subp_Kind_Procedure; function Allocate_Subp_Kind_Procedure (Pool : Bump_Ptr_Pool) return Bare_Subp_Kind_Procedure is Result : constant Access_To_Subtype_For_Subp_Kind_Procedure := Bare_Subp_Kind_Procedure_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Subp_Kind_Procedure; return Bare_Subp_Kind_Procedure (Result); end Allocate_Subp_Kind_Procedure; package Bare_Subunit_Memos is new Langkit_Support.Packrat (Bare_Subunit, Token_Index); subtype Subtype_For_Subunit is Root_Node_Record (Ada_Subunit); type Access_To_Subtype_For_Subunit is access all Subtype_For_Subunit; pragma No_Strict_Aliasing (Access_To_Subtype_For_Subunit); package Bare_Subunit_Alloc is new Alloc (Subtype_For_Subunit, Access_To_Subtype_For_Subunit); function Allocate_Subunit (Pool : Bump_Ptr_Pool) return Bare_Subunit; function Allocate_Subunit (Pool : Bump_Ptr_Pool) return Bare_Subunit is Result : constant Access_To_Subtype_For_Subunit := Bare_Subunit_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Subunit; return Bare_Subunit (Result); end Allocate_Subunit; package Bare_Synchronized_Node_Memos is new Langkit_Support.Packrat (Bare_Synchronized_Node, Token_Index); package Bare_Synchronized_Absent_Memos is new Langkit_Support.Packrat (Bare_Synchronized_Absent, Token_Index); subtype Subtype_For_Synchronized_Absent is Root_Node_Record (Ada_Synchronized_Absent); type Access_To_Subtype_For_Synchronized_Absent is access all Subtype_For_Synchronized_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_Synchronized_Absent); package Bare_Synchronized_Absent_Alloc is new Alloc (Subtype_For_Synchronized_Absent, Access_To_Subtype_For_Synchronized_Absent); function Allocate_Synchronized_Absent (Pool : Bump_Ptr_Pool) return Bare_Synchronized_Absent; function Allocate_Synchronized_Absent (Pool : Bump_Ptr_Pool) return Bare_Synchronized_Absent is Result : constant Access_To_Subtype_For_Synchronized_Absent := Bare_Synchronized_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Synchronized_Absent; return Bare_Synchronized_Absent (Result); end Allocate_Synchronized_Absent; package Bare_Synchronized_Present_Memos is new Langkit_Support.Packrat (Bare_Synchronized_Present, Token_Index); subtype Subtype_For_Synchronized_Present is Root_Node_Record (Ada_Synchronized_Present); type Access_To_Subtype_For_Synchronized_Present is access all Subtype_For_Synchronized_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_Synchronized_Present); package Bare_Synchronized_Present_Alloc is new Alloc (Subtype_For_Synchronized_Present, Access_To_Subtype_For_Synchronized_Present); function Allocate_Synchronized_Present (Pool : Bump_Ptr_Pool) return Bare_Synchronized_Present; function Allocate_Synchronized_Present (Pool : Bump_Ptr_Pool) return Bare_Synchronized_Present is Result : constant Access_To_Subtype_For_Synchronized_Present := Bare_Synchronized_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Synchronized_Present; return Bare_Synchronized_Present (Result); end Allocate_Synchronized_Present; package Bare_Tagged_Node_Memos is new Langkit_Support.Packrat (Bare_Tagged_Node, Token_Index); package Bare_Tagged_Absent_Memos is new Langkit_Support.Packrat (Bare_Tagged_Absent, Token_Index); subtype Subtype_For_Tagged_Absent is Root_Node_Record (Ada_Tagged_Absent); type Access_To_Subtype_For_Tagged_Absent is access all Subtype_For_Tagged_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_Tagged_Absent); package Bare_Tagged_Absent_Alloc is new Alloc (Subtype_For_Tagged_Absent, Access_To_Subtype_For_Tagged_Absent); function Allocate_Tagged_Absent (Pool : Bump_Ptr_Pool) return Bare_Tagged_Absent; function Allocate_Tagged_Absent (Pool : Bump_Ptr_Pool) return Bare_Tagged_Absent is Result : constant Access_To_Subtype_For_Tagged_Absent := Bare_Tagged_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Tagged_Absent; return Bare_Tagged_Absent (Result); end Allocate_Tagged_Absent; package Bare_Tagged_Present_Memos is new Langkit_Support.Packrat (Bare_Tagged_Present, Token_Index); subtype Subtype_For_Tagged_Present is Root_Node_Record (Ada_Tagged_Present); type Access_To_Subtype_For_Tagged_Present is access all Subtype_For_Tagged_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_Tagged_Present); package Bare_Tagged_Present_Alloc is new Alloc (Subtype_For_Tagged_Present, Access_To_Subtype_For_Tagged_Present); function Allocate_Tagged_Present (Pool : Bump_Ptr_Pool) return Bare_Tagged_Present; function Allocate_Tagged_Present (Pool : Bump_Ptr_Pool) return Bare_Tagged_Present is Result : constant Access_To_Subtype_For_Tagged_Present := Bare_Tagged_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Tagged_Present; return Bare_Tagged_Present (Result); end Allocate_Tagged_Present; package Bare_Task_Def_Memos is new Langkit_Support.Packrat (Bare_Task_Def, Token_Index); subtype Subtype_For_Task_Def is Root_Node_Record (Ada_Task_Def); type Access_To_Subtype_For_Task_Def is access all Subtype_For_Task_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Task_Def); package Bare_Task_Def_Alloc is new Alloc (Subtype_For_Task_Def, Access_To_Subtype_For_Task_Def); function Allocate_Task_Def (Pool : Bump_Ptr_Pool) return Bare_Task_Def; function Allocate_Task_Def (Pool : Bump_Ptr_Pool) return Bare_Task_Def is Result : constant Access_To_Subtype_For_Task_Def := Bare_Task_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Task_Def; return Bare_Task_Def (Result); end Allocate_Task_Def; package Bare_Type_Attributes_Repository_Memos is new Langkit_Support.Packrat (Bare_Type_Attributes_Repository, Token_Index); subtype Subtype_For_Type_Attributes_Repository is Root_Node_Record (Ada_Type_Attributes_Repository); type Access_To_Subtype_For_Type_Attributes_Repository is access all Subtype_For_Type_Attributes_Repository; pragma No_Strict_Aliasing (Access_To_Subtype_For_Type_Attributes_Repository); package Bare_Type_Attributes_Repository_Alloc is new Alloc (Subtype_For_Type_Attributes_Repository, Access_To_Subtype_For_Type_Attributes_Repository); function Allocate_Type_Attributes_Repository (Pool : Bump_Ptr_Pool) return Bare_Type_Attributes_Repository; function Allocate_Type_Attributes_Repository (Pool : Bump_Ptr_Pool) return Bare_Type_Attributes_Repository is Result : constant Access_To_Subtype_For_Type_Attributes_Repository := Bare_Type_Attributes_Repository_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Type_Attributes_Repository; return Bare_Type_Attributes_Repository (Result); end Allocate_Type_Attributes_Repository; package Bare_Type_Def_Memos is new Langkit_Support.Packrat (Bare_Type_Def, Token_Index); package Bare_Access_Def_Memos is new Langkit_Support.Packrat (Bare_Access_Def, Token_Index); package Bare_Access_To_Subp_Def_Memos is new Langkit_Support.Packrat (Bare_Access_To_Subp_Def, Token_Index); subtype Subtype_For_Access_To_Subp_Def is Root_Node_Record (Ada_Access_To_Subp_Def); type Access_To_Subtype_For_Access_To_Subp_Def is access all Subtype_For_Access_To_Subp_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Access_To_Subp_Def); package Bare_Access_To_Subp_Def_Alloc is new Alloc (Subtype_For_Access_To_Subp_Def, Access_To_Subtype_For_Access_To_Subp_Def); function Allocate_Access_To_Subp_Def (Pool : Bump_Ptr_Pool) return Bare_Access_To_Subp_Def; function Allocate_Access_To_Subp_Def (Pool : Bump_Ptr_Pool) return Bare_Access_To_Subp_Def is Result : constant Access_To_Subtype_For_Access_To_Subp_Def := Bare_Access_To_Subp_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Access_To_Subp_Def; return Bare_Access_To_Subp_Def (Result); end Allocate_Access_To_Subp_Def; package Bare_Base_Type_Access_Def_Memos is new Langkit_Support.Packrat (Bare_Base_Type_Access_Def, Token_Index); package Bare_Anonymous_Type_Access_Def_Memos is new Langkit_Support.Packrat (Bare_Anonymous_Type_Access_Def, Token_Index); subtype Subtype_For_Anonymous_Type_Access_Def is Root_Node_Record (Ada_Anonymous_Type_Access_Def); type Access_To_Subtype_For_Anonymous_Type_Access_Def is access all Subtype_For_Anonymous_Type_Access_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Anonymous_Type_Access_Def); package Bare_Anonymous_Type_Access_Def_Alloc is new Alloc (Subtype_For_Anonymous_Type_Access_Def, Access_To_Subtype_For_Anonymous_Type_Access_Def); function Allocate_Anonymous_Type_Access_Def (Pool : Bump_Ptr_Pool) return Bare_Anonymous_Type_Access_Def; function Allocate_Anonymous_Type_Access_Def (Pool : Bump_Ptr_Pool) return Bare_Anonymous_Type_Access_Def is Result : constant Access_To_Subtype_For_Anonymous_Type_Access_Def := Bare_Anonymous_Type_Access_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Anonymous_Type_Access_Def; return Bare_Anonymous_Type_Access_Def (Result); end Allocate_Anonymous_Type_Access_Def; package Bare_Type_Access_Def_Memos is new Langkit_Support.Packrat (Bare_Type_Access_Def, Token_Index); subtype Subtype_For_Type_Access_Def is Root_Node_Record (Ada_Type_Access_Def); type Access_To_Subtype_For_Type_Access_Def is access all Subtype_For_Type_Access_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Type_Access_Def); package Bare_Type_Access_Def_Alloc is new Alloc (Subtype_For_Type_Access_Def, Access_To_Subtype_For_Type_Access_Def); function Allocate_Type_Access_Def (Pool : Bump_Ptr_Pool) return Bare_Type_Access_Def; function Allocate_Type_Access_Def (Pool : Bump_Ptr_Pool) return Bare_Type_Access_Def is Result : constant Access_To_Subtype_For_Type_Access_Def := Bare_Type_Access_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Type_Access_Def; return Bare_Type_Access_Def (Result); end Allocate_Type_Access_Def; package Bare_Array_Type_Def_Memos is new Langkit_Support.Packrat (Bare_Array_Type_Def, Token_Index); subtype Subtype_For_Array_Type_Def is Root_Node_Record (Ada_Array_Type_Def); type Access_To_Subtype_For_Array_Type_Def is access all Subtype_For_Array_Type_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Array_Type_Def); package Bare_Array_Type_Def_Alloc is new Alloc (Subtype_For_Array_Type_Def, Access_To_Subtype_For_Array_Type_Def); function Allocate_Array_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Array_Type_Def; function Allocate_Array_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Array_Type_Def is Result : constant Access_To_Subtype_For_Array_Type_Def := Bare_Array_Type_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Array_Type_Def; return Bare_Array_Type_Def (Result); end Allocate_Array_Type_Def; package Bare_Derived_Type_Def_Memos is new Langkit_Support.Packrat (Bare_Derived_Type_Def, Token_Index); subtype Subtype_For_Derived_Type_Def is Root_Node_Record (Ada_Derived_Type_Def); type Access_To_Subtype_For_Derived_Type_Def is access all Subtype_For_Derived_Type_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Derived_Type_Def); package Bare_Derived_Type_Def_Alloc is new Alloc (Subtype_For_Derived_Type_Def, Access_To_Subtype_For_Derived_Type_Def); function Allocate_Derived_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Derived_Type_Def; function Allocate_Derived_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Derived_Type_Def is Result : constant Access_To_Subtype_For_Derived_Type_Def := Bare_Derived_Type_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Derived_Type_Def; return Bare_Derived_Type_Def (Result); end Allocate_Derived_Type_Def; package Bare_Enum_Type_Def_Memos is new Langkit_Support.Packrat (Bare_Enum_Type_Def, Token_Index); subtype Subtype_For_Enum_Type_Def is Root_Node_Record (Ada_Enum_Type_Def); type Access_To_Subtype_For_Enum_Type_Def is access all Subtype_For_Enum_Type_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Enum_Type_Def); package Bare_Enum_Type_Def_Alloc is new Alloc (Subtype_For_Enum_Type_Def, Access_To_Subtype_For_Enum_Type_Def); function Allocate_Enum_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Enum_Type_Def; function Allocate_Enum_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Enum_Type_Def is Result : constant Access_To_Subtype_For_Enum_Type_Def := Bare_Enum_Type_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Enum_Type_Def; return Bare_Enum_Type_Def (Result); end Allocate_Enum_Type_Def; package Bare_Formal_Discrete_Type_Def_Memos is new Langkit_Support.Packrat (Bare_Formal_Discrete_Type_Def, Token_Index); subtype Subtype_For_Formal_Discrete_Type_Def is Root_Node_Record (Ada_Formal_Discrete_Type_Def); type Access_To_Subtype_For_Formal_Discrete_Type_Def is access all Subtype_For_Formal_Discrete_Type_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Formal_Discrete_Type_Def); package Bare_Formal_Discrete_Type_Def_Alloc is new Alloc (Subtype_For_Formal_Discrete_Type_Def, Access_To_Subtype_For_Formal_Discrete_Type_Def); function Allocate_Formal_Discrete_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Formal_Discrete_Type_Def; function Allocate_Formal_Discrete_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Formal_Discrete_Type_Def is Result : constant Access_To_Subtype_For_Formal_Discrete_Type_Def := Bare_Formal_Discrete_Type_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Formal_Discrete_Type_Def; return Bare_Formal_Discrete_Type_Def (Result); end Allocate_Formal_Discrete_Type_Def; package Bare_Interface_Type_Def_Memos is new Langkit_Support.Packrat (Bare_Interface_Type_Def, Token_Index); subtype Subtype_For_Interface_Type_Def is Root_Node_Record (Ada_Interface_Type_Def); type Access_To_Subtype_For_Interface_Type_Def is access all Subtype_For_Interface_Type_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Interface_Type_Def); package Bare_Interface_Type_Def_Alloc is new Alloc (Subtype_For_Interface_Type_Def, Access_To_Subtype_For_Interface_Type_Def); function Allocate_Interface_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Interface_Type_Def; function Allocate_Interface_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Interface_Type_Def is Result : constant Access_To_Subtype_For_Interface_Type_Def := Bare_Interface_Type_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Interface_Type_Def; return Bare_Interface_Type_Def (Result); end Allocate_Interface_Type_Def; package Bare_Mod_Int_Type_Def_Memos is new Langkit_Support.Packrat (Bare_Mod_Int_Type_Def, Token_Index); subtype Subtype_For_Mod_Int_Type_Def is Root_Node_Record (Ada_Mod_Int_Type_Def); type Access_To_Subtype_For_Mod_Int_Type_Def is access all Subtype_For_Mod_Int_Type_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Mod_Int_Type_Def); package Bare_Mod_Int_Type_Def_Alloc is new Alloc (Subtype_For_Mod_Int_Type_Def, Access_To_Subtype_For_Mod_Int_Type_Def); function Allocate_Mod_Int_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Mod_Int_Type_Def; function Allocate_Mod_Int_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Mod_Int_Type_Def is Result : constant Access_To_Subtype_For_Mod_Int_Type_Def := Bare_Mod_Int_Type_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Mod_Int_Type_Def; return Bare_Mod_Int_Type_Def (Result); end Allocate_Mod_Int_Type_Def; package Bare_Private_Type_Def_Memos is new Langkit_Support.Packrat (Bare_Private_Type_Def, Token_Index); subtype Subtype_For_Private_Type_Def is Root_Node_Record (Ada_Private_Type_Def); type Access_To_Subtype_For_Private_Type_Def is access all Subtype_For_Private_Type_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Private_Type_Def); package Bare_Private_Type_Def_Alloc is new Alloc (Subtype_For_Private_Type_Def, Access_To_Subtype_For_Private_Type_Def); function Allocate_Private_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Private_Type_Def; function Allocate_Private_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Private_Type_Def is Result : constant Access_To_Subtype_For_Private_Type_Def := Bare_Private_Type_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Private_Type_Def; return Bare_Private_Type_Def (Result); end Allocate_Private_Type_Def; package Bare_Real_Type_Def_Memos is new Langkit_Support.Packrat (Bare_Real_Type_Def, Token_Index); package Bare_Decimal_Fixed_Point_Def_Memos is new Langkit_Support.Packrat (Bare_Decimal_Fixed_Point_Def, Token_Index); subtype Subtype_For_Decimal_Fixed_Point_Def is Root_Node_Record (Ada_Decimal_Fixed_Point_Def); type Access_To_Subtype_For_Decimal_Fixed_Point_Def is access all Subtype_For_Decimal_Fixed_Point_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Decimal_Fixed_Point_Def); package Bare_Decimal_Fixed_Point_Def_Alloc is new Alloc (Subtype_For_Decimal_Fixed_Point_Def, Access_To_Subtype_For_Decimal_Fixed_Point_Def); function Allocate_Decimal_Fixed_Point_Def (Pool : Bump_Ptr_Pool) return Bare_Decimal_Fixed_Point_Def; function Allocate_Decimal_Fixed_Point_Def (Pool : Bump_Ptr_Pool) return Bare_Decimal_Fixed_Point_Def is Result : constant Access_To_Subtype_For_Decimal_Fixed_Point_Def := Bare_Decimal_Fixed_Point_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Decimal_Fixed_Point_Def; return Bare_Decimal_Fixed_Point_Def (Result); end Allocate_Decimal_Fixed_Point_Def; package Bare_Floating_Point_Def_Memos is new Langkit_Support.Packrat (Bare_Floating_Point_Def, Token_Index); subtype Subtype_For_Floating_Point_Def is Root_Node_Record (Ada_Floating_Point_Def); type Access_To_Subtype_For_Floating_Point_Def is access all Subtype_For_Floating_Point_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Floating_Point_Def); package Bare_Floating_Point_Def_Alloc is new Alloc (Subtype_For_Floating_Point_Def, Access_To_Subtype_For_Floating_Point_Def); function Allocate_Floating_Point_Def (Pool : Bump_Ptr_Pool) return Bare_Floating_Point_Def; function Allocate_Floating_Point_Def (Pool : Bump_Ptr_Pool) return Bare_Floating_Point_Def is Result : constant Access_To_Subtype_For_Floating_Point_Def := Bare_Floating_Point_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Floating_Point_Def; return Bare_Floating_Point_Def (Result); end Allocate_Floating_Point_Def; package Bare_Ordinary_Fixed_Point_Def_Memos is new Langkit_Support.Packrat (Bare_Ordinary_Fixed_Point_Def, Token_Index); subtype Subtype_For_Ordinary_Fixed_Point_Def is Root_Node_Record (Ada_Ordinary_Fixed_Point_Def); type Access_To_Subtype_For_Ordinary_Fixed_Point_Def is access all Subtype_For_Ordinary_Fixed_Point_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Ordinary_Fixed_Point_Def); package Bare_Ordinary_Fixed_Point_Def_Alloc is new Alloc (Subtype_For_Ordinary_Fixed_Point_Def, Access_To_Subtype_For_Ordinary_Fixed_Point_Def); function Allocate_Ordinary_Fixed_Point_Def (Pool : Bump_Ptr_Pool) return Bare_Ordinary_Fixed_Point_Def; function Allocate_Ordinary_Fixed_Point_Def (Pool : Bump_Ptr_Pool) return Bare_Ordinary_Fixed_Point_Def is Result : constant Access_To_Subtype_For_Ordinary_Fixed_Point_Def := Bare_Ordinary_Fixed_Point_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Ordinary_Fixed_Point_Def; return Bare_Ordinary_Fixed_Point_Def (Result); end Allocate_Ordinary_Fixed_Point_Def; package Bare_Record_Type_Def_Memos is new Langkit_Support.Packrat (Bare_Record_Type_Def, Token_Index); subtype Subtype_For_Record_Type_Def is Root_Node_Record (Ada_Record_Type_Def); type Access_To_Subtype_For_Record_Type_Def is access all Subtype_For_Record_Type_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Record_Type_Def); package Bare_Record_Type_Def_Alloc is new Alloc (Subtype_For_Record_Type_Def, Access_To_Subtype_For_Record_Type_Def); function Allocate_Record_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Record_Type_Def; function Allocate_Record_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Record_Type_Def is Result : constant Access_To_Subtype_For_Record_Type_Def := Bare_Record_Type_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Record_Type_Def; return Bare_Record_Type_Def (Result); end Allocate_Record_Type_Def; package Bare_Signed_Int_Type_Def_Memos is new Langkit_Support.Packrat (Bare_Signed_Int_Type_Def, Token_Index); subtype Subtype_For_Signed_Int_Type_Def is Root_Node_Record (Ada_Signed_Int_Type_Def); type Access_To_Subtype_For_Signed_Int_Type_Def is access all Subtype_For_Signed_Int_Type_Def; pragma No_Strict_Aliasing (Access_To_Subtype_For_Signed_Int_Type_Def); package Bare_Signed_Int_Type_Def_Alloc is new Alloc (Subtype_For_Signed_Int_Type_Def, Access_To_Subtype_For_Signed_Int_Type_Def); function Allocate_Signed_Int_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Signed_Int_Type_Def; function Allocate_Signed_Int_Type_Def (Pool : Bump_Ptr_Pool) return Bare_Signed_Int_Type_Def is Result : constant Access_To_Subtype_For_Signed_Int_Type_Def := Bare_Signed_Int_Type_Def_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Signed_Int_Type_Def; return Bare_Signed_Int_Type_Def (Result); end Allocate_Signed_Int_Type_Def; package Bare_Type_Expr_Memos is new Langkit_Support.Packrat (Bare_Type_Expr, Token_Index); package Bare_Anonymous_Type_Memos is new Langkit_Support.Packrat (Bare_Anonymous_Type, Token_Index); subtype Subtype_For_Anonymous_Type is Root_Node_Record (Ada_Anonymous_Type); type Access_To_Subtype_For_Anonymous_Type is access all Subtype_For_Anonymous_Type; pragma No_Strict_Aliasing (Access_To_Subtype_For_Anonymous_Type); package Bare_Anonymous_Type_Alloc is new Alloc (Subtype_For_Anonymous_Type, Access_To_Subtype_For_Anonymous_Type); function Allocate_Anonymous_Type (Pool : Bump_Ptr_Pool) return Bare_Anonymous_Type; function Allocate_Anonymous_Type (Pool : Bump_Ptr_Pool) return Bare_Anonymous_Type is Result : constant Access_To_Subtype_For_Anonymous_Type := Bare_Anonymous_Type_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Anonymous_Type; return Bare_Anonymous_Type (Result); end Allocate_Anonymous_Type; package Bare_Enum_Lit_Synth_Type_Expr_Memos is new Langkit_Support.Packrat (Bare_Enum_Lit_Synth_Type_Expr, Token_Index); subtype Subtype_For_Enum_Lit_Synth_Type_Expr is Root_Node_Record (Ada_Enum_Lit_Synth_Type_Expr); type Access_To_Subtype_For_Enum_Lit_Synth_Type_Expr is access all Subtype_For_Enum_Lit_Synth_Type_Expr; pragma No_Strict_Aliasing (Access_To_Subtype_For_Enum_Lit_Synth_Type_Expr); package Bare_Enum_Lit_Synth_Type_Expr_Alloc is new Alloc (Subtype_For_Enum_Lit_Synth_Type_Expr, Access_To_Subtype_For_Enum_Lit_Synth_Type_Expr); function Allocate_Enum_Lit_Synth_Type_Expr (Pool : Bump_Ptr_Pool) return Bare_Enum_Lit_Synth_Type_Expr; function Allocate_Enum_Lit_Synth_Type_Expr (Pool : Bump_Ptr_Pool) return Bare_Enum_Lit_Synth_Type_Expr is Result : constant Access_To_Subtype_For_Enum_Lit_Synth_Type_Expr := Bare_Enum_Lit_Synth_Type_Expr_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Enum_Lit_Synth_Type_Expr; return Bare_Enum_Lit_Synth_Type_Expr (Result); end Allocate_Enum_Lit_Synth_Type_Expr; package Bare_Subtype_Indication_Memos is new Langkit_Support.Packrat (Bare_Subtype_Indication, Token_Index); subtype Subtype_For_Subtype_Indication is Root_Node_Record (Ada_Subtype_Indication); type Access_To_Subtype_For_Subtype_Indication is access all Subtype_For_Subtype_Indication; pragma No_Strict_Aliasing (Access_To_Subtype_For_Subtype_Indication); package Bare_Subtype_Indication_Alloc is new Alloc (Subtype_For_Subtype_Indication, Access_To_Subtype_For_Subtype_Indication); function Allocate_Subtype_Indication (Pool : Bump_Ptr_Pool) return Bare_Subtype_Indication; function Allocate_Subtype_Indication (Pool : Bump_Ptr_Pool) return Bare_Subtype_Indication is Result : constant Access_To_Subtype_For_Subtype_Indication := Bare_Subtype_Indication_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Subtype_Indication; return Bare_Subtype_Indication (Result); end Allocate_Subtype_Indication; package Bare_Constrained_Subtype_Indication_Memos is new Langkit_Support.Packrat (Bare_Constrained_Subtype_Indication, Token_Index); subtype Subtype_For_Constrained_Subtype_Indication is Root_Node_Record (Ada_Constrained_Subtype_Indication); type Access_To_Subtype_For_Constrained_Subtype_Indication is access all Subtype_For_Constrained_Subtype_Indication; pragma No_Strict_Aliasing (Access_To_Subtype_For_Constrained_Subtype_Indication); package Bare_Constrained_Subtype_Indication_Alloc is new Alloc (Subtype_For_Constrained_Subtype_Indication, Access_To_Subtype_For_Constrained_Subtype_Indication); function Allocate_Constrained_Subtype_Indication (Pool : Bump_Ptr_Pool) return Bare_Constrained_Subtype_Indication; function Allocate_Constrained_Subtype_Indication (Pool : Bump_Ptr_Pool) return Bare_Constrained_Subtype_Indication is Result : constant Access_To_Subtype_For_Constrained_Subtype_Indication := Bare_Constrained_Subtype_Indication_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Constrained_Subtype_Indication; return Bare_Constrained_Subtype_Indication (Result); end Allocate_Constrained_Subtype_Indication; package Bare_Discrete_Subtype_Indication_Memos is new Langkit_Support.Packrat (Bare_Discrete_Subtype_Indication, Token_Index); subtype Subtype_For_Discrete_Subtype_Indication is Root_Node_Record (Ada_Discrete_Subtype_Indication); type Access_To_Subtype_For_Discrete_Subtype_Indication is access all Subtype_For_Discrete_Subtype_Indication; pragma No_Strict_Aliasing (Access_To_Subtype_For_Discrete_Subtype_Indication); package Bare_Discrete_Subtype_Indication_Alloc is new Alloc (Subtype_For_Discrete_Subtype_Indication, Access_To_Subtype_For_Discrete_Subtype_Indication); function Allocate_Discrete_Subtype_Indication (Pool : Bump_Ptr_Pool) return Bare_Discrete_Subtype_Indication; function Allocate_Discrete_Subtype_Indication (Pool : Bump_Ptr_Pool) return Bare_Discrete_Subtype_Indication is Result : constant Access_To_Subtype_For_Discrete_Subtype_Indication := Bare_Discrete_Subtype_Indication_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Discrete_Subtype_Indication; return Bare_Discrete_Subtype_Indication (Result); end Allocate_Discrete_Subtype_Indication; package Bare_Synthetic_Type_Expr_Memos is new Langkit_Support.Packrat (Bare_Synthetic_Type_Expr, Token_Index); subtype Subtype_For_Synthetic_Type_Expr is Root_Node_Record (Ada_Synthetic_Type_Expr); type Access_To_Subtype_For_Synthetic_Type_Expr is access all Subtype_For_Synthetic_Type_Expr; pragma No_Strict_Aliasing (Access_To_Subtype_For_Synthetic_Type_Expr); package Bare_Synthetic_Type_Expr_Alloc is new Alloc (Subtype_For_Synthetic_Type_Expr, Access_To_Subtype_For_Synthetic_Type_Expr); function Allocate_Synthetic_Type_Expr (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Type_Expr; function Allocate_Synthetic_Type_Expr (Pool : Bump_Ptr_Pool) return Bare_Synthetic_Type_Expr is Result : constant Access_To_Subtype_For_Synthetic_Type_Expr := Bare_Synthetic_Type_Expr_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Synthetic_Type_Expr; return Bare_Synthetic_Type_Expr (Result); end Allocate_Synthetic_Type_Expr; package Bare_Unconstrained_Array_Index_Memos is new Langkit_Support.Packrat (Bare_Unconstrained_Array_Index, Token_Index); subtype Subtype_For_Unconstrained_Array_Index is Root_Node_Record (Ada_Unconstrained_Array_Index); type Access_To_Subtype_For_Unconstrained_Array_Index is access all Subtype_For_Unconstrained_Array_Index; pragma No_Strict_Aliasing (Access_To_Subtype_For_Unconstrained_Array_Index); package Bare_Unconstrained_Array_Index_Alloc is new Alloc (Subtype_For_Unconstrained_Array_Index, Access_To_Subtype_For_Unconstrained_Array_Index); function Allocate_Unconstrained_Array_Index (Pool : Bump_Ptr_Pool) return Bare_Unconstrained_Array_Index; function Allocate_Unconstrained_Array_Index (Pool : Bump_Ptr_Pool) return Bare_Unconstrained_Array_Index is Result : constant Access_To_Subtype_For_Unconstrained_Array_Index := Bare_Unconstrained_Array_Index_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Unconstrained_Array_Index; return Bare_Unconstrained_Array_Index (Result); end Allocate_Unconstrained_Array_Index; package Bare_Until_Node_Memos is new Langkit_Support.Packrat (Bare_Until_Node, Token_Index); package Bare_Until_Absent_Memos is new Langkit_Support.Packrat (Bare_Until_Absent, Token_Index); subtype Subtype_For_Until_Absent is Root_Node_Record (Ada_Until_Absent); type Access_To_Subtype_For_Until_Absent is access all Subtype_For_Until_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_Until_Absent); package Bare_Until_Absent_Alloc is new Alloc (Subtype_For_Until_Absent, Access_To_Subtype_For_Until_Absent); function Allocate_Until_Absent (Pool : Bump_Ptr_Pool) return Bare_Until_Absent; function Allocate_Until_Absent (Pool : Bump_Ptr_Pool) return Bare_Until_Absent is Result : constant Access_To_Subtype_For_Until_Absent := Bare_Until_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Until_Absent; return Bare_Until_Absent (Result); end Allocate_Until_Absent; package Bare_Until_Present_Memos is new Langkit_Support.Packrat (Bare_Until_Present, Token_Index); subtype Subtype_For_Until_Present is Root_Node_Record (Ada_Until_Present); type Access_To_Subtype_For_Until_Present is access all Subtype_For_Until_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_Until_Present); package Bare_Until_Present_Alloc is new Alloc (Subtype_For_Until_Present, Access_To_Subtype_For_Until_Present); function Allocate_Until_Present (Pool : Bump_Ptr_Pool) return Bare_Until_Present; function Allocate_Until_Present (Pool : Bump_Ptr_Pool) return Bare_Until_Present is Result : constant Access_To_Subtype_For_Until_Present := Bare_Until_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Until_Present; return Bare_Until_Present (Result); end Allocate_Until_Present; package Bare_Use_Clause_Memos is new Langkit_Support.Packrat (Bare_Use_Clause, Token_Index); package Bare_Use_Package_Clause_Memos is new Langkit_Support.Packrat (Bare_Use_Package_Clause, Token_Index); subtype Subtype_For_Use_Package_Clause is Root_Node_Record (Ada_Use_Package_Clause); type Access_To_Subtype_For_Use_Package_Clause is access all Subtype_For_Use_Package_Clause; pragma No_Strict_Aliasing (Access_To_Subtype_For_Use_Package_Clause); package Bare_Use_Package_Clause_Alloc is new Alloc (Subtype_For_Use_Package_Clause, Access_To_Subtype_For_Use_Package_Clause); function Allocate_Use_Package_Clause (Pool : Bump_Ptr_Pool) return Bare_Use_Package_Clause; function Allocate_Use_Package_Clause (Pool : Bump_Ptr_Pool) return Bare_Use_Package_Clause is Result : constant Access_To_Subtype_For_Use_Package_Clause := Bare_Use_Package_Clause_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Use_Package_Clause; return Bare_Use_Package_Clause (Result); end Allocate_Use_Package_Clause; package Bare_Use_Type_Clause_Memos is new Langkit_Support.Packrat (Bare_Use_Type_Clause, Token_Index); subtype Subtype_For_Use_Type_Clause is Root_Node_Record (Ada_Use_Type_Clause); type Access_To_Subtype_For_Use_Type_Clause is access all Subtype_For_Use_Type_Clause; pragma No_Strict_Aliasing (Access_To_Subtype_For_Use_Type_Clause); package Bare_Use_Type_Clause_Alloc is new Alloc (Subtype_For_Use_Type_Clause, Access_To_Subtype_For_Use_Type_Clause); function Allocate_Use_Type_Clause (Pool : Bump_Ptr_Pool) return Bare_Use_Type_Clause; function Allocate_Use_Type_Clause (Pool : Bump_Ptr_Pool) return Bare_Use_Type_Clause is Result : constant Access_To_Subtype_For_Use_Type_Clause := Bare_Use_Type_Clause_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Use_Type_Clause; return Bare_Use_Type_Clause (Result); end Allocate_Use_Type_Clause; package Bare_Value_Sequence_Memos is new Langkit_Support.Packrat (Bare_Value_Sequence, Token_Index); subtype Subtype_For_Value_Sequence is Root_Node_Record (Ada_Value_Sequence); type Access_To_Subtype_For_Value_Sequence is access all Subtype_For_Value_Sequence; pragma No_Strict_Aliasing (Access_To_Subtype_For_Value_Sequence); package Bare_Value_Sequence_Alloc is new Alloc (Subtype_For_Value_Sequence, Access_To_Subtype_For_Value_Sequence); function Allocate_Value_Sequence (Pool : Bump_Ptr_Pool) return Bare_Value_Sequence; function Allocate_Value_Sequence (Pool : Bump_Ptr_Pool) return Bare_Value_Sequence is Result : constant Access_To_Subtype_For_Value_Sequence := Bare_Value_Sequence_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Value_Sequence; return Bare_Value_Sequence (Result); end Allocate_Value_Sequence; package Bare_Variant_Memos is new Langkit_Support.Packrat (Bare_Variant, Token_Index); subtype Subtype_For_Variant is Root_Node_Record (Ada_Variant); type Access_To_Subtype_For_Variant is access all Subtype_For_Variant; pragma No_Strict_Aliasing (Access_To_Subtype_For_Variant); package Bare_Variant_Alloc is new Alloc (Subtype_For_Variant, Access_To_Subtype_For_Variant); function Allocate_Variant (Pool : Bump_Ptr_Pool) return Bare_Variant; function Allocate_Variant (Pool : Bump_Ptr_Pool) return Bare_Variant is Result : constant Access_To_Subtype_For_Variant := Bare_Variant_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Variant; return Bare_Variant (Result); end Allocate_Variant; package Bare_Variant_Part_Memos is new Langkit_Support.Packrat (Bare_Variant_Part, Token_Index); subtype Subtype_For_Variant_Part is Root_Node_Record (Ada_Variant_Part); type Access_To_Subtype_For_Variant_Part is access all Subtype_For_Variant_Part; pragma No_Strict_Aliasing (Access_To_Subtype_For_Variant_Part); package Bare_Variant_Part_Alloc is new Alloc (Subtype_For_Variant_Part, Access_To_Subtype_For_Variant_Part); function Allocate_Variant_Part (Pool : Bump_Ptr_Pool) return Bare_Variant_Part; function Allocate_Variant_Part (Pool : Bump_Ptr_Pool) return Bare_Variant_Part is Result : constant Access_To_Subtype_For_Variant_Part := Bare_Variant_Part_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_Variant_Part; return Bare_Variant_Part (Result); end Allocate_Variant_Part; package Bare_With_Clause_Memos is new Langkit_Support.Packrat (Bare_With_Clause, Token_Index); subtype Subtype_For_With_Clause is Root_Node_Record (Ada_With_Clause); type Access_To_Subtype_For_With_Clause is access all Subtype_For_With_Clause; pragma No_Strict_Aliasing (Access_To_Subtype_For_With_Clause); package Bare_With_Clause_Alloc is new Alloc (Subtype_For_With_Clause, Access_To_Subtype_For_With_Clause); function Allocate_With_Clause (Pool : Bump_Ptr_Pool) return Bare_With_Clause; function Allocate_With_Clause (Pool : Bump_Ptr_Pool) return Bare_With_Clause is Result : constant Access_To_Subtype_For_With_Clause := Bare_With_Clause_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_With_Clause; return Bare_With_Clause (Result); end Allocate_With_Clause; package Bare_With_Private_Memos is new Langkit_Support.Packrat (Bare_With_Private, Token_Index); package Bare_With_Private_Absent_Memos is new Langkit_Support.Packrat (Bare_With_Private_Absent, Token_Index); subtype Subtype_For_With_Private_Absent is Root_Node_Record (Ada_With_Private_Absent); type Access_To_Subtype_For_With_Private_Absent is access all Subtype_For_With_Private_Absent; pragma No_Strict_Aliasing (Access_To_Subtype_For_With_Private_Absent); package Bare_With_Private_Absent_Alloc is new Alloc (Subtype_For_With_Private_Absent, Access_To_Subtype_For_With_Private_Absent); function Allocate_With_Private_Absent (Pool : Bump_Ptr_Pool) return Bare_With_Private_Absent; function Allocate_With_Private_Absent (Pool : Bump_Ptr_Pool) return Bare_With_Private_Absent is Result : constant Access_To_Subtype_For_With_Private_Absent := Bare_With_Private_Absent_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_With_Private_Absent; return Bare_With_Private_Absent (Result); end Allocate_With_Private_Absent; package Bare_With_Private_Present_Memos is new Langkit_Support.Packrat (Bare_With_Private_Present, Token_Index); subtype Subtype_For_With_Private_Present is Root_Node_Record (Ada_With_Private_Present); type Access_To_Subtype_For_With_Private_Present is access all Subtype_For_With_Private_Present; pragma No_Strict_Aliasing (Access_To_Subtype_For_With_Private_Present); package Bare_With_Private_Present_Alloc is new Alloc (Subtype_For_With_Private_Present, Access_To_Subtype_For_With_Private_Present); function Allocate_With_Private_Present (Pool : Bump_Ptr_Pool) return Bare_With_Private_Present; function Allocate_With_Private_Present (Pool : Bump_Ptr_Pool) return Bare_With_Private_Present is Result : constant Access_To_Subtype_For_With_Private_Present := Bare_With_Private_Present_Alloc.Alloc (Pool); Result_Kind : Ada_Node_Kind_Type with Import, Address => Result.Kind'Address; -- Result.Kind is a discriminant, so we can't modify it directly. -- We need to initialize it manually, though, as we don't use a -- standard Ada allocator for nodes. Use an overlay to workaround -- Ada's restrictions. begin Result_Kind := Ada_With_Private_Present; return Bare_With_Private_Present (Result); end Allocate_With_Private_Present; pragma Warnings (On, "is not referenced"); type Dontskip_Parser_Function is access function (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; package Dont_Skip_Fn_Vectors is new Ada.Containers.Vectors (Natural, Dontskip_Parser_Function); type Free_Parse_List_Record; type Free_Parse_List is access all Free_Parse_List_Record; -- Cache of temporary lists of AST nodes used in List parsers type Free_Parse_List_Record is record Nodes : Bare_Ada_Node_Vectors.Vector; Next : Free_Parse_List; end record; type Parser_Private_Part_Type is record Parse_Lists : Free_Parse_List; Abort_Stmt_Transform_Parse0_Memo : Bare_Abort_Stmt_Memos.Memo_Type; Abstract_State_Decl_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Abstract_Subp_Decl_Transform_Parse0_Memo : Bare_Abstract_Subp_Decl_Memos.Memo_Type; Accept_Stmt_Or_Parse0_Memo : Bare_Accept_Stmt_Memos.Memo_Type; Access_Def_Or_Parse0_Memo : Bare_Access_Def_Memos.Memo_Type; Aggregate_Assoc_Or_Parse1_Memo : Bare_Basic_Assoc_Memos.Memo_Type; Aggregate_Or_Parse0_Memo : Bare_Base_Aggregate_Memos.Memo_Type; Allocator_Transform_Parse0_Memo : Bare_Allocator_Memos.Memo_Type; Anonymous_Type_Decl_Transform_Parse0_Memo : Bare_Anonymous_Type_Decl_Memos.Memo_Type; Anonymous_Type_Transform_Parse0_Memo : Bare_Anonymous_Type_Memos.Memo_Type; Array_Type_Def_Transform_Parse2_Memo : Bare_Array_Type_Def_Memos.Memo_Type; Aspect_Assoc_Or_Parse2_Memo : Bare_Aspect_Assoc_Memos.Memo_Type; Aspect_Clause_Or_Parse1_Memo : Bare_Aspect_Clause_Memos.Memo_Type; Aspect_Spec_Opt_Parse0_Memo : Bare_Aspect_Spec_Memos.Memo_Type; Assignment_Stmt_Transform_Parse0_Memo : Bare_Assign_Stmt_Memos.Memo_Type; Attr_Suffix_List_Parse0_Memo : Bare_Assoc_List_Memos.Memo_Type; Basic_Decl_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Basic_Decls_List_Parse0_Memo : Bare_Ada_Node_List_Memos.Memo_Type; Block_Stmt_Or_Parse0_Memo : Bare_Composite_Stmt_Memos.Memo_Type; Body_Or_Parse0_Memo : Bare_Body_Node_Memos.Memo_Type; Body_Stub_Or_Parse0_Memo : Bare_Body_Stub_Memos.Memo_Type; Boolean_Op_Or_Parse0_Memo : Bare_Op_Memos.Memo_Type; Box_Expr_Transform_Parse0_Memo : Bare_Box_Expr_Memos.Memo_Type; Bracket_Aggregate_Or_Parse0_Memo : Bare_Base_Aggregate_Memos.Memo_Type; Call_Stmt_Transform_Parse0_Memo : Bare_Call_Stmt_Memos.Memo_Type; Call_Suffix_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Case_Alt_Transform_Parse0_Memo : Bare_Case_Stmt_Alternative_Memos.Memo_Type; Case_Expr_Alt_Transform_Parse0_Memo : Bare_Case_Expr_Alternative_Memos.Memo_Type; Case_Expr_Transform_Parse0_Memo : Bare_Case_Expr_Memos.Memo_Type; Case_Stmt_Transform_Parse0_Memo : Bare_Case_Stmt_Memos.Memo_Type; Char_Literal_Transform_Parse0_Memo : Bare_Char_Literal_Memos.Memo_Type; Choice_List_List_Parse0_Memo : Bare_Alternatives_List_Memos.Memo_Type; Choice_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Compilation_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Compilation_Unit_Transform_Parse0_Memo : Bare_Compilation_Unit_Memos.Memo_Type; Component_Clause_Transform_Parse0_Memo : Bare_Component_Clause_Memos.Memo_Type; Component_Decl_Transform_Parse0_Memo : Bare_Component_Decl_Memos.Memo_Type; Component_Def_Transform_Parse0_Memo : Bare_Component_Def_Memos.Memo_Type; Component_Item_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Component_List_Transform_Parse0_Memo : Bare_Component_List_Memos.Memo_Type; Composite_Constraint_Assoc_Transform_Parse0_Memo : Bare_Composite_Constraint_Assoc_Memos.Memo_Type; Composite_Constraint_Transform_Parse0_Memo : Bare_Composite_Constraint_Memos.Memo_Type; Compound_Stmt_Or_Parse0_Memo : Bare_Composite_Stmt_Memos.Memo_Type; Conditional_Expr_Or_Parse0_Memo : Bare_Expr_Memos.Memo_Type; Constrained_Subtype_Indication_Transform_Parse0_Memo : Bare_Constrained_Subtype_Indication_Memos.Memo_Type; Constraint_List_List_Parse0_Memo : Bare_Constraint_List_Memos.Memo_Type; Constraint_Or_Parse0_Memo : Bare_Constraint_Memos.Memo_Type; Context_Item_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Contract_Case_Assoc_Transform_Parse0_Memo : Bare_Contract_Case_Assoc_Memos.Memo_Type; Contract_Cases_Expr_Transform_Parse0_Memo : Bare_Contract_Cases_Memos.Memo_Type; Dec_Literal_Transform_Parse0_Memo : Bare_Real_Literal_Memos.Memo_Type; Decimal_Fixed_Point_Def_Transform_Parse0_Memo : Bare_Decimal_Fixed_Point_Def_Memos.Memo_Type; Decl_Part_Transform_Parse0_Memo : Bare_Declarative_Part_Memos.Memo_Type; Declare_Expr_Transform_Parse0_Memo : Bare_Decl_Expr_Memos.Memo_Type; Defining_Id_List_List_Parse0_Memo : Bare_Defining_Name_List_Memos.Memo_Type; Defining_Id_Transform_Parse0_Memo : Bare_Defining_Name_Memos.Memo_Type; Defining_Name_Transform_Parse0_Memo : Bare_Defining_Name_Memos.Memo_Type; Delay_Stmt_Transform_Parse0_Memo : Bare_Delay_Stmt_Memos.Memo_Type; Delta_Constraint_Transform_Parse0_Memo : Bare_Delta_Constraint_Memos.Memo_Type; Derived_Type_Def_Transform_Parse0_Memo : Bare_Derived_Type_Def_Memos.Memo_Type; Digits_Constraint_Transform_Parse0_Memo : Bare_Digits_Constraint_Memos.Memo_Type; Direct_Name_Or_Parse0_Memo : Bare_Base_Id_Memos.Memo_Type; Direct_Name_Or_Target_Name_Or_Parse0_Memo : Bare_Name_Memos.Memo_Type; Discr_Spec_List_List_Parse0_Memo : Bare_Discriminant_Spec_List_Memos.Memo_Type; Discrete_Range_Or_Parse0_Memo : Bare_Expr_Memos.Memo_Type; Discrete_Subtype_Definition_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Discrete_Subtype_Indication_Transform_Parse0_Memo : Bare_Discrete_Subtype_Indication_Memos.Memo_Type; Discriminant_Part_Or_Parse0_Memo : Bare_Discriminant_Part_Memos.Memo_Type; Discriminant_Spec_Transform_Parse0_Memo : Bare_Discriminant_Spec_Memos.Memo_Type; Dontskip_Case_Alt0_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Elsif_Part0_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Exception_Handler0_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Generic_Decl0_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Generic_Decl1_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Handled_Stmts0_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_If_Stmt0_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_If_Stmt1_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Iloop_Stmt0_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Iloop_Stmt1_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Iloop_Stmt2_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Package_Body0_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Package_Decl0_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Package_Decl1_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Protected_Body0_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Recov_Decl_Part0_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Select_Stmt0_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Select_Stmt1_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Dontskip_Select_Stmt2_Extract_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Elsif_Part_Transform_Parse0_Memo : Bare_Elsif_Stmt_Part_Memos.Memo_Type; Entry_Body_Transform_Parse3_Memo : Bare_Entry_Body_Memos.Memo_Type; Entry_Decl_Transform_Parse1_Memo : Bare_Entry_Decl_Memos.Memo_Type; Enum_Literal_Decl_Transform_Parse1_Memo : Bare_Enum_Literal_Decl_Memos.Memo_Type; Enum_Type_Def_Transform_Parse0_Memo : Bare_Enum_Type_Def_Memos.Memo_Type; Exception_Decl_Transform_Parse0_Memo : Bare_Exception_Decl_Memos.Memo_Type; Exception_Handler_Transform_Parse0_Memo : Bare_Exception_Handler_Memos.Memo_Type; Exit_Stmt_Transform_Parse0_Memo : Bare_Exit_Stmt_Memos.Memo_Type; Expr_Fn_Transform_Parse0_Memo : Bare_Expr_Function_Memos.Memo_Type; Expr_Or_Parse0_Memo : Bare_Expr_Memos.Memo_Type; Ext_Ret_Stmt_Object_Decl_Transform_Parse0_Memo : Bare_Extended_Return_Stmt_Object_Decl_Memos.Memo_Type; Ext_Return_Stmt_Transform_Parse0_Memo : Bare_Extended_Return_Stmt_Memos.Memo_Type; Factor_Or_Parse1_Memo : Bare_Expr_Memos.Memo_Type; Floating_Point_Def_Transform_Parse0_Memo : Bare_Floating_Point_Def_Memos.Memo_Type; For_Loop_Param_Spec_Transform_Parse3_Memo : Bare_For_Loop_Spec_Memos.Memo_Type; Formal_Discrete_Type_Def_Transform_Parse0_Memo : Bare_Formal_Discrete_Type_Def_Memos.Memo_Type; Formal_Subp_Decl_Or_Parse2_Memo : Bare_Formal_Subp_Decl_Memos.Memo_Type; Formal_Type_Decl_Or_Parse1_Memo : Bare_Base_Type_Decl_Memos.Memo_Type; Generic_Decl_Or_Parse0_Memo : Bare_Generic_Decl_Memos.Memo_Type; Generic_Formal_Decl_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Generic_Formal_Part_Transform_Parse0_Memo : Bare_Generic_Formal_Part_Memos.Memo_Type; Generic_Instantiation_Or_Parse1_Memo : Bare_Generic_Instantiation_Memos.Memo_Type; Generic_Renaming_Decl_Or_Parse1_Memo : Bare_Generic_Renaming_Decl_Memos.Memo_Type; Goto_Stmt_Transform_Parse0_Memo : Bare_Goto_Stmt_Memos.Memo_Type; Handled_Stmts_Transform_Parse0_Memo : Bare_Handled_Stmts_Memos.Memo_Type; Iblock_Stmt_Or_Parse0_Memo : Bare_Block_Stmt_Memos.Memo_Type; Identifier_Transform_Parse0_Memo : Bare_Identifier_Memos.Memo_Type; If_Expr_Transform_Parse1_Memo : Bare_If_Expr_Memos.Memo_Type; If_Stmt_Transform_Parse0_Memo : Bare_If_Stmt_Memos.Memo_Type; Iloop_Stmt_Or_Parse0_Memo : Bare_Base_Loop_Stmt_Memos.Memo_Type; Incomplete_Type_Decl_Or_Parse0_Memo : Bare_Incomplete_Type_Decl_Memos.Memo_Type; Int_Literal_Transform_Parse0_Memo : Bare_Int_Literal_Memos.Memo_Type; Interface_Type_Def_Transform_Parse4_Memo : Bare_Interface_Type_Def_Memos.Memo_Type; Iterated_Assoc_Transform_Parse0_Memo : Bare_Iterated_Assoc_Memos.Memo_Type; Label_Transform_Parse1_Memo : Bare_Label_Memos.Memo_Type; Library_Item_Transform_Parse1_Memo : Bare_Library_Item_Memos.Memo_Type; Library_Unit_Body_Or_Parse0_Memo : Bare_Body_Node_Memos.Memo_Type; Library_Unit_Renaming_Decl_Or_Parse0_Memo : Bare_Basic_Decl_Memos.Memo_Type; Loop_Stmt_Or_Parse0_Memo : Bare_Composite_Stmt_Memos.Memo_Type; Membership_Choice_List_List_Parse0_Memo : Bare_Expr_Alternatives_List_Memos.Memo_Type; Membership_Choice_Or_Parse0_Memo : Bare_Expr_Memos.Memo_Type; Mod_Int_Type_Def_Transform_Parse0_Memo : Bare_Mod_Int_Type_Def_Memos.Memo_Type; Mode_Or_Parse0_Memo : Bare_Mode_Memos.Memo_Type; Multi_Abstract_State_Decl_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Multidim_Array_Assoc_Transform_Parse0_Memo : Bare_Multi_Dim_Array_Assoc_Memos.Memo_Type; Name_Or_Parse2_Memo : Bare_Name_Memos.Memo_Type; No_Type_Object_Renaming_Decl_Transform_Parse0_Memo : Bare_No_Type_Object_Renaming_Decl_Memos.Memo_Type; Null_Literal_Transform_Parse0_Memo : Bare_Null_Literal_Memos.Memo_Type; Null_Stmt_Transform_Parse0_Memo : Bare_Null_Stmt_Memos.Memo_Type; Null_Subp_Decl_Transform_Parse0_Memo : Bare_Null_Subp_Decl_Memos.Memo_Type; Num_Literal_Or_Parse0_Memo : Bare_Num_Literal_Memos.Memo_Type; Number_Decl_Transform_Parse0_Memo : Bare_Number_Decl_Memos.Memo_Type; Object_Decl_Or_Parse0_Memo : Bare_Basic_Decl_Memos.Memo_Type; Ordinary_Fixed_Point_Def_Transform_Parse0_Memo : Bare_Ordinary_Fixed_Point_Def_Memos.Memo_Type; Others_Designator_Transform_Parse0_Memo : Bare_Others_Designator_Memos.Memo_Type; Overriding_Indicator_Or_Parse0_Memo : Bare_Overriding_Node_Memos.Memo_Type; Package_Body_Stub_Transform_Parse0_Memo : Bare_Package_Body_Stub_Memos.Memo_Type; Package_Body_Transform_Parse1_Memo : Bare_Package_Body_Memos.Memo_Type; Package_Decl_Transform_Parse3_Memo : Bare_Package_Decl_Memos.Memo_Type; Package_Renaming_Decl_Transform_Parse0_Memo : Bare_Package_Renaming_Decl_Memos.Memo_Type; Param_Assoc_Transform_Parse0_Memo : Bare_Param_Assoc_Memos.Memo_Type; Param_Spec_Transform_Parse0_Memo : Bare_Param_Spec_Memos.Memo_Type; Param_Specs_Transform_Parse0_Memo : Bare_Params_Memos.Memo_Type; Paren_Expr_Transform_Parse0_Memo : Bare_Paren_Expr_Memos.Memo_Type; Parent_List_List_Parse0_Memo : Bare_Parent_List_Memos.Memo_Type; Pp_Directive_Or_Parse0_Memo : Bare_Pp_Directive_Memos.Memo_Type; Pp_Expr_Or_Parse0_Memo : Bare_Expr_Memos.Memo_Type; Pp_Term_Or_Parse2_Memo : Bare_Expr_Memos.Memo_Type; Pp_Then_Opt_Parse0_Memo : Bare_Pp_Then_Kw_Memos.Memo_Type; Pragma_Argument_Transform_Parse1_Memo : Bare_Pragma_Argument_Assoc_Memos.Memo_Type; Pragma_Transform_Parse0_Memo : Bare_Pragma_Node_Memos.Memo_Type; Primary_Or_Parse0_Memo : Bare_Expr_Memos.Memo_Type; Protected_Body_Stub_Transform_Parse0_Memo : Bare_Protected_Body_Stub_Memos.Memo_Type; Protected_Body_Transform_Parse1_Memo : Bare_Protected_Body_Memos.Memo_Type; Protected_Decl_Transform_Parse0_Memo : Bare_Single_Protected_Decl_Memos.Memo_Type; Protected_Def_Transform_Parse3_Memo : Bare_Protected_Def_Memos.Memo_Type; Protected_El_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Protected_Op_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Protected_Type_Decl_Transform_Parse0_Memo : Bare_Protected_Type_Decl_Memos.Memo_Type; Qual_Name_Internal_Or_Parse0_Memo : Bare_Name_Memos.Memo_Type; Qualified_Name_Transform_Parse0_Memo : Bare_Qual_Expr_Memos.Memo_Type; Quantified_Expr_Transform_Parse2_Memo : Bare_Quantified_Expr_Memos.Memo_Type; Raise_Expr_Or_Parse0_Memo : Bare_Raise_Expr_Memos.Memo_Type; Raise_Stmt_Or_Parse0_Memo : Bare_Raise_Stmt_Memos.Memo_Type; Range_Constraint_Transform_Parse1_Memo : Bare_Range_Constraint_Memos.Memo_Type; Range_Spec_Transform_Parse0_Memo : Bare_Range_Spec_Memos.Memo_Type; Real_Type_Def_Or_Parse0_Memo : Bare_Real_Type_Def_Memos.Memo_Type; Record_Def_Or_Parse0_Memo : Bare_Base_Record_Def_Memos.Memo_Type; Record_Type_Def_Transform_Parse0_Memo : Bare_Record_Type_Def_Memos.Memo_Type; Recov_Decl_Part_Dont_Skip_Parse0_Memo : Bare_Declarative_Part_Memos.Memo_Type; Regular_Aggregate_Or_Parse0_Memo : Bare_Base_Aggregate_Memos.Memo_Type; Rel_Op_Or_Parse0_Memo : Bare_Op_Memos.Memo_Type; Relation_Or_Parse1_Memo : Bare_Expr_Memos.Memo_Type; Renaming_Clause_Transform_Parse0_Memo : Bare_Renaming_Clause_Memos.Memo_Type; Requeue_Stmt_Transform_Parse0_Memo : Bare_Requeue_Stmt_Memos.Memo_Type; Return_Stmt_Transform_Parse0_Memo : Bare_Return_Stmt_Memos.Memo_Type; Select_Stmt_Transform_Parse1_Memo : Bare_Select_Stmt_Memos.Memo_Type; Sexpr_Or_Box_Or_Parse0_Memo : Bare_Expr_Memos.Memo_Type; Signed_Int_Type_Def_Transform_Parse0_Memo : Bare_Signed_Int_Type_Def_Memos.Memo_Type; Simple_Expr_Or_Parse1_Memo : Bare_Expr_Memos.Memo_Type; Simple_Stmt_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Simple_Subp_Decl_Transform_Parse0_Memo : Bare_Subp_Decl_Memos.Memo_Type; Single_Task_Decl_Transform_Parse1_Memo : Bare_Single_Task_Decl_Memos.Memo_Type; Static_Name_Or_Parse0_Memo : Bare_Name_Memos.Memo_Type; Stmt_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Stmts_List_Parse0_Memo : Bare_Stmt_List_Memos.Memo_Type; String_Literal_Transform_Parse0_Memo : Bare_String_Literal_Memos.Memo_Type; Sub_Object_Decl_Transform_Parse0_Memo : Bare_Object_Decl_Memos.Memo_Type; Subp_Body_Stub_Transform_Parse0_Memo : Bare_Subp_Body_Stub_Memos.Memo_Type; Subp_Body_Transform_Parse1_Memo : Bare_Subp_Body_Memos.Memo_Type; Subp_Decl_Or_Parse0_Memo : Bare_Basic_Decl_Memos.Memo_Type; Subp_Renaming_Decl_Transform_Parse0_Memo : Bare_Subp_Renaming_Decl_Memos.Memo_Type; Subp_Spec_Transform_Parse2_Memo : Bare_Subp_Spec_Memos.Memo_Type; Subtype_Decl_Transform_Parse0_Memo : Bare_Subtype_Decl_Memos.Memo_Type; Subtype_Indication_Transform_Parse0_Memo : Bare_Subtype_Indication_Memos.Memo_Type; Subtype_Name_Or_Parse0_Memo : Bare_Name_Memos.Memo_Type; Subunit_Transform_Parse0_Memo : Bare_Subunit_Memos.Memo_Type; Target_Name_Transform_Parse0_Memo : Bare_Target_Name_Memos.Memo_Type; Task_Body_Stub_Transform_Parse0_Memo : Bare_Task_Body_Stub_Memos.Memo_Type; Task_Body_Transform_Parse1_Memo : Bare_Task_Body_Memos.Memo_Type; Task_Def_Transform_Parse3_Memo : Bare_Task_Def_Memos.Memo_Type; Task_Item_Or_Parse0_Memo : Bare_Ada_Node_Memos.Memo_Type; Task_Type_Decl_Transform_Parse0_Memo : Bare_Task_Type_Decl_Memos.Memo_Type; Term_Or_Parse1_Memo : Bare_Expr_Memos.Memo_Type; Terminate_Alternative_Transform_Parse0_Memo : Bare_Terminate_Alternative_Memos.Memo_Type; Type_Decl_Or_Parse1_Memo : Bare_Base_Type_Decl_Memos.Memo_Type; Type_Def_Or_Parse0_Memo : Bare_Type_Def_Memos.Memo_Type; Type_Expr_Or_Parse0_Memo : Bare_Type_Expr_Memos.Memo_Type; Unconstrained_Index_Transform_Parse0_Memo : Bare_Unconstrained_Array_Index_Memos.Memo_Type; Unop_Term_Or_Parse1_Memo : Bare_Expr_Memos.Memo_Type; Update_Attr_Aggregate_Or_Parse0_Memo : Bare_Base_Aggregate_Memos.Memo_Type; Update_Attr_Content_List_Parse0_Memo : Bare_Assoc_List_Memos.Memo_Type; Use_Clause_Or_Parse0_Memo : Bare_Use_Clause_Memos.Memo_Type; Use_Package_Clause_Transform_Parse0_Memo : Bare_Use_Package_Clause_Memos.Memo_Type; Use_Type_Clause_Transform_Parse0_Memo : Bare_Use_Type_Clause_Memos.Memo_Type; Value_Sequence_Transform_Parse0_Memo : Bare_Value_Sequence_Memos.Memo_Type; Variant_Part_Transform_Parse0_Memo : Bare_Variant_Part_Memos.Memo_Type; Variant_Transform_Parse0_Memo : Bare_Variant_Memos.Memo_Type; While_Loop_Spec_Transform_Parse0_Memo : Bare_While_Loop_Spec_Memos.Memo_Type; With_Clause_Transform_Parse0_Memo : Bare_With_Clause_Memos.Memo_Type; Dont_Skip : Dont_Skip_Fn_Vectors.Vector; end record; function Abort_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Abort_Stmt; function Abstract_State_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Abstract_Subp_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Abstract_Subp_Decl; function Accept_Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Accept_Stmt; function Access_Def_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Access_Def; function Aggregate_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Aggregate; function Aggregate_Assoc_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Basic_Assoc; function Allocator_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Allocator; function Anonymous_Type_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Anonymous_Type; function Anonymous_Type_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Anonymous_Type_Decl; function Array_Type_Def_Transform_Parse2 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Array_Type_Def; function Aspect_Assoc_Or_Parse2 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Aspect_Assoc; function Aspect_Clause_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Aspect_Clause; function Aspect_Spec_Opt_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Aspect_Spec; function Assignment_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Assign_Stmt; function Attr_Suffix_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Assoc_List; function Basic_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Basic_Decls_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node_List; function Block_Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Composite_Stmt; function Body_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Body_Node; function Body_Stub_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Body_Stub; function Boolean_Op_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Op; function Box_Expr_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Box_Expr; function Bracket_Aggregate_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Aggregate; function Call_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Call_Stmt; function Call_Suffix_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Case_Alt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Case_Stmt_Alternative; function Case_Expr_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Case_Expr; function Case_Expr_Alt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Case_Expr_Alternative; function Case_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Case_Stmt; function Char_Literal_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Char_Literal; function Choice_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Choice_List_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Alternatives_List; function Compilation_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Compilation_Unit_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Compilation_Unit; function Component_Clause_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Component_Clause; function Component_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Component_Decl; function Component_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Component_Def; function Component_Item_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Component_List_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Component_List; function Composite_Constraint_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Composite_Constraint; function Composite_Constraint_Assoc_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Composite_Constraint_Assoc; function Compound_Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Composite_Stmt; function Conditional_Expr_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr; function Constrained_Subtype_Indication_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Constrained_Subtype_Indication; function Constraint_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Constraint; function Constraint_List_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Constraint_List; function Context_Item_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Contract_Case_Assoc_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Contract_Case_Assoc; function Contract_Cases_Expr_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Contract_Cases; function Dec_Literal_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Real_Literal; function Decimal_Fixed_Point_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Decimal_Fixed_Point_Def; function Decl_Part_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Declarative_Part; function Declare_Expr_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Decl_Expr; function Defining_Id_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Defining_Name; function Defining_Id_List_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Defining_Name_List; function Defining_Name_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Defining_Name; function Delay_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Delay_Stmt; function Delta_Constraint_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Delta_Constraint; function Derived_Type_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Derived_Type_Def; function Digits_Constraint_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Digits_Constraint; function Direct_Name_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Id; function Direct_Name_Or_Target_Name_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Name; function Discr_Spec_List_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Discriminant_Spec_List; function Discrete_Range_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr; function Discrete_Subtype_Definition_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Discrete_Subtype_Indication_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Discrete_Subtype_Indication; function Discriminant_Part_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Discriminant_Part; function Discriminant_Spec_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Discriminant_Spec; function Dontskip_Case_Alt0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Elsif_Part0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Exception_Handler0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Generic_Decl0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Generic_Decl1_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Handled_Stmts0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_If_Stmt0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_If_Stmt1_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Iloop_Stmt0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Iloop_Stmt1_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Iloop_Stmt2_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Package_Body0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Package_Decl0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Package_Decl1_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Protected_Body0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Recov_Decl_Part0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Select_Stmt0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Select_Stmt1_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Dontskip_Select_Stmt2_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Elsif_Part_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Elsif_Stmt_Part; function Entry_Body_Transform_Parse3 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Entry_Body; function Entry_Decl_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Entry_Decl; function Enum_Literal_Decl_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Enum_Literal_Decl; function Enum_Type_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Enum_Type_Def; function Exception_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Exception_Decl; function Exception_Handler_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Exception_Handler; function Exit_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Exit_Stmt; function Expr_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr; function Expr_Fn_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr_Function; function Ext_Ret_Stmt_Object_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Extended_Return_Stmt_Object_Decl; function Ext_Return_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Extended_Return_Stmt; function Factor_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr; function Floating_Point_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Floating_Point_Def; function For_Loop_Param_Spec_Transform_Parse3 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_For_Loop_Spec; function Formal_Discrete_Type_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Formal_Discrete_Type_Def; function Formal_Subp_Decl_Or_Parse2 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Formal_Subp_Decl; function Formal_Type_Decl_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Type_Decl; function Generic_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Generic_Decl; function Generic_Formal_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Generic_Formal_Part_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Generic_Formal_Part; function Generic_Instantiation_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Generic_Instantiation; function Generic_Renaming_Decl_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Generic_Renaming_Decl; function Goto_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Goto_Stmt; function Handled_Stmts_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Handled_Stmts; function Iblock_Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Block_Stmt; function Identifier_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Identifier; function If_Expr_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_If_Expr; function If_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_If_Stmt; function Iloop_Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Loop_Stmt; function Incomplete_Type_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Incomplete_Type_Decl; function Int_Literal_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Int_Literal; function Interface_Type_Def_Transform_Parse4 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Interface_Type_Def; function Iterated_Assoc_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Iterated_Assoc; function Label_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Label; function Library_Item_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Library_Item; function Library_Unit_Body_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Body_Node; function Library_Unit_Renaming_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Basic_Decl; function Loop_Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Composite_Stmt; function Membership_Choice_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr; function Membership_Choice_List_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr_Alternatives_List; function Mod_Int_Type_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Mod_Int_Type_Def; function Mode_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Mode; function Multi_Abstract_State_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Multidim_Array_Assoc_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Multi_Dim_Array_Assoc; function Name_Or_Parse2 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Name; function No_Type_Object_Renaming_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_No_Type_Object_Renaming_Decl; function Null_Literal_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Null_Literal; function Null_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Null_Stmt; function Null_Subp_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Null_Subp_Decl; function Num_Literal_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Num_Literal; function Number_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Number_Decl; function Object_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Basic_Decl; function Ordinary_Fixed_Point_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ordinary_Fixed_Point_Def; function Others_Designator_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Others_Designator; function Overriding_Indicator_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Overriding_Node; function Package_Body_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Package_Body; function Package_Body_Stub_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Package_Body_Stub; function Package_Decl_Transform_Parse3 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Package_Decl; function Package_Renaming_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Package_Renaming_Decl; function Param_Assoc_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Param_Assoc; function Param_Spec_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Param_Spec; function Param_Specs_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Params; function Paren_Expr_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Paren_Expr; function Parent_List_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Parent_List; function Pp_Directive_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Pp_Directive; function Pp_Expr_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr; function Pp_Term_Or_Parse2 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr; function Pp_Then_Opt_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Pp_Then_Kw; function Pragma_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Pragma_Node; function Pragma_Argument_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Pragma_Argument_Assoc; function Primary_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr; function Protected_Body_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Protected_Body; function Protected_Body_Stub_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Protected_Body_Stub; function Protected_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Single_Protected_Decl; function Protected_Def_Transform_Parse3 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Protected_Def; function Protected_El_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Protected_Op_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Protected_Type_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Protected_Type_Decl; function Qual_Name_Internal_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Name; function Qualified_Name_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Qual_Expr; function Quantified_Expr_Transform_Parse2 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Quantified_Expr; function Raise_Expr_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Raise_Expr; function Raise_Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Raise_Stmt; function Range_Constraint_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Range_Constraint; function Range_Spec_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Range_Spec; function Real_Type_Def_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Real_Type_Def; function Record_Def_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Record_Def; function Record_Type_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Record_Type_Def; function Recov_Decl_Part_Dont_Skip_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Declarative_Part; function Regular_Aggregate_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Aggregate; function Rel_Op_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Op; function Relation_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr; function Renaming_Clause_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Renaming_Clause; function Requeue_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Requeue_Stmt; function Return_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Return_Stmt; function Select_Stmt_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Select_Stmt; function Sexpr_Or_Box_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr; function Signed_Int_Type_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Signed_Int_Type_Def; function Simple_Expr_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr; function Simple_Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Simple_Subp_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Subp_Decl; function Single_Task_Decl_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Single_Task_Decl; function Static_Name_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Name; function Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Stmts_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Stmt_List; function String_Literal_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_String_Literal; function Sub_Object_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Object_Decl; function Subp_Body_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Subp_Body; function Subp_Body_Stub_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Subp_Body_Stub; function Subp_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Basic_Decl; function Subp_Renaming_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Subp_Renaming_Decl; function Subp_Spec_Transform_Parse2 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Subp_Spec; function Subtype_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Subtype_Decl; function Subtype_Indication_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Subtype_Indication; function Subtype_Name_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Name; function Subunit_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Subunit; function Target_Name_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Target_Name; function Task_Body_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Task_Body; function Task_Body_Stub_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Task_Body_Stub; function Task_Def_Transform_Parse3 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Task_Def; function Task_Item_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node; function Task_Type_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Task_Type_Decl; function Term_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr; function Terminate_Alternative_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Terminate_Alternative; function Type_Decl_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Type_Decl; function Type_Def_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Type_Def; function Type_Expr_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Type_Expr; function Unconstrained_Index_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Unconstrained_Array_Index; function Unop_Term_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr; function Update_Attr_Aggregate_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Aggregate; function Update_Attr_Content_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Assoc_List; function Use_Clause_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Use_Clause; function Use_Package_Clause_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Use_Package_Clause; function Use_Type_Clause_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Use_Type_Clause; function Value_Sequence_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Value_Sequence; function Variant_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Variant; function Variant_Part_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Variant_Part; function While_Loop_Spec_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_While_Loop_Spec; function With_Clause_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_With_Clause; procedure Process_Parsing_Error (Parser : in out Parser_Type; Check_Complete : Boolean := True); -- Helper for the user parsing function, to be called after a low-level -- parsing function. Check_Complete has the same semantics as in Parse. If -- the parsing failed (Parser.Current_Pos = No_Token_Index), append -- corresponding diagnostics to Parser.Diagnostics, do nothing instead. procedure Add_Last_Fail_Diagnostic (Parser : in out Parser_Type); -- Add a diagnostic for the last fail position of the parser pragma Warnings (Off, "is not referenced"); function Get_Parse_List (Parser : Parser_Type) return Free_Parse_List; -- Get a free parse list, or allocate one if there is no free parse list in -- Parser. When done with the result, the caller must invoke -- Release_Parse_List. procedure Release_Parse_List (Parser : Parser_Type; List : in out Free_Parse_List); -- Release a parse list, putting it in Parsers' free list. Set List to -- null. procedure Initialize_List (Self : Bare_Ada_List; Parser : Parser_Type; Count : Natural); -- Helper for parsers, to initialize the list of children in a freshly -- allocated list node. pragma Warnings (On, "is not referenced"); --------------------- -- Initialize_List -- --------------------- procedure Initialize_List (Self : Bare_Ada_List; Parser : Parser_Type; Count : Natural) is begin Self.Count := Count; Self.Nodes := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, 0); end Initialize_List; ----------------- -- Init_Parser -- ----------------- procedure Init_Parser (Input : Internal_Lexer_Input; With_Trivia : Boolean; Unit : access Implementation.Analysis_Unit_Type; TDH : Token_Data_Handler_Access; Parser : in out Parser_Type) is -- Never try to use file readers for internal units: these are generally -- not actual source files, and file readers, which are external users -- of the generated library, have no reason to be aware of them. FR : constant Internal_File_Reader_Access := (if Unit.Is_Internal then null else Unit.Context.File_Reader); begin Reset (Parser); Extract_Tokens (Input, With_Trivia, FR, TDH.all, Parser.Diagnostics); Parser.Unit := Unit; Parser.TDH := TDH; end Init_Parser; ------------------------------ -- Add_Last_Fail_Diagnostic -- ------------------------------ procedure Add_Last_Fail_Diagnostic (Parser : in out Parser_Type) is Last_Token : Stored_Token_Data renames Get_Token (Parser.TDH.all, Parser.Last_Fail.Pos); D : constant Diagnostic := (if Parser.Last_Fail.Kind = Token_Fail then Create (Sloc_Range (Parser.TDH.all, Last_Token), To_Text ("Expected " & Token_Error_Image (Parser.Last_Fail.Expected_Token_Id) & ", got " & Token_Error_Image (Parser.Last_Fail.Found_Token_Id))) else Create (Sloc_Range (Parser.TDH.all, Last_Token), To_Text (Parser.Last_Fail.Custom_Message.all))); begin Parser.Diagnostics.Append (D); end Add_Last_Fail_Diagnostic; --------------------------- -- Process_Parsing_Error -- --------------------------- procedure Process_Parsing_Error (Parser : in out Parser_Type; Check_Complete : Boolean := True) is begin if Parser.Current_Pos = No_Token_Index then Add_Last_Fail_Diagnostic (Parser); elsif Check_Complete and then Parser.Current_Pos /= Last_Token (Parser.TDH.all) then -- If the fail pos is the current position of the parser or after, -- it means that the longest parse is the correct result, and that we -- have some garbage afterwards. if Parser.Current_Pos >= Parser.Last_Fail.Pos then declare First_Garbage_Token : Stored_Token_Data renames Get_Token (Parser.TDH.all, Parser.Current_Pos); begin Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, First_Garbage_Token), To_Text ("End of input expected, got """ & Token_Kind_Name (To_Token_Kind (First_Garbage_Token.Kind)) & """")); end; -- Else, the last fail pos is further down the line, and we want to -- have the diagnostic of what exactly failed. else Add_Last_Fail_Diagnostic (Parser); end if; end if; end Process_Parsing_Error; ----------- -- Parse -- ----------- function Parse (Parser : in out Parser_Type; Check_Complete : Boolean := True; Rule : Grammar_Rule) return Parsed_Node is Result : Bare_Ada_Node; begin case Rule is when Parent_List_Rule => Result := Parent_List_List_Parse0 (Parser, First_Token_Index); when Protected_Type_Decl_Rule => Result := Protected_Type_Decl_Transform_Parse0 (Parser, First_Token_Index); when Protected_Op_Rule => Result := Protected_Op_Or_Parse0 (Parser, First_Token_Index); when Protected_El_Rule => Result := Protected_El_Or_Parse0 (Parser, First_Token_Index); when Protected_Def_Rule => Result := Protected_Def_Transform_Parse3 (Parser, First_Token_Index); when Protected_Decl_Rule => Result := Protected_Decl_Transform_Parse0 (Parser, First_Token_Index); when Task_Item_Rule => Result := Task_Item_Or_Parse0 (Parser, First_Token_Index); when Task_Def_Rule => Result := Task_Def_Transform_Parse3 (Parser, First_Token_Index); when Task_Type_Decl_Rule => Result := Task_Type_Decl_Transform_Parse0 (Parser, First_Token_Index); when Subtype_Decl_Rule => Result := Subtype_Decl_Transform_Parse0 (Parser, First_Token_Index); when Interface_Type_Def_Rule => Result := Interface_Type_Def_Transform_Parse4 (Parser, First_Token_Index); when Unconstrained_Index_Rule => Result := Unconstrained_Index_Transform_Parse0 (Parser, First_Token_Index); when Array_Type_Def_Rule => Result := Array_Type_Def_Transform_Parse2 (Parser, First_Token_Index); when Discrete_Subtype_Definition_Rule => Result := Discrete_Subtype_Definition_Or_Parse0 (Parser, First_Token_Index); when Constraint_List_Rule => Result := Constraint_List_List_Parse0 (Parser, First_Token_Index); when Signed_Int_Type_Def_Rule => Result := Signed_Int_Type_Def_Transform_Parse0 (Parser, First_Token_Index); when Mod_Int_Type_Def_Rule => Result := Mod_Int_Type_Def_Transform_Parse0 (Parser, First_Token_Index); when Derived_Type_Def_Rule => Result := Derived_Type_Def_Transform_Parse0 (Parser, First_Token_Index); when Composite_Constraint_Assoc_Rule => Result := Composite_Constraint_Assoc_Transform_Parse0 (Parser, First_Token_Index); when Composite_Constraint_Rule => Result := Composite_Constraint_Transform_Parse0 (Parser, First_Token_Index); when Digits_Constraint_Rule => Result := Digits_Constraint_Transform_Parse0 (Parser, First_Token_Index); when Delta_Constraint_Rule => Result := Delta_Constraint_Transform_Parse0 (Parser, First_Token_Index); when Range_Constraint_Rule => Result := Range_Constraint_Transform_Parse1 (Parser, First_Token_Index); when Constraint_Rule => Result := Constraint_Or_Parse0 (Parser, First_Token_Index); when Discriminant_Spec_Rule => Result := Discriminant_Spec_Transform_Parse0 (Parser, First_Token_Index); when Discr_Spec_List_Rule => Result := Discr_Spec_List_List_Parse0 (Parser, First_Token_Index); when Discriminant_Part_Rule => Result := Discriminant_Part_Or_Parse0 (Parser, First_Token_Index); when Enum_Literal_Decl_Rule => Result := Enum_Literal_Decl_Transform_Parse1 (Parser, First_Token_Index); when Formal_Discrete_Type_Def_Rule => Result := Formal_Discrete_Type_Def_Transform_Parse0 (Parser, First_Token_Index); when Record_Def_Rule => Result := Record_Def_Or_Parse0 (Parser, First_Token_Index); when Range_Spec_Rule => Result := Range_Spec_Transform_Parse0 (Parser, First_Token_Index); when Real_Type_Def_Rule => Result := Real_Type_Def_Or_Parse0 (Parser, First_Token_Index); when Sexpr_Or_Box_Rule => Result := Sexpr_Or_Box_Or_Parse0 (Parser, First_Token_Index); when Ordinary_Fixed_Point_Def_Rule => Result := Ordinary_Fixed_Point_Def_Transform_Parse0 (Parser, First_Token_Index); when Decimal_Fixed_Point_Def_Rule => Result := Decimal_Fixed_Point_Def_Transform_Parse0 (Parser, First_Token_Index); when Floating_Point_Def_Rule => Result := Floating_Point_Def_Transform_Parse0 (Parser, First_Token_Index); when Record_Type_Def_Rule => Result := Record_Type_Def_Transform_Parse0 (Parser, First_Token_Index); when Access_Def_Rule => Result := Access_Def_Or_Parse0 (Parser, First_Token_Index); when Enum_Type_Def_Rule => Result := Enum_Type_Def_Transform_Parse0 (Parser, First_Token_Index); when Type_Def_Rule => Result := Type_Def_Or_Parse0 (Parser, First_Token_Index); when Variant_Rule => Result := Variant_Transform_Parse0 (Parser, First_Token_Index); when Anonymous_Type_Decl_Rule => Result := Anonymous_Type_Decl_Transform_Parse0 (Parser, First_Token_Index); when Incomplete_Type_Decl_Rule => Result := Incomplete_Type_Decl_Or_Parse0 (Parser, First_Token_Index); when Type_Decl_Rule => Result := Type_Decl_Or_Parse1 (Parser, First_Token_Index); when Variant_Part_Rule => Result := Variant_Part_Transform_Parse0 (Parser, First_Token_Index); when Component_Def_Rule => Result := Component_Def_Transform_Parse0 (Parser, First_Token_Index); when Component_Item_Rule => Result := Component_Item_Or_Parse0 (Parser, First_Token_Index); when Component_Decl_Rule => Result := Component_Decl_Transform_Parse0 (Parser, First_Token_Index); when Component_List_Rule => Result := Component_List_Transform_Parse0 (Parser, First_Token_Index); when Generic_Decl_Rule => Result := Generic_Decl_Or_Parse0 (Parser, First_Token_Index); when Generic_Formal_Part_Rule => Result := Generic_Formal_Part_Transform_Parse0 (Parser, First_Token_Index); when Generic_Formal_Decl_Rule => Result := Generic_Formal_Decl_Or_Parse0 (Parser, First_Token_Index); when Formal_Type_Decl_Rule => Result := Formal_Type_Decl_Or_Parse1 (Parser, First_Token_Index); when Formal_Subp_Decl_Rule => Result := Formal_Subp_Decl_Or_Parse2 (Parser, First_Token_Index); when Renaming_Clause_Rule => Result := Renaming_Clause_Transform_Parse0 (Parser, First_Token_Index); when Generic_Renaming_Decl_Rule => Result := Generic_Renaming_Decl_Or_Parse1 (Parser, First_Token_Index); when Generic_Instantiation_Rule => Result := Generic_Instantiation_Or_Parse1 (Parser, First_Token_Index); when Exception_Decl_Rule => Result := Exception_Decl_Transform_Parse0 (Parser, First_Token_Index); when Basic_Decls_Rule => Result := Basic_Decls_List_Parse0 (Parser, First_Token_Index); when Package_Renaming_Decl_Rule => Result := Package_Renaming_Decl_Transform_Parse0 (Parser, First_Token_Index); when Package_Decl_Rule => Result := Package_Decl_Transform_Parse3 (Parser, First_Token_Index); when Basic_Decl_Rule => Result := Basic_Decl_Or_Parse0 (Parser, First_Token_Index); when Object_Decl_Rule => Result := Object_Decl_Or_Parse0 (Parser, First_Token_Index); when Sub_Object_Decl_Rule => Result := Sub_Object_Decl_Transform_Parse0 (Parser, First_Token_Index); when No_Type_Object_Renaming_Decl_Rule => Result := No_Type_Object_Renaming_Decl_Transform_Parse0 (Parser, First_Token_Index); when Ext_Ret_Stmt_Object_Decl_Rule => Result := Ext_Ret_Stmt_Object_Decl_Transform_Parse0 (Parser, First_Token_Index); when Defining_Id_List_Rule => Result := Defining_Id_List_List_Parse0 (Parser, First_Token_Index); when Number_Decl_Rule => Result := Number_Decl_Transform_Parse0 (Parser, First_Token_Index); when Contract_Case_Assoc_Rule => Result := Contract_Case_Assoc_Transform_Parse0 (Parser, First_Token_Index); when Contract_Cases_Expr_Rule => Result := Contract_Cases_Expr_Transform_Parse0 (Parser, First_Token_Index); when Abstract_State_Decl_Rule => Result := Abstract_State_Decl_Or_Parse0 (Parser, First_Token_Index); when Multi_Abstract_State_Decl_Rule => Result := Multi_Abstract_State_Decl_Or_Parse0 (Parser, First_Token_Index); when Aspect_Assoc_Rule => Result := Aspect_Assoc_Or_Parse2 (Parser, First_Token_Index); when Aspect_Spec_Rule => Result := Aspect_Spec_Opt_Parse0 (Parser, First_Token_Index); when Single_Task_Decl_Rule => Result := Single_Task_Decl_Transform_Parse1 (Parser, First_Token_Index); when Overriding_Indicator_Rule => Result := Overriding_Indicator_Or_Parse0 (Parser, First_Token_Index); when Entry_Decl_Rule => Result := Entry_Decl_Transform_Parse1 (Parser, First_Token_Index); when Component_Clause_Rule => Result := Component_Clause_Transform_Parse0 (Parser, First_Token_Index); when Aspect_Clause_Rule => Result := Aspect_Clause_Or_Parse1 (Parser, First_Token_Index); when Param_Spec_Rule => Result := Param_Spec_Transform_Parse0 (Parser, First_Token_Index); when Param_Specs_Rule => Result := Param_Specs_Transform_Parse0 (Parser, First_Token_Index); when Subp_Spec_Rule => Result := Subp_Spec_Transform_Parse2 (Parser, First_Token_Index); when Expr_Fn_Rule => Result := Expr_Fn_Transform_Parse0 (Parser, First_Token_Index); when Null_Subp_Decl_Rule => Result := Null_Subp_Decl_Transform_Parse0 (Parser, First_Token_Index); when Abstract_Subp_Decl_Rule => Result := Abstract_Subp_Decl_Transform_Parse0 (Parser, First_Token_Index); when Subp_Renaming_Decl_Rule => Result := Subp_Renaming_Decl_Transform_Parse0 (Parser, First_Token_Index); when Simple_Subp_Decl_Rule => Result := Simple_Subp_Decl_Transform_Parse0 (Parser, First_Token_Index); when Subp_Decl_Rule => Result := Subp_Decl_Or_Parse0 (Parser, First_Token_Index); when With_Clause_Rule => Result := With_Clause_Transform_Parse0 (Parser, First_Token_Index); when Context_Item_Rule => Result := Context_Item_Or_Parse0 (Parser, First_Token_Index); when Use_Clause_Rule => Result := Use_Clause_Or_Parse0 (Parser, First_Token_Index); when Use_Package_Clause_Rule => Result := Use_Package_Clause_Transform_Parse0 (Parser, First_Token_Index); when Use_Type_Clause_Rule => Result := Use_Type_Clause_Transform_Parse0 (Parser, First_Token_Index); when Subtype_Indication_Rule => Result := Subtype_Indication_Transform_Parse0 (Parser, First_Token_Index); when Discrete_Subtype_Indication_Rule => Result := Discrete_Subtype_Indication_Transform_Parse0 (Parser, First_Token_Index); when Constrained_Subtype_Indication_Rule => Result := Constrained_Subtype_Indication_Transform_Parse0 (Parser, First_Token_Index); when Type_Expr_Rule => Result := Type_Expr_Or_Parse0 (Parser, First_Token_Index); when Anonymous_Type_Rule => Result := Anonymous_Type_Transform_Parse0 (Parser, First_Token_Index); when Mode_Rule => Result := Mode_Or_Parse0 (Parser, First_Token_Index); when Pragma_Argument_Rule => Result := Pragma_Argument_Transform_Parse1 (Parser, First_Token_Index); when Pragma_Rule => Result := Pragma_Transform_Parse0 (Parser, First_Token_Index); when Subunit_Rule => Result := Subunit_Transform_Parse0 (Parser, First_Token_Index); when Library_Unit_Body_Rule => Result := Library_Unit_Body_Or_Parse0 (Parser, First_Token_Index); when Library_Unit_Renaming_Decl_Rule => Result := Library_Unit_Renaming_Decl_Or_Parse0 (Parser, First_Token_Index); when Library_Item_Rule => Result := Library_Item_Transform_Parse1 (Parser, First_Token_Index); when Compilation_Unit_Rule => Result := Compilation_Unit_Transform_Parse0 (Parser, First_Token_Index); when Compilation_Rule => Result := Compilation_Or_Parse0 (Parser, First_Token_Index); when Decl_Part_Rule => Result := Decl_Part_Transform_Parse0 (Parser, First_Token_Index); when Entry_Body_Rule => Result := Entry_Body_Transform_Parse3 (Parser, First_Token_Index); when Protected_Body_Rule => Result := Protected_Body_Transform_Parse1 (Parser, First_Token_Index); when Protected_Body_Stub_Rule => Result := Protected_Body_Stub_Transform_Parse0 (Parser, First_Token_Index); when Task_Body_Rule => Result := Task_Body_Transform_Parse1 (Parser, First_Token_Index); when Task_Body_Stub_Rule => Result := Task_Body_Stub_Transform_Parse0 (Parser, First_Token_Index); when Package_Body_Stub_Rule => Result := Package_Body_Stub_Transform_Parse0 (Parser, First_Token_Index); when Package_Body_Rule => Result := Package_Body_Transform_Parse1 (Parser, First_Token_Index); when Terminate_Alternative_Rule => Result := Terminate_Alternative_Transform_Parse0 (Parser, First_Token_Index); when Select_Stmt_Rule => Result := Select_Stmt_Transform_Parse1 (Parser, First_Token_Index); when Accept_Stmt_Rule => Result := Accept_Stmt_Or_Parse0 (Parser, First_Token_Index); when Case_Alt_Rule => Result := Case_Alt_Transform_Parse0 (Parser, First_Token_Index); when Case_Stmt_Rule => Result := Case_Stmt_Transform_Parse0 (Parser, First_Token_Index); when Ext_Return_Stmt_Rule => Result := Ext_Return_Stmt_Transform_Parse0 (Parser, First_Token_Index); when Iblock_Stmt_Rule => Result := Iblock_Stmt_Or_Parse0 (Parser, First_Token_Index); when Block_Stmt_Rule => Result := Block_Stmt_Or_Parse0 (Parser, First_Token_Index); when While_Loop_Spec_Rule => Result := While_Loop_Spec_Transform_Parse0 (Parser, First_Token_Index); when Iloop_Stmt_Rule => Result := Iloop_Stmt_Or_Parse0 (Parser, First_Token_Index); when Loop_Stmt_Rule => Result := Loop_Stmt_Or_Parse0 (Parser, First_Token_Index); when Compound_Stmt_Rule => Result := Compound_Stmt_Or_Parse0 (Parser, First_Token_Index); when Elsif_Part_Rule => Result := Elsif_Part_Transform_Parse0 (Parser, First_Token_Index); when If_Stmt_Rule => Result := If_Stmt_Transform_Parse0 (Parser, First_Token_Index); when Raise_Stmt_Rule => Result := Raise_Stmt_Or_Parse0 (Parser, First_Token_Index); when Delay_Stmt_Rule => Result := Delay_Stmt_Transform_Parse0 (Parser, First_Token_Index); when Abort_Stmt_Rule => Result := Abort_Stmt_Transform_Parse0 (Parser, First_Token_Index); when Body_Rule => Result := Body_Or_Parse0 (Parser, First_Token_Index); when Body_Stub_Rule => Result := Body_Stub_Or_Parse0 (Parser, First_Token_Index); when Subp_Body_Stub_Rule => Result := Subp_Body_Stub_Transform_Parse0 (Parser, First_Token_Index); when Recov_Decl_Part_Rule => Result := Recov_Decl_Part_Dont_Skip_Parse0 (Parser, First_Token_Index); when Subp_Body_Rule => Result := Subp_Body_Transform_Parse1 (Parser, First_Token_Index); when Handled_Stmts_Rule => Result := Handled_Stmts_Transform_Parse0 (Parser, First_Token_Index); when Exception_Handler_Rule => Result := Exception_Handler_Transform_Parse0 (Parser, First_Token_Index); when Stmts_Rule => Result := Stmts_List_Parse0 (Parser, First_Token_Index); when Label_Rule => Result := Label_Transform_Parse1 (Parser, First_Token_Index); when Stmt_Rule => Result := Stmt_Or_Parse0 (Parser, First_Token_Index); when Call_Stmt_Rule => Result := Call_Stmt_Transform_Parse0 (Parser, First_Token_Index); when Simple_Stmt_Rule => Result := Simple_Stmt_Or_Parse0 (Parser, First_Token_Index); when Null_Stmt_Rule => Result := Null_Stmt_Transform_Parse0 (Parser, First_Token_Index); when Assignment_Stmt_Rule => Result := Assignment_Stmt_Transform_Parse0 (Parser, First_Token_Index); when Goto_Stmt_Rule => Result := Goto_Stmt_Transform_Parse0 (Parser, First_Token_Index); when Exit_Stmt_Rule => Result := Exit_Stmt_Transform_Parse0 (Parser, First_Token_Index); when Return_Stmt_Rule => Result := Return_Stmt_Transform_Parse0 (Parser, First_Token_Index); when Requeue_Stmt_Rule => Result := Requeue_Stmt_Transform_Parse0 (Parser, First_Token_Index); when Identifier_Rule => Result := Identifier_Transform_Parse0 (Parser, First_Token_Index); when Char_Literal_Rule => Result := Char_Literal_Transform_Parse0 (Parser, First_Token_Index); when String_Literal_Rule => Result := String_Literal_Transform_Parse0 (Parser, First_Token_Index); when Defining_Id_Rule => Result := Defining_Id_Transform_Parse0 (Parser, First_Token_Index); when Dec_Literal_Rule => Result := Dec_Literal_Transform_Parse0 (Parser, First_Token_Index); when Int_Literal_Rule => Result := Int_Literal_Transform_Parse0 (Parser, First_Token_Index); when Num_Literal_Rule => Result := Num_Literal_Or_Parse0 (Parser, First_Token_Index); when Null_Literal_Rule => Result := Null_Literal_Transform_Parse0 (Parser, First_Token_Index); when Allocator_Rule => Result := Allocator_Transform_Parse0 (Parser, First_Token_Index); when For_Loop_Param_Spec_Rule => Result := For_Loop_Param_Spec_Transform_Parse3 (Parser, First_Token_Index); when Quantified_Expr_Rule => Result := Quantified_Expr_Transform_Parse2 (Parser, First_Token_Index); when Case_Expr_Rule => Result := Case_Expr_Transform_Parse0 (Parser, First_Token_Index); when Case_Expr_Alt_Rule => Result := Case_Expr_Alt_Transform_Parse0 (Parser, First_Token_Index); when Raise_Expr_Rule => Result := Raise_Expr_Or_Parse0 (Parser, First_Token_Index); when If_Expr_Rule => Result := If_Expr_Transform_Parse1 (Parser, First_Token_Index); when Conditional_Expr_Rule => Result := Conditional_Expr_Or_Parse0 (Parser, First_Token_Index); when Box_Expr_Rule => Result := Box_Expr_Transform_Parse0 (Parser, First_Token_Index); when Others_Designator_Rule => Result := Others_Designator_Transform_Parse0 (Parser, First_Token_Index); when Iterated_Assoc_Rule => Result := Iterated_Assoc_Transform_Parse0 (Parser, First_Token_Index); when Aggregate_Assoc_Rule => Result := Aggregate_Assoc_Or_Parse1 (Parser, First_Token_Index); when Regular_Aggregate_Rule => Result := Regular_Aggregate_Or_Parse0 (Parser, First_Token_Index); when Bracket_Aggregate_Rule => Result := Bracket_Aggregate_Or_Parse0 (Parser, First_Token_Index); when Aggregate_Rule => Result := Aggregate_Or_Parse0 (Parser, First_Token_Index); when Direct_Name_Rule => Result := Direct_Name_Or_Parse0 (Parser, First_Token_Index); when Param_Assoc_Rule => Result := Param_Assoc_Transform_Parse0 (Parser, First_Token_Index); when Call_Suffix_Rule => Result := Call_Suffix_Or_Parse0 (Parser, First_Token_Index); when Attr_Suffix_Rule => Result := Attr_Suffix_List_Parse0 (Parser, First_Token_Index); when Qualified_Name_Rule => Result := Qualified_Name_Transform_Parse0 (Parser, First_Token_Index); when Qual_Name_Internal_Rule => Result := Qual_Name_Internal_Or_Parse0 (Parser, First_Token_Index); when Value_Sequence_Rule => Result := Value_Sequence_Transform_Parse0 (Parser, First_Token_Index); when Name_Rule => Result := Name_Or_Parse2 (Parser, First_Token_Index); when Defining_Name_Rule => Result := Defining_Name_Transform_Parse0 (Parser, First_Token_Index); when Direct_Name_Or_Target_Name_Rule => Result := Direct_Name_Or_Target_Name_Or_Parse0 (Parser, First_Token_Index); when Target_Name_Rule => Result := Target_Name_Transform_Parse0 (Parser, First_Token_Index); when Update_Attr_Aggregate_Rule => Result := Update_Attr_Aggregate_Or_Parse0 (Parser, First_Token_Index); when Update_Attr_Content_Rule => Result := Update_Attr_Content_List_Parse0 (Parser, First_Token_Index); when Multidim_Array_Assoc_Rule => Result := Multidim_Array_Assoc_Transform_Parse0 (Parser, First_Token_Index); when Subtype_Name_Rule => Result := Subtype_Name_Or_Parse0 (Parser, First_Token_Index); when Static_Name_Rule => Result := Static_Name_Or_Parse0 (Parser, First_Token_Index); when Primary_Rule => Result := Primary_Or_Parse0 (Parser, First_Token_Index); when Paren_Expr_Rule => Result := Paren_Expr_Transform_Parse0 (Parser, First_Token_Index); when Declare_Expr_Rule => Result := Declare_Expr_Transform_Parse0 (Parser, First_Token_Index); when Factor_Rule => Result := Factor_Or_Parse1 (Parser, First_Token_Index); when Term_Rule => Result := Term_Or_Parse1 (Parser, First_Token_Index); when Unop_Term_Rule => Result := Unop_Term_Or_Parse1 (Parser, First_Token_Index); when Simple_Expr_Rule => Result := Simple_Expr_Or_Parse1 (Parser, First_Token_Index); when Boolean_Op_Rule => Result := Boolean_Op_Or_Parse0 (Parser, First_Token_Index); when Discrete_Range_Rule => Result := Discrete_Range_Or_Parse0 (Parser, First_Token_Index); when Choice_Rule => Result := Choice_Or_Parse0 (Parser, First_Token_Index); when Choice_List_Rule => Result := Choice_List_List_Parse0 (Parser, First_Token_Index); when Rel_Op_Rule => Result := Rel_Op_Or_Parse0 (Parser, First_Token_Index); when Membership_Choice_Rule => Result := Membership_Choice_Or_Parse0 (Parser, First_Token_Index); when Membership_Choice_List_Rule => Result := Membership_Choice_List_List_Parse0 (Parser, First_Token_Index); when Relation_Rule => Result := Relation_Or_Parse1 (Parser, First_Token_Index); when Expr_Rule => Result := Expr_Or_Parse0 (Parser, First_Token_Index); when Pp_Directive_Rule => Result := Pp_Directive_Or_Parse0 (Parser, First_Token_Index); when Pp_Then_Rule => Result := Pp_Then_Opt_Parse0 (Parser, First_Token_Index); when Pp_Expr_Rule => Result := Pp_Expr_Or_Parse0 (Parser, First_Token_Index); when Pp_Term_Rule => Result := Pp_Term_Or_Parse2 (Parser, First_Token_Index); end case; Process_Parsing_Error (Parser, Check_Complete); Set_Parents (Result, null); return Parsed_Node (Result); exception when Exc : Precondition_Failure | Property_Error => Append (Parser.Diagnostics, No_Source_Location_Range, To_Text ("Error during parsing: " & Ada.Exceptions.Exception_Message (Exc))); return Parsed_Node (No_Bare_Ada_Node); end Parse; function Abort_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Abort_Stmt is use Bare_Abort_Stmt_Memos; Row_Pos0 : Token_Index := No_Token_Index; Token_Pos0 : Token_Index := No_Token_Index; Token_Res0 : Token_Index := No_Token_Index; Lst_Cpos0 : Token_Index := No_Token_Index; Tmp_List0 : Free_Parse_List; Defer_Pos0 : Token_Index := No_Token_Index; Defer_Res0 : Bare_Name := No_Bare_Ada_Node; Token_Pos1 : Token_Index := No_Token_Index; Token_Res1 : Token_Index := No_Token_Index; List_Pos0 : Token_Index := No_Token_Index; List_Res0 : Bare_Name_List := No_Bare_Ada_Node; Token_Pos2 : Token_Index := No_Token_Index; Token_Res2 : Token_Index := No_Token_Index; Transform_Res0 : Bare_Abort_Stmt := No_Bare_Ada_Node; Transform_Diags0 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Abort_Stmt_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res0 := M.Instance; return Transform_Res0; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res0; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags0 := Parser.Diagnostics.Length; -- Start row_code Row_Pos0 := Pos; -- Start tok_code Token_Res0 := Row_Pos0; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res0)); begin if T.Kind /= From_Token_Kind (Ada_Abort) then Token_Pos0 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos0 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos0, Expected_Token_Id => Ada_Abort, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos0 := Row_Pos0 + 1; end if; end; -- End tok_code if Token_Pos0 /= No_Token_Index then Row_Pos0 := Token_Pos0; else Row_Pos0 := No_Token_Index; goto Exit_Row0_0; end if; -- Start list_code List_Pos0 := No_Token_Index; Lst_Cpos0 := Row_Pos0; Tmp_List0 := Get_Parse_List (Parser); loop Defer_Res0 := Name_Or_Parse2 (Parser, Lst_Cpos0); Defer_Pos0 := Parser.Current_Pos; exit when Defer_Pos0 = No_Token_Index; List_Pos0 := Defer_Pos0; Lst_Cpos0 := List_Pos0; Tmp_List0.Nodes.Append (Defer_Res0); -- Start tok_code Token_Res1 := Lst_Cpos0; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res1)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos1 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos0 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos0, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos1 := Lst_Cpos0 + 1; end if; end; -- End tok_code if Token_Pos1 /= No_Token_Index then Lst_Cpos0 := Token_Pos1; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List0.Nodes.Length; begin List_Res0 := Allocate_Name_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos0; Token_End := (if Lst_Cpos0 = Row_Pos0 then Row_Pos0 else Lst_Cpos0 - 1); else Token_Start := Token_Index'Max (Row_Pos0, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res0, Kind => Ada_Name_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res0, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List0.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res0.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List0); -- End list_code if List_Pos0 /= No_Token_Index then Row_Pos0 := List_Pos0; else Row_Pos0 := No_Token_Index; goto Exit_Row0_0; end if; -- Start opt_code -- Start tok_code Token_Res2 := Row_Pos0; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res2)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos2 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos0 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos0, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos2 := Row_Pos0 + 1; end if; end; -- End tok_code if Token_Pos2 = No_Token_Index then Token_Res2 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos0)), To_Text ("Missing ';'")); Token_Pos2 := Row_Pos0; end if; -- End opt_code if Token_Pos2 /= No_Token_Index then Row_Pos0 := Token_Pos2; else Row_Pos0 := No_Token_Index; goto Exit_Row0_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos0 /= No_Token_Index then Transform_Res0 := Allocate_Abort_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res0, Kind => Ada_Abort_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos0 = Pos then No_Token_Index else Row_Pos0 - 1)); Initialize_Fields_For_Abort_Stmt (Self => Transform_Res0, Abort_Stmt_F_Names => List_Res0); if List_Res0 /= null and then Is_Incomplete (List_Res0) then Transform_Res0.Last_Attempted_Child := 0; elsif List_Res0 /= null and then not Is_Ghost (List_Res0) then Transform_Res0.Last_Attempted_Child := -1; end if; elsif Row_Pos0 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags0); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Abort_Stmt_Transform_Parse0_Memo, Row_Pos0 /= No_Token_Index, Transform_Res0, Pos, Row_Pos0); Parser.Current_Pos := Row_Pos0; return Transform_Res0; end Abort_Stmt_Transform_Parse0; function Abstract_State_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos1 : Token_Index := No_Token_Index; Defer_Pos1 : Token_Index := No_Token_Index; Defer_Res1 : Bare_Defining_Name := No_Bare_Ada_Node; Defer_Pos2 : Token_Index := No_Token_Index; Defer_Res2 : Bare_Aspect_Spec := No_Bare_Ada_Node; Transform_Res1 : Bare_Abstract_State_Decl := No_Bare_Ada_Node; Transform_Diags1 : Ada.Containers.Count_Type; Row_Pos2 : Token_Index := No_Token_Index; Token_Pos3 : Token_Index := No_Token_Index; Token_Res3 : Token_Index := No_Token_Index; Defer_Pos3 : Token_Index := No_Token_Index; Defer_Res3 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos4 : Token_Index := No_Token_Index; Token_Res4 : Token_Index := No_Token_Index; Transform_Res2 : Bare_Paren_Abstract_State_Decl := No_Bare_Ada_Node; Transform_Diags2 : Ada.Containers.Count_Type; Or_Pos0 : Token_Index := No_Token_Index; Or_Res0 : Bare_Ada_Node := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Abstract_State_Decl_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res0 := M.Instance; return Or_Res0; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res0; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos0 := No_Token_Index; Or_Res0 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags1 := Parser.Diagnostics.Length; -- Start row_code Row_Pos1 := Pos; Defer_Res1 := Defining_Name_Transform_Parse0 (Parser, Row_Pos1); Defer_Pos1 := Parser.Current_Pos; if Defer_Pos1 /= No_Token_Index then Row_Pos1 := Defer_Pos1; else Row_Pos1 := No_Token_Index; goto Exit_Row1_0; end if; Defer_Res2 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos1); Defer_Pos2 := Parser.Current_Pos; if Defer_Pos2 /= No_Token_Index then Row_Pos1 := Defer_Pos2; else Row_Pos1 := No_Token_Index; goto Exit_Row1_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos1 /= No_Token_Index then Transform_Res1 := Allocate_Abstract_State_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res1, Kind => Ada_Abstract_State_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos1 = Pos then No_Token_Index else Row_Pos1 - 1)); Initialize_Fields_For_Abstract_State_Decl (Self => Transform_Res1, Abstract_State_Decl_F_Name => Defer_Res1, Abstract_State_Decl_F_Aspects => Defer_Res2); if Defer_Res1 /= null and then Is_Incomplete (Defer_Res1) then Transform_Res1.Last_Attempted_Child := 0; elsif Defer_Res1 /= null and then not Is_Ghost (Defer_Res1) then Transform_Res1.Last_Attempted_Child := -1; end if; if Defer_Res2 /= null and then Is_Incomplete (Defer_Res2) then Transform_Res1.Last_Attempted_Child := 0; elsif Defer_Res2 /= null and then not Is_Ghost (Defer_Res2) then Transform_Res1.Last_Attempted_Child := -1; end if; elsif Row_Pos1 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags1); end if; -- End transform_code if Row_Pos1 /= No_Token_Index then Or_Pos0 := Row_Pos1; Or_Res0 := Transform_Res1; goto Exit_Or0; end if; -- Start transform_code Transform_Diags2 := Parser.Diagnostics.Length; -- Start row_code Row_Pos2 := Pos; -- Start tok_code Token_Res3 := Row_Pos2; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res3)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos3 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos2 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos2, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos3 := Row_Pos2 + 1; end if; end; -- End tok_code if Token_Pos3 /= No_Token_Index then Row_Pos2 := Token_Pos3; else Row_Pos2 := No_Token_Index; goto Exit_Row2_0; end if; Defer_Res3 := Abstract_State_Decl_Or_Parse0 (Parser, Row_Pos2); Defer_Pos3 := Parser.Current_Pos; if Defer_Pos3 /= No_Token_Index then Row_Pos2 := Defer_Pos3; else Row_Pos2 := No_Token_Index; goto Exit_Row2_0; end if; -- Start tok_code Token_Res4 := Row_Pos2; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res4)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos4 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos2 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos2, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos4 := Row_Pos2 + 1; end if; end; -- End tok_code if Token_Pos4 /= No_Token_Index then Row_Pos2 := Token_Pos4; else Row_Pos2 := No_Token_Index; goto Exit_Row2_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos2 /= No_Token_Index then Transform_Res2 := Allocate_Paren_Abstract_State_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res2, Kind => Ada_Paren_Abstract_State_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos2 = Pos then No_Token_Index else Row_Pos2 - 1)); Initialize_Fields_For_Paren_Abstract_State_Decl (Self => Transform_Res2, Paren_Abstract_State_Decl_F_Decl => Defer_Res3); if Defer_Res3 /= null and then Is_Incomplete (Defer_Res3) then Transform_Res2.Last_Attempted_Child := 0; elsif Defer_Res3 /= null and then not Is_Ghost (Defer_Res3) then Transform_Res2.Last_Attempted_Child := -1; end if; elsif Row_Pos2 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags2); end if; -- End transform_code if Row_Pos2 /= No_Token_Index then Or_Pos0 := Row_Pos2; Or_Res0 := Transform_Res2; goto Exit_Or0; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Abstract_State_Decl_Or_Parse0_Memo, Or_Pos0 /= No_Token_Index, Or_Res0, Pos, Or_Pos0); Parser.Current_Pos := Or_Pos0; return Or_Res0; end Abstract_State_Decl_Or_Parse0; function Abstract_Subp_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Abstract_Subp_Decl is use Bare_Abstract_Subp_Decl_Memos; Row_Pos3 : Token_Index := No_Token_Index; Defer_Pos4 : Token_Index := No_Token_Index; Defer_Res4 : Bare_Overriding_Node := No_Bare_Ada_Node; Defer_Pos5 : Token_Index := No_Token_Index; Defer_Res5 : Bare_Subp_Spec := No_Bare_Ada_Node; Token_Pos5 : Token_Index := No_Token_Index; Token_Res5 : Token_Index := No_Token_Index; Token_Pos6 : Token_Index := No_Token_Index; Token_Res6 : Token_Index := No_Token_Index; Defer_Pos6 : Token_Index := No_Token_Index; Defer_Res6 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos7 : Token_Index := No_Token_Index; Token_Res7 : Token_Index := No_Token_Index; Transform_Res3 : Bare_Abstract_Subp_Decl := No_Bare_Ada_Node; Transform_Diags3 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Abstract_Subp_Decl_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res3 := M.Instance; return Transform_Res3; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res3; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags3 := Parser.Diagnostics.Length; -- Start row_code Row_Pos3 := Pos; Defer_Res4 := Overriding_Indicator_Or_Parse0 (Parser, Row_Pos3); Defer_Pos4 := Parser.Current_Pos; if Defer_Pos4 /= No_Token_Index then Row_Pos3 := Defer_Pos4; else Row_Pos3 := No_Token_Index; goto Exit_Row3_0; end if; Defer_Res5 := Subp_Spec_Transform_Parse2 (Parser, Row_Pos3); Defer_Pos5 := Parser.Current_Pos; if Defer_Pos5 /= No_Token_Index then Row_Pos3 := Defer_Pos5; else Row_Pos3 := No_Token_Index; goto Exit_Row3_0; end if; -- Start tok_code Token_Res5 := Row_Pos3; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res5)); begin if T.Kind /= From_Token_Kind (Ada_Is) then Token_Pos5 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos3 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos3, Expected_Token_Id => Ada_Is, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos5 := Row_Pos3 + 1; end if; end; -- End tok_code if Token_Pos5 /= No_Token_Index then Row_Pos3 := Token_Pos5; else Row_Pos3 := No_Token_Index; goto Exit_Row3_0; end if; -- Start tok_code Token_Res6 := Row_Pos3; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res6)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Abstract) then Token_Pos6 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos3 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos3, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos6 := Row_Pos3 + 1; end if; end; -- End tok_code if Token_Pos6 /= No_Token_Index then Row_Pos3 := Token_Pos6; else Row_Pos3 := No_Token_Index; goto Exit_Row3_0; end if; Defer_Res6 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos3); Defer_Pos6 := Parser.Current_Pos; if Defer_Pos6 /= No_Token_Index then Row_Pos3 := Defer_Pos6; else Row_Pos3 := No_Token_Index; goto Exit_Row3_0; end if; -- Start opt_code -- Start tok_code Token_Res7 := Row_Pos3; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res7)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos7 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos3 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos3, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos7 := Row_Pos3 + 1; end if; end; -- End tok_code if Token_Pos7 = No_Token_Index then Token_Res7 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos3)), To_Text ("Missing ';'")); Token_Pos7 := Row_Pos3; end if; -- End opt_code if Token_Pos7 /= No_Token_Index then Row_Pos3 := Token_Pos7; else Row_Pos3 := No_Token_Index; goto Exit_Row3_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos3 /= No_Token_Index then Transform_Res3 := Allocate_Abstract_Subp_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res3, Kind => Ada_Abstract_Subp_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos3 = Pos then No_Token_Index else Row_Pos3 - 1)); Initialize_Fields_For_Abstract_Subp_Decl (Self => Transform_Res3, Classic_Subp_Decl_F_Overriding => Defer_Res4, Classic_Subp_Decl_F_Subp_Spec => Defer_Res5, Abstract_Subp_Decl_F_Aspects => Defer_Res6); if Defer_Res4 /= null and then Is_Incomplete (Defer_Res4) then Transform_Res3.Last_Attempted_Child := 0; elsif Defer_Res4 /= null and then not Is_Ghost (Defer_Res4) then Transform_Res3.Last_Attempted_Child := -1; end if; if Defer_Res5 /= null and then Is_Incomplete (Defer_Res5) then Transform_Res3.Last_Attempted_Child := 0; elsif Defer_Res5 /= null and then not Is_Ghost (Defer_Res5) then Transform_Res3.Last_Attempted_Child := -1; end if; if Defer_Res6 /= null and then Is_Incomplete (Defer_Res6) then Transform_Res3.Last_Attempted_Child := 0; elsif Defer_Res6 /= null and then not Is_Ghost (Defer_Res6) then Transform_Res3.Last_Attempted_Child := -1; end if; elsif Row_Pos3 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags3); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Abstract_Subp_Decl_Transform_Parse0_Memo, Row_Pos3 /= No_Token_Index, Transform_Res3, Pos, Row_Pos3); Parser.Current_Pos := Row_Pos3; return Transform_Res3; end Abstract_Subp_Decl_Transform_Parse0; function Accept_Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Accept_Stmt is use Bare_Accept_Stmt_Memos; Row_Pos4 : Token_Index := No_Token_Index; Token_Pos8 : Token_Index := No_Token_Index; Token_Res8 : Token_Index := No_Token_Index; Row_Pos5 : Token_Index := No_Token_Index; Row_Pos6 : Token_Index := No_Token_Index; Defer_Pos7 : Token_Index := No_Token_Index; Defer_Res7 : Bare_Identifier := No_Bare_Ada_Node; Transform_Res4 : Bare_Defining_Name := No_Bare_Ada_Node; Transform_Diags4 : Ada.Containers.Count_Type; Transform_Res5 : Bare_Accept_Stmt_Body := No_Bare_Ada_Node; Transform_Diags5 : Ada.Containers.Count_Type; Row_Pos7 : Token_Index := No_Token_Index; Token_Pos9 : Token_Index := No_Token_Index; Token_Res9 : Token_Index := No_Token_Index; Defer_Pos8 : Token_Index := No_Token_Index; Defer_Res8 : Bare_Expr := No_Bare_Ada_Node; Token_Pos10 : Token_Index := No_Token_Index; Token_Res10 : Token_Index := No_Token_Index; Row_Pos8 : Token_Index := No_Token_Index; Defer_Pos9 : Token_Index := No_Token_Index; Defer_Res9 : Bare_Params := No_Bare_Ada_Node; Transform_Res6 : Bare_Entry_Completion_Formal_Params := No_Bare_Ada_Node; Transform_Diags6 : Ada.Containers.Count_Type; Token_Pos11 : Token_Index := No_Token_Index; Token_Res11 : Token_Index := No_Token_Index; Transform_Res7 : Bare_Accept_Stmt := No_Bare_Ada_Node; Transform_Diags7 : Ada.Containers.Count_Type; Row_Pos9 : Token_Index := No_Token_Index; Token_Pos12 : Token_Index := No_Token_Index; Token_Res12 : Token_Index := No_Token_Index; Row_Pos10 : Token_Index := No_Token_Index; Row_Pos11 : Token_Index := No_Token_Index; Defer_Pos10 : Token_Index := No_Token_Index; Defer_Res10 : Bare_Identifier := No_Bare_Ada_Node; Transform_Res8 : Bare_Defining_Name := No_Bare_Ada_Node; Transform_Diags8 : Ada.Containers.Count_Type; Transform_Res9 : Bare_Accept_Stmt_Body := No_Bare_Ada_Node; Transform_Diags9 : Ada.Containers.Count_Type; Row_Pos12 : Token_Index := No_Token_Index; Token_Pos13 : Token_Index := No_Token_Index; Token_Res13 : Token_Index := No_Token_Index; Defer_Pos11 : Token_Index := No_Token_Index; Defer_Res11 : Bare_Expr := No_Bare_Ada_Node; Token_Pos14 : Token_Index := No_Token_Index; Token_Res14 : Token_Index := No_Token_Index; Row_Pos13 : Token_Index := No_Token_Index; Defer_Pos12 : Token_Index := No_Token_Index; Defer_Res12 : Bare_Params := No_Bare_Ada_Node; Transform_Res10 : Bare_Entry_Completion_Formal_Params := No_Bare_Ada_Node; Transform_Diags10 : Ada.Containers.Count_Type; Token_Pos15 : Token_Index := No_Token_Index; Token_Res15 : Token_Index := No_Token_Index; Defer_Pos13 : Token_Index := No_Token_Index; Defer_Res13 : Bare_Handled_Stmts := No_Bare_Ada_Node; Row_Pos14 : Token_Index := No_Token_Index; Token_Pos16 : Token_Index := No_Token_Index; Token_Res16 : Token_Index := No_Token_Index; Row_Pos15 : Token_Index := No_Token_Index; Defer_Pos14 : Token_Index := No_Token_Index; Defer_Res14 : Bare_Identifier := No_Bare_Ada_Node; Transform_Res11 : Bare_End_Name := No_Bare_Ada_Node; Transform_Diags11 : Ada.Containers.Count_Type; Token_Pos17 : Token_Index := No_Token_Index; Token_Res17 : Token_Index := No_Token_Index; Transform_Res12 : Bare_Accept_Stmt_With_Stmts := No_Bare_Ada_Node; Transform_Diags12 : Ada.Containers.Count_Type; Or_Pos1 : Token_Index := No_Token_Index; Or_Res1 : Bare_Accept_Stmt := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Accept_Stmt_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res1 := M.Instance; return Or_Res1; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res1; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos1 := No_Token_Index; Or_Res1 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags7 := Parser.Diagnostics.Length; -- Start row_code Row_Pos4 := Pos; -- Start tok_code Token_Res8 := Row_Pos4; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res8)); begin if T.Kind /= From_Token_Kind (Ada_Accept) then Token_Pos8 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos4 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos4, Expected_Token_Id => Ada_Accept, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos8 := Row_Pos4 + 1; end if; end; -- End tok_code if Token_Pos8 /= No_Token_Index then Row_Pos4 := Token_Pos8; else Row_Pos4 := No_Token_Index; goto Exit_Row4_0; end if; -- Start transform_code Transform_Diags5 := Parser.Diagnostics.Length; -- Start row_code Row_Pos5 := Row_Pos4; -- Start transform_code Transform_Diags4 := Parser.Diagnostics.Length; -- Start row_code Row_Pos6 := Row_Pos5; Defer_Res7 := Identifier_Transform_Parse0 (Parser, Row_Pos6); Defer_Pos7 := Parser.Current_Pos; if Defer_Pos7 /= No_Token_Index then Row_Pos6 := Defer_Pos7; else Row_Pos6 := No_Token_Index; goto Exit_Row6_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos6 /= No_Token_Index then Transform_Res4 := Allocate_Defining_Name (Parser.Mem_Pool); Initialize (Self => Transform_Res4, Kind => Ada_Defining_Name, Unit => Parser.Unit, Token_Start_Index => Row_Pos5, Token_End_Index => (if Row_Pos6 = Row_Pos5 then No_Token_Index else Row_Pos6 - 1)); Initialize_Fields_For_Defining_Name (Self => Transform_Res4, Defining_Name_F_Name => Defer_Res7); if Defer_Res7 /= null and then Is_Incomplete (Defer_Res7) then Transform_Res4.Last_Attempted_Child := 0; elsif Defer_Res7 /= null and then not Is_Ghost (Defer_Res7) then Transform_Res4.Last_Attempted_Child := -1; end if; elsif Row_Pos6 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags4); end if; -- End transform_code if Row_Pos6 /= No_Token_Index then Row_Pos5 := Row_Pos6; else Row_Pos5 := No_Token_Index; goto Exit_Row5_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos5 /= No_Token_Index then Transform_Res5 := Allocate_Accept_Stmt_Body (Parser.Mem_Pool); Initialize (Self => Transform_Res5, Kind => Ada_Accept_Stmt_Body, Unit => Parser.Unit, Token_Start_Index => Row_Pos4, Token_End_Index => (if Row_Pos5 = Row_Pos4 then No_Token_Index else Row_Pos5 - 1)); Initialize_Fields_For_Accept_Stmt_Body (Self => Transform_Res5, Accept_Stmt_Body_F_Name => Transform_Res4); if Transform_Res4 /= null and then Is_Incomplete (Transform_Res4) then Transform_Res5.Last_Attempted_Child := 0; elsif Transform_Res4 /= null and then not Is_Ghost (Transform_Res4) then Transform_Res5.Last_Attempted_Child := -1; end if; elsif Row_Pos5 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags5); end if; -- End transform_code if Row_Pos5 /= No_Token_Index then Row_Pos4 := Row_Pos5; else Row_Pos4 := No_Token_Index; goto Exit_Row4_0; end if; -- Start opt_code -- Start row_code Row_Pos7 := Row_Pos4; -- Start tok_code Token_Res9 := Row_Pos7; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res9)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos9 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos7 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos7, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos9 := Row_Pos7 + 1; end if; end; -- End tok_code if Token_Pos9 /= No_Token_Index then Row_Pos7 := Token_Pos9; else Row_Pos7 := No_Token_Index; goto Exit_Row7_0; end if; Defer_Res8 := Expr_Or_Parse0 (Parser, Row_Pos7); Defer_Pos8 := Parser.Current_Pos; if Defer_Pos8 /= No_Token_Index then Row_Pos7 := Defer_Pos8; else Row_Pos7 := No_Token_Index; goto Exit_Row7_0; end if; -- Start tok_code Token_Res10 := Row_Pos7; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res10)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos10 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos7 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos7, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos10 := Row_Pos7 + 1; end if; end; -- End tok_code if Token_Pos10 /= No_Token_Index then Row_Pos7 := Token_Pos10; else Row_Pos7 := No_Token_Index; goto Exit_Row7_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos7 = No_Token_Index then Defer_Res8 := No_Bare_Ada_Node; Row_Pos7 := Row_Pos4; end if; -- End opt_code if Row_Pos7 /= No_Token_Index then Row_Pos4 := Row_Pos7; else Row_Pos4 := No_Token_Index; goto Exit_Row4_0; end if; -- Start transform_code Transform_Diags6 := Parser.Diagnostics.Length; -- Start row_code Row_Pos8 := Row_Pos4; -- Start opt_code Defer_Res9 := Param_Specs_Transform_Parse0 (Parser, Row_Pos8); Defer_Pos9 := Parser.Current_Pos; if Defer_Pos9 = No_Token_Index then Defer_Res9 := No_Bare_Ada_Node; Defer_Pos9 := Row_Pos8; end if; -- End opt_code if Defer_Pos9 /= No_Token_Index then Row_Pos8 := Defer_Pos9; else Row_Pos8 := No_Token_Index; goto Exit_Row8_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos8 /= No_Token_Index then Transform_Res6 := Allocate_Entry_Completion_Formal_Params (Parser.Mem_Pool); Initialize (Self => Transform_Res6, Kind => Ada_Entry_Completion_Formal_Params, Unit => Parser.Unit, Token_Start_Index => Row_Pos4, Token_End_Index => (if Row_Pos8 = Row_Pos4 then No_Token_Index else Row_Pos8 - 1)); Initialize_Fields_For_Entry_Completion_Formal_Params (Self => Transform_Res6, Entry_Completion_Formal_Params_F_Params => Defer_Res9); if Defer_Res9 /= null and then Is_Incomplete (Defer_Res9) then Transform_Res6.Last_Attempted_Child := 0; elsif Defer_Res9 /= null and then not Is_Ghost (Defer_Res9) then Transform_Res6.Last_Attempted_Child := -1; end if; elsif Row_Pos8 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags6); end if; -- End transform_code if Row_Pos8 /= No_Token_Index then Row_Pos4 := Row_Pos8; else Row_Pos4 := No_Token_Index; goto Exit_Row4_0; end if; -- Start tok_code Token_Res11 := Row_Pos4; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res11)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos11 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos4 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos4, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos11 := Row_Pos4 + 1; end if; end; -- End tok_code if Token_Pos11 /= No_Token_Index then Row_Pos4 := Token_Pos11; else Row_Pos4 := No_Token_Index; goto Exit_Row4_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos4 /= No_Token_Index then Transform_Res7 := Allocate_Accept_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res7, Kind => Ada_Accept_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos4 = Pos then No_Token_Index else Row_Pos4 - 1)); Initialize_Fields_For_Accept_Stmt (Self => Transform_Res7, Accept_Stmt_F_Body_Decl => Transform_Res5, Accept_Stmt_F_Entry_Index_Expr => Defer_Res8, Accept_Stmt_F_Params => Transform_Res6); if Transform_Res5 /= null and then Is_Incomplete (Transform_Res5) then Transform_Res7.Last_Attempted_Child := 0; elsif Transform_Res5 /= null and then not Is_Ghost (Transform_Res5) then Transform_Res7.Last_Attempted_Child := -1; end if; if Defer_Res8 /= null and then Is_Incomplete (Defer_Res8) then Transform_Res7.Last_Attempted_Child := 0; elsif Defer_Res8 /= null and then not Is_Ghost (Defer_Res8) then Transform_Res7.Last_Attempted_Child := -1; end if; if Transform_Res6 /= null and then Is_Incomplete (Transform_Res6) then Transform_Res7.Last_Attempted_Child := 0; elsif Transform_Res6 /= null and then not Is_Ghost (Transform_Res6) then Transform_Res7.Last_Attempted_Child := -1; end if; elsif Row_Pos4 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags7); end if; -- End transform_code if Row_Pos4 /= No_Token_Index then Or_Pos1 := Row_Pos4; Or_Res1 := Transform_Res7; goto Exit_Or1; end if; -- Start transform_code Transform_Diags12 := Parser.Diagnostics.Length; -- Start row_code Row_Pos9 := Pos; -- Start tok_code Token_Res12 := Row_Pos9; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res12)); begin if T.Kind /= From_Token_Kind (Ada_Accept) then Token_Pos12 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos9 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos9, Expected_Token_Id => Ada_Accept, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos12 := Row_Pos9 + 1; end if; end; -- End tok_code if Token_Pos12 /= No_Token_Index then Row_Pos9 := Token_Pos12; else Row_Pos9 := No_Token_Index; goto Exit_Row9_0; end if; -- Start transform_code Transform_Diags9 := Parser.Diagnostics.Length; -- Start row_code Row_Pos10 := Row_Pos9; -- Start transform_code Transform_Diags8 := Parser.Diagnostics.Length; -- Start row_code Row_Pos11 := Row_Pos10; Defer_Res10 := Identifier_Transform_Parse0 (Parser, Row_Pos11); Defer_Pos10 := Parser.Current_Pos; if Defer_Pos10 /= No_Token_Index then Row_Pos11 := Defer_Pos10; else Row_Pos11 := No_Token_Index; goto Exit_Row11_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos11 /= No_Token_Index then Transform_Res8 := Allocate_Defining_Name (Parser.Mem_Pool); Initialize (Self => Transform_Res8, Kind => Ada_Defining_Name, Unit => Parser.Unit, Token_Start_Index => Row_Pos10, Token_End_Index => (if Row_Pos11 = Row_Pos10 then No_Token_Index else Row_Pos11 - 1)); Initialize_Fields_For_Defining_Name (Self => Transform_Res8, Defining_Name_F_Name => Defer_Res10); if Defer_Res10 /= null and then Is_Incomplete (Defer_Res10) then Transform_Res8.Last_Attempted_Child := 0; elsif Defer_Res10 /= null and then not Is_Ghost (Defer_Res10) then Transform_Res8.Last_Attempted_Child := -1; end if; elsif Row_Pos11 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags8); end if; -- End transform_code if Row_Pos11 /= No_Token_Index then Row_Pos10 := Row_Pos11; else Row_Pos10 := No_Token_Index; goto Exit_Row10_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos10 /= No_Token_Index then Transform_Res9 := Allocate_Accept_Stmt_Body (Parser.Mem_Pool); Initialize (Self => Transform_Res9, Kind => Ada_Accept_Stmt_Body, Unit => Parser.Unit, Token_Start_Index => Row_Pos9, Token_End_Index => (if Row_Pos10 = Row_Pos9 then No_Token_Index else Row_Pos10 - 1)); Initialize_Fields_For_Accept_Stmt_Body (Self => Transform_Res9, Accept_Stmt_Body_F_Name => Transform_Res8); if Transform_Res8 /= null and then Is_Incomplete (Transform_Res8) then Transform_Res9.Last_Attempted_Child := 0; elsif Transform_Res8 /= null and then not Is_Ghost (Transform_Res8) then Transform_Res9.Last_Attempted_Child := -1; end if; elsif Row_Pos10 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags9); end if; -- End transform_code if Row_Pos10 /= No_Token_Index then Row_Pos9 := Row_Pos10; else Row_Pos9 := No_Token_Index; goto Exit_Row9_0; end if; -- Start opt_code -- Start row_code Row_Pos12 := Row_Pos9; -- Start tok_code Token_Res13 := Row_Pos12; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res13)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos13 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos12 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos12, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos13 := Row_Pos12 + 1; end if; end; -- End tok_code if Token_Pos13 /= No_Token_Index then Row_Pos12 := Token_Pos13; else Row_Pos12 := No_Token_Index; goto Exit_Row12_0; end if; Defer_Res11 := Expr_Or_Parse0 (Parser, Row_Pos12); Defer_Pos11 := Parser.Current_Pos; if Defer_Pos11 /= No_Token_Index then Row_Pos12 := Defer_Pos11; else Row_Pos12 := No_Token_Index; goto Exit_Row12_0; end if; -- Start tok_code Token_Res14 := Row_Pos12; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res14)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos14 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos12 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos12, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos14 := Row_Pos12 + 1; end if; end; -- End tok_code if Token_Pos14 /= No_Token_Index then Row_Pos12 := Token_Pos14; else Row_Pos12 := No_Token_Index; goto Exit_Row12_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos12 = No_Token_Index then Defer_Res11 := No_Bare_Ada_Node; Row_Pos12 := Row_Pos9; end if; -- End opt_code if Row_Pos12 /= No_Token_Index then Row_Pos9 := Row_Pos12; else Row_Pos9 := No_Token_Index; goto Exit_Row9_0; end if; -- Start transform_code Transform_Diags10 := Parser.Diagnostics.Length; -- Start row_code Row_Pos13 := Row_Pos9; -- Start opt_code Defer_Res12 := Param_Specs_Transform_Parse0 (Parser, Row_Pos13); Defer_Pos12 := Parser.Current_Pos; if Defer_Pos12 = No_Token_Index then Defer_Res12 := No_Bare_Ada_Node; Defer_Pos12 := Row_Pos13; end if; -- End opt_code if Defer_Pos12 /= No_Token_Index then Row_Pos13 := Defer_Pos12; else Row_Pos13 := No_Token_Index; goto Exit_Row13_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos13 /= No_Token_Index then Transform_Res10 := Allocate_Entry_Completion_Formal_Params (Parser.Mem_Pool); Initialize (Self => Transform_Res10, Kind => Ada_Entry_Completion_Formal_Params, Unit => Parser.Unit, Token_Start_Index => Row_Pos9, Token_End_Index => (if Row_Pos13 = Row_Pos9 then No_Token_Index else Row_Pos13 - 1)); Initialize_Fields_For_Entry_Completion_Formal_Params (Self => Transform_Res10, Entry_Completion_Formal_Params_F_Params => Defer_Res12); if Defer_Res12 /= null and then Is_Incomplete (Defer_Res12) then Transform_Res10.Last_Attempted_Child := 0; elsif Defer_Res12 /= null and then not Is_Ghost (Defer_Res12) then Transform_Res10.Last_Attempted_Child := -1; end if; elsif Row_Pos13 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags10); end if; -- End transform_code if Row_Pos13 /= No_Token_Index then Row_Pos9 := Row_Pos13; else Row_Pos9 := No_Token_Index; goto Exit_Row9_0; end if; -- Start tok_code Token_Res15 := Row_Pos9; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res15)); begin if T.Kind /= From_Token_Kind (Ada_Do) then Token_Pos15 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos9 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos9, Expected_Token_Id => Ada_Do, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos15 := Row_Pos9 + 1; end if; end; -- End tok_code if Token_Pos15 /= No_Token_Index then Row_Pos9 := Token_Pos15; else Row_Pos9 := No_Token_Index; goto Exit_Row9_0; end if; Defer_Res13 := Handled_Stmts_Transform_Parse0 (Parser, Row_Pos9); Defer_Pos13 := Parser.Current_Pos; if Defer_Pos13 /= No_Token_Index then Row_Pos9 := Defer_Pos13; else Row_Pos9 := No_Token_Index; goto Exit_Row9_0; end if; -- Start row_code Row_Pos14 := Row_Pos9; -- Start tok_code Token_Res16 := Row_Pos14; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res16)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos16 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos14 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos14, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos16 := Row_Pos14 + 1; end if; end; -- End tok_code if Token_Pos16 /= No_Token_Index then Row_Pos14 := Token_Pos16; else Row_Pos14 := No_Token_Index; goto Exit_Row14_0; end if; -- Start opt_code -- Start transform_code Transform_Diags11 := Parser.Diagnostics.Length; -- Start row_code Row_Pos15 := Row_Pos14; Defer_Res14 := Identifier_Transform_Parse0 (Parser, Row_Pos15); Defer_Pos14 := Parser.Current_Pos; if Defer_Pos14 /= No_Token_Index then Row_Pos15 := Defer_Pos14; else Row_Pos15 := No_Token_Index; goto Exit_Row15_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos15 /= No_Token_Index then Transform_Res11 := Allocate_End_Name (Parser.Mem_Pool); Initialize (Self => Transform_Res11, Kind => Ada_End_Name, Unit => Parser.Unit, Token_Start_Index => Row_Pos14, Token_End_Index => (if Row_Pos15 = Row_Pos14 then No_Token_Index else Row_Pos15 - 1)); Initialize_Fields_For_End_Name (Self => Transform_Res11, End_Name_F_Name => Defer_Res14); if Defer_Res14 /= null and then Is_Incomplete (Defer_Res14) then Transform_Res11.Last_Attempted_Child := 0; elsif Defer_Res14 /= null and then not Is_Ghost (Defer_Res14) then Transform_Res11.Last_Attempted_Child := -1; end if; elsif Row_Pos15 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags11); end if; -- End transform_code if Row_Pos15 = No_Token_Index then Transform_Res11 := No_Bare_Ada_Node; Row_Pos15 := Row_Pos14; end if; -- End opt_code if Row_Pos15 /= No_Token_Index then Row_Pos14 := Row_Pos15; else Row_Pos14 := No_Token_Index; goto Exit_Row14_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos14 /= No_Token_Index then Row_Pos9 := Row_Pos14; else Row_Pos9 := No_Token_Index; goto Exit_Row9_0; end if; -- Start opt_code -- Start tok_code Token_Res17 := Row_Pos9; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res17)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos17 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos9 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos9, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos17 := Row_Pos9 + 1; end if; end; -- End tok_code if Token_Pos17 = No_Token_Index then Token_Res17 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos9)), To_Text ("Missing ';'")); Token_Pos17 := Row_Pos9; end if; -- End opt_code if Token_Pos17 /= No_Token_Index then Row_Pos9 := Token_Pos17; else Row_Pos9 := No_Token_Index; goto Exit_Row9_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos9 /= No_Token_Index then Transform_Res12 := Allocate_Accept_Stmt_With_Stmts (Parser.Mem_Pool); Initialize (Self => Transform_Res12, Kind => Ada_Accept_Stmt_With_Stmts, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos9 = Pos then No_Token_Index else Row_Pos9 - 1)); Initialize_Fields_For_Accept_Stmt_With_Stmts (Self => Transform_Res12, Accept_Stmt_F_Body_Decl => Transform_Res9, Accept_Stmt_F_Entry_Index_Expr => Defer_Res11, Accept_Stmt_F_Params => Transform_Res10, Accept_Stmt_With_Stmts_F_Stmts => Defer_Res13, Accept_Stmt_With_Stmts_F_End_Name => Transform_Res11); if Transform_Res9 /= null and then Is_Incomplete (Transform_Res9) then Transform_Res12.Last_Attempted_Child := 0; elsif Transform_Res9 /= null and then not Is_Ghost (Transform_Res9) then Transform_Res12.Last_Attempted_Child := -1; end if; if Defer_Res11 /= null and then Is_Incomplete (Defer_Res11) then Transform_Res12.Last_Attempted_Child := 0; elsif Defer_Res11 /= null and then not Is_Ghost (Defer_Res11) then Transform_Res12.Last_Attempted_Child := -1; end if; if Transform_Res10 /= null and then Is_Incomplete (Transform_Res10) then Transform_Res12.Last_Attempted_Child := 0; elsif Transform_Res10 /= null and then not Is_Ghost (Transform_Res10) then Transform_Res12.Last_Attempted_Child := -1; end if; if Defer_Res13 /= null and then Is_Incomplete (Defer_Res13) then Transform_Res12.Last_Attempted_Child := 0; elsif Defer_Res13 /= null and then not Is_Ghost (Defer_Res13) then Transform_Res12.Last_Attempted_Child := -1; end if; if Transform_Res11 /= null and then Is_Incomplete (Transform_Res11) then Transform_Res12.Last_Attempted_Child := 0; elsif Transform_Res11 /= null and then not Is_Ghost (Transform_Res11) then Transform_Res12.Last_Attempted_Child := -1; end if; elsif Row_Pos9 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags12); end if; -- End transform_code if Row_Pos9 /= No_Token_Index then Or_Pos1 := Row_Pos9; Or_Res1 := Transform_Res12; goto Exit_Or1; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Accept_Stmt_Or_Parse0_Memo, Or_Pos1 /= No_Token_Index, Or_Res1, Pos, Or_Pos1); Parser.Current_Pos := Or_Pos1; return Or_Res1; end Accept_Stmt_Or_Parse0; function Access_Def_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Access_Def is use Bare_Access_Def_Memos; Row_Pos16 : Token_Index := No_Token_Index; Row_Pos17 : Token_Index := No_Token_Index; Token_Pos18 : Token_Index := No_Token_Index; Token_Res18 : Token_Index := No_Token_Index; Token_Pos19 : Token_Index := No_Token_Index; Token_Res19 : Token_Index := No_Token_Index; Opt_Res0 : Bare_Not_Null := No_Bare_Ada_Node; Token_Pos20 : Token_Index := No_Token_Index; Token_Res20 : Token_Index := No_Token_Index; Token_Pos21 : Token_Index := No_Token_Index; Token_Res21 : Token_Index := No_Token_Index; Opt_Res1 : Bare_Protected_Node := No_Bare_Ada_Node; Defer_Pos15 : Token_Index := No_Token_Index; Defer_Res15 : Bare_Subp_Spec := No_Bare_Ada_Node; Transform_Res13 : Bare_Access_To_Subp_Def := No_Bare_Ada_Node; Transform_Diags13 : Ada.Containers.Count_Type; Row_Pos18 : Token_Index := No_Token_Index; Row_Pos19 : Token_Index := No_Token_Index; Token_Pos22 : Token_Index := No_Token_Index; Token_Res22 : Token_Index := No_Token_Index; Token_Pos23 : Token_Index := No_Token_Index; Token_Res23 : Token_Index := No_Token_Index; Opt_Res2 : Bare_Not_Null := No_Bare_Ada_Node; Token_Pos24 : Token_Index := No_Token_Index; Token_Res24 : Token_Index := No_Token_Index; Token_Pos25 : Token_Index := No_Token_Index; Token_Res25 : Token_Index := No_Token_Index; Opt_Res3 : Bare_All_Node := No_Bare_Ada_Node; Token_Pos26 : Token_Index := No_Token_Index; Token_Res26 : Token_Index := No_Token_Index; Opt_Res4 : Bare_Constant_Node := No_Bare_Ada_Node; Defer_Pos16 : Token_Index := No_Token_Index; Defer_Res16 : Bare_Subtype_Indication := No_Bare_Ada_Node; Transform_Res14 : Bare_Type_Access_Def := No_Bare_Ada_Node; Transform_Diags14 : Ada.Containers.Count_Type; Or_Pos2 : Token_Index := No_Token_Index; Or_Res2 : Bare_Access_Def := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Access_Def_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res2 := M.Instance; return Or_Res2; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res2; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos2 := No_Token_Index; Or_Res2 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags13 := Parser.Diagnostics.Length; -- Start row_code Row_Pos16 := Pos; -- Start opt_code -- Start row_code Row_Pos17 := Row_Pos16; -- Start tok_code Token_Res18 := Row_Pos17; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res18)); begin if T.Kind /= From_Token_Kind (Ada_Not) then Token_Pos18 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos17 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos17, Expected_Token_Id => Ada_Not, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos18 := Row_Pos17 + 1; end if; end; -- End tok_code if Token_Pos18 /= No_Token_Index then Row_Pos17 := Token_Pos18; else Row_Pos17 := No_Token_Index; goto Exit_Row17_0; end if; -- Start tok_code Token_Res19 := Row_Pos17; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res19)); begin if T.Kind /= From_Token_Kind (Ada_Null) then Token_Pos19 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos17 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos17, Expected_Token_Id => Ada_Null, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos19 := Row_Pos17 + 1; end if; end; -- End tok_code if Token_Pos19 /= No_Token_Index then Row_Pos17 := Token_Pos19; else Row_Pos17 := No_Token_Index; goto Exit_Row17_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos17 = No_Token_Index then Opt_Res0 := Allocate_Not_Null_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res0, Kind => Ada_Not_Null_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos16, Token_End_Index => No_Token_Index); Row_Pos17 := Row_Pos16; else Opt_Res0 := Allocate_Not_Null_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res0, Kind => Ada_Not_Null_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos16, Token_End_Index => Row_Pos17 - 1); end if; -- End opt_code if Row_Pos17 /= No_Token_Index then Row_Pos16 := Row_Pos17; else Row_Pos16 := No_Token_Index; goto Exit_Row16_0; end if; -- Start tok_code Token_Res20 := Row_Pos16; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res20)); begin if T.Kind /= From_Token_Kind (Ada_Access) then Token_Pos20 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos16 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos16, Expected_Token_Id => Ada_Access, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos20 := Row_Pos16 + 1; end if; end; -- End tok_code if Token_Pos20 /= No_Token_Index then Row_Pos16 := Token_Pos20; else Row_Pos16 := No_Token_Index; goto Exit_Row16_0; end if; -- Start opt_code -- Start tok_code Token_Res21 := Row_Pos16; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res21)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Protected) then Token_Pos21 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos16 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos16, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos21 := Row_Pos16 + 1; end if; end; -- End tok_code if Token_Pos21 = No_Token_Index then Opt_Res1 := Allocate_Protected_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res1, Kind => Ada_Protected_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos16, Token_End_Index => No_Token_Index); Token_Pos21 := Row_Pos16; else Opt_Res1 := Allocate_Protected_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res1, Kind => Ada_Protected_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos16, Token_End_Index => Token_Pos21 - 1); end if; -- End opt_code if Token_Pos21 /= No_Token_Index then Row_Pos16 := Token_Pos21; else Row_Pos16 := No_Token_Index; goto Exit_Row16_0; end if; Defer_Res15 := Subp_Spec_Transform_Parse2 (Parser, Row_Pos16); Defer_Pos15 := Parser.Current_Pos; if Defer_Pos15 /= No_Token_Index then Row_Pos16 := Defer_Pos15; else Row_Pos16 := No_Token_Index; goto Exit_Row16_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos16 /= No_Token_Index then Transform_Res13 := Allocate_Access_To_Subp_Def (Parser.Mem_Pool); Initialize (Self => Transform_Res13, Kind => Ada_Access_To_Subp_Def, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos16 = Pos then No_Token_Index else Row_Pos16 - 1)); Initialize_Fields_For_Access_To_Subp_Def (Self => Transform_Res13, Access_Def_F_Has_Not_Null => Opt_Res0, Access_To_Subp_Def_F_Has_Protected => Opt_Res1, Access_To_Subp_Def_F_Subp_Spec => Defer_Res15); if Opt_Res0 /= null and then Is_Incomplete (Opt_Res0) then Transform_Res13.Last_Attempted_Child := 0; elsif Opt_Res0 /= null and then not Is_Ghost (Opt_Res0) then Transform_Res13.Last_Attempted_Child := -1; end if; if Opt_Res1 /= null and then Is_Incomplete (Opt_Res1) then Transform_Res13.Last_Attempted_Child := 0; elsif Opt_Res1 /= null and then not Is_Ghost (Opt_Res1) then Transform_Res13.Last_Attempted_Child := -1; end if; if Defer_Res15 /= null and then Is_Incomplete (Defer_Res15) then Transform_Res13.Last_Attempted_Child := 0; elsif Defer_Res15 /= null and then not Is_Ghost (Defer_Res15) then Transform_Res13.Last_Attempted_Child := -1; end if; elsif Row_Pos16 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags13); end if; -- End transform_code if Row_Pos16 /= No_Token_Index then Or_Pos2 := Row_Pos16; Or_Res2 := Transform_Res13; goto Exit_Or2; end if; -- Start transform_code Transform_Diags14 := Parser.Diagnostics.Length; -- Start row_code Row_Pos18 := Pos; -- Start opt_code -- Start row_code Row_Pos19 := Row_Pos18; -- Start tok_code Token_Res22 := Row_Pos19; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res22)); begin if T.Kind /= From_Token_Kind (Ada_Not) then Token_Pos22 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos19 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos19, Expected_Token_Id => Ada_Not, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos22 := Row_Pos19 + 1; end if; end; -- End tok_code if Token_Pos22 /= No_Token_Index then Row_Pos19 := Token_Pos22; else Row_Pos19 := No_Token_Index; goto Exit_Row19_0; end if; -- Start tok_code Token_Res23 := Row_Pos19; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res23)); begin if T.Kind /= From_Token_Kind (Ada_Null) then Token_Pos23 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos19 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos19, Expected_Token_Id => Ada_Null, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos23 := Row_Pos19 + 1; end if; end; -- End tok_code if Token_Pos23 /= No_Token_Index then Row_Pos19 := Token_Pos23; else Row_Pos19 := No_Token_Index; goto Exit_Row19_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos19 = No_Token_Index then Opt_Res2 := Allocate_Not_Null_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res2, Kind => Ada_Not_Null_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos18, Token_End_Index => No_Token_Index); Row_Pos19 := Row_Pos18; else Opt_Res2 := Allocate_Not_Null_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res2, Kind => Ada_Not_Null_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos18, Token_End_Index => Row_Pos19 - 1); end if; -- End opt_code if Row_Pos19 /= No_Token_Index then Row_Pos18 := Row_Pos19; else Row_Pos18 := No_Token_Index; goto Exit_Row18_0; end if; -- Start tok_code Token_Res24 := Row_Pos18; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res24)); begin if T.Kind /= From_Token_Kind (Ada_Access) then Token_Pos24 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos18 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos18, Expected_Token_Id => Ada_Access, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos24 := Row_Pos18 + 1; end if; end; -- End tok_code if Token_Pos24 /= No_Token_Index then Row_Pos18 := Token_Pos24; else Row_Pos18 := No_Token_Index; goto Exit_Row18_0; end if; -- Start opt_code -- Start tok_code Token_Res25 := Row_Pos18; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res25)); begin if T.Kind /= From_Token_Kind (Ada_All) then Token_Pos25 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos18 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos18, Expected_Token_Id => Ada_All, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos25 := Row_Pos18 + 1; end if; end; -- End tok_code if Token_Pos25 = No_Token_Index then Opt_Res3 := Allocate_All_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res3, Kind => Ada_All_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos18, Token_End_Index => No_Token_Index); Token_Pos25 := Row_Pos18; else Opt_Res3 := Allocate_All_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res3, Kind => Ada_All_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos18, Token_End_Index => Token_Pos25 - 1); end if; -- End opt_code if Token_Pos25 /= No_Token_Index then Row_Pos18 := Token_Pos25; else Row_Pos18 := No_Token_Index; goto Exit_Row18_0; end if; -- Start opt_code -- Start tok_code Token_Res26 := Row_Pos18; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res26)); begin if T.Kind /= From_Token_Kind (Ada_Constant) then Token_Pos26 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos18 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos18, Expected_Token_Id => Ada_Constant, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos26 := Row_Pos18 + 1; end if; end; -- End tok_code if Token_Pos26 = No_Token_Index then Opt_Res4 := Allocate_Constant_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res4, Kind => Ada_Constant_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos18, Token_End_Index => No_Token_Index); Token_Pos26 := Row_Pos18; else Opt_Res4 := Allocate_Constant_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res4, Kind => Ada_Constant_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos18, Token_End_Index => Token_Pos26 - 1); end if; -- End opt_code if Token_Pos26 /= No_Token_Index then Row_Pos18 := Token_Pos26; else Row_Pos18 := No_Token_Index; goto Exit_Row18_0; end if; Defer_Res16 := Subtype_Indication_Transform_Parse0 (Parser, Row_Pos18); Defer_Pos16 := Parser.Current_Pos; if Defer_Pos16 /= No_Token_Index then Row_Pos18 := Defer_Pos16; else Row_Pos18 := No_Token_Index; goto Exit_Row18_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos18 /= No_Token_Index then Transform_Res14 := Allocate_Type_Access_Def (Parser.Mem_Pool); Initialize (Self => Transform_Res14, Kind => Ada_Type_Access_Def, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos18 = Pos then No_Token_Index else Row_Pos18 - 1)); Initialize_Fields_For_Type_Access_Def (Self => Transform_Res14, Access_Def_F_Has_Not_Null => Opt_Res2, Type_Access_Def_F_Has_All => Opt_Res3, Type_Access_Def_F_Has_Constant => Opt_Res4, Type_Access_Def_F_Subtype_Indication => Defer_Res16); if Opt_Res2 /= null and then Is_Incomplete (Opt_Res2) then Transform_Res14.Last_Attempted_Child := 0; elsif Opt_Res2 /= null and then not Is_Ghost (Opt_Res2) then Transform_Res14.Last_Attempted_Child := -1; end if; if Opt_Res3 /= null and then Is_Incomplete (Opt_Res3) then Transform_Res14.Last_Attempted_Child := 0; elsif Opt_Res3 /= null and then not Is_Ghost (Opt_Res3) then Transform_Res14.Last_Attempted_Child := -1; end if; if Opt_Res4 /= null and then Is_Incomplete (Opt_Res4) then Transform_Res14.Last_Attempted_Child := 0; elsif Opt_Res4 /= null and then not Is_Ghost (Opt_Res4) then Transform_Res14.Last_Attempted_Child := -1; end if; if Defer_Res16 /= null and then Is_Incomplete (Defer_Res16) then Transform_Res14.Last_Attempted_Child := 0; elsif Defer_Res16 /= null and then not Is_Ghost (Defer_Res16) then Transform_Res14.Last_Attempted_Child := -1; end if; elsif Row_Pos18 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags14); end if; -- End transform_code if Row_Pos18 /= No_Token_Index then Or_Pos2 := Row_Pos18; Or_Res2 := Transform_Res14; goto Exit_Or2; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Access_Def_Or_Parse0_Memo, Or_Pos2 /= No_Token_Index, Or_Res2, Pos, Or_Pos2); Parser.Current_Pos := Or_Pos2; return Or_Res2; end Access_Def_Or_Parse0; function Aggregate_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Aggregate is use Bare_Base_Aggregate_Memos; Defer_Pos17 : Token_Index := No_Token_Index; Defer_Res17 : Bare_Base_Aggregate := No_Bare_Ada_Node; Defer_Pos18 : Token_Index := No_Token_Index; Defer_Res18 : Bare_Base_Aggregate := No_Bare_Ada_Node; Or_Pos3 : Token_Index := No_Token_Index; Or_Res3 : Bare_Base_Aggregate := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Aggregate_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res3 := M.Instance; return Or_Res3; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res3; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos3 := No_Token_Index; Or_Res3 := No_Bare_Ada_Node; Defer_Res17 := Regular_Aggregate_Or_Parse0 (Parser, Pos); Defer_Pos17 := Parser.Current_Pos; if Defer_Pos17 /= No_Token_Index then Or_Pos3 := Defer_Pos17; Or_Res3 := Defer_Res17; goto Exit_Or3; end if; Defer_Res18 := Bracket_Aggregate_Or_Parse0 (Parser, Pos); Defer_Pos18 := Parser.Current_Pos; if Defer_Pos18 /= No_Token_Index then Or_Pos3 := Defer_Pos18; Or_Res3 := Defer_Res18; goto Exit_Or3; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Aggregate_Or_Parse0_Memo, Or_Pos3 /= No_Token_Index, Or_Res3, Pos, Or_Pos3); Parser.Current_Pos := Or_Pos3; return Or_Res3; end Aggregate_Or_Parse0; function Aggregate_Assoc_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Basic_Assoc is use Bare_Basic_Assoc_Memos; Defer_Pos19 : Token_Index := No_Token_Index; Defer_Res19 : Bare_Iterated_Assoc := No_Bare_Ada_Node; Row_Pos20 : Token_Index := No_Token_Index; Row_Pos21 : Token_Index := No_Token_Index; Defer_Pos20 : Token_Index := No_Token_Index; Defer_Res20 : Bare_Alternatives_List := No_Bare_Ada_Node; Token_Pos27 : Token_Index := No_Token_Index; Token_Res27 : Token_Index := No_Token_Index; Defer_Pos21 : Token_Index := No_Token_Index; Defer_Res21 : Bare_Box_Expr := No_Bare_Ada_Node; Defer_Pos22 : Token_Index := No_Token_Index; Defer_Res22 : Bare_Expr := No_Bare_Ada_Node; Or_Pos4 : Token_Index := No_Token_Index; Or_Res4 : Bare_Expr := No_Bare_Ada_Node; Transform_Res15 : Bare_Aggregate_Assoc := No_Bare_Ada_Node; Transform_Diags15 : Ada.Containers.Count_Type; Or_Pos5 : Token_Index := No_Token_Index; Or_Res5 : Bare_Basic_Assoc := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Aggregate_Assoc_Or_Parse1_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res5 := M.Instance; return Or_Res5; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res5; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos5 := No_Token_Index; Or_Res5 := No_Bare_Ada_Node; Defer_Res19 := Iterated_Assoc_Transform_Parse0 (Parser, Pos); Defer_Pos19 := Parser.Current_Pos; if Defer_Pos19 /= No_Token_Index then Or_Pos5 := Defer_Pos19; Or_Res5 := Defer_Res19; goto Exit_Or4; end if; -- Start transform_code Transform_Diags15 := Parser.Diagnostics.Length; -- Start row_code Row_Pos20 := Pos; -- Start opt_code -- Start row_code Row_Pos21 := Row_Pos20; Defer_Res20 := Choice_List_List_Parse0 (Parser, Row_Pos21); Defer_Pos20 := Parser.Current_Pos; if Defer_Pos20 /= No_Token_Index then Row_Pos21 := Defer_Pos20; else Row_Pos21 := No_Token_Index; goto Exit_Row21_0; end if; -- Start tok_code Token_Res27 := Row_Pos21; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res27)); begin if T.Kind /= From_Token_Kind (Ada_Arrow) then Token_Pos27 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos21 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos21, Expected_Token_Id => Ada_Arrow, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos27 := Row_Pos21 + 1; end if; end; -- End tok_code if Token_Pos27 /= No_Token_Index then Row_Pos21 := Token_Pos27; else Row_Pos21 := No_Token_Index; goto Exit_Row21_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos21 = No_Token_Index then Defer_Res20 := Allocate_Alternatives_List (Parser.Mem_Pool); Initialize (Self => Defer_Res20, Kind => Ada_Alternatives_List, Unit => Parser.Unit, Token_Start_Index => Row_Pos20 - 1, Token_End_Index => No_Token_Index); Initialize_List (Self => Defer_Res20, Parser => Parser, Count => 0); Row_Pos21 := Row_Pos20; end if; -- End opt_code if Row_Pos21 /= No_Token_Index then Row_Pos20 := Row_Pos21; else Row_Pos20 := No_Token_Index; goto Exit_Row20_0; end if; -- Start or_code Or_Pos4 := No_Token_Index; Or_Res4 := No_Bare_Ada_Node; Defer_Res21 := Box_Expr_Transform_Parse0 (Parser, Row_Pos20); Defer_Pos21 := Parser.Current_Pos; if Defer_Pos21 /= No_Token_Index then Or_Pos4 := Defer_Pos21; Or_Res4 := Defer_Res21; goto Exit_Or5; end if; Defer_Res22 := Expr_Or_Parse0 (Parser, Row_Pos20); Defer_Pos22 := Parser.Current_Pos; if Defer_Pos22 /= No_Token_Index then Or_Pos4 := Defer_Pos22; Or_Res4 := Defer_Res22; goto Exit_Or5; end if; <> -- End or_code if Or_Pos4 /= No_Token_Index then Row_Pos20 := Or_Pos4; else Row_Pos20 := No_Token_Index; goto Exit_Row20_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos20 /= No_Token_Index then Transform_Res15 := Allocate_Aggregate_Assoc (Parser.Mem_Pool); Initialize (Self => Transform_Res15, Kind => Ada_Aggregate_Assoc, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos20 = Pos then No_Token_Index else Row_Pos20 - 1)); Initialize_Fields_For_Aggregate_Assoc (Self => Transform_Res15, Aggregate_Assoc_F_Designators => Defer_Res20, Aggregate_Assoc_F_R_Expr => Or_Res4); if Defer_Res20 /= null and then Is_Incomplete (Defer_Res20) then Transform_Res15.Last_Attempted_Child := 0; elsif Defer_Res20 /= null and then not Is_Ghost (Defer_Res20) then Transform_Res15.Last_Attempted_Child := -1; end if; if Or_Res4 /= null and then Is_Incomplete (Or_Res4) then Transform_Res15.Last_Attempted_Child := 0; elsif Or_Res4 /= null and then not Is_Ghost (Or_Res4) then Transform_Res15.Last_Attempted_Child := -1; end if; elsif Row_Pos20 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags15); end if; -- End transform_code if Row_Pos20 /= No_Token_Index then Or_Pos5 := Row_Pos20; Or_Res5 := Transform_Res15; goto Exit_Or4; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Aggregate_Assoc_Or_Parse1_Memo, Or_Pos5 /= No_Token_Index, Or_Res5, Pos, Or_Pos5); Parser.Current_Pos := Or_Pos5; return Or_Res5; end Aggregate_Assoc_Or_Parse1; function Allocator_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Allocator is use Bare_Allocator_Memos; Nobt0 : Boolean := False; Row_Pos22 : Token_Index := No_Token_Index; Token_Pos28 : Token_Index := No_Token_Index; Token_Res28 : Token_Index := No_Token_Index; Row_Pos23 : Token_Index := No_Token_Index; Token_Pos29 : Token_Index := No_Token_Index; Token_Res29 : Token_Index := No_Token_Index; Defer_Pos23 : Token_Index := No_Token_Index; Defer_Res23 : Bare_Name := No_Bare_Ada_Node; Token_Pos30 : Token_Index := No_Token_Index; Token_Res30 : Token_Index := No_Token_Index; Defer_Pos24 : Token_Index := No_Token_Index; Defer_Res24 : Bare_Qual_Expr := No_Bare_Ada_Node; Defer_Pos25 : Token_Index := No_Token_Index; Defer_Res25 : Bare_Subtype_Indication := No_Bare_Ada_Node; Or_Pos6 : Token_Index := No_Token_Index; Or_Res6 : Bare_Ada_Node := No_Bare_Ada_Node; Row_Progress0 : Integer := 0; Transform_Res16 : Bare_Allocator := No_Bare_Ada_Node; Transform_Has_Failed0 : Boolean := False; Transform_Diags16 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Allocator_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res16 := M.Instance; return Transform_Res16; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res16; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags16 := Parser.Diagnostics.Length; -- Start row_code Row_Pos22 := Pos; -- Start tok_code Token_Res28 := Row_Pos22; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res28)); begin if T.Kind /= From_Token_Kind (Ada_New) then Token_Pos28 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos22 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos22, Expected_Token_Id => Ada_New, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos28 := Row_Pos22 + 1; end if; end; -- End tok_code Row_Progress0 := 1; if Token_Pos28 /= No_Token_Index then Row_Pos22 := Token_Pos28; else Row_Pos22 := No_Token_Index; goto Exit_Row22_0; end if; Nobt0 := True; Nobt0 := Nobt0; Row_Progress0 := 2; if Row_Pos22 /= No_Token_Index then Row_Pos22 := Row_Pos22; else Row_Pos22 := No_Token_Index; goto Exit_Row22_0; end if; -- Start opt_code -- Start row_code Row_Pos23 := Row_Pos22; -- Start tok_code Token_Res29 := Row_Pos23; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res29)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos29 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos23 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos23, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos29 := Row_Pos23 + 1; end if; end; -- End tok_code if Token_Pos29 /= No_Token_Index then Row_Pos23 := Token_Pos29; else Row_Pos23 := No_Token_Index; goto Exit_Row23_0; end if; Defer_Res23 := Name_Or_Parse2 (Parser, Row_Pos23); Defer_Pos23 := Parser.Current_Pos; if Defer_Pos23 /= No_Token_Index then Row_Pos23 := Defer_Pos23; else Row_Pos23 := No_Token_Index; goto Exit_Row23_0; end if; -- Start tok_code Token_Res30 := Row_Pos23; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res30)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos30 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos23 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos23, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos30 := Row_Pos23 + 1; end if; end; -- End tok_code if Token_Pos30 /= No_Token_Index then Row_Pos23 := Token_Pos30; else Row_Pos23 := No_Token_Index; goto Exit_Row23_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos23 = No_Token_Index then Defer_Res23 := No_Bare_Ada_Node; Row_Pos23 := Row_Pos22; end if; -- End opt_code Row_Progress0 := 3; if Row_Pos23 /= No_Token_Index then Row_Pos22 := Row_Pos23; else Row_Pos22 := No_Token_Index; goto Exit_Row22_0; end if; -- Start or_code Or_Pos6 := No_Token_Index; Or_Res6 := No_Bare_Ada_Node; Defer_Res24 := Qualified_Name_Transform_Parse0 (Parser, Row_Pos22); Defer_Pos24 := Parser.Current_Pos; if Defer_Pos24 /= No_Token_Index then Or_Pos6 := Defer_Pos24; Or_Res6 := Defer_Res24; goto Exit_Or6; end if; Defer_Res25 := Subtype_Indication_Transform_Parse0 (Parser, Row_Pos22); Defer_Pos25 := Parser.Current_Pos; if Defer_Pos25 /= No_Token_Index then Or_Pos6 := Defer_Pos25; Or_Res6 := Defer_Res25; goto Exit_Or6; end if; <> -- End or_code Row_Progress0 := 4; if Or_Pos6 /= No_Token_Index then Row_Pos22 := Or_Pos6; else Row_Pos22 := No_Token_Index; goto Exit_Row22_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos22 = No_Token_Index and then Nobt0 then Row_Pos22 := Parser.Last_Fail.Pos; Transform_Has_Failed0 := True; end if; if Row_Pos22 /= No_Token_Index then Transform_Res16 := Allocate_Allocator (Parser.Mem_Pool); Initialize (Self => Transform_Res16, Kind => Ada_Allocator, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos22 = Pos then No_Token_Index else Row_Pos22 - 1)); Initialize_Fields_For_Allocator (Self => Transform_Res16, Allocator_F_Subpool => Defer_Res23, Allocator_F_Type_Or_Expr => Or_Res6); if Defer_Res23 /= null and then Is_Incomplete (Defer_Res23) then Transform_Res16.Last_Attempted_Child := 0; elsif Defer_Res23 /= null and then not Is_Ghost (Defer_Res23) then Transform_Res16.Last_Attempted_Child := -1; end if; if Or_Res6 /= null and then Is_Incomplete (Or_Res6) then Transform_Res16.Last_Attempted_Child := 0; elsif Or_Res6 /= null and then not Is_Ghost (Or_Res6) then Transform_Res16.Last_Attempted_Child := -1; end if; if Transform_Has_Failed0 then Transform_Res16.Last_Attempted_Child := Row_Progress0; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos22 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags16); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Allocator_Transform_Parse0_Memo, Row_Pos22 /= No_Token_Index, Transform_Res16, Pos, Row_Pos22); Parser.Current_Pos := Row_Pos22; return Transform_Res16; end Allocator_Transform_Parse0; function Anonymous_Type_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Anonymous_Type is use Bare_Anonymous_Type_Memos; Row_Pos24 : Token_Index := No_Token_Index; Defer_Pos26 : Token_Index := No_Token_Index; Defer_Res26 : Bare_Anonymous_Type_Decl := No_Bare_Ada_Node; Transform_Res17 : Bare_Anonymous_Type := No_Bare_Ada_Node; Transform_Diags17 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Anonymous_Type_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res17 := M.Instance; return Transform_Res17; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res17; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags17 := Parser.Diagnostics.Length; -- Start row_code Row_Pos24 := Pos; Defer_Res26 := Anonymous_Type_Decl_Transform_Parse0 (Parser, Row_Pos24); Defer_Pos26 := Parser.Current_Pos; if Defer_Pos26 /= No_Token_Index then Row_Pos24 := Defer_Pos26; else Row_Pos24 := No_Token_Index; goto Exit_Row24_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos24 /= No_Token_Index then Transform_Res17 := Allocate_Anonymous_Type (Parser.Mem_Pool); Initialize (Self => Transform_Res17, Kind => Ada_Anonymous_Type, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos24 = Pos then No_Token_Index else Row_Pos24 - 1)); Initialize_Fields_For_Anonymous_Type (Self => Transform_Res17, Anonymous_Type_F_Type_Decl => Defer_Res26); if Defer_Res26 /= null and then Is_Incomplete (Defer_Res26) then Transform_Res17.Last_Attempted_Child := 0; elsif Defer_Res26 /= null and then not Is_Ghost (Defer_Res26) then Transform_Res17.Last_Attempted_Child := -1; end if; elsif Row_Pos24 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags17); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Anonymous_Type_Transform_Parse0_Memo, Row_Pos24 /= No_Token_Index, Transform_Res17, Pos, Row_Pos24); Parser.Current_Pos := Row_Pos24; return Transform_Res17; end Anonymous_Type_Transform_Parse0; function Anonymous_Type_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Anonymous_Type_Decl is use Bare_Anonymous_Type_Decl_Memos; Row_Pos25 : Token_Index := No_Token_Index; Null_Res0 : Bare_Defining_Name := No_Bare_Ada_Node; Null_Res1 : Bare_Discriminant_Part := No_Bare_Ada_Node; Defer_Pos27 : Token_Index := No_Token_Index; Defer_Res27 : Bare_Array_Type_Def := No_Bare_Ada_Node; Defer_Pos28 : Token_Index := No_Token_Index; Defer_Res28 : Bare_Access_Def := No_Bare_Ada_Node; Or_Pos7 : Token_Index := No_Token_Index; Or_Res7 : Bare_Type_Def := No_Bare_Ada_Node; Transform_Res18 : Bare_Anonymous_Type_Decl := No_Bare_Ada_Node; Transform_Diags18 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Anonymous_Type_Decl_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res18 := M.Instance; return Transform_Res18; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res18; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags18 := Parser.Diagnostics.Length; -- Start row_code Row_Pos25 := Pos; Null_Res0 := No_Bare_Ada_Node; if Row_Pos25 /= No_Token_Index then Row_Pos25 := Row_Pos25; else Row_Pos25 := No_Token_Index; goto Exit_Row25_0; end if; Null_Res1 := No_Bare_Ada_Node; if Row_Pos25 /= No_Token_Index then Row_Pos25 := Row_Pos25; else Row_Pos25 := No_Token_Index; goto Exit_Row25_0; end if; -- Start or_code Or_Pos7 := No_Token_Index; Or_Res7 := No_Bare_Ada_Node; Defer_Res27 := Array_Type_Def_Transform_Parse2 (Parser, Row_Pos25); Defer_Pos27 := Parser.Current_Pos; if Defer_Pos27 /= No_Token_Index then Or_Pos7 := Defer_Pos27; Or_Res7 := Defer_Res27; goto Exit_Or7; end if; Defer_Res28 := Access_Def_Or_Parse0 (Parser, Row_Pos25); Defer_Pos28 := Parser.Current_Pos; if Defer_Pos28 /= No_Token_Index then Or_Pos7 := Defer_Pos28; Or_Res7 := Defer_Res28; goto Exit_Or7; end if; <> -- End or_code if Or_Pos7 /= No_Token_Index then Row_Pos25 := Or_Pos7; else Row_Pos25 := No_Token_Index; goto Exit_Row25_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos25 /= No_Token_Index then Transform_Res18 := Allocate_Anonymous_Type_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res18, Kind => Ada_Anonymous_Type_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos25 = Pos then No_Token_Index else Row_Pos25 - 1)); Initialize_Fields_For_Anonymous_Type_Decl (Self => Transform_Res18, Base_Type_Decl_F_Name => Null_Res0, Type_Decl_F_Discriminants => Null_Res1, Type_Decl_F_Type_Def => Or_Res7); if Null_Res0 /= null and then Is_Incomplete (Null_Res0) then Transform_Res18.Last_Attempted_Child := 0; elsif Null_Res0 /= null and then not Is_Ghost (Null_Res0) then Transform_Res18.Last_Attempted_Child := -1; end if; if Null_Res1 /= null and then Is_Incomplete (Null_Res1) then Transform_Res18.Last_Attempted_Child := 0; elsif Null_Res1 /= null and then not Is_Ghost (Null_Res1) then Transform_Res18.Last_Attempted_Child := -1; end if; if Or_Res7 /= null and then Is_Incomplete (Or_Res7) then Transform_Res18.Last_Attempted_Child := 0; elsif Or_Res7 /= null and then not Is_Ghost (Or_Res7) then Transform_Res18.Last_Attempted_Child := -1; end if; elsif Row_Pos25 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags18); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Anonymous_Type_Decl_Transform_Parse0_Memo, Row_Pos25 /= No_Token_Index, Transform_Res18, Pos, Row_Pos25); Parser.Current_Pos := Row_Pos25; return Transform_Res18; end Anonymous_Type_Decl_Transform_Parse0; function Array_Type_Def_Transform_Parse2 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Array_Type_Def is use Bare_Array_Type_Def_Memos; Row_Pos26 : Token_Index := No_Token_Index; Token_Pos31 : Token_Index := No_Token_Index; Token_Res31 : Token_Index := No_Token_Index; Token_Pos32 : Token_Index := No_Token_Index; Token_Res32 : Token_Index := No_Token_Index; Row_Pos27 : Token_Index := No_Token_Index; Lst_Cpos1 : Token_Index := No_Token_Index; Tmp_List1 : Free_Parse_List; Defer_Pos29 : Token_Index := No_Token_Index; Defer_Res29 : Bare_Unconstrained_Array_Index := No_Bare_Ada_Node; Token_Pos33 : Token_Index := No_Token_Index; Token_Res33 : Token_Index := No_Token_Index; List_Pos1 : Token_Index := No_Token_Index; List_Res1 : Bare_Unconstrained_Array_Index_List := No_Bare_Ada_Node; Transform_Res19 : Bare_Unconstrained_Array_Indices := No_Bare_Ada_Node; Transform_Diags19 : Ada.Containers.Count_Type; Row_Pos28 : Token_Index := No_Token_Index; Defer_Pos30 : Token_Index := No_Token_Index; Defer_Res30 : Bare_Constraint_List := No_Bare_Ada_Node; Transform_Res20 : Bare_Constrained_Array_Indices := No_Bare_Ada_Node; Transform_Diags20 : Ada.Containers.Count_Type; Or_Pos8 : Token_Index := No_Token_Index; Or_Res8 : Bare_Array_Indices := No_Bare_Ada_Node; Token_Pos34 : Token_Index := No_Token_Index; Token_Res34 : Token_Index := No_Token_Index; Token_Pos35 : Token_Index := No_Token_Index; Token_Res35 : Token_Index := No_Token_Index; Defer_Pos31 : Token_Index := No_Token_Index; Defer_Res31 : Bare_Component_Def := No_Bare_Ada_Node; Transform_Res21 : Bare_Array_Type_Def := No_Bare_Ada_Node; Transform_Diags21 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Array_Type_Def_Transform_Parse2_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res21 := M.Instance; return Transform_Res21; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res21; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags21 := Parser.Diagnostics.Length; -- Start row_code Row_Pos26 := Pos; -- Start tok_code Token_Res31 := Row_Pos26; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res31)); begin if T.Kind /= From_Token_Kind (Ada_Array) then Token_Pos31 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos26 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos26, Expected_Token_Id => Ada_Array, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos31 := Row_Pos26 + 1; end if; end; -- End tok_code if Token_Pos31 /= No_Token_Index then Row_Pos26 := Token_Pos31; else Row_Pos26 := No_Token_Index; goto Exit_Row26_0; end if; -- Start tok_code Token_Res32 := Row_Pos26; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res32)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos32 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos26 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos26, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos32 := Row_Pos26 + 1; end if; end; -- End tok_code if Token_Pos32 /= No_Token_Index then Row_Pos26 := Token_Pos32; else Row_Pos26 := No_Token_Index; goto Exit_Row26_0; end if; -- Start or_code Or_Pos8 := No_Token_Index; Or_Res8 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags19 := Parser.Diagnostics.Length; -- Start row_code Row_Pos27 := Row_Pos26; -- Start list_code List_Pos1 := No_Token_Index; Lst_Cpos1 := Row_Pos27; Tmp_List1 := Get_Parse_List (Parser); loop Defer_Res29 := Unconstrained_Index_Transform_Parse0 (Parser, Lst_Cpos1); Defer_Pos29 := Parser.Current_Pos; exit when Defer_Pos29 = No_Token_Index; List_Pos1 := Defer_Pos29; Lst_Cpos1 := List_Pos1; Tmp_List1.Nodes.Append (Defer_Res29); -- Start tok_code Token_Res33 := Lst_Cpos1; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res33)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos33 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos1 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos1, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos33 := Lst_Cpos1 + 1; end if; end; -- End tok_code if Token_Pos33 /= No_Token_Index then Lst_Cpos1 := Token_Pos33; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List1.Nodes.Length; begin List_Res1 := Allocate_Unconstrained_Array_Index_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos27; Token_End := (if Lst_Cpos1 = Row_Pos27 then Row_Pos27 else Lst_Cpos1 - 1); else Token_Start := Token_Index'Max (Row_Pos27, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res1, Kind => Ada_Unconstrained_Array_Index_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res1, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List1.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res1.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List1); -- End list_code if List_Pos1 /= No_Token_Index then Row_Pos27 := List_Pos1; else Row_Pos27 := No_Token_Index; goto Exit_Row27_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos27 /= No_Token_Index then Transform_Res19 := Allocate_Unconstrained_Array_Indices (Parser.Mem_Pool); Initialize (Self => Transform_Res19, Kind => Ada_Unconstrained_Array_Indices, Unit => Parser.Unit, Token_Start_Index => Row_Pos26, Token_End_Index => (if Row_Pos27 = Row_Pos26 then No_Token_Index else Row_Pos27 - 1)); Initialize_Fields_For_Unconstrained_Array_Indices (Self => Transform_Res19, Unconstrained_Array_Indices_F_Types => List_Res1); if List_Res1 /= null and then Is_Incomplete (List_Res1) then Transform_Res19.Last_Attempted_Child := 0; elsif List_Res1 /= null and then not Is_Ghost (List_Res1) then Transform_Res19.Last_Attempted_Child := -1; end if; elsif Row_Pos27 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags19); end if; -- End transform_code if Row_Pos27 /= No_Token_Index then Or_Pos8 := Row_Pos27; Or_Res8 := Transform_Res19; goto Exit_Or8; end if; -- Start transform_code Transform_Diags20 := Parser.Diagnostics.Length; -- Start row_code Row_Pos28 := Row_Pos26; Defer_Res30 := Constraint_List_List_Parse0 (Parser, Row_Pos28); Defer_Pos30 := Parser.Current_Pos; if Defer_Pos30 /= No_Token_Index then Row_Pos28 := Defer_Pos30; else Row_Pos28 := No_Token_Index; goto Exit_Row28_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos28 /= No_Token_Index then Transform_Res20 := Allocate_Constrained_Array_Indices (Parser.Mem_Pool); Initialize (Self => Transform_Res20, Kind => Ada_Constrained_Array_Indices, Unit => Parser.Unit, Token_Start_Index => Row_Pos26, Token_End_Index => (if Row_Pos28 = Row_Pos26 then No_Token_Index else Row_Pos28 - 1)); Initialize_Fields_For_Constrained_Array_Indices (Self => Transform_Res20, Constrained_Array_Indices_F_List => Defer_Res30); if Defer_Res30 /= null and then Is_Incomplete (Defer_Res30) then Transform_Res20.Last_Attempted_Child := 0; elsif Defer_Res30 /= null and then not Is_Ghost (Defer_Res30) then Transform_Res20.Last_Attempted_Child := -1; end if; elsif Row_Pos28 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags20); end if; -- End transform_code if Row_Pos28 /= No_Token_Index then Or_Pos8 := Row_Pos28; Or_Res8 := Transform_Res20; goto Exit_Or8; end if; <> -- End or_code if Or_Pos8 /= No_Token_Index then Row_Pos26 := Or_Pos8; else Row_Pos26 := No_Token_Index; goto Exit_Row26_0; end if; -- Start tok_code Token_Res34 := Row_Pos26; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res34)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos34 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos26 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos26, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos34 := Row_Pos26 + 1; end if; end; -- End tok_code if Token_Pos34 /= No_Token_Index then Row_Pos26 := Token_Pos34; else Row_Pos26 := No_Token_Index; goto Exit_Row26_0; end if; -- Start tok_code Token_Res35 := Row_Pos26; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res35)); begin if T.Kind /= From_Token_Kind (Ada_Of) then Token_Pos35 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos26 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos26, Expected_Token_Id => Ada_Of, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos35 := Row_Pos26 + 1; end if; end; -- End tok_code if Token_Pos35 /= No_Token_Index then Row_Pos26 := Token_Pos35; else Row_Pos26 := No_Token_Index; goto Exit_Row26_0; end if; Defer_Res31 := Component_Def_Transform_Parse0 (Parser, Row_Pos26); Defer_Pos31 := Parser.Current_Pos; if Defer_Pos31 /= No_Token_Index then Row_Pos26 := Defer_Pos31; else Row_Pos26 := No_Token_Index; goto Exit_Row26_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos26 /= No_Token_Index then Transform_Res21 := Allocate_Array_Type_Def (Parser.Mem_Pool); Initialize (Self => Transform_Res21, Kind => Ada_Array_Type_Def, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos26 = Pos then No_Token_Index else Row_Pos26 - 1)); Initialize_Fields_For_Array_Type_Def (Self => Transform_Res21, Array_Type_Def_F_Indices => Or_Res8, Array_Type_Def_F_Component_Type => Defer_Res31); if Or_Res8 /= null and then Is_Incomplete (Or_Res8) then Transform_Res21.Last_Attempted_Child := 0; elsif Or_Res8 /= null and then not Is_Ghost (Or_Res8) then Transform_Res21.Last_Attempted_Child := -1; end if; if Defer_Res31 /= null and then Is_Incomplete (Defer_Res31) then Transform_Res21.Last_Attempted_Child := 0; elsif Defer_Res31 /= null and then not Is_Ghost (Defer_Res31) then Transform_Res21.Last_Attempted_Child := -1; end if; elsif Row_Pos26 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags21); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Array_Type_Def_Transform_Parse2_Memo, Row_Pos26 /= No_Token_Index, Transform_Res21, Pos, Row_Pos26); Parser.Current_Pos := Row_Pos26; return Transform_Res21; end Array_Type_Def_Transform_Parse2; function Aspect_Assoc_Or_Parse2 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Aspect_Assoc is use Bare_Aspect_Assoc_Memos; Row_Pos29 : Token_Index := No_Token_Index; Row_Pos30 : Token_Index := No_Token_Index; Token_Pos36 : Token_Index := No_Token_Index; Token_Res36 : Token_Index := No_Token_Index; Transform_Res22 : Bare_Identifier := No_Bare_Ada_Node; Transform_Diags22 : Ada.Containers.Count_Type; Row_Pos31 : Token_Index := No_Token_Index; Token_Pos37 : Token_Index := No_Token_Index; Token_Res37 : Token_Index := No_Token_Index; Defer_Pos32 : Token_Index := No_Token_Index; Defer_Res32 : Bare_Null_Literal := No_Bare_Ada_Node; Row_Pos32 : Token_Index := No_Token_Index; Defer_Pos33 : Token_Index := No_Token_Index; Defer_Res33 : Bare_Ada_Node := No_Bare_Ada_Node; Transform_Res23 : Bare_Abstract_State_Decl_Expr := No_Bare_Ada_Node; Transform_Diags23 : Ada.Containers.Count_Type; Or_Pos9 : Token_Index := No_Token_Index; Or_Res9 : Bare_Expr := No_Bare_Ada_Node; Transform_Res24 : Bare_Aspect_Assoc := No_Bare_Ada_Node; Transform_Diags24 : Ada.Containers.Count_Type; Row_Pos33 : Token_Index := No_Token_Index; Defer_Pos34 : Token_Index := No_Token_Index; Defer_Res34 : Bare_Name := No_Bare_Ada_Node; Row_Pos34 : Token_Index := No_Token_Index; Token_Pos38 : Token_Index := No_Token_Index; Token_Res38 : Token_Index := No_Token_Index; Defer_Pos35 : Token_Index := No_Token_Index; Defer_Res35 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos36 : Token_Index := No_Token_Index; Defer_Res36 : Bare_Contract_Cases := No_Bare_Ada_Node; Or_Pos10 : Token_Index := No_Token_Index; Or_Res10 : Bare_Expr := No_Bare_Ada_Node; Transform_Res25 : Bare_Aspect_Assoc := No_Bare_Ada_Node; Transform_Diags25 : Ada.Containers.Count_Type; Or_Pos11 : Token_Index := No_Token_Index; Or_Res11 : Bare_Aspect_Assoc := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Aspect_Assoc_Or_Parse2_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res11 := M.Instance; return Or_Res11; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res11; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos11 := No_Token_Index; Or_Res11 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags24 := Parser.Diagnostics.Length; -- Start row_code Row_Pos29 := Pos; -- Start transform_code Transform_Diags22 := Parser.Diagnostics.Length; -- Start row_code Row_Pos30 := Row_Pos29; -- Start tok_code Token_Res36 := Row_Pos30; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res36)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Abstract_State) then Token_Pos36 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos30 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos30, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos36 := Row_Pos30 + 1; end if; end; -- End tok_code if Token_Pos36 /= No_Token_Index then Row_Pos30 := Token_Pos36; else Row_Pos30 := No_Token_Index; goto Exit_Row30_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos30 /= No_Token_Index then Transform_Res22 := Allocate_Identifier (Parser.Mem_Pool); Initialize (Self => Transform_Res22, Kind => Ada_Identifier, Unit => Parser.Unit, Token_Start_Index => Row_Pos29, Token_End_Index => (if Row_Pos30 = Row_Pos29 then No_Token_Index else Row_Pos30 - 1)); Initialize_Fields_For_Identifier (Self => Transform_Res22); elsif Row_Pos30 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags22); end if; -- End transform_code if Row_Pos30 /= No_Token_Index then Row_Pos29 := Row_Pos30; else Row_Pos29 := No_Token_Index; goto Exit_Row29_0; end if; -- Start opt_code -- Start row_code Row_Pos31 := Row_Pos29; -- Start tok_code Token_Res37 := Row_Pos31; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res37)); begin if T.Kind /= From_Token_Kind (Ada_Arrow) then Token_Pos37 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos31 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos31, Expected_Token_Id => Ada_Arrow, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos37 := Row_Pos31 + 1; end if; end; -- End tok_code if Token_Pos37 /= No_Token_Index then Row_Pos31 := Token_Pos37; else Row_Pos31 := No_Token_Index; goto Exit_Row31_0; end if; -- Start or_code Or_Pos9 := No_Token_Index; Or_Res9 := No_Bare_Ada_Node; Defer_Res32 := Null_Literal_Transform_Parse0 (Parser, Row_Pos31); Defer_Pos32 := Parser.Current_Pos; if Defer_Pos32 /= No_Token_Index then Or_Pos9 := Defer_Pos32; Or_Res9 := Defer_Res32; goto Exit_Or10; end if; -- Start transform_code Transform_Diags23 := Parser.Diagnostics.Length; -- Start row_code Row_Pos32 := Row_Pos31; Defer_Res33 := Multi_Abstract_State_Decl_Or_Parse0 (Parser, Row_Pos32); Defer_Pos33 := Parser.Current_Pos; if Defer_Pos33 /= No_Token_Index then Row_Pos32 := Defer_Pos33; else Row_Pos32 := No_Token_Index; goto Exit_Row32_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos32 /= No_Token_Index then Transform_Res23 := Allocate_Abstract_State_Decl_Expr (Parser.Mem_Pool); Initialize (Self => Transform_Res23, Kind => Ada_Abstract_State_Decl_Expr, Unit => Parser.Unit, Token_Start_Index => Row_Pos31, Token_End_Index => (if Row_Pos32 = Row_Pos31 then No_Token_Index else Row_Pos32 - 1)); Initialize_Fields_For_Abstract_State_Decl_Expr (Self => Transform_Res23, Abstract_State_Decl_Expr_F_State_Decl => Defer_Res33); if Defer_Res33 /= null and then Is_Incomplete (Defer_Res33) then Transform_Res23.Last_Attempted_Child := 0; elsif Defer_Res33 /= null and then not Is_Ghost (Defer_Res33) then Transform_Res23.Last_Attempted_Child := -1; end if; elsif Row_Pos32 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags23); end if; -- End transform_code if Row_Pos32 /= No_Token_Index then Or_Pos9 := Row_Pos32; Or_Res9 := Transform_Res23; goto Exit_Or10; end if; <> -- End or_code if Or_Pos9 /= No_Token_Index then Row_Pos31 := Or_Pos9; else Row_Pos31 := No_Token_Index; goto Exit_Row31_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos31 = No_Token_Index then Or_Res9 := No_Bare_Ada_Node; Row_Pos31 := Row_Pos29; end if; -- End opt_code if Row_Pos31 /= No_Token_Index then Row_Pos29 := Row_Pos31; else Row_Pos29 := No_Token_Index; goto Exit_Row29_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos29 /= No_Token_Index then Transform_Res24 := Allocate_Aspect_Assoc (Parser.Mem_Pool); Initialize (Self => Transform_Res24, Kind => Ada_Aspect_Assoc, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos29 = Pos then No_Token_Index else Row_Pos29 - 1)); Initialize_Fields_For_Aspect_Assoc (Self => Transform_Res24, Aspect_Assoc_F_Id => Transform_Res22, Aspect_Assoc_F_Expr => Or_Res9); if Transform_Res22 /= null and then Is_Incomplete (Transform_Res22) then Transform_Res24.Last_Attempted_Child := 0; elsif Transform_Res22 /= null and then not Is_Ghost (Transform_Res22) then Transform_Res24.Last_Attempted_Child := -1; end if; if Or_Res9 /= null and then Is_Incomplete (Or_Res9) then Transform_Res24.Last_Attempted_Child := 0; elsif Or_Res9 /= null and then not Is_Ghost (Or_Res9) then Transform_Res24.Last_Attempted_Child := -1; end if; elsif Row_Pos29 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags24); end if; -- End transform_code if Row_Pos29 /= No_Token_Index then Or_Pos11 := Row_Pos29; Or_Res11 := Transform_Res24; goto Exit_Or9; end if; -- Start transform_code Transform_Diags25 := Parser.Diagnostics.Length; -- Start row_code Row_Pos33 := Pos; Defer_Res34 := Name_Or_Parse2 (Parser, Row_Pos33); Defer_Pos34 := Parser.Current_Pos; if Defer_Pos34 /= No_Token_Index then Row_Pos33 := Defer_Pos34; else Row_Pos33 := No_Token_Index; goto Exit_Row33_0; end if; -- Start opt_code -- Start row_code Row_Pos34 := Row_Pos33; -- Start tok_code Token_Res38 := Row_Pos34; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res38)); begin if T.Kind /= From_Token_Kind (Ada_Arrow) then Token_Pos38 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos34 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos34, Expected_Token_Id => Ada_Arrow, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos38 := Row_Pos34 + 1; end if; end; -- End tok_code if Token_Pos38 /= No_Token_Index then Row_Pos34 := Token_Pos38; else Row_Pos34 := No_Token_Index; goto Exit_Row34_0; end if; -- Start or_code Or_Pos10 := No_Token_Index; Or_Res10 := No_Bare_Ada_Node; Defer_Res35 := Expr_Or_Parse0 (Parser, Row_Pos34); Defer_Pos35 := Parser.Current_Pos; if Defer_Pos35 /= No_Token_Index then Or_Pos10 := Defer_Pos35; Or_Res10 := Defer_Res35; goto Exit_Or11; end if; Defer_Res36 := Contract_Cases_Expr_Transform_Parse0 (Parser, Row_Pos34); Defer_Pos36 := Parser.Current_Pos; if Defer_Pos36 /= No_Token_Index then Or_Pos10 := Defer_Pos36; Or_Res10 := Defer_Res36; goto Exit_Or11; end if; <> -- End or_code if Or_Pos10 /= No_Token_Index then Row_Pos34 := Or_Pos10; else Row_Pos34 := No_Token_Index; goto Exit_Row34_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos34 = No_Token_Index then Or_Res10 := No_Bare_Ada_Node; Row_Pos34 := Row_Pos33; end if; -- End opt_code if Row_Pos34 /= No_Token_Index then Row_Pos33 := Row_Pos34; else Row_Pos33 := No_Token_Index; goto Exit_Row33_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos33 /= No_Token_Index then Transform_Res25 := Allocate_Aspect_Assoc (Parser.Mem_Pool); Initialize (Self => Transform_Res25, Kind => Ada_Aspect_Assoc, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos33 = Pos then No_Token_Index else Row_Pos33 - 1)); Initialize_Fields_For_Aspect_Assoc (Self => Transform_Res25, Aspect_Assoc_F_Id => Defer_Res34, Aspect_Assoc_F_Expr => Or_Res10); if Defer_Res34 /= null and then Is_Incomplete (Defer_Res34) then Transform_Res25.Last_Attempted_Child := 0; elsif Defer_Res34 /= null and then not Is_Ghost (Defer_Res34) then Transform_Res25.Last_Attempted_Child := -1; end if; if Or_Res10 /= null and then Is_Incomplete (Or_Res10) then Transform_Res25.Last_Attempted_Child := 0; elsif Or_Res10 /= null and then not Is_Ghost (Or_Res10) then Transform_Res25.Last_Attempted_Child := -1; end if; elsif Row_Pos33 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags25); end if; -- End transform_code if Row_Pos33 /= No_Token_Index then Or_Pos11 := Row_Pos33; Or_Res11 := Transform_Res25; goto Exit_Or9; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Aspect_Assoc_Or_Parse2_Memo, Or_Pos11 /= No_Token_Index, Or_Res11, Pos, Or_Pos11); Parser.Current_Pos := Or_Pos11; return Or_Res11; end Aspect_Assoc_Or_Parse2; function Aspect_Clause_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Aspect_Clause is use Bare_Aspect_Clause_Memos; Nobt1 : Boolean := False; Nobt2 : Boolean := False; Row_Pos35 : Token_Index := No_Token_Index; Token_Pos39 : Token_Index := No_Token_Index; Token_Res39 : Token_Index := No_Token_Index; Defer_Pos37 : Token_Index := No_Token_Index; Defer_Res37 : Bare_Name := No_Bare_Ada_Node; Token_Pos40 : Token_Index := No_Token_Index; Token_Res40 : Token_Index := No_Token_Index; Defer_Pos38 : Token_Index := No_Token_Index; Defer_Res38 : Bare_Base_Aggregate := No_Bare_Ada_Node; Token_Pos41 : Token_Index := No_Token_Index; Token_Res41 : Token_Index := No_Token_Index; Row_Progress1 : Integer := 0; Transform_Res26 : Bare_Enum_Rep_Clause := No_Bare_Ada_Node; Transform_Has_Failed1 : Boolean := False; Transform_Diags26 : Ada.Containers.Count_Type; Row_Pos36 : Token_Index := No_Token_Index; Token_Pos42 : Token_Index := No_Token_Index; Token_Res42 : Token_Index := No_Token_Index; Defer_Pos39 : Token_Index := No_Token_Index; Defer_Res39 : Bare_Name := No_Bare_Ada_Node; Token_Pos43 : Token_Index := No_Token_Index; Token_Res43 : Token_Index := No_Token_Index; Token_Pos44 : Token_Index := No_Token_Index; Token_Res44 : Token_Index := No_Token_Index; Row_Pos37 : Token_Index := No_Token_Index; Token_Pos45 : Token_Index := No_Token_Index; Token_Res45 : Token_Index := No_Token_Index; Token_Pos46 : Token_Index := No_Token_Index; Token_Res46 : Token_Index := No_Token_Index; Defer_Pos40 : Token_Index := No_Token_Index; Defer_Res40 : Bare_Expr := No_Bare_Ada_Node; Token_Pos47 : Token_Index := No_Token_Index; Token_Res47 : Token_Index := No_Token_Index; Lst_Cpos2 : Token_Index := No_Token_Index; Tmp_List2 : Free_Parse_List; Defer_Pos41 : Token_Index := No_Token_Index; Defer_Res41 : Bare_Component_Clause := No_Bare_Ada_Node; Defer_Pos42 : Token_Index := No_Token_Index; Defer_Res42 : Bare_Pragma_Node := No_Bare_Ada_Node; Or_Pos12 : Token_Index := No_Token_Index; Or_Res12 : Bare_Ada_Node := No_Bare_Ada_Node; List_Pos2 : Token_Index := No_Token_Index; List_Res2 : Bare_Ada_Node_List := No_Bare_Ada_Node; Token_Pos48 : Token_Index := No_Token_Index; Token_Res48 : Token_Index := No_Token_Index; Token_Pos49 : Token_Index := No_Token_Index; Token_Res49 : Token_Index := No_Token_Index; Token_Pos50 : Token_Index := No_Token_Index; Token_Res50 : Token_Index := No_Token_Index; Transform_Res27 : Bare_Record_Rep_Clause := No_Bare_Ada_Node; Transform_Diags27 : Ada.Containers.Count_Type; Row_Pos38 : Token_Index := No_Token_Index; Token_Pos51 : Token_Index := No_Token_Index; Token_Res51 : Token_Index := No_Token_Index; Defer_Pos43 : Token_Index := No_Token_Index; Defer_Res43 : Bare_Base_Id := No_Bare_Ada_Node; Token_Pos52 : Token_Index := No_Token_Index; Token_Res52 : Token_Index := No_Token_Index; Token_Pos53 : Token_Index := No_Token_Index; Token_Res53 : Token_Index := No_Token_Index; Defer_Pos44 : Token_Index := No_Token_Index; Defer_Res44 : Bare_Expr := No_Bare_Ada_Node; Token_Pos54 : Token_Index := No_Token_Index; Token_Res54 : Token_Index := No_Token_Index; Transform_Res28 : Bare_At_Clause := No_Bare_Ada_Node; Transform_Diags28 : Ada.Containers.Count_Type; Row_Pos39 : Token_Index := No_Token_Index; Token_Pos55 : Token_Index := No_Token_Index; Token_Res55 : Token_Index := No_Token_Index; Defer_Pos45 : Token_Index := No_Token_Index; Defer_Res45 : Bare_Name := No_Bare_Ada_Node; Token_Pos56 : Token_Index := No_Token_Index; Token_Res56 : Token_Index := No_Token_Index; Defer_Pos46 : Token_Index := No_Token_Index; Defer_Res46 : Bare_Expr := No_Bare_Ada_Node; Token_Pos57 : Token_Index := No_Token_Index; Token_Res57 : Token_Index := No_Token_Index; Row_Progress2 : Integer := 0; Transform_Res29 : Bare_Attribute_Def_Clause := No_Bare_Ada_Node; Transform_Has_Failed2 : Boolean := False; Transform_Diags29 : Ada.Containers.Count_Type; Or_Pos13 : Token_Index := No_Token_Index; Or_Res13 : Bare_Aspect_Clause := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Aspect_Clause_Or_Parse1_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res13 := M.Instance; return Or_Res13; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res13; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos13 := No_Token_Index; Or_Res13 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags26 := Parser.Diagnostics.Length; -- Start row_code Row_Pos35 := Pos; -- Start tok_code Token_Res39 := Row_Pos35; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res39)); begin if T.Kind /= From_Token_Kind (Ada_For) then Token_Pos39 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos35 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos35, Expected_Token_Id => Ada_For, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos39 := Row_Pos35 + 1; end if; end; -- End tok_code Row_Progress1 := 1; if Token_Pos39 /= No_Token_Index then Row_Pos35 := Token_Pos39; else Row_Pos35 := No_Token_Index; goto Exit_Row35_0; end if; Defer_Res37 := Static_Name_Or_Parse0 (Parser, Row_Pos35); Defer_Pos37 := Parser.Current_Pos; Row_Progress1 := 2; if Defer_Pos37 /= No_Token_Index then Row_Pos35 := Defer_Pos37; else Row_Pos35 := No_Token_Index; goto Exit_Row35_0; end if; -- Start tok_code Token_Res40 := Row_Pos35; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res40)); begin if T.Kind /= From_Token_Kind (Ada_Use) then Token_Pos40 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos35 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos35, Expected_Token_Id => Ada_Use, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos40 := Row_Pos35 + 1; end if; end; -- End tok_code Row_Progress1 := 3; if Token_Pos40 /= No_Token_Index then Row_Pos35 := Token_Pos40; else Row_Pos35 := No_Token_Index; goto Exit_Row35_0; end if; Defer_Res38 := Regular_Aggregate_Or_Parse0 (Parser, Row_Pos35); Defer_Pos38 := Parser.Current_Pos; Row_Progress1 := 4; if Defer_Pos38 /= No_Token_Index then Row_Pos35 := Defer_Pos38; else Row_Pos35 := No_Token_Index; goto Exit_Row35_0; end if; Nobt1 := True; Nobt1 := Nobt1; Row_Progress1 := 5; if Row_Pos35 /= No_Token_Index then Row_Pos35 := Row_Pos35; else Row_Pos35 := No_Token_Index; goto Exit_Row35_0; end if; -- Start tok_code Token_Res41 := Row_Pos35; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res41)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos41 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos35 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos35, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos41 := Row_Pos35 + 1; end if; end; -- End tok_code Row_Progress1 := 6; if Token_Pos41 /= No_Token_Index then Row_Pos35 := Token_Pos41; else Row_Pos35 := No_Token_Index; goto Exit_Row35_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos35 = No_Token_Index and then Nobt1 then Row_Pos35 := Parser.Last_Fail.Pos; Transform_Has_Failed1 := True; end if; if Row_Pos35 /= No_Token_Index then Transform_Res26 := Allocate_Enum_Rep_Clause (Parser.Mem_Pool); Initialize (Self => Transform_Res26, Kind => Ada_Enum_Rep_Clause, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos35 = Pos then No_Token_Index else Row_Pos35 - 1)); Initialize_Fields_For_Enum_Rep_Clause (Self => Transform_Res26, Enum_Rep_Clause_F_Type_Name => Defer_Res37, Enum_Rep_Clause_F_Aggregate => Defer_Res38); if Defer_Res37 /= null and then Is_Incomplete (Defer_Res37) then Transform_Res26.Last_Attempted_Child := 0; elsif Defer_Res37 /= null and then not Is_Ghost (Defer_Res37) then Transform_Res26.Last_Attempted_Child := -1; end if; if Defer_Res38 /= null and then Is_Incomplete (Defer_Res38) then Transform_Res26.Last_Attempted_Child := 0; elsif Defer_Res38 /= null and then not Is_Ghost (Defer_Res38) then Transform_Res26.Last_Attempted_Child := -1; end if; if Transform_Has_Failed1 then Transform_Res26.Last_Attempted_Child := Row_Progress1; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos35 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags26); end if; -- End transform_code if Row_Pos35 /= No_Token_Index then Or_Pos13 := Row_Pos35; Or_Res13 := Transform_Res26; goto Exit_Or12; end if; -- Start transform_code Transform_Diags27 := Parser.Diagnostics.Length; -- Start row_code Row_Pos36 := Pos; -- Start tok_code Token_Res42 := Row_Pos36; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res42)); begin if T.Kind /= From_Token_Kind (Ada_For) then Token_Pos42 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos36 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos36, Expected_Token_Id => Ada_For, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos42 := Row_Pos36 + 1; end if; end; -- End tok_code if Token_Pos42 /= No_Token_Index then Row_Pos36 := Token_Pos42; else Row_Pos36 := No_Token_Index; goto Exit_Row36_0; end if; Defer_Res39 := Static_Name_Or_Parse0 (Parser, Row_Pos36); Defer_Pos39 := Parser.Current_Pos; if Defer_Pos39 /= No_Token_Index then Row_Pos36 := Defer_Pos39; else Row_Pos36 := No_Token_Index; goto Exit_Row36_0; end if; -- Start tok_code Token_Res43 := Row_Pos36; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res43)); begin if T.Kind /= From_Token_Kind (Ada_Use) then Token_Pos43 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos36 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos36, Expected_Token_Id => Ada_Use, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos43 := Row_Pos36 + 1; end if; end; -- End tok_code if Token_Pos43 /= No_Token_Index then Row_Pos36 := Token_Pos43; else Row_Pos36 := No_Token_Index; goto Exit_Row36_0; end if; -- Start tok_code Token_Res44 := Row_Pos36; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res44)); begin if T.Kind /= From_Token_Kind (Ada_Record) then Token_Pos44 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos36 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos36, Expected_Token_Id => Ada_Record, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos44 := Row_Pos36 + 1; end if; end; -- End tok_code if Token_Pos44 /= No_Token_Index then Row_Pos36 := Token_Pos44; else Row_Pos36 := No_Token_Index; goto Exit_Row36_0; end if; -- Start opt_code -- Start row_code Row_Pos37 := Row_Pos36; -- Start tok_code Token_Res45 := Row_Pos37; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res45)); begin if T.Kind /= From_Token_Kind (Ada_At) then Token_Pos45 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos37 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos37, Expected_Token_Id => Ada_At, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos45 := Row_Pos37 + 1; end if; end; -- End tok_code if Token_Pos45 /= No_Token_Index then Row_Pos37 := Token_Pos45; else Row_Pos37 := No_Token_Index; goto Exit_Row37_0; end if; -- Start tok_code Token_Res46 := Row_Pos37; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res46)); begin if T.Kind /= From_Token_Kind (Ada_Mod) then Token_Pos46 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos37 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos37, Expected_Token_Id => Ada_Mod, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos46 := Row_Pos37 + 1; end if; end; -- End tok_code if Token_Pos46 /= No_Token_Index then Row_Pos37 := Token_Pos46; else Row_Pos37 := No_Token_Index; goto Exit_Row37_0; end if; Defer_Res40 := Simple_Expr_Or_Parse1 (Parser, Row_Pos37); Defer_Pos40 := Parser.Current_Pos; if Defer_Pos40 /= No_Token_Index then Row_Pos37 := Defer_Pos40; else Row_Pos37 := No_Token_Index; goto Exit_Row37_0; end if; -- Start opt_code -- Start tok_code Token_Res47 := Row_Pos37; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res47)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos47 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos37 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos37, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos47 := Row_Pos37 + 1; end if; end; -- End tok_code if Token_Pos47 = No_Token_Index then Token_Res47 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos37)), To_Text ("Missing ';'")); Token_Pos47 := Row_Pos37; end if; -- End opt_code if Token_Pos47 /= No_Token_Index then Row_Pos37 := Token_Pos47; else Row_Pos37 := No_Token_Index; goto Exit_Row37_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos37 = No_Token_Index then Defer_Res40 := No_Bare_Ada_Node; Row_Pos37 := Row_Pos36; end if; -- End opt_code if Row_Pos37 /= No_Token_Index then Row_Pos36 := Row_Pos37; else Row_Pos36 := No_Token_Index; goto Exit_Row36_0; end if; -- Start list_code List_Pos2 := Row_Pos36; Lst_Cpos2 := Row_Pos36; Tmp_List2 := Get_Parse_List (Parser); loop -- Start or_code Or_Pos12 := No_Token_Index; Or_Res12 := No_Bare_Ada_Node; Defer_Res41 := Component_Clause_Transform_Parse0 (Parser, Lst_Cpos2); Defer_Pos41 := Parser.Current_Pos; if Defer_Pos41 /= No_Token_Index then Or_Pos12 := Defer_Pos41; Or_Res12 := Defer_Res41; goto Exit_Or13; end if; Defer_Res42 := Pragma_Transform_Parse0 (Parser, Lst_Cpos2); Defer_Pos42 := Parser.Current_Pos; if Defer_Pos42 /= No_Token_Index then Or_Pos12 := Defer_Pos42; Or_Res12 := Defer_Res42; goto Exit_Or13; end if; <> -- End or_code exit when Or_Pos12 = No_Token_Index; List_Pos2 := Or_Pos12; Lst_Cpos2 := List_Pos2; Tmp_List2.Nodes.Append (Or_Res12); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List2.Nodes.Length; begin List_Res2 := Allocate_Ada_Node_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos36; Token_End := (if Lst_Cpos2 = Row_Pos36 then Row_Pos36 else Lst_Cpos2 - 1); else Token_Start := Token_Index'Max (Row_Pos36, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res2, Kind => Ada_Ada_Node_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res2, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List2.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res2.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List2); -- End list_code if List_Pos2 /= No_Token_Index then Row_Pos36 := List_Pos2; else Row_Pos36 := No_Token_Index; goto Exit_Row36_0; end if; -- Start tok_code Token_Res48 := Row_Pos36; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res48)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos48 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos36 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos36, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos48 := Row_Pos36 + 1; end if; end; -- End tok_code if Token_Pos48 /= No_Token_Index then Row_Pos36 := Token_Pos48; else Row_Pos36 := No_Token_Index; goto Exit_Row36_0; end if; -- Start tok_code Token_Res49 := Row_Pos36; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res49)); begin if T.Kind /= From_Token_Kind (Ada_Record) then Token_Pos49 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos36 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos36, Expected_Token_Id => Ada_Record, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos49 := Row_Pos36 + 1; end if; end; -- End tok_code if Token_Pos49 /= No_Token_Index then Row_Pos36 := Token_Pos49; else Row_Pos36 := No_Token_Index; goto Exit_Row36_0; end if; -- Start opt_code -- Start tok_code Token_Res50 := Row_Pos36; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res50)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos50 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos36 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos36, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos50 := Row_Pos36 + 1; end if; end; -- End tok_code if Token_Pos50 = No_Token_Index then Token_Res50 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos36)), To_Text ("Missing ';'")); Token_Pos50 := Row_Pos36; end if; -- End opt_code if Token_Pos50 /= No_Token_Index then Row_Pos36 := Token_Pos50; else Row_Pos36 := No_Token_Index; goto Exit_Row36_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos36 /= No_Token_Index then Transform_Res27 := Allocate_Record_Rep_Clause (Parser.Mem_Pool); Initialize (Self => Transform_Res27, Kind => Ada_Record_Rep_Clause, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos36 = Pos then No_Token_Index else Row_Pos36 - 1)); Initialize_Fields_For_Record_Rep_Clause (Self => Transform_Res27, Record_Rep_Clause_F_Name => Defer_Res39, Record_Rep_Clause_F_At_Expr => Defer_Res40, Record_Rep_Clause_F_Components => List_Res2); if Defer_Res39 /= null and then Is_Incomplete (Defer_Res39) then Transform_Res27.Last_Attempted_Child := 0; elsif Defer_Res39 /= null and then not Is_Ghost (Defer_Res39) then Transform_Res27.Last_Attempted_Child := -1; end if; if Defer_Res40 /= null and then Is_Incomplete (Defer_Res40) then Transform_Res27.Last_Attempted_Child := 0; elsif Defer_Res40 /= null and then not Is_Ghost (Defer_Res40) then Transform_Res27.Last_Attempted_Child := -1; end if; if List_Res2 /= null and then Is_Incomplete (List_Res2) then Transform_Res27.Last_Attempted_Child := 0; elsif List_Res2 /= null and then not Is_Ghost (List_Res2) then Transform_Res27.Last_Attempted_Child := -1; end if; elsif Row_Pos36 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags27); end if; -- End transform_code if Row_Pos36 /= No_Token_Index then Or_Pos13 := Row_Pos36; Or_Res13 := Transform_Res27; goto Exit_Or12; end if; -- Start transform_code Transform_Diags28 := Parser.Diagnostics.Length; -- Start row_code Row_Pos38 := Pos; -- Start tok_code Token_Res51 := Row_Pos38; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res51)); begin if T.Kind /= From_Token_Kind (Ada_For) then Token_Pos51 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos38 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos38, Expected_Token_Id => Ada_For, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos51 := Row_Pos38 + 1; end if; end; -- End tok_code if Token_Pos51 /= No_Token_Index then Row_Pos38 := Token_Pos51; else Row_Pos38 := No_Token_Index; goto Exit_Row38_0; end if; Defer_Res43 := Direct_Name_Or_Parse0 (Parser, Row_Pos38); Defer_Pos43 := Parser.Current_Pos; if Defer_Pos43 /= No_Token_Index then Row_Pos38 := Defer_Pos43; else Row_Pos38 := No_Token_Index; goto Exit_Row38_0; end if; -- Start tok_code Token_Res52 := Row_Pos38; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res52)); begin if T.Kind /= From_Token_Kind (Ada_Use) then Token_Pos52 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos38 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos38, Expected_Token_Id => Ada_Use, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos52 := Row_Pos38 + 1; end if; end; -- End tok_code if Token_Pos52 /= No_Token_Index then Row_Pos38 := Token_Pos52; else Row_Pos38 := No_Token_Index; goto Exit_Row38_0; end if; -- Start tok_code Token_Res53 := Row_Pos38; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res53)); begin if T.Kind /= From_Token_Kind (Ada_At) then Token_Pos53 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos38 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos38, Expected_Token_Id => Ada_At, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos53 := Row_Pos38 + 1; end if; end; -- End tok_code if Token_Pos53 /= No_Token_Index then Row_Pos38 := Token_Pos53; else Row_Pos38 := No_Token_Index; goto Exit_Row38_0; end if; Defer_Res44 := Expr_Or_Parse0 (Parser, Row_Pos38); Defer_Pos44 := Parser.Current_Pos; if Defer_Pos44 /= No_Token_Index then Row_Pos38 := Defer_Pos44; else Row_Pos38 := No_Token_Index; goto Exit_Row38_0; end if; -- Start tok_code Token_Res54 := Row_Pos38; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res54)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos54 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos38 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos38, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos54 := Row_Pos38 + 1; end if; end; -- End tok_code if Token_Pos54 /= No_Token_Index then Row_Pos38 := Token_Pos54; else Row_Pos38 := No_Token_Index; goto Exit_Row38_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos38 /= No_Token_Index then Transform_Res28 := Allocate_At_Clause (Parser.Mem_Pool); Initialize (Self => Transform_Res28, Kind => Ada_At_Clause, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos38 = Pos then No_Token_Index else Row_Pos38 - 1)); Initialize_Fields_For_At_Clause (Self => Transform_Res28, At_Clause_F_Name => Defer_Res43, At_Clause_F_Expr => Defer_Res44); if Defer_Res43 /= null and then Is_Incomplete (Defer_Res43) then Transform_Res28.Last_Attempted_Child := 0; elsif Defer_Res43 /= null and then not Is_Ghost (Defer_Res43) then Transform_Res28.Last_Attempted_Child := -1; end if; if Defer_Res44 /= null and then Is_Incomplete (Defer_Res44) then Transform_Res28.Last_Attempted_Child := 0; elsif Defer_Res44 /= null and then not Is_Ghost (Defer_Res44) then Transform_Res28.Last_Attempted_Child := -1; end if; elsif Row_Pos38 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags28); end if; -- End transform_code if Row_Pos38 /= No_Token_Index then Or_Pos13 := Row_Pos38; Or_Res13 := Transform_Res28; goto Exit_Or12; end if; -- Start transform_code Transform_Diags29 := Parser.Diagnostics.Length; -- Start row_code Row_Pos39 := Pos; -- Start tok_code Token_Res55 := Row_Pos39; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res55)); begin if T.Kind /= From_Token_Kind (Ada_For) then Token_Pos55 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos39 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos39, Expected_Token_Id => Ada_For, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos55 := Row_Pos39 + 1; end if; end; -- End tok_code Row_Progress2 := 1; if Token_Pos55 /= No_Token_Index then Row_Pos39 := Token_Pos55; else Row_Pos39 := No_Token_Index; goto Exit_Row39_0; end if; Defer_Res45 := Name_Or_Parse2 (Parser, Row_Pos39); Defer_Pos45 := Parser.Current_Pos; Row_Progress2 := 2; if Defer_Pos45 /= No_Token_Index then Row_Pos39 := Defer_Pos45; else Row_Pos39 := No_Token_Index; goto Exit_Row39_0; end if; -- Start tok_code Token_Res56 := Row_Pos39; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res56)); begin if T.Kind /= From_Token_Kind (Ada_Use) then Token_Pos56 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos39 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos39, Expected_Token_Id => Ada_Use, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos56 := Row_Pos39 + 1; end if; end; -- End tok_code Row_Progress2 := 3; if Token_Pos56 /= No_Token_Index then Row_Pos39 := Token_Pos56; else Row_Pos39 := No_Token_Index; goto Exit_Row39_0; end if; Nobt2 := True; Nobt2 := Nobt2; Row_Progress2 := 4; if Row_Pos39 /= No_Token_Index then Row_Pos39 := Row_Pos39; else Row_Pos39 := No_Token_Index; goto Exit_Row39_0; end if; Defer_Res46 := Expr_Or_Parse0 (Parser, Row_Pos39); Defer_Pos46 := Parser.Current_Pos; Row_Progress2 := 5; if Defer_Pos46 /= No_Token_Index then Row_Pos39 := Defer_Pos46; else Row_Pos39 := No_Token_Index; goto Exit_Row39_0; end if; -- Start tok_code Token_Res57 := Row_Pos39; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res57)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos57 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos39 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos39, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos57 := Row_Pos39 + 1; end if; end; -- End tok_code Row_Progress2 := 6; if Token_Pos57 /= No_Token_Index then Row_Pos39 := Token_Pos57; else Row_Pos39 := No_Token_Index; goto Exit_Row39_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos39 = No_Token_Index and then Nobt2 then Row_Pos39 := Parser.Last_Fail.Pos; Transform_Has_Failed2 := True; end if; if Row_Pos39 /= No_Token_Index then Transform_Res29 := Allocate_Attribute_Def_Clause (Parser.Mem_Pool); Initialize (Self => Transform_Res29, Kind => Ada_Attribute_Def_Clause, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos39 = Pos then No_Token_Index else Row_Pos39 - 1)); Initialize_Fields_For_Attribute_Def_Clause (Self => Transform_Res29, Attribute_Def_Clause_F_Attribute_Expr => Defer_Res45, Attribute_Def_Clause_F_Expr => Defer_Res46); if Defer_Res45 /= null and then Is_Incomplete (Defer_Res45) then Transform_Res29.Last_Attempted_Child := 0; elsif Defer_Res45 /= null and then not Is_Ghost (Defer_Res45) then Transform_Res29.Last_Attempted_Child := -1; end if; if Defer_Res46 /= null and then Is_Incomplete (Defer_Res46) then Transform_Res29.Last_Attempted_Child := 0; elsif Defer_Res46 /= null and then not Is_Ghost (Defer_Res46) then Transform_Res29.Last_Attempted_Child := -1; end if; if Transform_Has_Failed2 then Transform_Res29.Last_Attempted_Child := Row_Progress2; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos39 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags29); end if; -- End transform_code if Row_Pos39 /= No_Token_Index then Or_Pos13 := Row_Pos39; Or_Res13 := Transform_Res29; goto Exit_Or12; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Aspect_Clause_Or_Parse1_Memo, Or_Pos13 /= No_Token_Index, Or_Res13, Pos, Or_Pos13); Parser.Current_Pos := Or_Pos13; return Or_Res13; end Aspect_Clause_Or_Parse1; function Aspect_Spec_Opt_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Aspect_Spec is use Bare_Aspect_Spec_Memos; Nobt3 : Boolean := False; Row_Pos40 : Token_Index := No_Token_Index; Token_Pos58 : Token_Index := No_Token_Index; Token_Res58 : Token_Index := No_Token_Index; Lst_Cpos3 : Token_Index := No_Token_Index; Tmp_List3 : Free_Parse_List; Defer_Pos47 : Token_Index := No_Token_Index; Defer_Res47 : Bare_Aspect_Assoc := No_Bare_Ada_Node; Token_Pos59 : Token_Index := No_Token_Index; Token_Res59 : Token_Index := No_Token_Index; List_Pos3 : Token_Index := No_Token_Index; List_Res3 : Bare_Aspect_Assoc_List := No_Bare_Ada_Node; Row_Progress3 : Integer := 0; Transform_Res30 : Bare_Aspect_Spec := No_Bare_Ada_Node; Transform_Has_Failed3 : Boolean := False; Transform_Diags30 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Aspect_Spec_Opt_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res30 := M.Instance; return Transform_Res30; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res30; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start opt_code -- Start transform_code Transform_Diags30 := Parser.Diagnostics.Length; -- Start row_code Row_Pos40 := Pos; -- Start tok_code Token_Res58 := Row_Pos40; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res58)); begin if T.Kind /= From_Token_Kind (Ada_With) then Token_Pos58 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos40 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos40, Expected_Token_Id => Ada_With, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos58 := Row_Pos40 + 1; end if; end; -- End tok_code Row_Progress3 := 1; if Token_Pos58 /= No_Token_Index then Row_Pos40 := Token_Pos58; else Row_Pos40 := No_Token_Index; goto Exit_Row40_0; end if; Nobt3 := True; Nobt3 := Nobt3; Row_Progress3 := 2; if Row_Pos40 /= No_Token_Index then Row_Pos40 := Row_Pos40; else Row_Pos40 := No_Token_Index; goto Exit_Row40_0; end if; -- Start list_code List_Pos3 := No_Token_Index; Lst_Cpos3 := Row_Pos40; Tmp_List3 := Get_Parse_List (Parser); loop Defer_Res47 := Aspect_Assoc_Or_Parse2 (Parser, Lst_Cpos3); Defer_Pos47 := Parser.Current_Pos; exit when Defer_Pos47 = No_Token_Index; List_Pos3 := Defer_Pos47; Lst_Cpos3 := List_Pos3; Tmp_List3.Nodes.Append (Defer_Res47); -- Start tok_code Token_Res59 := Lst_Cpos3; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res59)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos59 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos3 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos3, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos59 := Lst_Cpos3 + 1; end if; end; -- End tok_code if Token_Pos59 /= No_Token_Index then Lst_Cpos3 := Token_Pos59; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List3.Nodes.Length; begin List_Res3 := Allocate_Aspect_Assoc_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos40; Token_End := (if Lst_Cpos3 = Row_Pos40 then Row_Pos40 else Lst_Cpos3 - 1); else Token_Start := Token_Index'Max (Row_Pos40, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res3, Kind => Ada_Aspect_Assoc_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res3, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List3.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res3.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List3); -- End list_code Row_Progress3 := 3; if List_Pos3 /= No_Token_Index then Row_Pos40 := List_Pos3; else Row_Pos40 := No_Token_Index; goto Exit_Row40_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos40 = No_Token_Index and then Nobt3 then Row_Pos40 := Parser.Last_Fail.Pos; Transform_Has_Failed3 := True; end if; if Row_Pos40 /= No_Token_Index then Transform_Res30 := Allocate_Aspect_Spec (Parser.Mem_Pool); Initialize (Self => Transform_Res30, Kind => Ada_Aspect_Spec, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos40 = Pos then No_Token_Index else Row_Pos40 - 1)); Initialize_Fields_For_Aspect_Spec (Self => Transform_Res30, Aspect_Spec_F_Aspect_Assocs => List_Res3); if List_Res3 /= null and then Is_Incomplete (List_Res3) then Transform_Res30.Last_Attempted_Child := 0; elsif List_Res3 /= null and then not Is_Ghost (List_Res3) then Transform_Res30.Last_Attempted_Child := -1; end if; if Transform_Has_Failed3 then Transform_Res30.Last_Attempted_Child := Row_Progress3; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos40 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags30); end if; -- End transform_code if Row_Pos40 = No_Token_Index then if Nobt3 then Row_Pos40 := Parser.Last_Fail.Pos; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos40)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; if not Nobt3 then Transform_Res30 := No_Bare_Ada_Node; end if; if not Nobt3 then Row_Pos40 := Pos; end if; end if; -- End opt_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Aspect_Spec_Opt_Parse0_Memo, Row_Pos40 /= No_Token_Index, Transform_Res30, Pos, Row_Pos40); Parser.Current_Pos := Row_Pos40; return Transform_Res30; end Aspect_Spec_Opt_Parse0; function Assignment_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Assign_Stmt is use Bare_Assign_Stmt_Memos; Nobt4 : Boolean := False; Row_Pos41 : Token_Index := No_Token_Index; Defer_Pos48 : Token_Index := No_Token_Index; Defer_Res48 : Bare_Name := No_Bare_Ada_Node; Token_Pos60 : Token_Index := No_Token_Index; Token_Res60 : Token_Index := No_Token_Index; Defer_Pos49 : Token_Index := No_Token_Index; Defer_Res49 : Bare_Expr := No_Bare_Ada_Node; Token_Pos61 : Token_Index := No_Token_Index; Token_Res61 : Token_Index := No_Token_Index; Row_Progress4 : Integer := 0; Transform_Res31 : Bare_Assign_Stmt := No_Bare_Ada_Node; Transform_Has_Failed4 : Boolean := False; Transform_Diags31 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Assignment_Stmt_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res31 := M.Instance; return Transform_Res31; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res31; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags31 := Parser.Diagnostics.Length; -- Start row_code Row_Pos41 := Pos; Defer_Res48 := Name_Or_Parse2 (Parser, Row_Pos41); Defer_Pos48 := Parser.Current_Pos; Row_Progress4 := 1; if Defer_Pos48 /= No_Token_Index then Row_Pos41 := Defer_Pos48; else Row_Pos41 := No_Token_Index; goto Exit_Row41_0; end if; -- Start tok_code Token_Res60 := Row_Pos41; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res60)); begin if T.Kind /= From_Token_Kind (Ada_Assign) then Token_Pos60 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos41 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos41, Expected_Token_Id => Ada_Assign, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos60 := Row_Pos41 + 1; end if; end; -- End tok_code Row_Progress4 := 2; if Token_Pos60 /= No_Token_Index then Row_Pos41 := Token_Pos60; else Row_Pos41 := No_Token_Index; goto Exit_Row41_0; end if; Nobt4 := True; Nobt4 := Nobt4; Row_Progress4 := 3; if Row_Pos41 /= No_Token_Index then Row_Pos41 := Row_Pos41; else Row_Pos41 := No_Token_Index; goto Exit_Row41_0; end if; Defer_Res49 := Expr_Or_Parse0 (Parser, Row_Pos41); Defer_Pos49 := Parser.Current_Pos; Row_Progress4 := 4; if Defer_Pos49 /= No_Token_Index then Row_Pos41 := Defer_Pos49; else Row_Pos41 := No_Token_Index; goto Exit_Row41_0; end if; -- Start opt_code -- Start tok_code Token_Res61 := Row_Pos41; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res61)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos61 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos41 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos41, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos61 := Row_Pos41 + 1; end if; end; -- End tok_code if Token_Pos61 = No_Token_Index then Token_Res61 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos41)), To_Text ("Missing ';'")); Token_Pos61 := Row_Pos41; end if; -- End opt_code Row_Progress4 := 5; if Token_Pos61 /= No_Token_Index then Row_Pos41 := Token_Pos61; else Row_Pos41 := No_Token_Index; goto Exit_Row41_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos41 = No_Token_Index and then Nobt4 then Row_Pos41 := Parser.Last_Fail.Pos; Transform_Has_Failed4 := True; end if; if Row_Pos41 /= No_Token_Index then Transform_Res31 := Allocate_Assign_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res31, Kind => Ada_Assign_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos41 = Pos then No_Token_Index else Row_Pos41 - 1)); Initialize_Fields_For_Assign_Stmt (Self => Transform_Res31, Assign_Stmt_F_Dest => Defer_Res48, Assign_Stmt_F_Expr => Defer_Res49); if Defer_Res48 /= null and then Is_Incomplete (Defer_Res48) then Transform_Res31.Last_Attempted_Child := 0; elsif Defer_Res48 /= null and then not Is_Ghost (Defer_Res48) then Transform_Res31.Last_Attempted_Child := -1; end if; if Defer_Res49 /= null and then Is_Incomplete (Defer_Res49) then Transform_Res31.Last_Attempted_Child := 0; elsif Defer_Res49 /= null and then not Is_Ghost (Defer_Res49) then Transform_Res31.Last_Attempted_Child := -1; end if; if Transform_Has_Failed4 then Transform_Res31.Last_Attempted_Child := Row_Progress4; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos41 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags31); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Assignment_Stmt_Transform_Parse0_Memo, Row_Pos41 /= No_Token_Index, Transform_Res31, Pos, Row_Pos41); Parser.Current_Pos := Row_Pos41; return Transform_Res31; end Assignment_Stmt_Transform_Parse0; function Attr_Suffix_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Assoc_List is use Bare_Assoc_List_Memos; Lst_Cpos4 : Token_Index := No_Token_Index; Tmp_List4 : Free_Parse_List; Defer_Pos50 : Token_Index := No_Token_Index; Defer_Res50 : Bare_Param_Assoc := No_Bare_Ada_Node; Token_Pos62 : Token_Index := No_Token_Index; Token_Res62 : Token_Index := No_Token_Index; List_Pos4 : Token_Index := No_Token_Index; List_Res4 : Bare_Assoc_List := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Attr_Suffix_List_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; List_Res4 := M.Instance; return List_Res4; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return List_Res4; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start list_code List_Pos4 := No_Token_Index; Lst_Cpos4 := Pos; Tmp_List4 := Get_Parse_List (Parser); loop Defer_Res50 := Param_Assoc_Transform_Parse0 (Parser, Lst_Cpos4); Defer_Pos50 := Parser.Current_Pos; exit when Defer_Pos50 = No_Token_Index; List_Pos4 := Defer_Pos50; Lst_Cpos4 := List_Pos4; Tmp_List4.Nodes.Append (Defer_Res50); -- Start tok_code Token_Res62 := Lst_Cpos4; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res62)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos62 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos4 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos4, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos62 := Lst_Cpos4 + 1; end if; end; -- End tok_code if Token_Pos62 /= No_Token_Index then Lst_Cpos4 := Token_Pos62; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List4.Nodes.Length; begin List_Res4 := Allocate_Assoc_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Pos; Token_End := (if Lst_Cpos4 = Pos then Pos else Lst_Cpos4 - 1); else Token_Start := Token_Index'Max (Pos, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res4, Kind => Ada_Assoc_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res4, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List4.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res4.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List4); -- End list_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Attr_Suffix_List_Parse0_Memo, List_Pos4 /= No_Token_Index, List_Res4, Pos, List_Pos4); Parser.Current_Pos := List_Pos4; return List_Res4; end Attr_Suffix_List_Parse0; function Basic_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Defer_Pos51 : Token_Index := No_Token_Index; Defer_Res51 : Bare_Null_Subp_Decl := No_Bare_Ada_Node; Defer_Pos52 : Token_Index := No_Token_Index; Defer_Res52 : Bare_Abstract_Subp_Decl := No_Bare_Ada_Node; Defer_Pos53 : Token_Index := No_Token_Index; Defer_Res53 : Bare_Expr_Function := No_Bare_Ada_Node; Defer_Pos54 : Token_Index := No_Token_Index; Defer_Res54 : Bare_Subp_Renaming_Decl := No_Bare_Ada_Node; Defer_Pos55 : Token_Index := No_Token_Index; Defer_Res55 : Bare_Body_Stub := No_Bare_Ada_Node; Defer_Pos56 : Token_Index := No_Token_Index; Defer_Res56 : Bare_Generic_Instantiation := No_Bare_Ada_Node; Defer_Pos57 : Token_Index := No_Token_Index; Defer_Res57 : Bare_Body_Node := No_Bare_Ada_Node; Defer_Pos58 : Token_Index := No_Token_Index; Defer_Res58 : Bare_Subp_Decl := No_Bare_Ada_Node; Defer_Pos59 : Token_Index := No_Token_Index; Defer_Res59 : Bare_Base_Type_Decl := No_Bare_Ada_Node; Defer_Pos60 : Token_Index := No_Token_Index; Defer_Res60 : Bare_Task_Type_Decl := No_Bare_Ada_Node; Defer_Pos61 : Token_Index := No_Token_Index; Defer_Res61 : Bare_Protected_Type_Decl := No_Bare_Ada_Node; Defer_Pos62 : Token_Index := No_Token_Index; Defer_Res62 : Bare_Subtype_Decl := No_Bare_Ada_Node; Defer_Pos63 : Token_Index := No_Token_Index; Defer_Res63 : Bare_Basic_Decl := No_Bare_Ada_Node; Defer_Pos64 : Token_Index := No_Token_Index; Defer_Res64 : Bare_Package_Decl := No_Bare_Ada_Node; Defer_Pos65 : Token_Index := No_Token_Index; Defer_Res65 : Bare_Aspect_Clause := No_Bare_Ada_Node; Defer_Pos66 : Token_Index := No_Token_Index; Defer_Res66 : Bare_Use_Clause := No_Bare_Ada_Node; Defer_Pos67 : Token_Index := No_Token_Index; Defer_Res67 : Bare_Exception_Decl := No_Bare_Ada_Node; Defer_Pos68 : Token_Index := No_Token_Index; Defer_Res68 : Bare_Package_Renaming_Decl := No_Bare_Ada_Node; Defer_Pos69 : Token_Index := No_Token_Index; Defer_Res69 : Bare_Generic_Renaming_Decl := No_Bare_Ada_Node; Defer_Pos70 : Token_Index := No_Token_Index; Defer_Res70 : Bare_Generic_Decl := No_Bare_Ada_Node; Defer_Pos71 : Token_Index := No_Token_Index; Defer_Res71 : Bare_Pragma_Node := No_Bare_Ada_Node; Or_Pos14 : Token_Index := No_Token_Index; Or_Res14 : Bare_Ada_Node := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Basic_Decl_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res14 := M.Instance; return Or_Res14; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res14; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos14 := No_Token_Index; Or_Res14 := No_Bare_Ada_Node; Defer_Res51 := Null_Subp_Decl_Transform_Parse0 (Parser, Pos); Defer_Pos51 := Parser.Current_Pos; if Defer_Pos51 /= No_Token_Index then Or_Pos14 := Defer_Pos51; Or_Res14 := Defer_Res51; goto Exit_Or14; end if; Defer_Res52 := Abstract_Subp_Decl_Transform_Parse0 (Parser, Pos); Defer_Pos52 := Parser.Current_Pos; if Defer_Pos52 /= No_Token_Index then Or_Pos14 := Defer_Pos52; Or_Res14 := Defer_Res52; goto Exit_Or14; end if; Defer_Res53 := Expr_Fn_Transform_Parse0 (Parser, Pos); Defer_Pos53 := Parser.Current_Pos; if Defer_Pos53 /= No_Token_Index then Or_Pos14 := Defer_Pos53; Or_Res14 := Defer_Res53; goto Exit_Or14; end if; Defer_Res54 := Subp_Renaming_Decl_Transform_Parse0 (Parser, Pos); Defer_Pos54 := Parser.Current_Pos; if Defer_Pos54 /= No_Token_Index then Or_Pos14 := Defer_Pos54; Or_Res14 := Defer_Res54; goto Exit_Or14; end if; Defer_Res55 := Body_Stub_Or_Parse0 (Parser, Pos); Defer_Pos55 := Parser.Current_Pos; if Defer_Pos55 /= No_Token_Index then Or_Pos14 := Defer_Pos55; Or_Res14 := Defer_Res55; goto Exit_Or14; end if; Defer_Res56 := Generic_Instantiation_Or_Parse1 (Parser, Pos); Defer_Pos56 := Parser.Current_Pos; if Defer_Pos56 /= No_Token_Index then Or_Pos14 := Defer_Pos56; Or_Res14 := Defer_Res56; goto Exit_Or14; end if; Defer_Res57 := Body_Or_Parse0 (Parser, Pos); Defer_Pos57 := Parser.Current_Pos; if Defer_Pos57 /= No_Token_Index then Or_Pos14 := Defer_Pos57; Or_Res14 := Defer_Res57; goto Exit_Or14; end if; Defer_Res58 := Simple_Subp_Decl_Transform_Parse0 (Parser, Pos); Defer_Pos58 := Parser.Current_Pos; if Defer_Pos58 /= No_Token_Index then Or_Pos14 := Defer_Pos58; Or_Res14 := Defer_Res58; goto Exit_Or14; end if; Defer_Res59 := Type_Decl_Or_Parse1 (Parser, Pos); Defer_Pos59 := Parser.Current_Pos; if Defer_Pos59 /= No_Token_Index then Or_Pos14 := Defer_Pos59; Or_Res14 := Defer_Res59; goto Exit_Or14; end if; Defer_Res60 := Task_Type_Decl_Transform_Parse0 (Parser, Pos); Defer_Pos60 := Parser.Current_Pos; if Defer_Pos60 /= No_Token_Index then Or_Pos14 := Defer_Pos60; Or_Res14 := Defer_Res60; goto Exit_Or14; end if; Defer_Res61 := Protected_Type_Decl_Transform_Parse0 (Parser, Pos); Defer_Pos61 := Parser.Current_Pos; if Defer_Pos61 /= No_Token_Index then Or_Pos14 := Defer_Pos61; Or_Res14 := Defer_Res61; goto Exit_Or14; end if; Defer_Res62 := Subtype_Decl_Transform_Parse0 (Parser, Pos); Defer_Pos62 := Parser.Current_Pos; if Defer_Pos62 /= No_Token_Index then Or_Pos14 := Defer_Pos62; Or_Res14 := Defer_Res62; goto Exit_Or14; end if; Defer_Res63 := Object_Decl_Or_Parse0 (Parser, Pos); Defer_Pos63 := Parser.Current_Pos; if Defer_Pos63 /= No_Token_Index then Or_Pos14 := Defer_Pos63; Or_Res14 := Defer_Res63; goto Exit_Or14; end if; Defer_Res64 := Package_Decl_Transform_Parse3 (Parser, Pos); Defer_Pos64 := Parser.Current_Pos; if Defer_Pos64 /= No_Token_Index then Or_Pos14 := Defer_Pos64; Or_Res14 := Defer_Res64; goto Exit_Or14; end if; Defer_Res65 := Aspect_Clause_Or_Parse1 (Parser, Pos); Defer_Pos65 := Parser.Current_Pos; if Defer_Pos65 /= No_Token_Index then Or_Pos14 := Defer_Pos65; Or_Res14 := Defer_Res65; goto Exit_Or14; end if; Defer_Res66 := Use_Clause_Or_Parse0 (Parser, Pos); Defer_Pos66 := Parser.Current_Pos; if Defer_Pos66 /= No_Token_Index then Or_Pos14 := Defer_Pos66; Or_Res14 := Defer_Res66; goto Exit_Or14; end if; Defer_Res67 := Exception_Decl_Transform_Parse0 (Parser, Pos); Defer_Pos67 := Parser.Current_Pos; if Defer_Pos67 /= No_Token_Index then Or_Pos14 := Defer_Pos67; Or_Res14 := Defer_Res67; goto Exit_Or14; end if; Defer_Res68 := Package_Renaming_Decl_Transform_Parse0 (Parser, Pos); Defer_Pos68 := Parser.Current_Pos; if Defer_Pos68 /= No_Token_Index then Or_Pos14 := Defer_Pos68; Or_Res14 := Defer_Res68; goto Exit_Or14; end if; Defer_Res69 := Generic_Renaming_Decl_Or_Parse1 (Parser, Pos); Defer_Pos69 := Parser.Current_Pos; if Defer_Pos69 /= No_Token_Index then Or_Pos14 := Defer_Pos69; Or_Res14 := Defer_Res69; goto Exit_Or14; end if; Defer_Res70 := Generic_Decl_Or_Parse0 (Parser, Pos); Defer_Pos70 := Parser.Current_Pos; if Defer_Pos70 /= No_Token_Index then Or_Pos14 := Defer_Pos70; Or_Res14 := Defer_Res70; goto Exit_Or14; end if; Defer_Res71 := Pragma_Transform_Parse0 (Parser, Pos); Defer_Pos71 := Parser.Current_Pos; if Defer_Pos71 /= No_Token_Index then Or_Pos14 := Defer_Pos71; Or_Res14 := Defer_Res71; goto Exit_Or14; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Basic_Decl_Or_Parse0_Memo, Or_Pos14 /= No_Token_Index, Or_Res14, Pos, Or_Pos14); Parser.Current_Pos := Or_Pos14; return Or_Res14; end Basic_Decl_Or_Parse0; function Basic_Decls_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node_List is use Bare_Ada_Node_List_Memos; Lst_Cpos5 : Token_Index := No_Token_Index; Tmp_List5 : Free_Parse_List; Defer_Pos72 : Token_Index := No_Token_Index; Defer_Res72 : Bare_Ada_Node := No_Bare_Ada_Node; Row_Pos42 : Token_Index := No_Token_Index; Transform_Res32 : Bare_Error_Decl := No_Bare_Ada_Node; Transform_Diags32 : Ada.Containers.Count_Type; Skip_Pos0 : Token_Index := No_Token_Index; Skip_Dummy0 : Bare_Ada_Node := No_Bare_Ada_Node; Or_Pos15 : Token_Index := No_Token_Index; Or_Res15 : Bare_Ada_Node := No_Bare_Ada_Node; List_Pos5 : Token_Index := No_Token_Index; List_Res5 : Bare_Ada_Node_List := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Basic_Decls_List_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; List_Res5 := M.Instance; return List_Res5; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return List_Res5; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start list_code List_Pos5 := Pos; Lst_Cpos5 := Pos; Tmp_List5 := Get_Parse_List (Parser); loop -- Start or_code Or_Pos15 := No_Token_Index; Or_Res15 := No_Bare_Ada_Node; Defer_Res72 := Basic_Decl_Or_Parse0 (Parser, Lst_Cpos5); Defer_Pos72 := Parser.Current_Pos; if Defer_Pos72 /= No_Token_Index then Or_Pos15 := Defer_Pos72; Or_Res15 := Defer_Res72; goto Exit_Or15; end if; if Get_Token (Parser.TDH.all, Lst_Cpos5).Kind = From_Token_Kind (Ada_Termination) then Skip_Pos0 := No_Token_Index; goto Exit_Or16; end if; for Fn of Parser.Private_Part.Dont_Skip loop Skip_Dummy0 := Fn (Parser, Lst_Cpos5); if Parser.Current_Pos /= No_Token_Index then Skip_Pos0 := No_Token_Index; goto Exit_Or16; end if; end loop; Skip_Pos0 := Lst_Cpos5 + 1; -- Start transform_code Transform_Diags32 := Parser.Diagnostics.Length; -- Start row_code Row_Pos42 := Lst_Cpos5; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos42 /= No_Token_Index then Transform_Res32 := Allocate_Error_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res32, Kind => Ada_Error_Decl, Unit => Parser.Unit, Token_Start_Index => Lst_Cpos5, Token_End_Index => (if Row_Pos42 = Lst_Cpos5 then No_Token_Index else Row_Pos42 - 1)); elsif Row_Pos42 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags32); end if; -- End transform_code Transform_Res32.Token_End_Index := Lst_Cpos5; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Lst_Cpos5)), To_Text ("Skipped token ") & Common.Text (Wrap_Token_Reference (Parser.Unit.Context, Parser.TDH, (Lst_Cpos5, No_Token_Index)))); <> if Skip_Pos0 /= No_Token_Index then Or_Pos15 := Skip_Pos0; Or_Res15 := Transform_Res32; goto Exit_Or15; end if; <> -- End or_code exit when Or_Pos15 = No_Token_Index; List_Pos5 := Or_Pos15; Lst_Cpos5 := List_Pos5; Tmp_List5.Nodes.Append (Or_Res15); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List5.Nodes.Length; begin List_Res5 := Allocate_Ada_Node_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Pos; Token_End := (if Lst_Cpos5 = Pos then Pos else Lst_Cpos5 - 1); else Token_Start := Token_Index'Max (Pos, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res5, Kind => Ada_Ada_Node_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res5, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List5.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res5.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List5); -- End list_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Basic_Decls_List_Parse0_Memo, List_Pos5 /= No_Token_Index, List_Res5, Pos, List_Pos5); Parser.Current_Pos := List_Pos5; return List_Res5; end Basic_Decls_List_Parse0; function Block_Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Composite_Stmt is use Bare_Composite_Stmt_Memos; Defer_Pos73 : Token_Index := No_Token_Index; Defer_Res73 : Bare_Block_Stmt := No_Bare_Ada_Node; Row_Pos43 : Token_Index := No_Token_Index; Row_Pos44 : Token_Index := No_Token_Index; Defer_Pos74 : Token_Index := No_Token_Index; Defer_Res74 : Bare_Defining_Name := No_Bare_Ada_Node; Transform_Res33 : Bare_Named_Stmt_Decl := No_Bare_Ada_Node; Transform_Diags33 : Ada.Containers.Count_Type; Token_Pos63 : Token_Index := No_Token_Index; Token_Res63 : Token_Index := No_Token_Index; Defer_Pos75 : Token_Index := No_Token_Index; Defer_Res75 : Bare_Block_Stmt := No_Bare_Ada_Node; Transform_Res34 : Bare_Named_Stmt := No_Bare_Ada_Node; Transform_Diags34 : Ada.Containers.Count_Type; Or_Pos16 : Token_Index := No_Token_Index; Or_Res16 : Bare_Composite_Stmt := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Block_Stmt_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res16 := M.Instance; return Or_Res16; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res16; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos16 := No_Token_Index; Or_Res16 := No_Bare_Ada_Node; Defer_Res73 := Iblock_Stmt_Or_Parse0 (Parser, Pos); Defer_Pos73 := Parser.Current_Pos; if Defer_Pos73 /= No_Token_Index then Or_Pos16 := Defer_Pos73; Or_Res16 := Defer_Res73; goto Exit_Or17; end if; -- Start transform_code Transform_Diags34 := Parser.Diagnostics.Length; -- Start row_code Row_Pos43 := Pos; -- Start transform_code Transform_Diags33 := Parser.Diagnostics.Length; -- Start row_code Row_Pos44 := Row_Pos43; Defer_Res74 := Defining_Id_Transform_Parse0 (Parser, Row_Pos44); Defer_Pos74 := Parser.Current_Pos; if Defer_Pos74 /= No_Token_Index then Row_Pos44 := Defer_Pos74; else Row_Pos44 := No_Token_Index; goto Exit_Row44_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos44 /= No_Token_Index then Transform_Res33 := Allocate_Named_Stmt_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res33, Kind => Ada_Named_Stmt_Decl, Unit => Parser.Unit, Token_Start_Index => Row_Pos43, Token_End_Index => (if Row_Pos44 = Row_Pos43 then No_Token_Index else Row_Pos44 - 1)); Initialize_Fields_For_Named_Stmt_Decl (Self => Transform_Res33, Named_Stmt_Decl_F_Name => Defer_Res74); if Defer_Res74 /= null and then Is_Incomplete (Defer_Res74) then Transform_Res33.Last_Attempted_Child := 0; elsif Defer_Res74 /= null and then not Is_Ghost (Defer_Res74) then Transform_Res33.Last_Attempted_Child := -1; end if; elsif Row_Pos44 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags33); end if; -- End transform_code if Row_Pos44 /= No_Token_Index then Row_Pos43 := Row_Pos44; else Row_Pos43 := No_Token_Index; goto Exit_Row43_0; end if; -- Start tok_code Token_Res63 := Row_Pos43; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res63)); begin if T.Kind /= From_Token_Kind (Ada_Colon) then Token_Pos63 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos43 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos43, Expected_Token_Id => Ada_Colon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos63 := Row_Pos43 + 1; end if; end; -- End tok_code if Token_Pos63 /= No_Token_Index then Row_Pos43 := Token_Pos63; else Row_Pos43 := No_Token_Index; goto Exit_Row43_0; end if; Defer_Res75 := Iblock_Stmt_Or_Parse0 (Parser, Row_Pos43); Defer_Pos75 := Parser.Current_Pos; if Defer_Pos75 /= No_Token_Index then Row_Pos43 := Defer_Pos75; else Row_Pos43 := No_Token_Index; goto Exit_Row43_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos43 /= No_Token_Index then Transform_Res34 := Allocate_Named_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res34, Kind => Ada_Named_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos43 = Pos then No_Token_Index else Row_Pos43 - 1)); Initialize_Fields_For_Named_Stmt (Self => Transform_Res34, Named_Stmt_F_Decl => Transform_Res33, Named_Stmt_F_Stmt => Defer_Res75); if Transform_Res33 /= null and then Is_Incomplete (Transform_Res33) then Transform_Res34.Last_Attempted_Child := 0; elsif Transform_Res33 /= null and then not Is_Ghost (Transform_Res33) then Transform_Res34.Last_Attempted_Child := -1; end if; if Defer_Res75 /= null and then Is_Incomplete (Defer_Res75) then Transform_Res34.Last_Attempted_Child := 0; elsif Defer_Res75 /= null and then not Is_Ghost (Defer_Res75) then Transform_Res34.Last_Attempted_Child := -1; end if; elsif Row_Pos43 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags34); end if; -- End transform_code if Row_Pos43 /= No_Token_Index then Or_Pos16 := Row_Pos43; Or_Res16 := Transform_Res34; goto Exit_Or17; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Block_Stmt_Or_Parse0_Memo, Or_Pos16 /= No_Token_Index, Or_Res16, Pos, Or_Pos16); Parser.Current_Pos := Or_Pos16; return Or_Res16; end Block_Stmt_Or_Parse0; function Body_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Body_Node is use Bare_Body_Node_Memos; Defer_Pos76 : Token_Index := No_Token_Index; Defer_Res76 : Bare_Subp_Body := No_Bare_Ada_Node; Defer_Pos77 : Token_Index := No_Token_Index; Defer_Res77 : Bare_Package_Body := No_Bare_Ada_Node; Defer_Pos78 : Token_Index := No_Token_Index; Defer_Res78 : Bare_Task_Body := No_Bare_Ada_Node; Defer_Pos79 : Token_Index := No_Token_Index; Defer_Res79 : Bare_Protected_Body := No_Bare_Ada_Node; Defer_Pos80 : Token_Index := No_Token_Index; Defer_Res80 : Bare_Entry_Body := No_Bare_Ada_Node; Or_Pos17 : Token_Index := No_Token_Index; Or_Res17 : Bare_Body_Node := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Body_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res17 := M.Instance; return Or_Res17; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res17; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos17 := No_Token_Index; Or_Res17 := No_Bare_Ada_Node; Defer_Res76 := Subp_Body_Transform_Parse1 (Parser, Pos); Defer_Pos76 := Parser.Current_Pos; if Defer_Pos76 /= No_Token_Index then Or_Pos17 := Defer_Pos76; Or_Res17 := Defer_Res76; goto Exit_Or18; end if; Defer_Res77 := Package_Body_Transform_Parse1 (Parser, Pos); Defer_Pos77 := Parser.Current_Pos; if Defer_Pos77 /= No_Token_Index then Or_Pos17 := Defer_Pos77; Or_Res17 := Defer_Res77; goto Exit_Or18; end if; Defer_Res78 := Task_Body_Transform_Parse1 (Parser, Pos); Defer_Pos78 := Parser.Current_Pos; if Defer_Pos78 /= No_Token_Index then Or_Pos17 := Defer_Pos78; Or_Res17 := Defer_Res78; goto Exit_Or18; end if; Defer_Res79 := Protected_Body_Transform_Parse1 (Parser, Pos); Defer_Pos79 := Parser.Current_Pos; if Defer_Pos79 /= No_Token_Index then Or_Pos17 := Defer_Pos79; Or_Res17 := Defer_Res79; goto Exit_Or18; end if; Defer_Res80 := Entry_Body_Transform_Parse3 (Parser, Pos); Defer_Pos80 := Parser.Current_Pos; if Defer_Pos80 /= No_Token_Index then Or_Pos17 := Defer_Pos80; Or_Res17 := Defer_Res80; goto Exit_Or18; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Body_Or_Parse0_Memo, Or_Pos17 /= No_Token_Index, Or_Res17, Pos, Or_Pos17); Parser.Current_Pos := Or_Pos17; return Or_Res17; end Body_Or_Parse0; function Body_Stub_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Body_Stub is use Bare_Body_Stub_Memos; Defer_Pos81 : Token_Index := No_Token_Index; Defer_Res81 : Bare_Subp_Body_Stub := No_Bare_Ada_Node; Defer_Pos82 : Token_Index := No_Token_Index; Defer_Res82 : Bare_Package_Body_Stub := No_Bare_Ada_Node; Defer_Pos83 : Token_Index := No_Token_Index; Defer_Res83 : Bare_Task_Body_Stub := No_Bare_Ada_Node; Defer_Pos84 : Token_Index := No_Token_Index; Defer_Res84 : Bare_Protected_Body_Stub := No_Bare_Ada_Node; Or_Pos18 : Token_Index := No_Token_Index; Or_Res18 : Bare_Body_Stub := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Body_Stub_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res18 := M.Instance; return Or_Res18; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res18; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos18 := No_Token_Index; Or_Res18 := No_Bare_Ada_Node; Defer_Res81 := Subp_Body_Stub_Transform_Parse0 (Parser, Pos); Defer_Pos81 := Parser.Current_Pos; if Defer_Pos81 /= No_Token_Index then Or_Pos18 := Defer_Pos81; Or_Res18 := Defer_Res81; goto Exit_Or19; end if; Defer_Res82 := Package_Body_Stub_Transform_Parse0 (Parser, Pos); Defer_Pos82 := Parser.Current_Pos; if Defer_Pos82 /= No_Token_Index then Or_Pos18 := Defer_Pos82; Or_Res18 := Defer_Res82; goto Exit_Or19; end if; Defer_Res83 := Task_Body_Stub_Transform_Parse0 (Parser, Pos); Defer_Pos83 := Parser.Current_Pos; if Defer_Pos83 /= No_Token_Index then Or_Pos18 := Defer_Pos83; Or_Res18 := Defer_Res83; goto Exit_Or19; end if; Defer_Res84 := Protected_Body_Stub_Transform_Parse0 (Parser, Pos); Defer_Pos84 := Parser.Current_Pos; if Defer_Pos84 /= No_Token_Index then Or_Pos18 := Defer_Pos84; Or_Res18 := Defer_Res84; goto Exit_Or19; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Body_Stub_Or_Parse0_Memo, Or_Pos18 /= No_Token_Index, Or_Res18, Pos, Or_Pos18); Parser.Current_Pos := Or_Pos18; return Or_Res18; end Body_Stub_Or_Parse0; function Boolean_Op_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Op is use Bare_Op_Memos; Row_Pos45 : Token_Index := No_Token_Index; Token_Pos64 : Token_Index := No_Token_Index; Token_Res64 : Token_Index := No_Token_Index; Transform_Res35 : Bare_Op_Xor := No_Bare_Ada_Node; Transform_Diags35 : Ada.Containers.Count_Type; Row_Pos46 : Token_Index := No_Token_Index; Token_Pos65 : Token_Index := No_Token_Index; Token_Res65 : Token_Index := No_Token_Index; Token_Pos66 : Token_Index := No_Token_Index; Token_Res66 : Token_Index := No_Token_Index; Transform_Res36 : Bare_Op_And_Then := No_Bare_Ada_Node; Transform_Diags36 : Ada.Containers.Count_Type; Row_Pos47 : Token_Index := No_Token_Index; Token_Pos67 : Token_Index := No_Token_Index; Token_Res67 : Token_Index := No_Token_Index; Transform_Res37 : Bare_Op_And := No_Bare_Ada_Node; Transform_Diags37 : Ada.Containers.Count_Type; Row_Pos48 : Token_Index := No_Token_Index; Token_Pos68 : Token_Index := No_Token_Index; Token_Res68 : Token_Index := No_Token_Index; Token_Pos69 : Token_Index := No_Token_Index; Token_Res69 : Token_Index := No_Token_Index; Transform_Res38 : Bare_Op_Or_Else := No_Bare_Ada_Node; Transform_Diags38 : Ada.Containers.Count_Type; Row_Pos49 : Token_Index := No_Token_Index; Token_Pos70 : Token_Index := No_Token_Index; Token_Res70 : Token_Index := No_Token_Index; Transform_Res39 : Bare_Op_Or := No_Bare_Ada_Node; Transform_Diags39 : Ada.Containers.Count_Type; Or_Pos19 : Token_Index := No_Token_Index; Or_Res19 : Bare_Op := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Boolean_Op_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res19 := M.Instance; return Or_Res19; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res19; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos19 := No_Token_Index; Or_Res19 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags35 := Parser.Diagnostics.Length; -- Start row_code Row_Pos45 := Pos; -- Start tok_code Token_Res64 := Row_Pos45; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res64)); begin if T.Kind /= From_Token_Kind (Ada_Xor) then Token_Pos64 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos45 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos45, Expected_Token_Id => Ada_Xor, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos64 := Row_Pos45 + 1; end if; end; -- End tok_code if Token_Pos64 /= No_Token_Index then Row_Pos45 := Token_Pos64; else Row_Pos45 := No_Token_Index; goto Exit_Row45_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos45 /= No_Token_Index then Transform_Res35 := Allocate_Op_Xor (Parser.Mem_Pool); Initialize (Self => Transform_Res35, Kind => Ada_Op_Xor, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos45 = Pos then No_Token_Index else Row_Pos45 - 1)); Initialize_Fields_For_Op_Xor (Self => Transform_Res35); elsif Row_Pos45 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags35); end if; -- End transform_code if Row_Pos45 /= No_Token_Index then Or_Pos19 := Row_Pos45; Or_Res19 := Transform_Res35; goto Exit_Or20; end if; -- Start transform_code Transform_Diags36 := Parser.Diagnostics.Length; -- Start row_code Row_Pos46 := Pos; -- Start tok_code Token_Res65 := Row_Pos46; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res65)); begin if T.Kind /= From_Token_Kind (Ada_And) then Token_Pos65 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos46 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos46, Expected_Token_Id => Ada_And, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos65 := Row_Pos46 + 1; end if; end; -- End tok_code if Token_Pos65 /= No_Token_Index then Row_Pos46 := Token_Pos65; else Row_Pos46 := No_Token_Index; goto Exit_Row46_0; end if; -- Start tok_code Token_Res66 := Row_Pos46; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res66)); begin if T.Kind /= From_Token_Kind (Ada_Then) then Token_Pos66 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos46 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos46, Expected_Token_Id => Ada_Then, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos66 := Row_Pos46 + 1; end if; end; -- End tok_code if Token_Pos66 /= No_Token_Index then Row_Pos46 := Token_Pos66; else Row_Pos46 := No_Token_Index; goto Exit_Row46_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos46 /= No_Token_Index then Transform_Res36 := Allocate_Op_And_Then (Parser.Mem_Pool); Initialize (Self => Transform_Res36, Kind => Ada_Op_And_Then, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos46 = Pos then No_Token_Index else Row_Pos46 - 1)); Initialize_Fields_For_Op_And_Then (Self => Transform_Res36); elsif Row_Pos46 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags36); end if; -- End transform_code if Row_Pos46 /= No_Token_Index then Or_Pos19 := Row_Pos46; Or_Res19 := Transform_Res36; goto Exit_Or20; end if; -- Start transform_code Transform_Diags37 := Parser.Diagnostics.Length; -- Start row_code Row_Pos47 := Pos; -- Start tok_code Token_Res67 := Row_Pos47; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res67)); begin if T.Kind /= From_Token_Kind (Ada_And) then Token_Pos67 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos47 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos47, Expected_Token_Id => Ada_And, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos67 := Row_Pos47 + 1; end if; end; -- End tok_code if Token_Pos67 /= No_Token_Index then Row_Pos47 := Token_Pos67; else Row_Pos47 := No_Token_Index; goto Exit_Row47_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos47 /= No_Token_Index then Transform_Res37 := Allocate_Op_And (Parser.Mem_Pool); Initialize (Self => Transform_Res37, Kind => Ada_Op_And, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos47 = Pos then No_Token_Index else Row_Pos47 - 1)); Initialize_Fields_For_Op_And (Self => Transform_Res37); elsif Row_Pos47 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags37); end if; -- End transform_code if Row_Pos47 /= No_Token_Index then Or_Pos19 := Row_Pos47; Or_Res19 := Transform_Res37; goto Exit_Or20; end if; -- Start transform_code Transform_Diags38 := Parser.Diagnostics.Length; -- Start row_code Row_Pos48 := Pos; -- Start tok_code Token_Res68 := Row_Pos48; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res68)); begin if T.Kind /= From_Token_Kind (Ada_Or) then Token_Pos68 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos48 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos48, Expected_Token_Id => Ada_Or, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos68 := Row_Pos48 + 1; end if; end; -- End tok_code if Token_Pos68 /= No_Token_Index then Row_Pos48 := Token_Pos68; else Row_Pos48 := No_Token_Index; goto Exit_Row48_0; end if; -- Start tok_code Token_Res69 := Row_Pos48; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res69)); begin if T.Kind /= From_Token_Kind (Ada_Else) then Token_Pos69 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos48 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos48, Expected_Token_Id => Ada_Else, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos69 := Row_Pos48 + 1; end if; end; -- End tok_code if Token_Pos69 /= No_Token_Index then Row_Pos48 := Token_Pos69; else Row_Pos48 := No_Token_Index; goto Exit_Row48_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos48 /= No_Token_Index then Transform_Res38 := Allocate_Op_Or_Else (Parser.Mem_Pool); Initialize (Self => Transform_Res38, Kind => Ada_Op_Or_Else, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos48 = Pos then No_Token_Index else Row_Pos48 - 1)); Initialize_Fields_For_Op_Or_Else (Self => Transform_Res38); elsif Row_Pos48 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags38); end if; -- End transform_code if Row_Pos48 /= No_Token_Index then Or_Pos19 := Row_Pos48; Or_Res19 := Transform_Res38; goto Exit_Or20; end if; -- Start transform_code Transform_Diags39 := Parser.Diagnostics.Length; -- Start row_code Row_Pos49 := Pos; -- Start tok_code Token_Res70 := Row_Pos49; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res70)); begin if T.Kind /= From_Token_Kind (Ada_Or) then Token_Pos70 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos49 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos49, Expected_Token_Id => Ada_Or, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos70 := Row_Pos49 + 1; end if; end; -- End tok_code if Token_Pos70 /= No_Token_Index then Row_Pos49 := Token_Pos70; else Row_Pos49 := No_Token_Index; goto Exit_Row49_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos49 /= No_Token_Index then Transform_Res39 := Allocate_Op_Or (Parser.Mem_Pool); Initialize (Self => Transform_Res39, Kind => Ada_Op_Or, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos49 = Pos then No_Token_Index else Row_Pos49 - 1)); Initialize_Fields_For_Op_Or (Self => Transform_Res39); elsif Row_Pos49 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags39); end if; -- End transform_code if Row_Pos49 /= No_Token_Index then Or_Pos19 := Row_Pos49; Or_Res19 := Transform_Res39; goto Exit_Or20; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Boolean_Op_Or_Parse0_Memo, Or_Pos19 /= No_Token_Index, Or_Res19, Pos, Or_Pos19); Parser.Current_Pos := Or_Pos19; return Or_Res19; end Boolean_Op_Or_Parse0; function Box_Expr_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Box_Expr is use Bare_Box_Expr_Memos; Row_Pos50 : Token_Index := No_Token_Index; Token_Pos71 : Token_Index := No_Token_Index; Token_Res71 : Token_Index := No_Token_Index; Transform_Res40 : Bare_Box_Expr := No_Bare_Ada_Node; Transform_Diags40 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Box_Expr_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res40 := M.Instance; return Transform_Res40; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res40; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags40 := Parser.Diagnostics.Length; -- Start row_code Row_Pos50 := Pos; -- Start tok_code Token_Res71 := Row_Pos50; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res71)); begin if T.Kind /= From_Token_Kind (Ada_Diamond) then Token_Pos71 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos50 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos50, Expected_Token_Id => Ada_Diamond, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos71 := Row_Pos50 + 1; end if; end; -- End tok_code if Token_Pos71 /= No_Token_Index then Row_Pos50 := Token_Pos71; else Row_Pos50 := No_Token_Index; goto Exit_Row50_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos50 /= No_Token_Index then Transform_Res40 := Allocate_Box_Expr (Parser.Mem_Pool); Initialize (Self => Transform_Res40, Kind => Ada_Box_Expr, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos50 = Pos then No_Token_Index else Row_Pos50 - 1)); Initialize_Fields_For_Box_Expr (Self => Transform_Res40); elsif Row_Pos50 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags40); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Box_Expr_Transform_Parse0_Memo, Row_Pos50 /= No_Token_Index, Transform_Res40, Pos, Row_Pos50); Parser.Current_Pos := Row_Pos50; return Transform_Res40; end Box_Expr_Transform_Parse0; function Bracket_Aggregate_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Aggregate is use Bare_Base_Aggregate_Memos; Nobt5 : Boolean := False; Nobt6 : Boolean := False; Row_Pos51 : Token_Index := No_Token_Index; Token_Pos72 : Token_Index := No_Token_Index; Token_Res72 : Token_Index := No_Token_Index; Defer_Pos85 : Token_Index := No_Token_Index; Defer_Res85 : Bare_Expr := No_Bare_Ada_Node; Token_Pos73 : Token_Index := No_Token_Index; Token_Res73 : Token_Index := No_Token_Index; Token_Pos74 : Token_Index := No_Token_Index; Token_Res74 : Token_Index := No_Token_Index; Lst_Cpos6 : Token_Index := No_Token_Index; Tmp_List6 : Free_Parse_List; Defer_Pos86 : Token_Index := No_Token_Index; Defer_Res86 : Bare_Basic_Assoc := No_Bare_Ada_Node; Token_Pos75 : Token_Index := No_Token_Index; Token_Res75 : Token_Index := No_Token_Index; List_Pos6 : Token_Index := No_Token_Index; List_Res6 : Bare_Assoc_List := No_Bare_Ada_Node; Token_Pos76 : Token_Index := No_Token_Index; Token_Res76 : Token_Index := No_Token_Index; Row_Progress5 : Integer := 0; Transform_Res41 : Bare_Bracket_Delta_Aggregate := No_Bare_Ada_Node; Transform_Has_Failed5 : Boolean := False; Transform_Diags41 : Ada.Containers.Count_Type; Row_Pos52 : Token_Index := No_Token_Index; Token_Pos77 : Token_Index := No_Token_Index; Token_Res77 : Token_Index := No_Token_Index; Row_Pos53 : Token_Index := No_Token_Index; Defer_Pos87 : Token_Index := No_Token_Index; Defer_Res87 : Bare_Expr := No_Bare_Ada_Node; Token_Pos78 : Token_Index := No_Token_Index; Token_Res78 : Token_Index := No_Token_Index; Lst_Cpos7 : Token_Index := No_Token_Index; Tmp_List7 : Free_Parse_List; Defer_Pos88 : Token_Index := No_Token_Index; Defer_Res88 : Bare_Basic_Assoc := No_Bare_Ada_Node; Token_Pos79 : Token_Index := No_Token_Index; Token_Res79 : Token_Index := No_Token_Index; List_Pos7 : Token_Index := No_Token_Index; List_Res7 : Bare_Assoc_List := No_Bare_Ada_Node; Token_Pos80 : Token_Index := No_Token_Index; Token_Res80 : Token_Index := No_Token_Index; Row_Progress6 : Integer := 0; Transform_Res42 : Bare_Bracket_Aggregate := No_Bare_Ada_Node; Transform_Has_Failed6 : Boolean := False; Transform_Diags42 : Ada.Containers.Count_Type; Or_Pos20 : Token_Index := No_Token_Index; Or_Res20 : Bare_Base_Aggregate := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Bracket_Aggregate_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res20 := M.Instance; return Or_Res20; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res20; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos20 := No_Token_Index; Or_Res20 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags41 := Parser.Diagnostics.Length; -- Start row_code Row_Pos51 := Pos; -- Start tok_code Token_Res72 := Row_Pos51; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res72)); begin if T.Kind /= From_Token_Kind (Ada_Brack_Open) then Token_Pos72 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos51 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos51, Expected_Token_Id => Ada_Brack_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos72 := Row_Pos51 + 1; end if; end; -- End tok_code Row_Progress5 := 1; if Token_Pos72 /= No_Token_Index then Row_Pos51 := Token_Pos72; else Row_Pos51 := No_Token_Index; goto Exit_Row51_0; end if; Defer_Res85 := Expr_Or_Parse0 (Parser, Row_Pos51); Defer_Pos85 := Parser.Current_Pos; Row_Progress5 := 2; if Defer_Pos85 /= No_Token_Index then Row_Pos51 := Defer_Pos85; else Row_Pos51 := No_Token_Index; goto Exit_Row51_0; end if; -- Start tok_code Token_Res73 := Row_Pos51; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res73)); begin if T.Kind /= From_Token_Kind (Ada_With) then Token_Pos73 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos51 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos51, Expected_Token_Id => Ada_With, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos73 := Row_Pos51 + 1; end if; end; -- End tok_code Row_Progress5 := 3; if Token_Pos73 /= No_Token_Index then Row_Pos51 := Token_Pos73; else Row_Pos51 := No_Token_Index; goto Exit_Row51_0; end if; -- Start tok_code Token_Res74 := Row_Pos51; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res74)); begin if T.Kind /= From_Token_Kind (Ada_Delta) then Token_Pos74 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos51 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos51, Expected_Token_Id => Ada_Delta, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos74 := Row_Pos51 + 1; end if; end; -- End tok_code Row_Progress5 := 4; if Token_Pos74 /= No_Token_Index then Row_Pos51 := Token_Pos74; else Row_Pos51 := No_Token_Index; goto Exit_Row51_0; end if; Nobt5 := True; Nobt5 := Nobt5; Row_Progress5 := 5; if Row_Pos51 /= No_Token_Index then Row_Pos51 := Row_Pos51; else Row_Pos51 := No_Token_Index; goto Exit_Row51_0; end if; -- Start list_code List_Pos6 := No_Token_Index; Lst_Cpos6 := Row_Pos51; Tmp_List6 := Get_Parse_List (Parser); loop Defer_Res86 := Aggregate_Assoc_Or_Parse1 (Parser, Lst_Cpos6); Defer_Pos86 := Parser.Current_Pos; exit when Defer_Pos86 = No_Token_Index; List_Pos6 := Defer_Pos86; Lst_Cpos6 := List_Pos6; Tmp_List6.Nodes.Append (Defer_Res86); -- Start tok_code Token_Res75 := Lst_Cpos6; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res75)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos75 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos6 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos6, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos75 := Lst_Cpos6 + 1; end if; end; -- End tok_code if Token_Pos75 /= No_Token_Index then Lst_Cpos6 := Token_Pos75; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List6.Nodes.Length; begin List_Res6 := Allocate_Assoc_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos51; Token_End := (if Lst_Cpos6 = Row_Pos51 then Row_Pos51 else Lst_Cpos6 - 1); else Token_Start := Token_Index'Max (Row_Pos51, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res6, Kind => Ada_Assoc_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res6, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List6.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res6.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List6); -- End list_code Row_Progress5 := 6; if List_Pos6 /= No_Token_Index then Row_Pos51 := List_Pos6; else Row_Pos51 := No_Token_Index; goto Exit_Row51_0; end if; -- Start tok_code Token_Res76 := Row_Pos51; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res76)); begin if T.Kind /= From_Token_Kind (Ada_Brack_Close) then Token_Pos76 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos51 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos51, Expected_Token_Id => Ada_Brack_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos76 := Row_Pos51 + 1; end if; end; -- End tok_code Row_Progress5 := 7; if Token_Pos76 /= No_Token_Index then Row_Pos51 := Token_Pos76; else Row_Pos51 := No_Token_Index; goto Exit_Row51_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos51 = No_Token_Index and then Nobt5 then Row_Pos51 := Parser.Last_Fail.Pos; Transform_Has_Failed5 := True; end if; if Row_Pos51 /= No_Token_Index then Transform_Res41 := Allocate_Bracket_Delta_Aggregate (Parser.Mem_Pool); Initialize (Self => Transform_Res41, Kind => Ada_Bracket_Delta_Aggregate, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos51 = Pos then No_Token_Index else Row_Pos51 - 1)); Initialize_Fields_For_Bracket_Delta_Aggregate (Self => Transform_Res41, Base_Aggregate_F_Ancestor_Expr => Defer_Res85, Base_Aggregate_F_Assocs => List_Res6); if Defer_Res85 /= null and then Is_Incomplete (Defer_Res85) then Transform_Res41.Last_Attempted_Child := 0; elsif Defer_Res85 /= null and then not Is_Ghost (Defer_Res85) then Transform_Res41.Last_Attempted_Child := -1; end if; if List_Res6 /= null and then Is_Incomplete (List_Res6) then Transform_Res41.Last_Attempted_Child := 0; elsif List_Res6 /= null and then not Is_Ghost (List_Res6) then Transform_Res41.Last_Attempted_Child := -1; end if; if Transform_Has_Failed5 then Transform_Res41.Last_Attempted_Child := Row_Progress5; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos51 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags41); end if; -- End transform_code if Row_Pos51 /= No_Token_Index then Or_Pos20 := Row_Pos51; Or_Res20 := Transform_Res41; goto Exit_Or21; end if; -- Start transform_code Transform_Diags42 := Parser.Diagnostics.Length; -- Start row_code Row_Pos52 := Pos; -- Start tok_code Token_Res77 := Row_Pos52; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res77)); begin if T.Kind /= From_Token_Kind (Ada_Brack_Open) then Token_Pos77 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos52 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos52, Expected_Token_Id => Ada_Brack_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos77 := Row_Pos52 + 1; end if; end; -- End tok_code Row_Progress6 := 1; if Token_Pos77 /= No_Token_Index then Row_Pos52 := Token_Pos77; else Row_Pos52 := No_Token_Index; goto Exit_Row52_0; end if; Nobt6 := True; Nobt6 := Nobt6; Row_Progress6 := 2; if Row_Pos52 /= No_Token_Index then Row_Pos52 := Row_Pos52; else Row_Pos52 := No_Token_Index; goto Exit_Row52_0; end if; -- Start opt_code -- Start row_code Row_Pos53 := Row_Pos52; Defer_Res87 := Expr_Or_Parse0 (Parser, Row_Pos53); Defer_Pos87 := Parser.Current_Pos; if Defer_Pos87 /= No_Token_Index then Row_Pos53 := Defer_Pos87; else Row_Pos53 := No_Token_Index; goto Exit_Row53_0; end if; -- Start tok_code Token_Res78 := Row_Pos53; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res78)); begin if T.Kind /= From_Token_Kind (Ada_With) then Token_Pos78 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos53 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos53, Expected_Token_Id => Ada_With, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos78 := Row_Pos53 + 1; end if; end; -- End tok_code if Token_Pos78 /= No_Token_Index then Row_Pos53 := Token_Pos78; else Row_Pos53 := No_Token_Index; goto Exit_Row53_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos53 = No_Token_Index then Defer_Res87 := No_Bare_Ada_Node; Row_Pos53 := Row_Pos52; end if; -- End opt_code Row_Progress6 := 3; if Row_Pos53 /= No_Token_Index then Row_Pos52 := Row_Pos53; else Row_Pos52 := No_Token_Index; goto Exit_Row52_0; end if; -- Start list_code List_Pos7 := Row_Pos52; Lst_Cpos7 := Row_Pos52; Tmp_List7 := Get_Parse_List (Parser); loop Defer_Res88 := Aggregate_Assoc_Or_Parse1 (Parser, Lst_Cpos7); Defer_Pos88 := Parser.Current_Pos; exit when Defer_Pos88 = No_Token_Index; List_Pos7 := Defer_Pos88; Lst_Cpos7 := List_Pos7; Tmp_List7.Nodes.Append (Defer_Res88); -- Start tok_code Token_Res79 := Lst_Cpos7; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res79)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos79 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos7 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos7, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos79 := Lst_Cpos7 + 1; end if; end; -- End tok_code if Token_Pos79 /= No_Token_Index then Lst_Cpos7 := Token_Pos79; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List7.Nodes.Length; begin List_Res7 := Allocate_Assoc_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos52; Token_End := (if Lst_Cpos7 = Row_Pos52 then Row_Pos52 else Lst_Cpos7 - 1); else Token_Start := Token_Index'Max (Row_Pos52, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res7, Kind => Ada_Assoc_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res7, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List7.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res7.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List7); -- End list_code Row_Progress6 := 4; if List_Pos7 /= No_Token_Index then Row_Pos52 := List_Pos7; else Row_Pos52 := No_Token_Index; goto Exit_Row52_0; end if; -- Start tok_code Token_Res80 := Row_Pos52; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res80)); begin if T.Kind /= From_Token_Kind (Ada_Brack_Close) then Token_Pos80 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos52 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos52, Expected_Token_Id => Ada_Brack_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos80 := Row_Pos52 + 1; end if; end; -- End tok_code Row_Progress6 := 5; if Token_Pos80 /= No_Token_Index then Row_Pos52 := Token_Pos80; else Row_Pos52 := No_Token_Index; goto Exit_Row52_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos52 = No_Token_Index and then Nobt6 then Row_Pos52 := Parser.Last_Fail.Pos; Transform_Has_Failed6 := True; end if; if Row_Pos52 /= No_Token_Index then Transform_Res42 := Allocate_Bracket_Aggregate (Parser.Mem_Pool); Initialize (Self => Transform_Res42, Kind => Ada_Bracket_Aggregate, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos52 = Pos then No_Token_Index else Row_Pos52 - 1)); Initialize_Fields_For_Bracket_Aggregate (Self => Transform_Res42, Base_Aggregate_F_Ancestor_Expr => Defer_Res87, Base_Aggregate_F_Assocs => List_Res7); if Defer_Res87 /= null and then Is_Incomplete (Defer_Res87) then Transform_Res42.Last_Attempted_Child := 0; elsif Defer_Res87 /= null and then not Is_Ghost (Defer_Res87) then Transform_Res42.Last_Attempted_Child := -1; end if; if List_Res7 /= null and then Is_Incomplete (List_Res7) then Transform_Res42.Last_Attempted_Child := 0; elsif List_Res7 /= null and then not Is_Ghost (List_Res7) then Transform_Res42.Last_Attempted_Child := -1; end if; if Transform_Has_Failed6 then Transform_Res42.Last_Attempted_Child := Row_Progress6; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos52 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags42); end if; -- End transform_code if Row_Pos52 /= No_Token_Index then Or_Pos20 := Row_Pos52; Or_Res20 := Transform_Res42; goto Exit_Or21; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Bracket_Aggregate_Or_Parse0_Memo, Or_Pos20 /= No_Token_Index, Or_Res20, Pos, Or_Pos20); Parser.Current_Pos := Or_Pos20; return Or_Res20; end Bracket_Aggregate_Or_Parse0; function Call_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Call_Stmt is use Bare_Call_Stmt_Memos; Row_Pos54 : Token_Index := No_Token_Index; Defer_Pos89 : Token_Index := No_Token_Index; Defer_Res89 : Bare_Name := No_Bare_Ada_Node; Token_Pos81 : Token_Index := No_Token_Index; Token_Res81 : Token_Index := No_Token_Index; Transform_Res43 : Bare_Call_Stmt := No_Bare_Ada_Node; Transform_Diags43 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Call_Stmt_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res43 := M.Instance; return Transform_Res43; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res43; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags43 := Parser.Diagnostics.Length; -- Start row_code Row_Pos54 := Pos; Defer_Res89 := Name_Or_Parse2 (Parser, Row_Pos54); Defer_Pos89 := Parser.Current_Pos; if Defer_Pos89 /= No_Token_Index then Row_Pos54 := Defer_Pos89; else Row_Pos54 := No_Token_Index; goto Exit_Row54_0; end if; -- Start opt_code -- Start tok_code Token_Res81 := Row_Pos54; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res81)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos81 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos54 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos54, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos81 := Row_Pos54 + 1; end if; end; -- End tok_code if Token_Pos81 = No_Token_Index then Token_Res81 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos54)), To_Text ("Missing ';'")); Token_Pos81 := Row_Pos54; end if; -- End opt_code if Token_Pos81 /= No_Token_Index then Row_Pos54 := Token_Pos81; else Row_Pos54 := No_Token_Index; goto Exit_Row54_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos54 /= No_Token_Index then Transform_Res43 := Allocate_Call_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res43, Kind => Ada_Call_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos54 = Pos then No_Token_Index else Row_Pos54 - 1)); Initialize_Fields_For_Call_Stmt (Self => Transform_Res43, Call_Stmt_F_Call => Defer_Res89); if Defer_Res89 /= null and then Is_Incomplete (Defer_Res89) then Transform_Res43.Last_Attempted_Child := 0; elsif Defer_Res89 /= null and then not Is_Ghost (Defer_Res89) then Transform_Res43.Last_Attempted_Child := -1; end if; elsif Row_Pos54 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags43); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Call_Stmt_Transform_Parse0_Memo, Row_Pos54 /= No_Token_Index, Transform_Res43, Pos, Row_Pos54); Parser.Current_Pos := Row_Pos54; return Transform_Res43; end Call_Stmt_Transform_Parse0; function Call_Suffix_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Defer_Pos90 : Token_Index := No_Token_Index; Defer_Res90 : Bare_Discrete_Subtype_Indication := No_Bare_Ada_Node; Defer_Pos91 : Token_Index := No_Token_Index; Defer_Res91 : Bare_Expr := No_Bare_Ada_Node; Lst_Cpos8 : Token_Index := No_Token_Index; Tmp_List8 : Free_Parse_List; Defer_Pos92 : Token_Index := No_Token_Index; Defer_Res92 : Bare_Param_Assoc := No_Bare_Ada_Node; Token_Pos82 : Token_Index := No_Token_Index; Token_Res82 : Token_Index := No_Token_Index; List_Pos8 : Token_Index := No_Token_Index; List_Res8 : Bare_Assoc_List := No_Bare_Ada_Node; Or_Pos21 : Token_Index := No_Token_Index; Or_Res21 : Bare_Ada_Node := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Call_Suffix_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res21 := M.Instance; return Or_Res21; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res21; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos21 := No_Token_Index; Or_Res21 := No_Bare_Ada_Node; Defer_Res90 := Discrete_Subtype_Indication_Transform_Parse0 (Parser, Pos); Defer_Pos90 := Parser.Current_Pos; if Defer_Pos90 /= No_Token_Index then Or_Pos21 := Defer_Pos90; Or_Res21 := Defer_Res90; goto Exit_Or22; end if; Defer_Res91 := Discrete_Range_Or_Parse0 (Parser, Pos); Defer_Pos91 := Parser.Current_Pos; if Defer_Pos91 /= No_Token_Index then Or_Pos21 := Defer_Pos91; Or_Res21 := Defer_Res91; goto Exit_Or22; end if; -- Start list_code List_Pos8 := No_Token_Index; Lst_Cpos8 := Pos; Tmp_List8 := Get_Parse_List (Parser); loop Defer_Res92 := Param_Assoc_Transform_Parse0 (Parser, Lst_Cpos8); Defer_Pos92 := Parser.Current_Pos; exit when Defer_Pos92 = No_Token_Index; List_Pos8 := Defer_Pos92; Lst_Cpos8 := List_Pos8; Tmp_List8.Nodes.Append (Defer_Res92); -- Start tok_code Token_Res82 := Lst_Cpos8; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res82)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos82 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos8 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos8, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos82 := Lst_Cpos8 + 1; end if; end; -- End tok_code if Token_Pos82 /= No_Token_Index then Lst_Cpos8 := Token_Pos82; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List8.Nodes.Length; begin List_Res8 := Allocate_Assoc_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Pos; Token_End := (if Lst_Cpos8 = Pos then Pos else Lst_Cpos8 - 1); else Token_Start := Token_Index'Max (Pos, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res8, Kind => Ada_Assoc_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res8, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List8.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res8.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List8); -- End list_code if List_Pos8 /= No_Token_Index then Or_Pos21 := List_Pos8; Or_Res21 := List_Res8; goto Exit_Or22; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Call_Suffix_Or_Parse0_Memo, Or_Pos21 /= No_Token_Index, Or_Res21, Pos, Or_Pos21); Parser.Current_Pos := Or_Pos21; return Or_Res21; end Call_Suffix_Or_Parse0; function Case_Alt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Case_Stmt_Alternative is use Bare_Case_Stmt_Alternative_Memos; Nobt7 : Boolean := False; Row_Pos55 : Token_Index := No_Token_Index; Token_Pos83 : Token_Index := No_Token_Index; Token_Res83 : Token_Index := No_Token_Index; Defer_Pos93 : Token_Index := No_Token_Index; Defer_Res93 : Bare_Alternatives_List := No_Bare_Ada_Node; Token_Pos84 : Token_Index := No_Token_Index; Token_Res84 : Token_Index := No_Token_Index; Defer_Pos94 : Token_Index := No_Token_Index; Defer_Res94 : Bare_Stmt_List := No_Bare_Ada_Node; Row_Progress7 : Integer := 0; Transform_Res44 : Bare_Case_Stmt_Alternative := No_Bare_Ada_Node; Transform_Has_Failed7 : Boolean := False; Transform_Diags44 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Case_Alt_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res44 := M.Instance; return Transform_Res44; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res44; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags44 := Parser.Diagnostics.Length; -- Start row_code Row_Pos55 := Pos; -- Start tok_code Token_Res83 := Row_Pos55; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res83)); begin if T.Kind /= From_Token_Kind (Ada_When) then Token_Pos83 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos55 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos55, Expected_Token_Id => Ada_When, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos83 := Row_Pos55 + 1; end if; end; -- End tok_code Row_Progress7 := 1; if Token_Pos83 /= No_Token_Index then Row_Pos55 := Token_Pos83; else Row_Pos55 := No_Token_Index; goto Exit_Row55_0; end if; Nobt7 := True; Nobt7 := Nobt7; Row_Progress7 := 2; if Row_Pos55 /= No_Token_Index then Row_Pos55 := Row_Pos55; else Row_Pos55 := No_Token_Index; goto Exit_Row55_0; end if; Defer_Res93 := Choice_List_List_Parse0 (Parser, Row_Pos55); Defer_Pos93 := Parser.Current_Pos; Row_Progress7 := 3; if Defer_Pos93 /= No_Token_Index then Row_Pos55 := Defer_Pos93; else Row_Pos55 := No_Token_Index; goto Exit_Row55_0; end if; -- Start tok_code Token_Res84 := Row_Pos55; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res84)); begin if T.Kind /= From_Token_Kind (Ada_Arrow) then Token_Pos84 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos55 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos55, Expected_Token_Id => Ada_Arrow, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos84 := Row_Pos55 + 1; end if; end; -- End tok_code Row_Progress7 := 4; if Token_Pos84 /= No_Token_Index then Row_Pos55 := Token_Pos84; else Row_Pos55 := No_Token_Index; goto Exit_Row55_0; end if; Parser.Private_Part.Dont_Skip.Append (Dontskip_Case_Alt0_Extract_Parse0'Access); Defer_Res94 := Stmts_List_Parse0 (Parser, Row_Pos55); Defer_Pos94 := Parser.Current_Pos; Parser.Private_Part.Dont_Skip.Delete_Last; Row_Progress7 := 5; if Defer_Pos94 /= No_Token_Index then Row_Pos55 := Defer_Pos94; else Row_Pos55 := No_Token_Index; goto Exit_Row55_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos55 = No_Token_Index and then Nobt7 then Row_Pos55 := Parser.Last_Fail.Pos; Transform_Has_Failed7 := True; end if; if Row_Pos55 /= No_Token_Index then Transform_Res44 := Allocate_Case_Stmt_Alternative (Parser.Mem_Pool); Initialize (Self => Transform_Res44, Kind => Ada_Case_Stmt_Alternative, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos55 = Pos then No_Token_Index else Row_Pos55 - 1)); Initialize_Fields_For_Case_Stmt_Alternative (Self => Transform_Res44, Case_Stmt_Alternative_F_Choices => Defer_Res93, Case_Stmt_Alternative_F_Stmts => Defer_Res94); if Defer_Res93 /= null and then Is_Incomplete (Defer_Res93) then Transform_Res44.Last_Attempted_Child := 0; elsif Defer_Res93 /= null and then not Is_Ghost (Defer_Res93) then Transform_Res44.Last_Attempted_Child := -1; end if; if Defer_Res94 /= null and then Is_Incomplete (Defer_Res94) then Transform_Res44.Last_Attempted_Child := 0; elsif Defer_Res94 /= null and then not Is_Ghost (Defer_Res94) then Transform_Res44.Last_Attempted_Child := -1; end if; if Transform_Has_Failed7 then Transform_Res44.Last_Attempted_Child := Row_Progress7; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos55 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags44); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Case_Alt_Transform_Parse0_Memo, Row_Pos55 /= No_Token_Index, Transform_Res44, Pos, Row_Pos55); Parser.Current_Pos := Row_Pos55; return Transform_Res44; end Case_Alt_Transform_Parse0; function Case_Expr_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Case_Expr is use Bare_Case_Expr_Memos; Row_Pos56 : Token_Index := No_Token_Index; Token_Pos85 : Token_Index := No_Token_Index; Token_Res85 : Token_Index := No_Token_Index; Defer_Pos95 : Token_Index := No_Token_Index; Defer_Res95 : Bare_Expr := No_Bare_Ada_Node; Token_Pos86 : Token_Index := No_Token_Index; Token_Res86 : Token_Index := No_Token_Index; Lst_Cpos9 : Token_Index := No_Token_Index; Tmp_List9 : Free_Parse_List; Defer_Pos96 : Token_Index := No_Token_Index; Defer_Res96 : Bare_Case_Expr_Alternative := No_Bare_Ada_Node; Token_Pos87 : Token_Index := No_Token_Index; Token_Res87 : Token_Index := No_Token_Index; List_Pos9 : Token_Index := No_Token_Index; List_Res9 : Bare_Case_Expr_Alternative_List := No_Bare_Ada_Node; Transform_Res45 : Bare_Case_Expr := No_Bare_Ada_Node; Transform_Diags45 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Case_Expr_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res45 := M.Instance; return Transform_Res45; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res45; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags45 := Parser.Diagnostics.Length; -- Start row_code Row_Pos56 := Pos; -- Start tok_code Token_Res85 := Row_Pos56; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res85)); begin if T.Kind /= From_Token_Kind (Ada_Case) then Token_Pos85 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos56 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos56, Expected_Token_Id => Ada_Case, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos85 := Row_Pos56 + 1; end if; end; -- End tok_code if Token_Pos85 /= No_Token_Index then Row_Pos56 := Token_Pos85; else Row_Pos56 := No_Token_Index; goto Exit_Row56_0; end if; Defer_Res95 := Expr_Or_Parse0 (Parser, Row_Pos56); Defer_Pos95 := Parser.Current_Pos; if Defer_Pos95 /= No_Token_Index then Row_Pos56 := Defer_Pos95; else Row_Pos56 := No_Token_Index; goto Exit_Row56_0; end if; -- Start tok_code Token_Res86 := Row_Pos56; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res86)); begin if T.Kind /= From_Token_Kind (Ada_Is) then Token_Pos86 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos56 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos56, Expected_Token_Id => Ada_Is, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos86 := Row_Pos56 + 1; end if; end; -- End tok_code if Token_Pos86 /= No_Token_Index then Row_Pos56 := Token_Pos86; else Row_Pos56 := No_Token_Index; goto Exit_Row56_0; end if; -- Start list_code List_Pos9 := No_Token_Index; Lst_Cpos9 := Row_Pos56; Tmp_List9 := Get_Parse_List (Parser); loop Defer_Res96 := Case_Expr_Alt_Transform_Parse0 (Parser, Lst_Cpos9); Defer_Pos96 := Parser.Current_Pos; exit when Defer_Pos96 = No_Token_Index; List_Pos9 := Defer_Pos96; Lst_Cpos9 := List_Pos9; Tmp_List9.Nodes.Append (Defer_Res96); -- Start tok_code Token_Res87 := Lst_Cpos9; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res87)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos87 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos9 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos9, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos87 := Lst_Cpos9 + 1; end if; end; -- End tok_code if Token_Pos87 /= No_Token_Index then Lst_Cpos9 := Token_Pos87; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List9.Nodes.Length; begin List_Res9 := Allocate_Case_Expr_Alternative_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos56; Token_End := (if Lst_Cpos9 = Row_Pos56 then Row_Pos56 else Lst_Cpos9 - 1); else Token_Start := Token_Index'Max (Row_Pos56, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res9, Kind => Ada_Case_Expr_Alternative_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res9, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List9.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res9.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List9); -- End list_code if List_Pos9 /= No_Token_Index then Row_Pos56 := List_Pos9; else Row_Pos56 := No_Token_Index; goto Exit_Row56_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos56 /= No_Token_Index then Transform_Res45 := Allocate_Case_Expr (Parser.Mem_Pool); Initialize (Self => Transform_Res45, Kind => Ada_Case_Expr, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos56 = Pos then No_Token_Index else Row_Pos56 - 1)); Initialize_Fields_For_Case_Expr (Self => Transform_Res45, Case_Expr_F_Expr => Defer_Res95, Case_Expr_F_Cases => List_Res9); if Defer_Res95 /= null and then Is_Incomplete (Defer_Res95) then Transform_Res45.Last_Attempted_Child := 0; elsif Defer_Res95 /= null and then not Is_Ghost (Defer_Res95) then Transform_Res45.Last_Attempted_Child := -1; end if; if List_Res9 /= null and then Is_Incomplete (List_Res9) then Transform_Res45.Last_Attempted_Child := 0; elsif List_Res9 /= null and then not Is_Ghost (List_Res9) then Transform_Res45.Last_Attempted_Child := -1; end if; elsif Row_Pos56 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags45); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Case_Expr_Transform_Parse0_Memo, Row_Pos56 /= No_Token_Index, Transform_Res45, Pos, Row_Pos56); Parser.Current_Pos := Row_Pos56; return Transform_Res45; end Case_Expr_Transform_Parse0; function Case_Expr_Alt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Case_Expr_Alternative is use Bare_Case_Expr_Alternative_Memos; Row_Pos57 : Token_Index := No_Token_Index; Token_Pos88 : Token_Index := No_Token_Index; Token_Res88 : Token_Index := No_Token_Index; Defer_Pos97 : Token_Index := No_Token_Index; Defer_Res97 : Bare_Alternatives_List := No_Bare_Ada_Node; Token_Pos89 : Token_Index := No_Token_Index; Token_Res89 : Token_Index := No_Token_Index; Defer_Pos98 : Token_Index := No_Token_Index; Defer_Res98 : Bare_Expr := No_Bare_Ada_Node; Transform_Res46 : Bare_Case_Expr_Alternative := No_Bare_Ada_Node; Transform_Diags46 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Case_Expr_Alt_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res46 := M.Instance; return Transform_Res46; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res46; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags46 := Parser.Diagnostics.Length; -- Start row_code Row_Pos57 := Pos; -- Start tok_code Token_Res88 := Row_Pos57; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res88)); begin if T.Kind /= From_Token_Kind (Ada_When) then Token_Pos88 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos57 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos57, Expected_Token_Id => Ada_When, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos88 := Row_Pos57 + 1; end if; end; -- End tok_code if Token_Pos88 /= No_Token_Index then Row_Pos57 := Token_Pos88; else Row_Pos57 := No_Token_Index; goto Exit_Row57_0; end if; Defer_Res97 := Choice_List_List_Parse0 (Parser, Row_Pos57); Defer_Pos97 := Parser.Current_Pos; if Defer_Pos97 /= No_Token_Index then Row_Pos57 := Defer_Pos97; else Row_Pos57 := No_Token_Index; goto Exit_Row57_0; end if; -- Start tok_code Token_Res89 := Row_Pos57; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res89)); begin if T.Kind /= From_Token_Kind (Ada_Arrow) then Token_Pos89 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos57 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos57, Expected_Token_Id => Ada_Arrow, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos89 := Row_Pos57 + 1; end if; end; -- End tok_code if Token_Pos89 /= No_Token_Index then Row_Pos57 := Token_Pos89; else Row_Pos57 := No_Token_Index; goto Exit_Row57_0; end if; Defer_Res98 := Expr_Or_Parse0 (Parser, Row_Pos57); Defer_Pos98 := Parser.Current_Pos; if Defer_Pos98 /= No_Token_Index then Row_Pos57 := Defer_Pos98; else Row_Pos57 := No_Token_Index; goto Exit_Row57_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos57 /= No_Token_Index then Transform_Res46 := Allocate_Case_Expr_Alternative (Parser.Mem_Pool); Initialize (Self => Transform_Res46, Kind => Ada_Case_Expr_Alternative, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos57 = Pos then No_Token_Index else Row_Pos57 - 1)); Initialize_Fields_For_Case_Expr_Alternative (Self => Transform_Res46, Case_Expr_Alternative_F_Choices => Defer_Res97, Case_Expr_Alternative_F_Expr => Defer_Res98); if Defer_Res97 /= null and then Is_Incomplete (Defer_Res97) then Transform_Res46.Last_Attempted_Child := 0; elsif Defer_Res97 /= null and then not Is_Ghost (Defer_Res97) then Transform_Res46.Last_Attempted_Child := -1; end if; if Defer_Res98 /= null and then Is_Incomplete (Defer_Res98) then Transform_Res46.Last_Attempted_Child := 0; elsif Defer_Res98 /= null and then not Is_Ghost (Defer_Res98) then Transform_Res46.Last_Attempted_Child := -1; end if; elsif Row_Pos57 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags46); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Case_Expr_Alt_Transform_Parse0_Memo, Row_Pos57 /= No_Token_Index, Transform_Res46, Pos, Row_Pos57); Parser.Current_Pos := Row_Pos57; return Transform_Res46; end Case_Expr_Alt_Transform_Parse0; function Case_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Case_Stmt is use Bare_Case_Stmt_Memos; Nobt8 : Boolean := False; Row_Pos58 : Token_Index := No_Token_Index; Token_Pos90 : Token_Index := No_Token_Index; Token_Res90 : Token_Index := No_Token_Index; Defer_Pos99 : Token_Index := No_Token_Index; Defer_Res99 : Bare_Expr := No_Bare_Ada_Node; Token_Pos91 : Token_Index := No_Token_Index; Token_Res91 : Token_Index := No_Token_Index; Lst_Cpos10 : Token_Index := No_Token_Index; Tmp_List10 : Free_Parse_List; Defer_Pos100 : Token_Index := No_Token_Index; Defer_Res100 : Bare_Pragma_Node := No_Bare_Ada_Node; List_Pos10 : Token_Index := No_Token_Index; List_Res10 : Bare_Pragma_Node_List := No_Bare_Ada_Node; Lst_Cpos11 : Token_Index := No_Token_Index; Tmp_List11 : Free_Parse_List; Defer_Pos101 : Token_Index := No_Token_Index; Defer_Res101 : Bare_Case_Stmt_Alternative := No_Bare_Ada_Node; List_Pos11 : Token_Index := No_Token_Index; List_Res11 : Bare_Case_Stmt_Alternative_List := No_Bare_Ada_Node; Token_Pos92 : Token_Index := No_Token_Index; Token_Res92 : Token_Index := No_Token_Index; Token_Pos93 : Token_Index := No_Token_Index; Token_Res93 : Token_Index := No_Token_Index; Token_Pos94 : Token_Index := No_Token_Index; Token_Res94 : Token_Index := No_Token_Index; Row_Progress8 : Integer := 0; Transform_Res47 : Bare_Case_Stmt := No_Bare_Ada_Node; Transform_Has_Failed8 : Boolean := False; Transform_Diags47 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Case_Stmt_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res47 := M.Instance; return Transform_Res47; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res47; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags47 := Parser.Diagnostics.Length; -- Start row_code Row_Pos58 := Pos; -- Start tok_code Token_Res90 := Row_Pos58; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res90)); begin if T.Kind /= From_Token_Kind (Ada_Case) then Token_Pos90 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos58 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos58, Expected_Token_Id => Ada_Case, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos90 := Row_Pos58 + 1; end if; end; -- End tok_code Row_Progress8 := 1; if Token_Pos90 /= No_Token_Index then Row_Pos58 := Token_Pos90; else Row_Pos58 := No_Token_Index; goto Exit_Row58_0; end if; Nobt8 := True; Nobt8 := Nobt8; Row_Progress8 := 2; if Row_Pos58 /= No_Token_Index then Row_Pos58 := Row_Pos58; else Row_Pos58 := No_Token_Index; goto Exit_Row58_0; end if; Defer_Res99 := Expr_Or_Parse0 (Parser, Row_Pos58); Defer_Pos99 := Parser.Current_Pos; Row_Progress8 := 3; if Defer_Pos99 /= No_Token_Index then Row_Pos58 := Defer_Pos99; else Row_Pos58 := No_Token_Index; goto Exit_Row58_0; end if; -- Start tok_code Token_Res91 := Row_Pos58; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res91)); begin if T.Kind /= From_Token_Kind (Ada_Is) then Token_Pos91 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos58 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos58, Expected_Token_Id => Ada_Is, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos91 := Row_Pos58 + 1; end if; end; -- End tok_code Row_Progress8 := 4; if Token_Pos91 /= No_Token_Index then Row_Pos58 := Token_Pos91; else Row_Pos58 := No_Token_Index; goto Exit_Row58_0; end if; -- Start list_code List_Pos10 := Row_Pos58; Lst_Cpos10 := Row_Pos58; Tmp_List10 := Get_Parse_List (Parser); loop Defer_Res100 := Pragma_Transform_Parse0 (Parser, Lst_Cpos10); Defer_Pos100 := Parser.Current_Pos; exit when Defer_Pos100 = No_Token_Index; List_Pos10 := Defer_Pos100; Lst_Cpos10 := List_Pos10; Tmp_List10.Nodes.Append (Defer_Res100); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List10.Nodes.Length; begin List_Res10 := Allocate_Pragma_Node_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos58; Token_End := (if Lst_Cpos10 = Row_Pos58 then Row_Pos58 else Lst_Cpos10 - 1); else Token_Start := Token_Index'Max (Row_Pos58, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res10, Kind => Ada_Pragma_Node_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res10, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List10.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res10.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List10); -- End list_code Row_Progress8 := 5; if List_Pos10 /= No_Token_Index then Row_Pos58 := List_Pos10; else Row_Pos58 := No_Token_Index; goto Exit_Row58_0; end if; -- Start list_code List_Pos11 := No_Token_Index; Lst_Cpos11 := Row_Pos58; Tmp_List11 := Get_Parse_List (Parser); loop Defer_Res101 := Case_Alt_Transform_Parse0 (Parser, Lst_Cpos11); Defer_Pos101 := Parser.Current_Pos; exit when Defer_Pos101 = No_Token_Index; List_Pos11 := Defer_Pos101; Lst_Cpos11 := List_Pos11; Tmp_List11.Nodes.Append (Defer_Res101); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List11.Nodes.Length; begin List_Res11 := Allocate_Case_Stmt_Alternative_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos58; Token_End := (if Lst_Cpos11 = Row_Pos58 then Row_Pos58 else Lst_Cpos11 - 1); else Token_Start := Token_Index'Max (Row_Pos58, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res11, Kind => Ada_Case_Stmt_Alternative_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res11, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List11.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res11.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List11); -- End list_code Row_Progress8 := 6; if List_Pos11 /= No_Token_Index then Row_Pos58 := List_Pos11; else Row_Pos58 := No_Token_Index; goto Exit_Row58_0; end if; -- Start tok_code Token_Res92 := Row_Pos58; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res92)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos92 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos58 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos58, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos92 := Row_Pos58 + 1; end if; end; -- End tok_code Row_Progress8 := 7; if Token_Pos92 /= No_Token_Index then Row_Pos58 := Token_Pos92; else Row_Pos58 := No_Token_Index; goto Exit_Row58_0; end if; -- Start tok_code Token_Res93 := Row_Pos58; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res93)); begin if T.Kind /= From_Token_Kind (Ada_Case) then Token_Pos93 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos58 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos58, Expected_Token_Id => Ada_Case, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos93 := Row_Pos58 + 1; end if; end; -- End tok_code Row_Progress8 := 8; if Token_Pos93 /= No_Token_Index then Row_Pos58 := Token_Pos93; else Row_Pos58 := No_Token_Index; goto Exit_Row58_0; end if; -- Start tok_code Token_Res94 := Row_Pos58; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res94)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos94 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos58 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos58, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos94 := Row_Pos58 + 1; end if; end; -- End tok_code Row_Progress8 := 9; if Token_Pos94 /= No_Token_Index then Row_Pos58 := Token_Pos94; else Row_Pos58 := No_Token_Index; goto Exit_Row58_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos58 = No_Token_Index and then Nobt8 then Row_Pos58 := Parser.Last_Fail.Pos; Transform_Has_Failed8 := True; end if; if Row_Pos58 /= No_Token_Index then Transform_Res47 := Allocate_Case_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res47, Kind => Ada_Case_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos58 = Pos then No_Token_Index else Row_Pos58 - 1)); Initialize_Fields_For_Case_Stmt (Self => Transform_Res47, Case_Stmt_F_Expr => Defer_Res99, Case_Stmt_F_Pragmas => List_Res10, Case_Stmt_F_Alternatives => List_Res11); if Defer_Res99 /= null and then Is_Incomplete (Defer_Res99) then Transform_Res47.Last_Attempted_Child := 0; elsif Defer_Res99 /= null and then not Is_Ghost (Defer_Res99) then Transform_Res47.Last_Attempted_Child := -1; end if; if List_Res10 /= null and then Is_Incomplete (List_Res10) then Transform_Res47.Last_Attempted_Child := 0; elsif List_Res10 /= null and then not Is_Ghost (List_Res10) then Transform_Res47.Last_Attempted_Child := -1; end if; if List_Res11 /= null and then Is_Incomplete (List_Res11) then Transform_Res47.Last_Attempted_Child := 0; elsif List_Res11 /= null and then not Is_Ghost (List_Res11) then Transform_Res47.Last_Attempted_Child := -1; end if; if Transform_Has_Failed8 then Transform_Res47.Last_Attempted_Child := Row_Progress8; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos58 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags47); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Case_Stmt_Transform_Parse0_Memo, Row_Pos58 /= No_Token_Index, Transform_Res47, Pos, Row_Pos58); Parser.Current_Pos := Row_Pos58; return Transform_Res47; end Case_Stmt_Transform_Parse0; function Char_Literal_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Char_Literal is use Bare_Char_Literal_Memos; Row_Pos59 : Token_Index := No_Token_Index; Token_Pos95 : Token_Index := No_Token_Index; Token_Res95 : Token_Index := No_Token_Index; Transform_Res48 : Bare_Char_Literal := No_Bare_Ada_Node; Transform_Diags48 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Char_Literal_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res48 := M.Instance; return Transform_Res48; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res48; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags48 := Parser.Diagnostics.Length; -- Start row_code Row_Pos59 := Pos; -- Start tok_code Token_Res95 := Row_Pos59; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res95)); begin if T.Kind /= From_Token_Kind (Ada_Char) then Token_Pos95 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos59 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos59, Expected_Token_Id => Ada_Char, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos95 := Row_Pos59 + 1; end if; end; -- End tok_code if Token_Pos95 /= No_Token_Index then Row_Pos59 := Token_Pos95; else Row_Pos59 := No_Token_Index; goto Exit_Row59_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos59 /= No_Token_Index then Transform_Res48 := Allocate_Char_Literal (Parser.Mem_Pool); Initialize (Self => Transform_Res48, Kind => Ada_Char_Literal, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos59 = Pos then No_Token_Index else Row_Pos59 - 1)); Initialize_Fields_For_Char_Literal (Self => Transform_Res48); elsif Row_Pos59 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags48); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Char_Literal_Transform_Parse0_Memo, Row_Pos59 /= No_Token_Index, Transform_Res48, Pos, Row_Pos59); Parser.Current_Pos := Row_Pos59; return Transform_Res48; end Char_Literal_Transform_Parse0; function Choice_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Defer_Pos102 : Token_Index := No_Token_Index; Defer_Res102 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos103 : Token_Index := No_Token_Index; Defer_Res103 : Bare_Discrete_Subtype_Indication := No_Bare_Ada_Node; Defer_Pos104 : Token_Index := No_Token_Index; Defer_Res104 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos105 : Token_Index := No_Token_Index; Defer_Res105 : Bare_Others_Designator := No_Bare_Ada_Node; Or_Pos22 : Token_Index := No_Token_Index; Or_Res22 : Bare_Ada_Node := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Choice_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res22 := M.Instance; return Or_Res22; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res22; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos22 := No_Token_Index; Or_Res22 := No_Bare_Ada_Node; Defer_Res102 := Discrete_Range_Or_Parse0 (Parser, Pos); Defer_Pos102 := Parser.Current_Pos; if Defer_Pos102 /= No_Token_Index then Or_Pos22 := Defer_Pos102; Or_Res22 := Defer_Res102; goto Exit_Or23; end if; Defer_Res103 := Discrete_Subtype_Indication_Transform_Parse0 (Parser, Pos); Defer_Pos103 := Parser.Current_Pos; if Defer_Pos103 /= No_Token_Index then Or_Pos22 := Defer_Pos103; Or_Res22 := Defer_Res103; goto Exit_Or23; end if; Defer_Res104 := Expr_Or_Parse0 (Parser, Pos); Defer_Pos104 := Parser.Current_Pos; if Defer_Pos104 /= No_Token_Index then Or_Pos22 := Defer_Pos104; Or_Res22 := Defer_Res104; goto Exit_Or23; end if; Defer_Res105 := Others_Designator_Transform_Parse0 (Parser, Pos); Defer_Pos105 := Parser.Current_Pos; if Defer_Pos105 /= No_Token_Index then Or_Pos22 := Defer_Pos105; Or_Res22 := Defer_Res105; goto Exit_Or23; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Choice_Or_Parse0_Memo, Or_Pos22 /= No_Token_Index, Or_Res22, Pos, Or_Pos22); Parser.Current_Pos := Or_Pos22; return Or_Res22; end Choice_Or_Parse0; function Choice_List_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Alternatives_List is use Bare_Alternatives_List_Memos; Lst_Cpos12 : Token_Index := No_Token_Index; Tmp_List12 : Free_Parse_List; Defer_Pos106 : Token_Index := No_Token_Index; Defer_Res106 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos96 : Token_Index := No_Token_Index; Token_Res96 : Token_Index := No_Token_Index; List_Pos12 : Token_Index := No_Token_Index; List_Res12 : Bare_Alternatives_List := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Choice_List_List_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; List_Res12 := M.Instance; return List_Res12; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return List_Res12; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start list_code List_Pos12 := No_Token_Index; Lst_Cpos12 := Pos; Tmp_List12 := Get_Parse_List (Parser); loop Defer_Res106 := Choice_Or_Parse0 (Parser, Lst_Cpos12); Defer_Pos106 := Parser.Current_Pos; exit when Defer_Pos106 = No_Token_Index; List_Pos12 := Defer_Pos106; Lst_Cpos12 := List_Pos12; Tmp_List12.Nodes.Append (Defer_Res106); -- Start tok_code Token_Res96 := Lst_Cpos12; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res96)); begin if T.Kind /= From_Token_Kind (Ada_Pipe) then Token_Pos96 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos12 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos12, Expected_Token_Id => Ada_Pipe, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos96 := Lst_Cpos12 + 1; end if; end; -- End tok_code if Token_Pos96 /= No_Token_Index then Lst_Cpos12 := Token_Pos96; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List12.Nodes.Length; begin List_Res12 := Allocate_Alternatives_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Pos; Token_End := (if Lst_Cpos12 = Pos then Pos else Lst_Cpos12 - 1); else Token_Start := Token_Index'Max (Pos, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res12, Kind => Ada_Alternatives_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res12, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List12.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res12.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List12); -- End list_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Choice_List_List_Parse0_Memo, List_Pos12 /= No_Token_Index, List_Res12, Pos, List_Pos12); Parser.Current_Pos := List_Pos12; return List_Res12; end Choice_List_List_Parse0; function Compilation_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos60 : Token_Index := No_Token_Index; Lst_Cpos13 : Token_Index := No_Token_Index; Tmp_List13 : Free_Parse_List; Defer_Pos107 : Token_Index := No_Token_Index; Defer_Res107 : Bare_Pragma_Node := No_Bare_Ada_Node; List_Pos13 : Token_Index := No_Token_Index; List_Res13 : Bare_Pragma_Node_List := No_Bare_Ada_Node; Token_Pos97 : Token_Index := No_Token_Index; Token_Res97 : Token_Index := No_Token_Index; Row_Pos61 : Token_Index := No_Token_Index; Defer_Pos108 : Token_Index := No_Token_Index; Defer_Res108 : Bare_Compilation_Unit := No_Bare_Ada_Node; Token_Pos98 : Token_Index := No_Token_Index; Token_Res98 : Token_Index := No_Token_Index; Row_Pos62 : Token_Index := No_Token_Index; Lst_Cpos14 : Token_Index := No_Token_Index; Tmp_List14 : Free_Parse_List; Defer_Pos109 : Token_Index := No_Token_Index; Defer_Res109 : Bare_Compilation_Unit := No_Bare_Ada_Node; List_Pos14 : Token_Index := No_Token_Index; List_Res14 : Bare_Compilation_Unit_List := No_Bare_Ada_Node; Token_Pos99 : Token_Index := No_Token_Index; Token_Res99 : Token_Index := No_Token_Index; Or_Pos23 : Token_Index := No_Token_Index; Or_Res23 : Bare_Ada_Node := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Compilation_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res23 := M.Instance; return Or_Res23; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res23; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos23 := No_Token_Index; Or_Res23 := No_Bare_Ada_Node; -- Start row_code Row_Pos60 := Pos; -- Start list_code List_Pos13 := No_Token_Index; Lst_Cpos13 := Row_Pos60; Tmp_List13 := Get_Parse_List (Parser); loop Defer_Res107 := Pragma_Transform_Parse0 (Parser, Lst_Cpos13); Defer_Pos107 := Parser.Current_Pos; exit when Defer_Pos107 = No_Token_Index; List_Pos13 := Defer_Pos107; Lst_Cpos13 := List_Pos13; Tmp_List13.Nodes.Append (Defer_Res107); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List13.Nodes.Length; begin List_Res13 := Allocate_Pragma_Node_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos60; Token_End := (if Lst_Cpos13 = Row_Pos60 then Row_Pos60 else Lst_Cpos13 - 1); else Token_Start := Token_Index'Max (Row_Pos60, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res13, Kind => Ada_Pragma_Node_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res13, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List13.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res13.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List13); -- End list_code if List_Pos13 /= No_Token_Index then Row_Pos60 := List_Pos13; else Row_Pos60 := No_Token_Index; goto Exit_Row60_0; end if; -- Start tok_code Token_Res97 := Row_Pos60; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res97)); begin if T.Kind /= From_Token_Kind (Ada_Termination) then Token_Pos97 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos60 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos60, Expected_Token_Id => Ada_Termination, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos97 := Row_Pos60; end if; end; -- End tok_code if Token_Pos97 /= No_Token_Index then Row_Pos60 := Token_Pos97; else Row_Pos60 := No_Token_Index; goto Exit_Row60_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos60 /= No_Token_Index then Or_Pos23 := Row_Pos60; Or_Res23 := List_Res13; goto Exit_Or24; end if; -- Start row_code Row_Pos61 := Pos; Defer_Res108 := Compilation_Unit_Transform_Parse0 (Parser, Row_Pos61); Defer_Pos108 := Parser.Current_Pos; if Defer_Pos108 /= No_Token_Index then Row_Pos61 := Defer_Pos108; else Row_Pos61 := No_Token_Index; goto Exit_Row61_0; end if; -- Start tok_code Token_Res98 := Row_Pos61; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res98)); begin if T.Kind /= From_Token_Kind (Ada_Termination) then Token_Pos98 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos61 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos61, Expected_Token_Id => Ada_Termination, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos98 := Row_Pos61; end if; end; -- End tok_code if Token_Pos98 /= No_Token_Index then Row_Pos61 := Token_Pos98; else Row_Pos61 := No_Token_Index; goto Exit_Row61_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos61 /= No_Token_Index then Or_Pos23 := Row_Pos61; Or_Res23 := Defer_Res108; goto Exit_Or24; end if; -- Start row_code Row_Pos62 := Pos; -- Start list_code List_Pos14 := Row_Pos62; Lst_Cpos14 := Row_Pos62; Tmp_List14 := Get_Parse_List (Parser); loop Defer_Res109 := Compilation_Unit_Transform_Parse0 (Parser, Lst_Cpos14); Defer_Pos109 := Parser.Current_Pos; exit when Defer_Pos109 = No_Token_Index; List_Pos14 := Defer_Pos109; Lst_Cpos14 := List_Pos14; Tmp_List14.Nodes.Append (Defer_Res109); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List14.Nodes.Length; begin List_Res14 := Allocate_Compilation_Unit_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos62; Token_End := (if Lst_Cpos14 = Row_Pos62 then Row_Pos62 else Lst_Cpos14 - 1); else Token_Start := Token_Index'Max (Row_Pos62, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res14, Kind => Ada_Compilation_Unit_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res14, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List14.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res14.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List14); -- End list_code if List_Pos14 /= No_Token_Index then Row_Pos62 := List_Pos14; else Row_Pos62 := No_Token_Index; goto Exit_Row62_0; end if; -- Start tok_code Token_Res99 := Row_Pos62; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res99)); begin if T.Kind /= From_Token_Kind (Ada_Termination) then Token_Pos99 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos62 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos62, Expected_Token_Id => Ada_Termination, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos99 := Row_Pos62; end if; end; -- End tok_code if Token_Pos99 /= No_Token_Index then Row_Pos62 := Token_Pos99; else Row_Pos62 := No_Token_Index; goto Exit_Row62_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos62 /= No_Token_Index then Or_Pos23 := Row_Pos62; Or_Res23 := List_Res14; goto Exit_Or24; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Compilation_Or_Parse0_Memo, Or_Pos23 /= No_Token_Index, Or_Res23, Pos, Or_Pos23); Parser.Current_Pos := Or_Pos23; return Or_Res23; end Compilation_Or_Parse0; function Compilation_Unit_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Compilation_Unit is use Bare_Compilation_Unit_Memos; Row_Pos63 : Token_Index := No_Token_Index; Lst_Cpos15 : Token_Index := No_Token_Index; Tmp_List15 : Free_Parse_List; Defer_Pos110 : Token_Index := No_Token_Index; Defer_Res110 : Bare_Ada_Node := No_Bare_Ada_Node; List_Pos15 : Token_Index := No_Token_Index; List_Res15 : Bare_Ada_Node_List := No_Bare_Ada_Node; Defer_Pos111 : Token_Index := No_Token_Index; Defer_Res111 : Bare_Subunit := No_Bare_Ada_Node; Defer_Pos112 : Token_Index := No_Token_Index; Defer_Res112 : Bare_Library_Item := No_Bare_Ada_Node; Or_Pos24 : Token_Index := No_Token_Index; Or_Res24 : Bare_Ada_Node := No_Bare_Ada_Node; Lst_Cpos16 : Token_Index := No_Token_Index; Tmp_List16 : Free_Parse_List; Defer_Pos113 : Token_Index := No_Token_Index; Defer_Res113 : Bare_Pragma_Node := No_Bare_Ada_Node; List_Pos16 : Token_Index := No_Token_Index; List_Res16 : Bare_Pragma_Node_List := No_Bare_Ada_Node; Transform_Res49 : Bare_Compilation_Unit := No_Bare_Ada_Node; Transform_Diags49 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Compilation_Unit_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res49 := M.Instance; return Transform_Res49; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res49; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags49 := Parser.Diagnostics.Length; -- Start row_code Row_Pos63 := Pos; -- Start list_code List_Pos15 := Row_Pos63; Lst_Cpos15 := Row_Pos63; Tmp_List15 := Get_Parse_List (Parser); loop Defer_Res110 := Context_Item_Or_Parse0 (Parser, Lst_Cpos15); Defer_Pos110 := Parser.Current_Pos; exit when Defer_Pos110 = No_Token_Index; List_Pos15 := Defer_Pos110; Lst_Cpos15 := List_Pos15; Tmp_List15.Nodes.Append (Defer_Res110); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List15.Nodes.Length; begin List_Res15 := Allocate_Ada_Node_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos63; Token_End := (if Lst_Cpos15 = Row_Pos63 then Row_Pos63 else Lst_Cpos15 - 1); else Token_Start := Token_Index'Max (Row_Pos63, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res15, Kind => Ada_Ada_Node_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res15, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List15.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res15.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List15); -- End list_code if List_Pos15 /= No_Token_Index then Row_Pos63 := List_Pos15; else Row_Pos63 := No_Token_Index; goto Exit_Row63_0; end if; -- Start or_code Or_Pos24 := No_Token_Index; Or_Res24 := No_Bare_Ada_Node; Defer_Res111 := Subunit_Transform_Parse0 (Parser, Row_Pos63); Defer_Pos111 := Parser.Current_Pos; if Defer_Pos111 /= No_Token_Index then Or_Pos24 := Defer_Pos111; Or_Res24 := Defer_Res111; goto Exit_Or25; end if; Defer_Res112 := Library_Item_Transform_Parse1 (Parser, Row_Pos63); Defer_Pos112 := Parser.Current_Pos; if Defer_Pos112 /= No_Token_Index then Or_Pos24 := Defer_Pos112; Or_Res24 := Defer_Res112; goto Exit_Or25; end if; <> -- End or_code if Or_Pos24 /= No_Token_Index then Row_Pos63 := Or_Pos24; else Row_Pos63 := No_Token_Index; goto Exit_Row63_0; end if; -- Start list_code List_Pos16 := Row_Pos63; Lst_Cpos16 := Row_Pos63; Tmp_List16 := Get_Parse_List (Parser); loop Defer_Res113 := Pragma_Transform_Parse0 (Parser, Lst_Cpos16); Defer_Pos113 := Parser.Current_Pos; exit when Defer_Pos113 = No_Token_Index; List_Pos16 := Defer_Pos113; Lst_Cpos16 := List_Pos16; Tmp_List16.Nodes.Append (Defer_Res113); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List16.Nodes.Length; begin List_Res16 := Allocate_Pragma_Node_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos63; Token_End := (if Lst_Cpos16 = Row_Pos63 then Row_Pos63 else Lst_Cpos16 - 1); else Token_Start := Token_Index'Max (Row_Pos63, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res16, Kind => Ada_Pragma_Node_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res16, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List16.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res16.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List16); -- End list_code if List_Pos16 /= No_Token_Index then Row_Pos63 := List_Pos16; else Row_Pos63 := No_Token_Index; goto Exit_Row63_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos63 /= No_Token_Index then Transform_Res49 := Allocate_Compilation_Unit (Parser.Mem_Pool); Initialize (Self => Transform_Res49, Kind => Ada_Compilation_Unit, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos63 = Pos then No_Token_Index else Row_Pos63 - 1)); Initialize_Fields_For_Compilation_Unit (Self => Transform_Res49, Compilation_Unit_F_Prelude => List_Res15, Compilation_Unit_F_Body => Or_Res24, Compilation_Unit_F_Pragmas => List_Res16); if List_Res15 /= null and then Is_Incomplete (List_Res15) then Transform_Res49.Last_Attempted_Child := 0; elsif List_Res15 /= null and then not Is_Ghost (List_Res15) then Transform_Res49.Last_Attempted_Child := -1; end if; if Or_Res24 /= null and then Is_Incomplete (Or_Res24) then Transform_Res49.Last_Attempted_Child := 0; elsif Or_Res24 /= null and then not Is_Ghost (Or_Res24) then Transform_Res49.Last_Attempted_Child := -1; end if; if List_Res16 /= null and then Is_Incomplete (List_Res16) then Transform_Res49.Last_Attempted_Child := 0; elsif List_Res16 /= null and then not Is_Ghost (List_Res16) then Transform_Res49.Last_Attempted_Child := -1; end if; elsif Row_Pos63 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags49); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Compilation_Unit_Transform_Parse0_Memo, Row_Pos63 /= No_Token_Index, Transform_Res49, Pos, Row_Pos63); Parser.Current_Pos := Row_Pos63; return Transform_Res49; end Compilation_Unit_Transform_Parse0; function Component_Clause_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Component_Clause is use Bare_Component_Clause_Memos; Row_Pos64 : Token_Index := No_Token_Index; Defer_Pos114 : Token_Index := No_Token_Index; Defer_Res114 : Bare_Identifier := No_Bare_Ada_Node; Token_Pos100 : Token_Index := No_Token_Index; Token_Res100 : Token_Index := No_Token_Index; Defer_Pos115 : Token_Index := No_Token_Index; Defer_Res115 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos116 : Token_Index := No_Token_Index; Defer_Res116 : Bare_Range_Spec := No_Bare_Ada_Node; Token_Pos101 : Token_Index := No_Token_Index; Token_Res101 : Token_Index := No_Token_Index; Transform_Res50 : Bare_Component_Clause := No_Bare_Ada_Node; Transform_Diags50 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Component_Clause_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res50 := M.Instance; return Transform_Res50; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res50; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags50 := Parser.Diagnostics.Length; -- Start row_code Row_Pos64 := Pos; Defer_Res114 := Identifier_Transform_Parse0 (Parser, Row_Pos64); Defer_Pos114 := Parser.Current_Pos; if Defer_Pos114 /= No_Token_Index then Row_Pos64 := Defer_Pos114; else Row_Pos64 := No_Token_Index; goto Exit_Row64_0; end if; -- Start tok_code Token_Res100 := Row_Pos64; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res100)); begin if T.Kind /= From_Token_Kind (Ada_At) then Token_Pos100 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos64 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos64, Expected_Token_Id => Ada_At, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos100 := Row_Pos64 + 1; end if; end; -- End tok_code if Token_Pos100 /= No_Token_Index then Row_Pos64 := Token_Pos100; else Row_Pos64 := No_Token_Index; goto Exit_Row64_0; end if; Defer_Res115 := Simple_Expr_Or_Parse1 (Parser, Row_Pos64); Defer_Pos115 := Parser.Current_Pos; if Defer_Pos115 /= No_Token_Index then Row_Pos64 := Defer_Pos115; else Row_Pos64 := No_Token_Index; goto Exit_Row64_0; end if; Defer_Res116 := Range_Spec_Transform_Parse0 (Parser, Row_Pos64); Defer_Pos116 := Parser.Current_Pos; if Defer_Pos116 /= No_Token_Index then Row_Pos64 := Defer_Pos116; else Row_Pos64 := No_Token_Index; goto Exit_Row64_0; end if; -- Start opt_code -- Start tok_code Token_Res101 := Row_Pos64; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res101)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos101 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos64 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos64, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos101 := Row_Pos64 + 1; end if; end; -- End tok_code if Token_Pos101 = No_Token_Index then Token_Res101 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos64)), To_Text ("Missing ';'")); Token_Pos101 := Row_Pos64; end if; -- End opt_code if Token_Pos101 /= No_Token_Index then Row_Pos64 := Token_Pos101; else Row_Pos64 := No_Token_Index; goto Exit_Row64_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos64 /= No_Token_Index then Transform_Res50 := Allocate_Component_Clause (Parser.Mem_Pool); Initialize (Self => Transform_Res50, Kind => Ada_Component_Clause, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos64 = Pos then No_Token_Index else Row_Pos64 - 1)); Initialize_Fields_For_Component_Clause (Self => Transform_Res50, Component_Clause_F_Id => Defer_Res114, Component_Clause_F_Position => Defer_Res115, Component_Clause_F_Range => Defer_Res116); if Defer_Res114 /= null and then Is_Incomplete (Defer_Res114) then Transform_Res50.Last_Attempted_Child := 0; elsif Defer_Res114 /= null and then not Is_Ghost (Defer_Res114) then Transform_Res50.Last_Attempted_Child := -1; end if; if Defer_Res115 /= null and then Is_Incomplete (Defer_Res115) then Transform_Res50.Last_Attempted_Child := 0; elsif Defer_Res115 /= null and then not Is_Ghost (Defer_Res115) then Transform_Res50.Last_Attempted_Child := -1; end if; if Defer_Res116 /= null and then Is_Incomplete (Defer_Res116) then Transform_Res50.Last_Attempted_Child := 0; elsif Defer_Res116 /= null and then not Is_Ghost (Defer_Res116) then Transform_Res50.Last_Attempted_Child := -1; end if; elsif Row_Pos64 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags50); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Component_Clause_Transform_Parse0_Memo, Row_Pos64 /= No_Token_Index, Transform_Res50, Pos, Row_Pos64); Parser.Current_Pos := Row_Pos64; return Transform_Res50; end Component_Clause_Transform_Parse0; function Component_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Component_Decl is use Bare_Component_Decl_Memos; Row_Pos65 : Token_Index := No_Token_Index; Lst_Cpos17 : Token_Index := No_Token_Index; Tmp_List17 : Free_Parse_List; Defer_Pos117 : Token_Index := No_Token_Index; Defer_Res117 : Bare_Defining_Name := No_Bare_Ada_Node; Token_Pos102 : Token_Index := No_Token_Index; Token_Res102 : Token_Index := No_Token_Index; List_Pos17 : Token_Index := No_Token_Index; List_Res17 : Bare_Defining_Name_List := No_Bare_Ada_Node; Token_Pos103 : Token_Index := No_Token_Index; Token_Res103 : Token_Index := No_Token_Index; Defer_Pos118 : Token_Index := No_Token_Index; Defer_Res118 : Bare_Component_Def := No_Bare_Ada_Node; Row_Pos66 : Token_Index := No_Token_Index; Token_Pos104 : Token_Index := No_Token_Index; Token_Res104 : Token_Index := No_Token_Index; Defer_Pos119 : Token_Index := No_Token_Index; Defer_Res119 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos120 : Token_Index := No_Token_Index; Defer_Res120 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos105 : Token_Index := No_Token_Index; Token_Res105 : Token_Index := No_Token_Index; Transform_Res51 : Bare_Component_Decl := No_Bare_Ada_Node; Transform_Diags51 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Component_Decl_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res51 := M.Instance; return Transform_Res51; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res51; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags51 := Parser.Diagnostics.Length; -- Start row_code Row_Pos65 := Pos; -- Start list_code List_Pos17 := No_Token_Index; Lst_Cpos17 := Row_Pos65; Tmp_List17 := Get_Parse_List (Parser); loop Defer_Res117 := Defining_Id_Transform_Parse0 (Parser, Lst_Cpos17); Defer_Pos117 := Parser.Current_Pos; exit when Defer_Pos117 = No_Token_Index; List_Pos17 := Defer_Pos117; Lst_Cpos17 := List_Pos17; Tmp_List17.Nodes.Append (Defer_Res117); -- Start tok_code Token_Res102 := Lst_Cpos17; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res102)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos102 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos17 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos17, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos102 := Lst_Cpos17 + 1; end if; end; -- End tok_code if Token_Pos102 /= No_Token_Index then Lst_Cpos17 := Token_Pos102; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List17.Nodes.Length; begin List_Res17 := Allocate_Defining_Name_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos65; Token_End := (if Lst_Cpos17 = Row_Pos65 then Row_Pos65 else Lst_Cpos17 - 1); else Token_Start := Token_Index'Max (Row_Pos65, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res17, Kind => Ada_Defining_Name_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res17, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List17.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res17.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List17); -- End list_code if List_Pos17 /= No_Token_Index then Row_Pos65 := List_Pos17; else Row_Pos65 := No_Token_Index; goto Exit_Row65_0; end if; -- Start tok_code Token_Res103 := Row_Pos65; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res103)); begin if T.Kind /= From_Token_Kind (Ada_Colon) then Token_Pos103 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos65 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos65, Expected_Token_Id => Ada_Colon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos103 := Row_Pos65 + 1; end if; end; -- End tok_code if Token_Pos103 /= No_Token_Index then Row_Pos65 := Token_Pos103; else Row_Pos65 := No_Token_Index; goto Exit_Row65_0; end if; Defer_Res118 := Component_Def_Transform_Parse0 (Parser, Row_Pos65); Defer_Pos118 := Parser.Current_Pos; if Defer_Pos118 /= No_Token_Index then Row_Pos65 := Defer_Pos118; else Row_Pos65 := No_Token_Index; goto Exit_Row65_0; end if; -- Start opt_code -- Start row_code Row_Pos66 := Row_Pos65; -- Start tok_code Token_Res104 := Row_Pos66; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res104)); begin if T.Kind /= From_Token_Kind (Ada_Assign) then Token_Pos104 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos66 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos66, Expected_Token_Id => Ada_Assign, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos104 := Row_Pos66 + 1; end if; end; -- End tok_code if Token_Pos104 /= No_Token_Index then Row_Pos66 := Token_Pos104; else Row_Pos66 := No_Token_Index; goto Exit_Row66_0; end if; Defer_Res119 := Expr_Or_Parse0 (Parser, Row_Pos66); Defer_Pos119 := Parser.Current_Pos; if Defer_Pos119 /= No_Token_Index then Row_Pos66 := Defer_Pos119; else Row_Pos66 := No_Token_Index; goto Exit_Row66_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos66 = No_Token_Index then Defer_Res119 := No_Bare_Ada_Node; Row_Pos66 := Row_Pos65; end if; -- End opt_code if Row_Pos66 /= No_Token_Index then Row_Pos65 := Row_Pos66; else Row_Pos65 := No_Token_Index; goto Exit_Row65_0; end if; Defer_Res120 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos65); Defer_Pos120 := Parser.Current_Pos; if Defer_Pos120 /= No_Token_Index then Row_Pos65 := Defer_Pos120; else Row_Pos65 := No_Token_Index; goto Exit_Row65_0; end if; -- Start opt_code -- Start tok_code Token_Res105 := Row_Pos65; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res105)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos105 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos65 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos65, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos105 := Row_Pos65 + 1; end if; end; -- End tok_code if Token_Pos105 = No_Token_Index then Token_Res105 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos65)), To_Text ("Missing ';'")); Token_Pos105 := Row_Pos65; end if; -- End opt_code if Token_Pos105 /= No_Token_Index then Row_Pos65 := Token_Pos105; else Row_Pos65 := No_Token_Index; goto Exit_Row65_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos65 /= No_Token_Index then Transform_Res51 := Allocate_Component_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res51, Kind => Ada_Component_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos65 = Pos then No_Token_Index else Row_Pos65 - 1)); Initialize_Fields_For_Component_Decl (Self => Transform_Res51, Component_Decl_F_Ids => List_Res17, Component_Decl_F_Component_Def => Defer_Res118, Component_Decl_F_Default_Expr => Defer_Res119, Component_Decl_F_Aspects => Defer_Res120); if List_Res17 /= null and then Is_Incomplete (List_Res17) then Transform_Res51.Last_Attempted_Child := 0; elsif List_Res17 /= null and then not Is_Ghost (List_Res17) then Transform_Res51.Last_Attempted_Child := -1; end if; if Defer_Res118 /= null and then Is_Incomplete (Defer_Res118) then Transform_Res51.Last_Attempted_Child := 0; elsif Defer_Res118 /= null and then not Is_Ghost (Defer_Res118) then Transform_Res51.Last_Attempted_Child := -1; end if; if Defer_Res119 /= null and then Is_Incomplete (Defer_Res119) then Transform_Res51.Last_Attempted_Child := 0; elsif Defer_Res119 /= null and then not Is_Ghost (Defer_Res119) then Transform_Res51.Last_Attempted_Child := -1; end if; if Defer_Res120 /= null and then Is_Incomplete (Defer_Res120) then Transform_Res51.Last_Attempted_Child := 0; elsif Defer_Res120 /= null and then not Is_Ghost (Defer_Res120) then Transform_Res51.Last_Attempted_Child := -1; end if; elsif Row_Pos65 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags51); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Component_Decl_Transform_Parse0_Memo, Row_Pos65 /= No_Token_Index, Transform_Res51, Pos, Row_Pos65); Parser.Current_Pos := Row_Pos65; return Transform_Res51; end Component_Decl_Transform_Parse0; function Component_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Component_Def is use Bare_Component_Def_Memos; Row_Pos67 : Token_Index := No_Token_Index; Token_Pos106 : Token_Index := No_Token_Index; Token_Res106 : Token_Index := No_Token_Index; Opt_Res5 : Bare_Aliased_Node := No_Bare_Ada_Node; Token_Pos107 : Token_Index := No_Token_Index; Token_Res107 : Token_Index := No_Token_Index; Opt_Res6 : Bare_Constant_Node := No_Bare_Ada_Node; Defer_Pos121 : Token_Index := No_Token_Index; Defer_Res121 : Bare_Type_Expr := No_Bare_Ada_Node; Transform_Res52 : Bare_Component_Def := No_Bare_Ada_Node; Transform_Diags52 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Component_Def_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res52 := M.Instance; return Transform_Res52; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res52; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags52 := Parser.Diagnostics.Length; -- Start row_code Row_Pos67 := Pos; -- Start opt_code -- Start tok_code Token_Res106 := Row_Pos67; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res106)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Aliased) then Token_Pos106 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos67 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos67, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos106 := Row_Pos67 + 1; end if; end; -- End tok_code if Token_Pos106 = No_Token_Index then Opt_Res5 := Allocate_Aliased_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res5, Kind => Ada_Aliased_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos67, Token_End_Index => No_Token_Index); Token_Pos106 := Row_Pos67; else Opt_Res5 := Allocate_Aliased_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res5, Kind => Ada_Aliased_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos67, Token_End_Index => Token_Pos106 - 1); end if; -- End opt_code if Token_Pos106 /= No_Token_Index then Row_Pos67 := Token_Pos106; else Row_Pos67 := No_Token_Index; goto Exit_Row67_0; end if; -- Start opt_code -- Start tok_code Token_Res107 := Row_Pos67; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res107)); begin if T.Kind /= From_Token_Kind (Ada_Constant) then Token_Pos107 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos67 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos67, Expected_Token_Id => Ada_Constant, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos107 := Row_Pos67 + 1; end if; end; -- End tok_code if Token_Pos107 = No_Token_Index then Opt_Res6 := Allocate_Constant_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res6, Kind => Ada_Constant_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos67, Token_End_Index => No_Token_Index); Token_Pos107 := Row_Pos67; else Opt_Res6 := Allocate_Constant_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res6, Kind => Ada_Constant_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos67, Token_End_Index => Token_Pos107 - 1); end if; -- End opt_code if Token_Pos107 /= No_Token_Index then Row_Pos67 := Token_Pos107; else Row_Pos67 := No_Token_Index; goto Exit_Row67_0; end if; Defer_Res121 := Type_Expr_Or_Parse0 (Parser, Row_Pos67); Defer_Pos121 := Parser.Current_Pos; if Defer_Pos121 /= No_Token_Index then Row_Pos67 := Defer_Pos121; else Row_Pos67 := No_Token_Index; goto Exit_Row67_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos67 /= No_Token_Index then Transform_Res52 := Allocate_Component_Def (Parser.Mem_Pool); Initialize (Self => Transform_Res52, Kind => Ada_Component_Def, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos67 = Pos then No_Token_Index else Row_Pos67 - 1)); Initialize_Fields_For_Component_Def (Self => Transform_Res52, Component_Def_F_Has_Aliased => Opt_Res5, Component_Def_F_Has_Constant => Opt_Res6, Component_Def_F_Type_Expr => Defer_Res121); if Opt_Res5 /= null and then Is_Incomplete (Opt_Res5) then Transform_Res52.Last_Attempted_Child := 0; elsif Opt_Res5 /= null and then not Is_Ghost (Opt_Res5) then Transform_Res52.Last_Attempted_Child := -1; end if; if Opt_Res6 /= null and then Is_Incomplete (Opt_Res6) then Transform_Res52.Last_Attempted_Child := 0; elsif Opt_Res6 /= null and then not Is_Ghost (Opt_Res6) then Transform_Res52.Last_Attempted_Child := -1; end if; if Defer_Res121 /= null and then Is_Incomplete (Defer_Res121) then Transform_Res52.Last_Attempted_Child := 0; elsif Defer_Res121 /= null and then not Is_Ghost (Defer_Res121) then Transform_Res52.Last_Attempted_Child := -1; end if; elsif Row_Pos67 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags52); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Component_Def_Transform_Parse0_Memo, Row_Pos67 /= No_Token_Index, Transform_Res52, Pos, Row_Pos67); Parser.Current_Pos := Row_Pos67; return Transform_Res52; end Component_Def_Transform_Parse0; function Component_Item_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos68 : Token_Index := No_Token_Index; Token_Pos108 : Token_Index := No_Token_Index; Token_Res108 : Token_Index := No_Token_Index; Token_Pos109 : Token_Index := No_Token_Index; Token_Res109 : Token_Index := No_Token_Index; Transform_Res53 : Bare_Null_Component_Decl := No_Bare_Ada_Node; Transform_Diags53 : Ada.Containers.Count_Type; Defer_Pos122 : Token_Index := No_Token_Index; Defer_Res122 : Bare_Component_Decl := No_Bare_Ada_Node; Defer_Pos123 : Token_Index := No_Token_Index; Defer_Res123 : Bare_Aspect_Clause := No_Bare_Ada_Node; Defer_Pos124 : Token_Index := No_Token_Index; Defer_Res124 : Bare_Pragma_Node := No_Bare_Ada_Node; Or_Pos25 : Token_Index := No_Token_Index; Or_Res25 : Bare_Ada_Node := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Component_Item_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res25 := M.Instance; return Or_Res25; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res25; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos25 := No_Token_Index; Or_Res25 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags53 := Parser.Diagnostics.Length; -- Start row_code Row_Pos68 := Pos; -- Start tok_code Token_Res108 := Row_Pos68; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res108)); begin if T.Kind /= From_Token_Kind (Ada_Null) then Token_Pos108 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos68 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos68, Expected_Token_Id => Ada_Null, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos108 := Row_Pos68 + 1; end if; end; -- End tok_code if Token_Pos108 /= No_Token_Index then Row_Pos68 := Token_Pos108; else Row_Pos68 := No_Token_Index; goto Exit_Row68_0; end if; -- Start opt_code -- Start tok_code Token_Res109 := Row_Pos68; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res109)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos109 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos68 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos68, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos109 := Row_Pos68 + 1; end if; end; -- End tok_code if Token_Pos109 = No_Token_Index then Token_Res109 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos68)), To_Text ("Missing ';'")); Token_Pos109 := Row_Pos68; end if; -- End opt_code if Token_Pos109 /= No_Token_Index then Row_Pos68 := Token_Pos109; else Row_Pos68 := No_Token_Index; goto Exit_Row68_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos68 /= No_Token_Index then Transform_Res53 := Allocate_Null_Component_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res53, Kind => Ada_Null_Component_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos68 = Pos then No_Token_Index else Row_Pos68 - 1)); elsif Row_Pos68 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags53); end if; -- End transform_code if Row_Pos68 /= No_Token_Index then Or_Pos25 := Row_Pos68; Or_Res25 := Transform_Res53; goto Exit_Or26; end if; Defer_Res122 := Component_Decl_Transform_Parse0 (Parser, Pos); Defer_Pos122 := Parser.Current_Pos; if Defer_Pos122 /= No_Token_Index then Or_Pos25 := Defer_Pos122; Or_Res25 := Defer_Res122; goto Exit_Or26; end if; Defer_Res123 := Aspect_Clause_Or_Parse1 (Parser, Pos); Defer_Pos123 := Parser.Current_Pos; if Defer_Pos123 /= No_Token_Index then Or_Pos25 := Defer_Pos123; Or_Res25 := Defer_Res123; goto Exit_Or26; end if; Defer_Res124 := Pragma_Transform_Parse0 (Parser, Pos); Defer_Pos124 := Parser.Current_Pos; if Defer_Pos124 /= No_Token_Index then Or_Pos25 := Defer_Pos124; Or_Res25 := Defer_Res124; goto Exit_Or26; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Component_Item_Or_Parse0_Memo, Or_Pos25 /= No_Token_Index, Or_Res25, Pos, Or_Pos25); Parser.Current_Pos := Or_Pos25; return Or_Res25; end Component_Item_Or_Parse0; function Component_List_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Component_List is use Bare_Component_List_Memos; Row_Pos69 : Token_Index := No_Token_Index; Lst_Cpos18 : Token_Index := No_Token_Index; Tmp_List18 : Free_Parse_List; Defer_Pos125 : Token_Index := No_Token_Index; Defer_Res125 : Bare_Ada_Node := No_Bare_Ada_Node; List_Pos18 : Token_Index := No_Token_Index; List_Res18 : Bare_Ada_Node_List := No_Bare_Ada_Node; Defer_Pos126 : Token_Index := No_Token_Index; Defer_Res126 : Bare_Variant_Part := No_Bare_Ada_Node; Transform_Res54 : Bare_Component_List := No_Bare_Ada_Node; Transform_Diags54 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Component_List_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res54 := M.Instance; return Transform_Res54; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res54; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags54 := Parser.Diagnostics.Length; -- Start row_code Row_Pos69 := Pos; -- Start list_code List_Pos18 := Row_Pos69; Lst_Cpos18 := Row_Pos69; Tmp_List18 := Get_Parse_List (Parser); loop Defer_Res125 := Component_Item_Or_Parse0 (Parser, Lst_Cpos18); Defer_Pos125 := Parser.Current_Pos; exit when Defer_Pos125 = No_Token_Index; List_Pos18 := Defer_Pos125; Lst_Cpos18 := List_Pos18; Tmp_List18.Nodes.Append (Defer_Res125); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List18.Nodes.Length; begin List_Res18 := Allocate_Ada_Node_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos69; Token_End := (if Lst_Cpos18 = Row_Pos69 then Row_Pos69 else Lst_Cpos18 - 1); else Token_Start := Token_Index'Max (Row_Pos69, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res18, Kind => Ada_Ada_Node_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res18, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List18.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res18.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List18); -- End list_code if List_Pos18 /= No_Token_Index then Row_Pos69 := List_Pos18; else Row_Pos69 := No_Token_Index; goto Exit_Row69_0; end if; -- Start opt_code Defer_Res126 := Variant_Part_Transform_Parse0 (Parser, Row_Pos69); Defer_Pos126 := Parser.Current_Pos; if Defer_Pos126 = No_Token_Index then Defer_Res126 := No_Bare_Ada_Node; Defer_Pos126 := Row_Pos69; end if; -- End opt_code if Defer_Pos126 /= No_Token_Index then Row_Pos69 := Defer_Pos126; else Row_Pos69 := No_Token_Index; goto Exit_Row69_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos69 /= No_Token_Index then Transform_Res54 := Allocate_Component_List (Parser.Mem_Pool); Initialize (Self => Transform_Res54, Kind => Ada_Component_List, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos69 = Pos then No_Token_Index else Row_Pos69 - 1)); Initialize_Fields_For_Component_List (Self => Transform_Res54, Component_List_F_Components => List_Res18, Component_List_F_Variant_Part => Defer_Res126); if List_Res18 /= null and then Is_Incomplete (List_Res18) then Transform_Res54.Last_Attempted_Child := 0; elsif List_Res18 /= null and then not Is_Ghost (List_Res18) then Transform_Res54.Last_Attempted_Child := -1; end if; if Defer_Res126 /= null and then Is_Incomplete (Defer_Res126) then Transform_Res54.Last_Attempted_Child := 0; elsif Defer_Res126 /= null and then not Is_Ghost (Defer_Res126) then Transform_Res54.Last_Attempted_Child := -1; end if; elsif Row_Pos69 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags54); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Component_List_Transform_Parse0_Memo, Row_Pos69 /= No_Token_Index, Transform_Res54, Pos, Row_Pos69); Parser.Current_Pos := Row_Pos69; return Transform_Res54; end Component_List_Transform_Parse0; function Composite_Constraint_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Composite_Constraint is use Bare_Composite_Constraint_Memos; Row_Pos70 : Token_Index := No_Token_Index; Token_Pos110 : Token_Index := No_Token_Index; Token_Res110 : Token_Index := No_Token_Index; Lst_Cpos19 : Token_Index := No_Token_Index; Tmp_List19 : Free_Parse_List; Defer_Pos127 : Token_Index := No_Token_Index; Defer_Res127 : Bare_Composite_Constraint_Assoc := No_Bare_Ada_Node; Token_Pos111 : Token_Index := No_Token_Index; Token_Res111 : Token_Index := No_Token_Index; List_Pos19 : Token_Index := No_Token_Index; List_Res19 : Bare_Assoc_List := No_Bare_Ada_Node; Token_Pos112 : Token_Index := No_Token_Index; Token_Res112 : Token_Index := No_Token_Index; Transform_Res55 : Bare_Composite_Constraint := No_Bare_Ada_Node; Transform_Diags55 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Composite_Constraint_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res55 := M.Instance; return Transform_Res55; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res55; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags55 := Parser.Diagnostics.Length; -- Start row_code Row_Pos70 := Pos; -- Start tok_code Token_Res110 := Row_Pos70; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res110)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos110 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos70 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos70, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos110 := Row_Pos70 + 1; end if; end; -- End tok_code if Token_Pos110 /= No_Token_Index then Row_Pos70 := Token_Pos110; else Row_Pos70 := No_Token_Index; goto Exit_Row70_0; end if; -- Start list_code List_Pos19 := No_Token_Index; Lst_Cpos19 := Row_Pos70; Tmp_List19 := Get_Parse_List (Parser); loop Defer_Res127 := Composite_Constraint_Assoc_Transform_Parse0 (Parser, Lst_Cpos19); Defer_Pos127 := Parser.Current_Pos; exit when Defer_Pos127 = No_Token_Index; List_Pos19 := Defer_Pos127; Lst_Cpos19 := List_Pos19; Tmp_List19.Nodes.Append (Defer_Res127); -- Start tok_code Token_Res111 := Lst_Cpos19; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res111)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos111 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos19 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos19, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos111 := Lst_Cpos19 + 1; end if; end; -- End tok_code if Token_Pos111 /= No_Token_Index then Lst_Cpos19 := Token_Pos111; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List19.Nodes.Length; begin List_Res19 := Allocate_Assoc_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos70; Token_End := (if Lst_Cpos19 = Row_Pos70 then Row_Pos70 else Lst_Cpos19 - 1); else Token_Start := Token_Index'Max (Row_Pos70, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res19, Kind => Ada_Assoc_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res19, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List19.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res19.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List19); -- End list_code if List_Pos19 /= No_Token_Index then Row_Pos70 := List_Pos19; else Row_Pos70 := No_Token_Index; goto Exit_Row70_0; end if; -- Start tok_code Token_Res112 := Row_Pos70; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res112)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos112 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos70 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos70, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos112 := Row_Pos70 + 1; end if; end; -- End tok_code if Token_Pos112 /= No_Token_Index then Row_Pos70 := Token_Pos112; else Row_Pos70 := No_Token_Index; goto Exit_Row70_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos70 /= No_Token_Index then Transform_Res55 := Allocate_Composite_Constraint (Parser.Mem_Pool); Initialize (Self => Transform_Res55, Kind => Ada_Composite_Constraint, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos70 = Pos then No_Token_Index else Row_Pos70 - 1)); Initialize_Fields_For_Composite_Constraint (Self => Transform_Res55, Composite_Constraint_F_Constraints => List_Res19); if List_Res19 /= null and then Is_Incomplete (List_Res19) then Transform_Res55.Last_Attempted_Child := 0; elsif List_Res19 /= null and then not Is_Ghost (List_Res19) then Transform_Res55.Last_Attempted_Child := -1; end if; elsif Row_Pos70 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags55); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Composite_Constraint_Transform_Parse0_Memo, Row_Pos70 /= No_Token_Index, Transform_Res55, Pos, Row_Pos70); Parser.Current_Pos := Row_Pos70; return Transform_Res55; end Composite_Constraint_Transform_Parse0; function Composite_Constraint_Assoc_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Composite_Constraint_Assoc is use Bare_Composite_Constraint_Assoc_Memos; Nobt9 : Boolean := False; Row_Pos71 : Token_Index := No_Token_Index; Row_Pos72 : Token_Index := No_Token_Index; Lst_Cpos20 : Token_Index := No_Token_Index; Tmp_List20 : Free_Parse_List; Defer_Pos128 : Token_Index := No_Token_Index; Defer_Res128 : Bare_Identifier := No_Bare_Ada_Node; Token_Pos113 : Token_Index := No_Token_Index; Token_Res113 : Token_Index := No_Token_Index; List_Pos20 : Token_Index := No_Token_Index; List_Res20 : Bare_Discriminant_Choice_List := No_Bare_Ada_Node; Token_Pos114 : Token_Index := No_Token_Index; Token_Res114 : Token_Index := No_Token_Index; Defer_Pos129 : Token_Index := No_Token_Index; Defer_Res129 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos130 : Token_Index := No_Token_Index; Defer_Res130 : Bare_Discrete_Subtype_Indication := No_Bare_Ada_Node; Defer_Pos131 : Token_Index := No_Token_Index; Defer_Res131 : Bare_Expr := No_Bare_Ada_Node; Or_Pos26 : Token_Index := No_Token_Index; Or_Res26 : Bare_Ada_Node := No_Bare_Ada_Node; Row_Progress9 : Integer := 0; Transform_Res56 : Bare_Composite_Constraint_Assoc := No_Bare_Ada_Node; Transform_Has_Failed9 : Boolean := False; Transform_Diags56 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Composite_Constraint_Assoc_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res56 := M.Instance; return Transform_Res56; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res56; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags56 := Parser.Diagnostics.Length; -- Start row_code Row_Pos71 := Pos; -- Start opt_code -- Start row_code Row_Pos72 := Row_Pos71; -- Start list_code List_Pos20 := No_Token_Index; Lst_Cpos20 := Row_Pos72; Tmp_List20 := Get_Parse_List (Parser); loop Defer_Res128 := Identifier_Transform_Parse0 (Parser, Lst_Cpos20); Defer_Pos128 := Parser.Current_Pos; exit when Defer_Pos128 = No_Token_Index; List_Pos20 := Defer_Pos128; Lst_Cpos20 := List_Pos20; Tmp_List20.Nodes.Append (Defer_Res128); -- Start tok_code Token_Res113 := Lst_Cpos20; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res113)); begin if T.Kind /= From_Token_Kind (Ada_Pipe) then Token_Pos113 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos20 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos20, Expected_Token_Id => Ada_Pipe, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos113 := Lst_Cpos20 + 1; end if; end; -- End tok_code if Token_Pos113 /= No_Token_Index then Lst_Cpos20 := Token_Pos113; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List20.Nodes.Length; begin List_Res20 := Allocate_Discriminant_Choice_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos72; Token_End := (if Lst_Cpos20 = Row_Pos72 then Row_Pos72 else Lst_Cpos20 - 1); else Token_Start := Token_Index'Max (Row_Pos72, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res20, Kind => Ada_Discriminant_Choice_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res20, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List20.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res20.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List20); -- End list_code if List_Pos20 /= No_Token_Index then Row_Pos72 := List_Pos20; else Row_Pos72 := No_Token_Index; goto Exit_Row72_0; end if; -- Start tok_code Token_Res114 := Row_Pos72; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res114)); begin if T.Kind /= From_Token_Kind (Ada_Arrow) then Token_Pos114 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos72 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos72, Expected_Token_Id => Ada_Arrow, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos114 := Row_Pos72 + 1; end if; end; -- End tok_code if Token_Pos114 /= No_Token_Index then Row_Pos72 := Token_Pos114; else Row_Pos72 := No_Token_Index; goto Exit_Row72_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos72 = No_Token_Index then List_Res20 := Allocate_Discriminant_Choice_List (Parser.Mem_Pool); Initialize (Self => List_Res20, Kind => Ada_Discriminant_Choice_List, Unit => Parser.Unit, Token_Start_Index => Row_Pos71 - 1, Token_End_Index => No_Token_Index); Initialize_List (Self => List_Res20, Parser => Parser, Count => 0); Row_Pos72 := Row_Pos71; end if; -- End opt_code Row_Progress9 := 1; if Row_Pos72 /= No_Token_Index then Row_Pos71 := Row_Pos72; else Row_Pos71 := No_Token_Index; goto Exit_Row71_0; end if; Nobt9 := True; Nobt9 := Nobt9; Row_Progress9 := 2; if Row_Pos71 /= No_Token_Index then Row_Pos71 := Row_Pos71; else Row_Pos71 := No_Token_Index; goto Exit_Row71_0; end if; -- Start or_code Or_Pos26 := No_Token_Index; Or_Res26 := No_Bare_Ada_Node; Defer_Res129 := Discrete_Range_Or_Parse0 (Parser, Row_Pos71); Defer_Pos129 := Parser.Current_Pos; if Defer_Pos129 /= No_Token_Index then Or_Pos26 := Defer_Pos129; Or_Res26 := Defer_Res129; goto Exit_Or27; end if; Defer_Res130 := Discrete_Subtype_Indication_Transform_Parse0 (Parser, Row_Pos71); Defer_Pos130 := Parser.Current_Pos; if Defer_Pos130 /= No_Token_Index then Or_Pos26 := Defer_Pos130; Or_Res26 := Defer_Res130; goto Exit_Or27; end if; Defer_Res131 := Expr_Or_Parse0 (Parser, Row_Pos71); Defer_Pos131 := Parser.Current_Pos; if Defer_Pos131 /= No_Token_Index then Or_Pos26 := Defer_Pos131; Or_Res26 := Defer_Res131; goto Exit_Or27; end if; <> -- End or_code Row_Progress9 := 3; if Or_Pos26 /= No_Token_Index then Row_Pos71 := Or_Pos26; else Row_Pos71 := No_Token_Index; goto Exit_Row71_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos71 = No_Token_Index and then Nobt9 then Row_Pos71 := Parser.Last_Fail.Pos; Transform_Has_Failed9 := True; end if; if Row_Pos71 /= No_Token_Index then Transform_Res56 := Allocate_Composite_Constraint_Assoc (Parser.Mem_Pool); Initialize (Self => Transform_Res56, Kind => Ada_Composite_Constraint_Assoc, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos71 = Pos then No_Token_Index else Row_Pos71 - 1)); Initialize_Fields_For_Composite_Constraint_Assoc (Self => Transform_Res56, Composite_Constraint_Assoc_F_Ids => List_Res20, Composite_Constraint_Assoc_F_Constraint_Expr => Or_Res26); if List_Res20 /= null and then Is_Incomplete (List_Res20) then Transform_Res56.Last_Attempted_Child := 0; elsif List_Res20 /= null and then not Is_Ghost (List_Res20) then Transform_Res56.Last_Attempted_Child := -1; end if; if Or_Res26 /= null and then Is_Incomplete (Or_Res26) then Transform_Res56.Last_Attempted_Child := 0; elsif Or_Res26 /= null and then not Is_Ghost (Or_Res26) then Transform_Res56.Last_Attempted_Child := -1; end if; if Transform_Has_Failed9 then Transform_Res56.Last_Attempted_Child := Row_Progress9; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos71 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags56); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Composite_Constraint_Assoc_Transform_Parse0_Memo, Row_Pos71 /= No_Token_Index, Transform_Res56, Pos, Row_Pos71); Parser.Current_Pos := Row_Pos71; return Transform_Res56; end Composite_Constraint_Assoc_Transform_Parse0; function Compound_Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Composite_Stmt is use Bare_Composite_Stmt_Memos; Defer_Pos132 : Token_Index := No_Token_Index; Defer_Res132 : Bare_If_Stmt := No_Bare_Ada_Node; Defer_Pos133 : Token_Index := No_Token_Index; Defer_Res133 : Bare_Composite_Stmt := No_Bare_Ada_Node; Defer_Pos134 : Token_Index := No_Token_Index; Defer_Res134 : Bare_Composite_Stmt := No_Bare_Ada_Node; Defer_Pos135 : Token_Index := No_Token_Index; Defer_Res135 : Bare_Extended_Return_Stmt := No_Bare_Ada_Node; Defer_Pos136 : Token_Index := No_Token_Index; Defer_Res136 : Bare_Case_Stmt := No_Bare_Ada_Node; Defer_Pos137 : Token_Index := No_Token_Index; Defer_Res137 : Bare_Accept_Stmt := No_Bare_Ada_Node; Defer_Pos138 : Token_Index := No_Token_Index; Defer_Res138 : Bare_Select_Stmt := No_Bare_Ada_Node; Or_Pos27 : Token_Index := No_Token_Index; Or_Res27 : Bare_Composite_Stmt := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Compound_Stmt_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res27 := M.Instance; return Or_Res27; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res27; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos27 := No_Token_Index; Or_Res27 := No_Bare_Ada_Node; Defer_Res132 := If_Stmt_Transform_Parse0 (Parser, Pos); Defer_Pos132 := Parser.Current_Pos; if Defer_Pos132 /= No_Token_Index then Or_Pos27 := Defer_Pos132; Or_Res27 := Defer_Res132; goto Exit_Or28; end if; Defer_Res133 := Block_Stmt_Or_Parse0 (Parser, Pos); Defer_Pos133 := Parser.Current_Pos; if Defer_Pos133 /= No_Token_Index then Or_Pos27 := Defer_Pos133; Or_Res27 := Defer_Res133; goto Exit_Or28; end if; Defer_Res134 := Loop_Stmt_Or_Parse0 (Parser, Pos); Defer_Pos134 := Parser.Current_Pos; if Defer_Pos134 /= No_Token_Index then Or_Pos27 := Defer_Pos134; Or_Res27 := Defer_Res134; goto Exit_Or28; end if; Defer_Res135 := Ext_Return_Stmt_Transform_Parse0 (Parser, Pos); Defer_Pos135 := Parser.Current_Pos; if Defer_Pos135 /= No_Token_Index then Or_Pos27 := Defer_Pos135; Or_Res27 := Defer_Res135; goto Exit_Or28; end if; Defer_Res136 := Case_Stmt_Transform_Parse0 (Parser, Pos); Defer_Pos136 := Parser.Current_Pos; if Defer_Pos136 /= No_Token_Index then Or_Pos27 := Defer_Pos136; Or_Res27 := Defer_Res136; goto Exit_Or28; end if; Defer_Res137 := Accept_Stmt_Or_Parse0 (Parser, Pos); Defer_Pos137 := Parser.Current_Pos; if Defer_Pos137 /= No_Token_Index then Or_Pos27 := Defer_Pos137; Or_Res27 := Defer_Res137; goto Exit_Or28; end if; Defer_Res138 := Select_Stmt_Transform_Parse1 (Parser, Pos); Defer_Pos138 := Parser.Current_Pos; if Defer_Pos138 /= No_Token_Index then Or_Pos27 := Defer_Pos138; Or_Res27 := Defer_Res138; goto Exit_Or28; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Compound_Stmt_Or_Parse0_Memo, Or_Pos27 /= No_Token_Index, Or_Res27, Pos, Or_Pos27); Parser.Current_Pos := Or_Pos27; return Or_Res27; end Compound_Stmt_Or_Parse0; function Conditional_Expr_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr is use Bare_Expr_Memos; Defer_Pos139 : Token_Index := No_Token_Index; Defer_Res139 : Bare_If_Expr := No_Bare_Ada_Node; Defer_Pos140 : Token_Index := No_Token_Index; Defer_Res140 : Bare_Case_Expr := No_Bare_Ada_Node; Defer_Pos141 : Token_Index := No_Token_Index; Defer_Res141 : Bare_Quantified_Expr := No_Bare_Ada_Node; Or_Pos28 : Token_Index := No_Token_Index; Or_Res28 : Bare_Expr := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Conditional_Expr_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res28 := M.Instance; return Or_Res28; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res28; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos28 := No_Token_Index; Or_Res28 := No_Bare_Ada_Node; Defer_Res139 := If_Expr_Transform_Parse1 (Parser, Pos); Defer_Pos139 := Parser.Current_Pos; if Defer_Pos139 /= No_Token_Index then Or_Pos28 := Defer_Pos139; Or_Res28 := Defer_Res139; goto Exit_Or29; end if; Defer_Res140 := Case_Expr_Transform_Parse0 (Parser, Pos); Defer_Pos140 := Parser.Current_Pos; if Defer_Pos140 /= No_Token_Index then Or_Pos28 := Defer_Pos140; Or_Res28 := Defer_Res140; goto Exit_Or29; end if; Defer_Res141 := Quantified_Expr_Transform_Parse2 (Parser, Pos); Defer_Pos141 := Parser.Current_Pos; if Defer_Pos141 /= No_Token_Index then Or_Pos28 := Defer_Pos141; Or_Res28 := Defer_Res141; goto Exit_Or29; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Conditional_Expr_Or_Parse0_Memo, Or_Pos28 /= No_Token_Index, Or_Res28, Pos, Or_Pos28); Parser.Current_Pos := Or_Pos28; return Or_Res28; end Conditional_Expr_Or_Parse0; function Constrained_Subtype_Indication_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Constrained_Subtype_Indication is use Bare_Constrained_Subtype_Indication_Memos; Row_Pos73 : Token_Index := No_Token_Index; Row_Pos74 : Token_Index := No_Token_Index; Token_Pos115 : Token_Index := No_Token_Index; Token_Res115 : Token_Index := No_Token_Index; Token_Pos116 : Token_Index := No_Token_Index; Token_Res116 : Token_Index := No_Token_Index; Opt_Res7 : Bare_Not_Null := No_Bare_Ada_Node; Defer_Pos142 : Token_Index := No_Token_Index; Defer_Res142 : Bare_Name := No_Bare_Ada_Node; Defer_Pos143 : Token_Index := No_Token_Index; Defer_Res143 : Bare_Constraint := No_Bare_Ada_Node; Transform_Res57 : Bare_Constrained_Subtype_Indication := No_Bare_Ada_Node; Transform_Diags57 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Constrained_Subtype_Indication_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res57 := M.Instance; return Transform_Res57; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res57; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags57 := Parser.Diagnostics.Length; -- Start row_code Row_Pos73 := Pos; -- Start opt_code -- Start row_code Row_Pos74 := Row_Pos73; -- Start tok_code Token_Res115 := Row_Pos74; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res115)); begin if T.Kind /= From_Token_Kind (Ada_Not) then Token_Pos115 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos74 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos74, Expected_Token_Id => Ada_Not, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos115 := Row_Pos74 + 1; end if; end; -- End tok_code if Token_Pos115 /= No_Token_Index then Row_Pos74 := Token_Pos115; else Row_Pos74 := No_Token_Index; goto Exit_Row74_0; end if; -- Start tok_code Token_Res116 := Row_Pos74; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res116)); begin if T.Kind /= From_Token_Kind (Ada_Null) then Token_Pos116 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos74 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos74, Expected_Token_Id => Ada_Null, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos116 := Row_Pos74 + 1; end if; end; -- End tok_code if Token_Pos116 /= No_Token_Index then Row_Pos74 := Token_Pos116; else Row_Pos74 := No_Token_Index; goto Exit_Row74_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos74 = No_Token_Index then Opt_Res7 := Allocate_Not_Null_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res7, Kind => Ada_Not_Null_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos73, Token_End_Index => No_Token_Index); Row_Pos74 := Row_Pos73; else Opt_Res7 := Allocate_Not_Null_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res7, Kind => Ada_Not_Null_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos73, Token_End_Index => Row_Pos74 - 1); end if; -- End opt_code if Row_Pos74 /= No_Token_Index then Row_Pos73 := Row_Pos74; else Row_Pos73 := No_Token_Index; goto Exit_Row73_0; end if; Defer_Res142 := Subtype_Name_Or_Parse0 (Parser, Row_Pos73); Defer_Pos142 := Parser.Current_Pos; if Defer_Pos142 /= No_Token_Index then Row_Pos73 := Defer_Pos142; else Row_Pos73 := No_Token_Index; goto Exit_Row73_0; end if; Defer_Res143 := Constraint_Or_Parse0 (Parser, Row_Pos73); Defer_Pos143 := Parser.Current_Pos; if Defer_Pos143 /= No_Token_Index then Row_Pos73 := Defer_Pos143; else Row_Pos73 := No_Token_Index; goto Exit_Row73_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos73 /= No_Token_Index then Transform_Res57 := Allocate_Constrained_Subtype_Indication (Parser.Mem_Pool); Initialize (Self => Transform_Res57, Kind => Ada_Constrained_Subtype_Indication, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos73 = Pos then No_Token_Index else Row_Pos73 - 1)); Initialize_Fields_For_Constrained_Subtype_Indication (Self => Transform_Res57, Subtype_Indication_F_Has_Not_Null => Opt_Res7, Subtype_Indication_F_Name => Defer_Res142, Subtype_Indication_F_Constraint => Defer_Res143); if Opt_Res7 /= null and then Is_Incomplete (Opt_Res7) then Transform_Res57.Last_Attempted_Child := 0; elsif Opt_Res7 /= null and then not Is_Ghost (Opt_Res7) then Transform_Res57.Last_Attempted_Child := -1; end if; if Defer_Res142 /= null and then Is_Incomplete (Defer_Res142) then Transform_Res57.Last_Attempted_Child := 0; elsif Defer_Res142 /= null and then not Is_Ghost (Defer_Res142) then Transform_Res57.Last_Attempted_Child := -1; end if; if Defer_Res143 /= null and then Is_Incomplete (Defer_Res143) then Transform_Res57.Last_Attempted_Child := 0; elsif Defer_Res143 /= null and then not Is_Ghost (Defer_Res143) then Transform_Res57.Last_Attempted_Child := -1; end if; elsif Row_Pos73 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags57); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Constrained_Subtype_Indication_Transform_Parse0_Memo, Row_Pos73 /= No_Token_Index, Transform_Res57, Pos, Row_Pos73); Parser.Current_Pos := Row_Pos73; return Transform_Res57; end Constrained_Subtype_Indication_Transform_Parse0; function Constraint_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Constraint is use Bare_Constraint_Memos; Defer_Pos144 : Token_Index := No_Token_Index; Defer_Res144 : Bare_Digits_Constraint := No_Bare_Ada_Node; Defer_Pos145 : Token_Index := No_Token_Index; Defer_Res145 : Bare_Delta_Constraint := No_Bare_Ada_Node; Defer_Pos146 : Token_Index := No_Token_Index; Defer_Res146 : Bare_Range_Constraint := No_Bare_Ada_Node; Defer_Pos147 : Token_Index := No_Token_Index; Defer_Res147 : Bare_Composite_Constraint := No_Bare_Ada_Node; Or_Pos29 : Token_Index := No_Token_Index; Or_Res29 : Bare_Constraint := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Constraint_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res29 := M.Instance; return Or_Res29; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res29; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos29 := No_Token_Index; Or_Res29 := No_Bare_Ada_Node; Defer_Res144 := Digits_Constraint_Transform_Parse0 (Parser, Pos); Defer_Pos144 := Parser.Current_Pos; if Defer_Pos144 /= No_Token_Index then Or_Pos29 := Defer_Pos144; Or_Res29 := Defer_Res144; goto Exit_Or30; end if; Defer_Res145 := Delta_Constraint_Transform_Parse0 (Parser, Pos); Defer_Pos145 := Parser.Current_Pos; if Defer_Pos145 /= No_Token_Index then Or_Pos29 := Defer_Pos145; Or_Res29 := Defer_Res145; goto Exit_Or30; end if; Defer_Res146 := Range_Constraint_Transform_Parse1 (Parser, Pos); Defer_Pos146 := Parser.Current_Pos; if Defer_Pos146 /= No_Token_Index then Or_Pos29 := Defer_Pos146; Or_Res29 := Defer_Res146; goto Exit_Or30; end if; Defer_Res147 := Composite_Constraint_Transform_Parse0 (Parser, Pos); Defer_Pos147 := Parser.Current_Pos; if Defer_Pos147 /= No_Token_Index then Or_Pos29 := Defer_Pos147; Or_Res29 := Defer_Res147; goto Exit_Or30; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Constraint_Or_Parse0_Memo, Or_Pos29 /= No_Token_Index, Or_Res29, Pos, Or_Pos29); Parser.Current_Pos := Or_Pos29; return Or_Res29; end Constraint_Or_Parse0; function Constraint_List_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Constraint_List is use Bare_Constraint_List_Memos; Lst_Cpos21 : Token_Index := No_Token_Index; Tmp_List21 : Free_Parse_List; Defer_Pos148 : Token_Index := No_Token_Index; Defer_Res148 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos117 : Token_Index := No_Token_Index; Token_Res117 : Token_Index := No_Token_Index; List_Pos21 : Token_Index := No_Token_Index; List_Res21 : Bare_Constraint_List := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Constraint_List_List_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; List_Res21 := M.Instance; return List_Res21; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return List_Res21; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start list_code List_Pos21 := No_Token_Index; Lst_Cpos21 := Pos; Tmp_List21 := Get_Parse_List (Parser); loop Defer_Res148 := Discrete_Subtype_Definition_Or_Parse0 (Parser, Lst_Cpos21); Defer_Pos148 := Parser.Current_Pos; exit when Defer_Pos148 = No_Token_Index; List_Pos21 := Defer_Pos148; Lst_Cpos21 := List_Pos21; Tmp_List21.Nodes.Append (Defer_Res148); -- Start tok_code Token_Res117 := Lst_Cpos21; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res117)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos117 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos21 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos21, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos117 := Lst_Cpos21 + 1; end if; end; -- End tok_code if Token_Pos117 /= No_Token_Index then Lst_Cpos21 := Token_Pos117; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List21.Nodes.Length; begin List_Res21 := Allocate_Constraint_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Pos; Token_End := (if Lst_Cpos21 = Pos then Pos else Lst_Cpos21 - 1); else Token_Start := Token_Index'Max (Pos, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res21, Kind => Ada_Constraint_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res21, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List21.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res21.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List21); -- End list_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Constraint_List_List_Parse0_Memo, List_Pos21 /= No_Token_Index, List_Res21, Pos, List_Pos21); Parser.Current_Pos := List_Pos21; return List_Res21; end Constraint_List_List_Parse0; function Context_Item_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Defer_Pos149 : Token_Index := No_Token_Index; Defer_Res149 : Bare_With_Clause := No_Bare_Ada_Node; Defer_Pos150 : Token_Index := No_Token_Index; Defer_Res150 : Bare_Use_Clause := No_Bare_Ada_Node; Defer_Pos151 : Token_Index := No_Token_Index; Defer_Res151 : Bare_Pragma_Node := No_Bare_Ada_Node; Or_Pos30 : Token_Index := No_Token_Index; Or_Res30 : Bare_Ada_Node := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Context_Item_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res30 := M.Instance; return Or_Res30; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res30; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos30 := No_Token_Index; Or_Res30 := No_Bare_Ada_Node; Defer_Res149 := With_Clause_Transform_Parse0 (Parser, Pos); Defer_Pos149 := Parser.Current_Pos; if Defer_Pos149 /= No_Token_Index then Or_Pos30 := Defer_Pos149; Or_Res30 := Defer_Res149; goto Exit_Or31; end if; Defer_Res150 := Use_Clause_Or_Parse0 (Parser, Pos); Defer_Pos150 := Parser.Current_Pos; if Defer_Pos150 /= No_Token_Index then Or_Pos30 := Defer_Pos150; Or_Res30 := Defer_Res150; goto Exit_Or31; end if; Defer_Res151 := Pragma_Transform_Parse0 (Parser, Pos); Defer_Pos151 := Parser.Current_Pos; if Defer_Pos151 /= No_Token_Index then Or_Pos30 := Defer_Pos151; Or_Res30 := Defer_Res151; goto Exit_Or31; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Context_Item_Or_Parse0_Memo, Or_Pos30 /= No_Token_Index, Or_Res30, Pos, Or_Pos30); Parser.Current_Pos := Or_Pos30; return Or_Res30; end Context_Item_Or_Parse0; function Contract_Case_Assoc_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Contract_Case_Assoc is use Bare_Contract_Case_Assoc_Memos; Row_Pos75 : Token_Index := No_Token_Index; Defer_Pos152 : Token_Index := No_Token_Index; Defer_Res152 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos153 : Token_Index := No_Token_Index; Defer_Res153 : Bare_Others_Designator := No_Bare_Ada_Node; Or_Pos31 : Token_Index := No_Token_Index; Or_Res31 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos118 : Token_Index := No_Token_Index; Token_Res118 : Token_Index := No_Token_Index; Defer_Pos154 : Token_Index := No_Token_Index; Defer_Res154 : Bare_Expr := No_Bare_Ada_Node; Transform_Res58 : Bare_Contract_Case_Assoc := No_Bare_Ada_Node; Transform_Diags58 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Contract_Case_Assoc_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res58 := M.Instance; return Transform_Res58; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res58; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags58 := Parser.Diagnostics.Length; -- Start row_code Row_Pos75 := Pos; -- Start or_code Or_Pos31 := No_Token_Index; Or_Res31 := No_Bare_Ada_Node; Defer_Res152 := Expr_Or_Parse0 (Parser, Row_Pos75); Defer_Pos152 := Parser.Current_Pos; if Defer_Pos152 /= No_Token_Index then Or_Pos31 := Defer_Pos152; Or_Res31 := Defer_Res152; goto Exit_Or32; end if; Defer_Res153 := Others_Designator_Transform_Parse0 (Parser, Row_Pos75); Defer_Pos153 := Parser.Current_Pos; if Defer_Pos153 /= No_Token_Index then Or_Pos31 := Defer_Pos153; Or_Res31 := Defer_Res153; goto Exit_Or32; end if; <> -- End or_code if Or_Pos31 /= No_Token_Index then Row_Pos75 := Or_Pos31; else Row_Pos75 := No_Token_Index; goto Exit_Row75_0; end if; -- Start tok_code Token_Res118 := Row_Pos75; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res118)); begin if T.Kind /= From_Token_Kind (Ada_Arrow) then Token_Pos118 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos75 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos75, Expected_Token_Id => Ada_Arrow, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos118 := Row_Pos75 + 1; end if; end; -- End tok_code if Token_Pos118 /= No_Token_Index then Row_Pos75 := Token_Pos118; else Row_Pos75 := No_Token_Index; goto Exit_Row75_0; end if; Defer_Res154 := Expr_Or_Parse0 (Parser, Row_Pos75); Defer_Pos154 := Parser.Current_Pos; if Defer_Pos154 /= No_Token_Index then Row_Pos75 := Defer_Pos154; else Row_Pos75 := No_Token_Index; goto Exit_Row75_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos75 /= No_Token_Index then Transform_Res58 := Allocate_Contract_Case_Assoc (Parser.Mem_Pool); Initialize (Self => Transform_Res58, Kind => Ada_Contract_Case_Assoc, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos75 = Pos then No_Token_Index else Row_Pos75 - 1)); Initialize_Fields_For_Contract_Case_Assoc (Self => Transform_Res58, Contract_Case_Assoc_F_Guard => Or_Res31, Contract_Case_Assoc_F_Consequence => Defer_Res154); if Or_Res31 /= null and then Is_Incomplete (Or_Res31) then Transform_Res58.Last_Attempted_Child := 0; elsif Or_Res31 /= null and then not Is_Ghost (Or_Res31) then Transform_Res58.Last_Attempted_Child := -1; end if; if Defer_Res154 /= null and then Is_Incomplete (Defer_Res154) then Transform_Res58.Last_Attempted_Child := 0; elsif Defer_Res154 /= null and then not Is_Ghost (Defer_Res154) then Transform_Res58.Last_Attempted_Child := -1; end if; elsif Row_Pos75 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags58); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Contract_Case_Assoc_Transform_Parse0_Memo, Row_Pos75 /= No_Token_Index, Transform_Res58, Pos, Row_Pos75); Parser.Current_Pos := Row_Pos75; return Transform_Res58; end Contract_Case_Assoc_Transform_Parse0; function Contract_Cases_Expr_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Contract_Cases is use Bare_Contract_Cases_Memos; Row_Pos76 : Token_Index := No_Token_Index; Token_Pos119 : Token_Index := No_Token_Index; Token_Res119 : Token_Index := No_Token_Index; Lst_Cpos22 : Token_Index := No_Token_Index; Tmp_List22 : Free_Parse_List; Defer_Pos155 : Token_Index := No_Token_Index; Defer_Res155 : Bare_Contract_Case_Assoc := No_Bare_Ada_Node; Token_Pos120 : Token_Index := No_Token_Index; Token_Res120 : Token_Index := No_Token_Index; List_Pos22 : Token_Index := No_Token_Index; List_Res22 : Bare_Contract_Case_Assoc_List := No_Bare_Ada_Node; Token_Pos121 : Token_Index := No_Token_Index; Token_Res121 : Token_Index := No_Token_Index; Transform_Res59 : Bare_Contract_Cases := No_Bare_Ada_Node; Transform_Diags59 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Contract_Cases_Expr_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res59 := M.Instance; return Transform_Res59; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res59; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags59 := Parser.Diagnostics.Length; -- Start row_code Row_Pos76 := Pos; -- Start tok_code Token_Res119 := Row_Pos76; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res119)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos119 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos76 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos76, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos119 := Row_Pos76 + 1; end if; end; -- End tok_code if Token_Pos119 /= No_Token_Index then Row_Pos76 := Token_Pos119; else Row_Pos76 := No_Token_Index; goto Exit_Row76_0; end if; -- Start list_code List_Pos22 := No_Token_Index; Lst_Cpos22 := Row_Pos76; Tmp_List22 := Get_Parse_List (Parser); loop Defer_Res155 := Contract_Case_Assoc_Transform_Parse0 (Parser, Lst_Cpos22); Defer_Pos155 := Parser.Current_Pos; exit when Defer_Pos155 = No_Token_Index; List_Pos22 := Defer_Pos155; Lst_Cpos22 := List_Pos22; Tmp_List22.Nodes.Append (Defer_Res155); -- Start tok_code Token_Res120 := Lst_Cpos22; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res120)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos120 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos22 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos22, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos120 := Lst_Cpos22 + 1; end if; end; -- End tok_code if Token_Pos120 /= No_Token_Index then Lst_Cpos22 := Token_Pos120; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List22.Nodes.Length; begin List_Res22 := Allocate_Contract_Case_Assoc_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos76; Token_End := (if Lst_Cpos22 = Row_Pos76 then Row_Pos76 else Lst_Cpos22 - 1); else Token_Start := Token_Index'Max (Row_Pos76, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res22, Kind => Ada_Contract_Case_Assoc_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res22, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List22.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res22.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List22); -- End list_code if List_Pos22 /= No_Token_Index then Row_Pos76 := List_Pos22; else Row_Pos76 := No_Token_Index; goto Exit_Row76_0; end if; -- Start tok_code Token_Res121 := Row_Pos76; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res121)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos121 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos76 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos76, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos121 := Row_Pos76 + 1; end if; end; -- End tok_code if Token_Pos121 /= No_Token_Index then Row_Pos76 := Token_Pos121; else Row_Pos76 := No_Token_Index; goto Exit_Row76_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos76 /= No_Token_Index then Transform_Res59 := Allocate_Contract_Cases (Parser.Mem_Pool); Initialize (Self => Transform_Res59, Kind => Ada_Contract_Cases, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos76 = Pos then No_Token_Index else Row_Pos76 - 1)); Initialize_Fields_For_Contract_Cases (Self => Transform_Res59, Contract_Cases_F_Contract_Cases => List_Res22); if List_Res22 /= null and then Is_Incomplete (List_Res22) then Transform_Res59.Last_Attempted_Child := 0; elsif List_Res22 /= null and then not Is_Ghost (List_Res22) then Transform_Res59.Last_Attempted_Child := -1; end if; elsif Row_Pos76 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags59); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Contract_Cases_Expr_Transform_Parse0_Memo, Row_Pos76 /= No_Token_Index, Transform_Res59, Pos, Row_Pos76); Parser.Current_Pos := Row_Pos76; return Transform_Res59; end Contract_Cases_Expr_Transform_Parse0; function Dec_Literal_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Real_Literal is use Bare_Real_Literal_Memos; Row_Pos77 : Token_Index := No_Token_Index; Token_Pos122 : Token_Index := No_Token_Index; Token_Res122 : Token_Index := No_Token_Index; Transform_Res60 : Bare_Real_Literal := No_Bare_Ada_Node; Transform_Diags60 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Dec_Literal_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res60 := M.Instance; return Transform_Res60; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res60; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags60 := Parser.Diagnostics.Length; -- Start row_code Row_Pos77 := Pos; -- Start tok_code Token_Res122 := Row_Pos77; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res122)); begin if T.Kind /= From_Token_Kind (Ada_Decimal) then Token_Pos122 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos77 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos77, Expected_Token_Id => Ada_Decimal, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos122 := Row_Pos77 + 1; end if; end; -- End tok_code if Token_Pos122 /= No_Token_Index then Row_Pos77 := Token_Pos122; else Row_Pos77 := No_Token_Index; goto Exit_Row77_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos77 /= No_Token_Index then Transform_Res60 := Allocate_Real_Literal (Parser.Mem_Pool); Initialize (Self => Transform_Res60, Kind => Ada_Real_Literal, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos77 = Pos then No_Token_Index else Row_Pos77 - 1)); Initialize_Fields_For_Real_Literal (Self => Transform_Res60); elsif Row_Pos77 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags60); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dec_Literal_Transform_Parse0_Memo, Row_Pos77 /= No_Token_Index, Transform_Res60, Pos, Row_Pos77); Parser.Current_Pos := Row_Pos77; return Transform_Res60; end Dec_Literal_Transform_Parse0; function Decimal_Fixed_Point_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Decimal_Fixed_Point_Def is use Bare_Decimal_Fixed_Point_Def_Memos; Row_Pos78 : Token_Index := No_Token_Index; Token_Pos123 : Token_Index := No_Token_Index; Token_Res123 : Token_Index := No_Token_Index; Defer_Pos156 : Token_Index := No_Token_Index; Defer_Res156 : Bare_Expr := No_Bare_Ada_Node; Token_Pos124 : Token_Index := No_Token_Index; Token_Res124 : Token_Index := No_Token_Index; Defer_Pos157 : Token_Index := No_Token_Index; Defer_Res157 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos158 : Token_Index := No_Token_Index; Defer_Res158 : Bare_Range_Spec := No_Bare_Ada_Node; Transform_Res61 : Bare_Decimal_Fixed_Point_Def := No_Bare_Ada_Node; Transform_Diags61 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Decimal_Fixed_Point_Def_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res61 := M.Instance; return Transform_Res61; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res61; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags61 := Parser.Diagnostics.Length; -- Start row_code Row_Pos78 := Pos; -- Start tok_code Token_Res123 := Row_Pos78; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res123)); begin if T.Kind /= From_Token_Kind (Ada_Delta) then Token_Pos123 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos78 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos78, Expected_Token_Id => Ada_Delta, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos123 := Row_Pos78 + 1; end if; end; -- End tok_code if Token_Pos123 /= No_Token_Index then Row_Pos78 := Token_Pos123; else Row_Pos78 := No_Token_Index; goto Exit_Row78_0; end if; Defer_Res156 := Sexpr_Or_Box_Or_Parse0 (Parser, Row_Pos78); Defer_Pos156 := Parser.Current_Pos; if Defer_Pos156 /= No_Token_Index then Row_Pos78 := Defer_Pos156; else Row_Pos78 := No_Token_Index; goto Exit_Row78_0; end if; -- Start tok_code Token_Res124 := Row_Pos78; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res124)); begin if T.Kind /= From_Token_Kind (Ada_Digits) then Token_Pos124 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos78 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos78, Expected_Token_Id => Ada_Digits, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos124 := Row_Pos78 + 1; end if; end; -- End tok_code if Token_Pos124 /= No_Token_Index then Row_Pos78 := Token_Pos124; else Row_Pos78 := No_Token_Index; goto Exit_Row78_0; end if; Defer_Res157 := Sexpr_Or_Box_Or_Parse0 (Parser, Row_Pos78); Defer_Pos157 := Parser.Current_Pos; if Defer_Pos157 /= No_Token_Index then Row_Pos78 := Defer_Pos157; else Row_Pos78 := No_Token_Index; goto Exit_Row78_0; end if; -- Start opt_code Defer_Res158 := Range_Spec_Transform_Parse0 (Parser, Row_Pos78); Defer_Pos158 := Parser.Current_Pos; if Defer_Pos158 = No_Token_Index then Defer_Res158 := No_Bare_Ada_Node; Defer_Pos158 := Row_Pos78; end if; -- End opt_code if Defer_Pos158 /= No_Token_Index then Row_Pos78 := Defer_Pos158; else Row_Pos78 := No_Token_Index; goto Exit_Row78_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos78 /= No_Token_Index then Transform_Res61 := Allocate_Decimal_Fixed_Point_Def (Parser.Mem_Pool); Initialize (Self => Transform_Res61, Kind => Ada_Decimal_Fixed_Point_Def, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos78 = Pos then No_Token_Index else Row_Pos78 - 1)); Initialize_Fields_For_Decimal_Fixed_Point_Def (Self => Transform_Res61, Decimal_Fixed_Point_Def_F_Delta => Defer_Res156, Decimal_Fixed_Point_Def_F_Digits => Defer_Res157, Decimal_Fixed_Point_Def_F_Range => Defer_Res158); if Defer_Res156 /= null and then Is_Incomplete (Defer_Res156) then Transform_Res61.Last_Attempted_Child := 0; elsif Defer_Res156 /= null and then not Is_Ghost (Defer_Res156) then Transform_Res61.Last_Attempted_Child := -1; end if; if Defer_Res157 /= null and then Is_Incomplete (Defer_Res157) then Transform_Res61.Last_Attempted_Child := 0; elsif Defer_Res157 /= null and then not Is_Ghost (Defer_Res157) then Transform_Res61.Last_Attempted_Child := -1; end if; if Defer_Res158 /= null and then Is_Incomplete (Defer_Res158) then Transform_Res61.Last_Attempted_Child := 0; elsif Defer_Res158 /= null and then not Is_Ghost (Defer_Res158) then Transform_Res61.Last_Attempted_Child := -1; end if; elsif Row_Pos78 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags61); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Decimal_Fixed_Point_Def_Transform_Parse0_Memo, Row_Pos78 /= No_Token_Index, Transform_Res61, Pos, Row_Pos78); Parser.Current_Pos := Row_Pos78; return Transform_Res61; end Decimal_Fixed_Point_Def_Transform_Parse0; function Decl_Part_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Declarative_Part is use Bare_Declarative_Part_Memos; Row_Pos79 : Token_Index := No_Token_Index; Defer_Pos159 : Token_Index := No_Token_Index; Defer_Res159 : Bare_Ada_Node_List := No_Bare_Ada_Node; Transform_Res62 : Bare_Declarative_Part := No_Bare_Ada_Node; Transform_Diags62 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Decl_Part_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res62 := M.Instance; return Transform_Res62; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res62; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags62 := Parser.Diagnostics.Length; -- Start row_code Row_Pos79 := Pos; Defer_Res159 := Basic_Decls_List_Parse0 (Parser, Row_Pos79); Defer_Pos159 := Parser.Current_Pos; if Defer_Pos159 /= No_Token_Index then Row_Pos79 := Defer_Pos159; else Row_Pos79 := No_Token_Index; goto Exit_Row79_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos79 /= No_Token_Index then Transform_Res62 := Allocate_Declarative_Part (Parser.Mem_Pool); Initialize (Self => Transform_Res62, Kind => Ada_Declarative_Part, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos79 = Pos then No_Token_Index else Row_Pos79 - 1)); Initialize_Fields_For_Declarative_Part (Self => Transform_Res62, Declarative_Part_F_Decls => Defer_Res159); if Defer_Res159 /= null and then Is_Incomplete (Defer_Res159) then Transform_Res62.Last_Attempted_Child := 0; elsif Defer_Res159 /= null and then not Is_Ghost (Defer_Res159) then Transform_Res62.Last_Attempted_Child := -1; end if; elsif Row_Pos79 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags62); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Decl_Part_Transform_Parse0_Memo, Row_Pos79 /= No_Token_Index, Transform_Res62, Pos, Row_Pos79); Parser.Current_Pos := Row_Pos79; return Transform_Res62; end Decl_Part_Transform_Parse0; function Declare_Expr_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Decl_Expr is use Bare_Decl_Expr_Memos; Row_Pos80 : Token_Index := No_Token_Index; Token_Pos125 : Token_Index := No_Token_Index; Token_Res125 : Token_Index := No_Token_Index; Lst_Cpos23 : Token_Index := No_Token_Index; Tmp_List23 : Free_Parse_List; Defer_Pos160 : Token_Index := No_Token_Index; Defer_Res160 : Bare_Basic_Decl := No_Bare_Ada_Node; List_Pos23 : Token_Index := No_Token_Index; List_Res23 : Bare_Basic_Decl_List := No_Bare_Ada_Node; Token_Pos126 : Token_Index := No_Token_Index; Token_Res126 : Token_Index := No_Token_Index; Defer_Pos161 : Token_Index := No_Token_Index; Defer_Res161 : Bare_Expr := No_Bare_Ada_Node; Transform_Res63 : Bare_Decl_Expr := No_Bare_Ada_Node; Transform_Diags63 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Declare_Expr_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res63 := M.Instance; return Transform_Res63; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res63; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags63 := Parser.Diagnostics.Length; -- Start row_code Row_Pos80 := Pos; -- Start tok_code Token_Res125 := Row_Pos80; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res125)); begin if T.Kind /= From_Token_Kind (Ada_Declare) then Token_Pos125 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos80 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos80, Expected_Token_Id => Ada_Declare, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos125 := Row_Pos80 + 1; end if; end; -- End tok_code if Token_Pos125 /= No_Token_Index then Row_Pos80 := Token_Pos125; else Row_Pos80 := No_Token_Index; goto Exit_Row80_0; end if; -- Start list_code List_Pos23 := Row_Pos80; Lst_Cpos23 := Row_Pos80; Tmp_List23 := Get_Parse_List (Parser); loop Defer_Res160 := Object_Decl_Or_Parse0 (Parser, Lst_Cpos23); Defer_Pos160 := Parser.Current_Pos; exit when Defer_Pos160 = No_Token_Index; List_Pos23 := Defer_Pos160; Lst_Cpos23 := List_Pos23; Tmp_List23.Nodes.Append (Defer_Res160); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List23.Nodes.Length; begin List_Res23 := Allocate_Basic_Decl_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos80; Token_End := (if Lst_Cpos23 = Row_Pos80 then Row_Pos80 else Lst_Cpos23 - 1); else Token_Start := Token_Index'Max (Row_Pos80, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res23, Kind => Ada_Basic_Decl_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res23, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List23.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res23.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List23); -- End list_code if List_Pos23 /= No_Token_Index then Row_Pos80 := List_Pos23; else Row_Pos80 := No_Token_Index; goto Exit_Row80_0; end if; -- Start tok_code Token_Res126 := Row_Pos80; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res126)); begin if T.Kind /= From_Token_Kind (Ada_Begin) then Token_Pos126 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos80 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos80, Expected_Token_Id => Ada_Begin, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos126 := Row_Pos80 + 1; end if; end; -- End tok_code if Token_Pos126 /= No_Token_Index then Row_Pos80 := Token_Pos126; else Row_Pos80 := No_Token_Index; goto Exit_Row80_0; end if; Defer_Res161 := Expr_Or_Parse0 (Parser, Row_Pos80); Defer_Pos161 := Parser.Current_Pos; if Defer_Pos161 /= No_Token_Index then Row_Pos80 := Defer_Pos161; else Row_Pos80 := No_Token_Index; goto Exit_Row80_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos80 /= No_Token_Index then Transform_Res63 := Allocate_Decl_Expr (Parser.Mem_Pool); Initialize (Self => Transform_Res63, Kind => Ada_Decl_Expr, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos80 = Pos then No_Token_Index else Row_Pos80 - 1)); Initialize_Fields_For_Decl_Expr (Self => Transform_Res63, Decl_Expr_F_Decls => List_Res23, Decl_Expr_F_Expr => Defer_Res161); if List_Res23 /= null and then Is_Incomplete (List_Res23) then Transform_Res63.Last_Attempted_Child := 0; elsif List_Res23 /= null and then not Is_Ghost (List_Res23) then Transform_Res63.Last_Attempted_Child := -1; end if; if Defer_Res161 /= null and then Is_Incomplete (Defer_Res161) then Transform_Res63.Last_Attempted_Child := 0; elsif Defer_Res161 /= null and then not Is_Ghost (Defer_Res161) then Transform_Res63.Last_Attempted_Child := -1; end if; elsif Row_Pos80 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags63); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Declare_Expr_Transform_Parse0_Memo, Row_Pos80 /= No_Token_Index, Transform_Res63, Pos, Row_Pos80); Parser.Current_Pos := Row_Pos80; return Transform_Res63; end Declare_Expr_Transform_Parse0; function Defining_Id_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Defining_Name is use Bare_Defining_Name_Memos; Row_Pos81 : Token_Index := No_Token_Index; Defer_Pos162 : Token_Index := No_Token_Index; Defer_Res162 : Bare_Identifier := No_Bare_Ada_Node; Transform_Res64 : Bare_Defining_Name := No_Bare_Ada_Node; Transform_Diags64 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Defining_Id_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res64 := M.Instance; return Transform_Res64; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res64; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags64 := Parser.Diagnostics.Length; -- Start row_code Row_Pos81 := Pos; Defer_Res162 := Identifier_Transform_Parse0 (Parser, Row_Pos81); Defer_Pos162 := Parser.Current_Pos; if Defer_Pos162 /= No_Token_Index then Row_Pos81 := Defer_Pos162; else Row_Pos81 := No_Token_Index; goto Exit_Row81_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos81 /= No_Token_Index then Transform_Res64 := Allocate_Defining_Name (Parser.Mem_Pool); Initialize (Self => Transform_Res64, Kind => Ada_Defining_Name, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos81 = Pos then No_Token_Index else Row_Pos81 - 1)); Initialize_Fields_For_Defining_Name (Self => Transform_Res64, Defining_Name_F_Name => Defer_Res162); if Defer_Res162 /= null and then Is_Incomplete (Defer_Res162) then Transform_Res64.Last_Attempted_Child := 0; elsif Defer_Res162 /= null and then not Is_Ghost (Defer_Res162) then Transform_Res64.Last_Attempted_Child := -1; end if; elsif Row_Pos81 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags64); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Defining_Id_Transform_Parse0_Memo, Row_Pos81 /= No_Token_Index, Transform_Res64, Pos, Row_Pos81); Parser.Current_Pos := Row_Pos81; return Transform_Res64; end Defining_Id_Transform_Parse0; function Defining_Id_List_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Defining_Name_List is use Bare_Defining_Name_List_Memos; Lst_Cpos24 : Token_Index := No_Token_Index; Tmp_List24 : Free_Parse_List; Defer_Pos163 : Token_Index := No_Token_Index; Defer_Res163 : Bare_Defining_Name := No_Bare_Ada_Node; Token_Pos127 : Token_Index := No_Token_Index; Token_Res127 : Token_Index := No_Token_Index; List_Pos24 : Token_Index := No_Token_Index; List_Res24 : Bare_Defining_Name_List := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Defining_Id_List_List_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; List_Res24 := M.Instance; return List_Res24; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return List_Res24; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start list_code List_Pos24 := No_Token_Index; Lst_Cpos24 := Pos; Tmp_List24 := Get_Parse_List (Parser); loop Defer_Res163 := Defining_Id_Transform_Parse0 (Parser, Lst_Cpos24); Defer_Pos163 := Parser.Current_Pos; exit when Defer_Pos163 = No_Token_Index; List_Pos24 := Defer_Pos163; Lst_Cpos24 := List_Pos24; Tmp_List24.Nodes.Append (Defer_Res163); -- Start tok_code Token_Res127 := Lst_Cpos24; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res127)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos127 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos24 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos24, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos127 := Lst_Cpos24 + 1; end if; end; -- End tok_code if Token_Pos127 /= No_Token_Index then Lst_Cpos24 := Token_Pos127; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List24.Nodes.Length; begin List_Res24 := Allocate_Defining_Name_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Pos; Token_End := (if Lst_Cpos24 = Pos then Pos else Lst_Cpos24 - 1); else Token_Start := Token_Index'Max (Pos, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res24, Kind => Ada_Defining_Name_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res24, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List24.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res24.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List24); -- End list_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Defining_Id_List_List_Parse0_Memo, List_Pos24 /= No_Token_Index, List_Res24, Pos, List_Pos24); Parser.Current_Pos := List_Pos24; return List_Res24; end Defining_Id_List_List_Parse0; function Defining_Name_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Defining_Name is use Bare_Defining_Name_Memos; Row_Pos82 : Token_Index := No_Token_Index; Defer_Pos164 : Token_Index := No_Token_Index; Defer_Res164 : Bare_Name := No_Bare_Ada_Node; Transform_Res65 : Bare_Defining_Name := No_Bare_Ada_Node; Transform_Diags65 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Defining_Name_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res65 := M.Instance; return Transform_Res65; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res65; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags65 := Parser.Diagnostics.Length; -- Start row_code Row_Pos82 := Pos; Defer_Res164 := Static_Name_Or_Parse0 (Parser, Row_Pos82); Defer_Pos164 := Parser.Current_Pos; if Defer_Pos164 /= No_Token_Index then Row_Pos82 := Defer_Pos164; else Row_Pos82 := No_Token_Index; goto Exit_Row82_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos82 /= No_Token_Index then Transform_Res65 := Allocate_Defining_Name (Parser.Mem_Pool); Initialize (Self => Transform_Res65, Kind => Ada_Defining_Name, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos82 = Pos then No_Token_Index else Row_Pos82 - 1)); Initialize_Fields_For_Defining_Name (Self => Transform_Res65, Defining_Name_F_Name => Defer_Res164); if Defer_Res164 /= null and then Is_Incomplete (Defer_Res164) then Transform_Res65.Last_Attempted_Child := 0; elsif Defer_Res164 /= null and then not Is_Ghost (Defer_Res164) then Transform_Res65.Last_Attempted_Child := -1; end if; elsif Row_Pos82 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags65); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Defining_Name_Transform_Parse0_Memo, Row_Pos82 /= No_Token_Index, Transform_Res65, Pos, Row_Pos82); Parser.Current_Pos := Row_Pos82; return Transform_Res65; end Defining_Name_Transform_Parse0; function Delay_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Delay_Stmt is use Bare_Delay_Stmt_Memos; Row_Pos83 : Token_Index := No_Token_Index; Token_Pos128 : Token_Index := No_Token_Index; Token_Res128 : Token_Index := No_Token_Index; Token_Pos129 : Token_Index := No_Token_Index; Token_Res129 : Token_Index := No_Token_Index; Opt_Res8 : Bare_Until_Node := No_Bare_Ada_Node; Defer_Pos165 : Token_Index := No_Token_Index; Defer_Res165 : Bare_Expr := No_Bare_Ada_Node; Token_Pos130 : Token_Index := No_Token_Index; Token_Res130 : Token_Index := No_Token_Index; Transform_Res66 : Bare_Delay_Stmt := No_Bare_Ada_Node; Transform_Diags66 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Delay_Stmt_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res66 := M.Instance; return Transform_Res66; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res66; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags66 := Parser.Diagnostics.Length; -- Start row_code Row_Pos83 := Pos; -- Start tok_code Token_Res128 := Row_Pos83; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res128)); begin if T.Kind /= From_Token_Kind (Ada_Delay) then Token_Pos128 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos83 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos83, Expected_Token_Id => Ada_Delay, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos128 := Row_Pos83 + 1; end if; end; -- End tok_code if Token_Pos128 /= No_Token_Index then Row_Pos83 := Token_Pos128; else Row_Pos83 := No_Token_Index; goto Exit_Row83_0; end if; -- Start opt_code -- Start tok_code Token_Res129 := Row_Pos83; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res129)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Until) then Token_Pos129 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos83 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos83, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos129 := Row_Pos83 + 1; end if; end; -- End tok_code if Token_Pos129 = No_Token_Index then Opt_Res8 := Allocate_Until_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res8, Kind => Ada_Until_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos83, Token_End_Index => No_Token_Index); Token_Pos129 := Row_Pos83; else Opt_Res8 := Allocate_Until_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res8, Kind => Ada_Until_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos83, Token_End_Index => Token_Pos129 - 1); end if; -- End opt_code if Token_Pos129 /= No_Token_Index then Row_Pos83 := Token_Pos129; else Row_Pos83 := No_Token_Index; goto Exit_Row83_0; end if; Defer_Res165 := Expr_Or_Parse0 (Parser, Row_Pos83); Defer_Pos165 := Parser.Current_Pos; if Defer_Pos165 /= No_Token_Index then Row_Pos83 := Defer_Pos165; else Row_Pos83 := No_Token_Index; goto Exit_Row83_0; end if; -- Start opt_code -- Start tok_code Token_Res130 := Row_Pos83; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res130)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos130 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos83 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos83, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos130 := Row_Pos83 + 1; end if; end; -- End tok_code if Token_Pos130 = No_Token_Index then Token_Res130 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos83)), To_Text ("Missing ';'")); Token_Pos130 := Row_Pos83; end if; -- End opt_code if Token_Pos130 /= No_Token_Index then Row_Pos83 := Token_Pos130; else Row_Pos83 := No_Token_Index; goto Exit_Row83_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos83 /= No_Token_Index then Transform_Res66 := Allocate_Delay_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res66, Kind => Ada_Delay_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos83 = Pos then No_Token_Index else Row_Pos83 - 1)); Initialize_Fields_For_Delay_Stmt (Self => Transform_Res66, Delay_Stmt_F_Has_Until => Opt_Res8, Delay_Stmt_F_Expr => Defer_Res165); if Opt_Res8 /= null and then Is_Incomplete (Opt_Res8) then Transform_Res66.Last_Attempted_Child := 0; elsif Opt_Res8 /= null and then not Is_Ghost (Opt_Res8) then Transform_Res66.Last_Attempted_Child := -1; end if; if Defer_Res165 /= null and then Is_Incomplete (Defer_Res165) then Transform_Res66.Last_Attempted_Child := 0; elsif Defer_Res165 /= null and then not Is_Ghost (Defer_Res165) then Transform_Res66.Last_Attempted_Child := -1; end if; elsif Row_Pos83 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags66); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Delay_Stmt_Transform_Parse0_Memo, Row_Pos83 /= No_Token_Index, Transform_Res66, Pos, Row_Pos83); Parser.Current_Pos := Row_Pos83; return Transform_Res66; end Delay_Stmt_Transform_Parse0; function Delta_Constraint_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Delta_Constraint is use Bare_Delta_Constraint_Memos; Row_Pos84 : Token_Index := No_Token_Index; Token_Pos131 : Token_Index := No_Token_Index; Token_Res131 : Token_Index := No_Token_Index; Defer_Pos166 : Token_Index := No_Token_Index; Defer_Res166 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos167 : Token_Index := No_Token_Index; Defer_Res167 : Bare_Range_Spec := No_Bare_Ada_Node; Transform_Res67 : Bare_Delta_Constraint := No_Bare_Ada_Node; Transform_Diags67 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Delta_Constraint_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res67 := M.Instance; return Transform_Res67; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res67; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags67 := Parser.Diagnostics.Length; -- Start row_code Row_Pos84 := Pos; -- Start tok_code Token_Res131 := Row_Pos84; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res131)); begin if T.Kind /= From_Token_Kind (Ada_Delta) then Token_Pos131 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos84 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos84, Expected_Token_Id => Ada_Delta, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos131 := Row_Pos84 + 1; end if; end; -- End tok_code if Token_Pos131 /= No_Token_Index then Row_Pos84 := Token_Pos131; else Row_Pos84 := No_Token_Index; goto Exit_Row84_0; end if; Defer_Res166 := Simple_Expr_Or_Parse1 (Parser, Row_Pos84); Defer_Pos166 := Parser.Current_Pos; if Defer_Pos166 /= No_Token_Index then Row_Pos84 := Defer_Pos166; else Row_Pos84 := No_Token_Index; goto Exit_Row84_0; end if; -- Start opt_code Defer_Res167 := Range_Spec_Transform_Parse0 (Parser, Row_Pos84); Defer_Pos167 := Parser.Current_Pos; if Defer_Pos167 = No_Token_Index then Defer_Res167 := No_Bare_Ada_Node; Defer_Pos167 := Row_Pos84; end if; -- End opt_code if Defer_Pos167 /= No_Token_Index then Row_Pos84 := Defer_Pos167; else Row_Pos84 := No_Token_Index; goto Exit_Row84_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos84 /= No_Token_Index then Transform_Res67 := Allocate_Delta_Constraint (Parser.Mem_Pool); Initialize (Self => Transform_Res67, Kind => Ada_Delta_Constraint, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos84 = Pos then No_Token_Index else Row_Pos84 - 1)); Initialize_Fields_For_Delta_Constraint (Self => Transform_Res67, Delta_Constraint_F_Digits => Defer_Res166, Delta_Constraint_F_Range => Defer_Res167); if Defer_Res166 /= null and then Is_Incomplete (Defer_Res166) then Transform_Res67.Last_Attempted_Child := 0; elsif Defer_Res166 /= null and then not Is_Ghost (Defer_Res166) then Transform_Res67.Last_Attempted_Child := -1; end if; if Defer_Res167 /= null and then Is_Incomplete (Defer_Res167) then Transform_Res67.Last_Attempted_Child := 0; elsif Defer_Res167 /= null and then not Is_Ghost (Defer_Res167) then Transform_Res67.Last_Attempted_Child := -1; end if; elsif Row_Pos84 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags67); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Delta_Constraint_Transform_Parse0_Memo, Row_Pos84 /= No_Token_Index, Transform_Res67, Pos, Row_Pos84); Parser.Current_Pos := Row_Pos84; return Transform_Res67; end Delta_Constraint_Transform_Parse0; function Derived_Type_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Derived_Type_Def is use Bare_Derived_Type_Def_Memos; Row_Pos85 : Token_Index := No_Token_Index; Token_Pos132 : Token_Index := No_Token_Index; Token_Res132 : Token_Index := No_Token_Index; Opt_Res9 : Bare_Abstract_Node := No_Bare_Ada_Node; Token_Pos133 : Token_Index := No_Token_Index; Token_Res133 : Token_Index := No_Token_Index; Opt_Res10 : Bare_Limited_Node := No_Bare_Ada_Node; Token_Pos134 : Token_Index := No_Token_Index; Token_Res134 : Token_Index := No_Token_Index; Opt_Res11 : Bare_Synchronized_Node := No_Bare_Ada_Node; Token_Pos135 : Token_Index := No_Token_Index; Token_Res135 : Token_Index := No_Token_Index; Defer_Pos168 : Token_Index := No_Token_Index; Defer_Res168 : Bare_Subtype_Indication := No_Bare_Ada_Node; Row_Pos86 : Token_Index := No_Token_Index; Token_Pos136 : Token_Index := No_Token_Index; Token_Res136 : Token_Index := No_Token_Index; Defer_Pos169 : Token_Index := No_Token_Index; Defer_Res169 : Bare_Parent_List := No_Bare_Ada_Node; Row_Pos87 : Token_Index := No_Token_Index; Token_Pos137 : Token_Index := No_Token_Index; Token_Res137 : Token_Index := No_Token_Index; Defer_Pos170 : Token_Index := No_Token_Index; Defer_Res170 : Bare_Base_Record_Def := No_Bare_Ada_Node; Row_Pos88 : Token_Index := No_Token_Index; Token_Pos138 : Token_Index := No_Token_Index; Token_Res138 : Token_Index := No_Token_Index; Token_Pos139 : Token_Index := No_Token_Index; Token_Res139 : Token_Index := No_Token_Index; Opt_Res12 : Bare_With_Private := No_Bare_Ada_Node; Transform_Res68 : Bare_Derived_Type_Def := No_Bare_Ada_Node; Transform_Diags68 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Derived_Type_Def_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res68 := M.Instance; return Transform_Res68; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res68; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags68 := Parser.Diagnostics.Length; -- Start row_code Row_Pos85 := Pos; -- Start opt_code -- Start tok_code Token_Res132 := Row_Pos85; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res132)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Abstract) then Token_Pos132 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos85 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos85, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos132 := Row_Pos85 + 1; end if; end; -- End tok_code if Token_Pos132 = No_Token_Index then Opt_Res9 := Allocate_Abstract_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res9, Kind => Ada_Abstract_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos85, Token_End_Index => No_Token_Index); Token_Pos132 := Row_Pos85; else Opt_Res9 := Allocate_Abstract_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res9, Kind => Ada_Abstract_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos85, Token_End_Index => Token_Pos132 - 1); end if; -- End opt_code if Token_Pos132 /= No_Token_Index then Row_Pos85 := Token_Pos132; else Row_Pos85 := No_Token_Index; goto Exit_Row85_0; end if; -- Start opt_code -- Start tok_code Token_Res133 := Row_Pos85; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res133)); begin if T.Kind /= From_Token_Kind (Ada_Limited) then Token_Pos133 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos85 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos85, Expected_Token_Id => Ada_Limited, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos133 := Row_Pos85 + 1; end if; end; -- End tok_code if Token_Pos133 = No_Token_Index then Opt_Res10 := Allocate_Limited_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res10, Kind => Ada_Limited_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos85, Token_End_Index => No_Token_Index); Token_Pos133 := Row_Pos85; else Opt_Res10 := Allocate_Limited_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res10, Kind => Ada_Limited_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos85, Token_End_Index => Token_Pos133 - 1); end if; -- End opt_code if Token_Pos133 /= No_Token_Index then Row_Pos85 := Token_Pos133; else Row_Pos85 := No_Token_Index; goto Exit_Row85_0; end if; -- Start opt_code -- Start tok_code Token_Res134 := Row_Pos85; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res134)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Synchronized) then Token_Pos134 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos85 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos85, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos134 := Row_Pos85 + 1; end if; end; -- End tok_code if Token_Pos134 = No_Token_Index then Opt_Res11 := Allocate_Synchronized_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res11, Kind => Ada_Synchronized_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos85, Token_End_Index => No_Token_Index); Token_Pos134 := Row_Pos85; else Opt_Res11 := Allocate_Synchronized_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res11, Kind => Ada_Synchronized_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos85, Token_End_Index => Token_Pos134 - 1); end if; -- End opt_code if Token_Pos134 /= No_Token_Index then Row_Pos85 := Token_Pos134; else Row_Pos85 := No_Token_Index; goto Exit_Row85_0; end if; -- Start tok_code Token_Res135 := Row_Pos85; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res135)); begin if T.Kind /= From_Token_Kind (Ada_New) then Token_Pos135 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos85 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos85, Expected_Token_Id => Ada_New, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos135 := Row_Pos85 + 1; end if; end; -- End tok_code if Token_Pos135 /= No_Token_Index then Row_Pos85 := Token_Pos135; else Row_Pos85 := No_Token_Index; goto Exit_Row85_0; end if; Defer_Res168 := Subtype_Indication_Transform_Parse0 (Parser, Row_Pos85); Defer_Pos168 := Parser.Current_Pos; if Defer_Pos168 /= No_Token_Index then Row_Pos85 := Defer_Pos168; else Row_Pos85 := No_Token_Index; goto Exit_Row85_0; end if; -- Start opt_code -- Start row_code Row_Pos86 := Row_Pos85; -- Start tok_code Token_Res136 := Row_Pos86; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res136)); begin if T.Kind /= From_Token_Kind (Ada_And) then Token_Pos136 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos86 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos86, Expected_Token_Id => Ada_And, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos136 := Row_Pos86 + 1; end if; end; -- End tok_code if Token_Pos136 /= No_Token_Index then Row_Pos86 := Token_Pos136; else Row_Pos86 := No_Token_Index; goto Exit_Row86_0; end if; Defer_Res169 := Parent_List_List_Parse0 (Parser, Row_Pos86); Defer_Pos169 := Parser.Current_Pos; if Defer_Pos169 /= No_Token_Index then Row_Pos86 := Defer_Pos169; else Row_Pos86 := No_Token_Index; goto Exit_Row86_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos86 = No_Token_Index then Defer_Res169 := Allocate_Parent_List (Parser.Mem_Pool); Initialize (Self => Defer_Res169, Kind => Ada_Parent_List, Unit => Parser.Unit, Token_Start_Index => Row_Pos85 - 1, Token_End_Index => No_Token_Index); Initialize_List (Self => Defer_Res169, Parser => Parser, Count => 0); Row_Pos86 := Row_Pos85; end if; -- End opt_code if Row_Pos86 /= No_Token_Index then Row_Pos85 := Row_Pos86; else Row_Pos85 := No_Token_Index; goto Exit_Row85_0; end if; -- Start opt_code -- Start row_code Row_Pos87 := Row_Pos85; -- Start tok_code Token_Res137 := Row_Pos87; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res137)); begin if T.Kind /= From_Token_Kind (Ada_With) then Token_Pos137 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos87 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos87, Expected_Token_Id => Ada_With, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos137 := Row_Pos87 + 1; end if; end; -- End tok_code if Token_Pos137 /= No_Token_Index then Row_Pos87 := Token_Pos137; else Row_Pos87 := No_Token_Index; goto Exit_Row87_0; end if; Defer_Res170 := Record_Def_Or_Parse0 (Parser, Row_Pos87); Defer_Pos170 := Parser.Current_Pos; if Defer_Pos170 /= No_Token_Index then Row_Pos87 := Defer_Pos170; else Row_Pos87 := No_Token_Index; goto Exit_Row87_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos87 = No_Token_Index then Defer_Res170 := No_Bare_Ada_Node; Row_Pos87 := Row_Pos85; end if; -- End opt_code if Row_Pos87 /= No_Token_Index then Row_Pos85 := Row_Pos87; else Row_Pos85 := No_Token_Index; goto Exit_Row85_0; end if; -- Start opt_code -- Start row_code Row_Pos88 := Row_Pos85; -- Start tok_code Token_Res138 := Row_Pos88; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res138)); begin if T.Kind /= From_Token_Kind (Ada_With) then Token_Pos138 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos88 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos88, Expected_Token_Id => Ada_With, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos138 := Row_Pos88 + 1; end if; end; -- End tok_code if Token_Pos138 /= No_Token_Index then Row_Pos88 := Token_Pos138; else Row_Pos88 := No_Token_Index; goto Exit_Row88_0; end if; -- Start tok_code Token_Res139 := Row_Pos88; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res139)); begin if T.Kind /= From_Token_Kind (Ada_Private) then Token_Pos139 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos88 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos88, Expected_Token_Id => Ada_Private, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos139 := Row_Pos88 + 1; end if; end; -- End tok_code if Token_Pos139 /= No_Token_Index then Row_Pos88 := Token_Pos139; else Row_Pos88 := No_Token_Index; goto Exit_Row88_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos88 = No_Token_Index then Opt_Res12 := Allocate_With_Private_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res12, Kind => Ada_With_Private_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos85, Token_End_Index => No_Token_Index); Row_Pos88 := Row_Pos85; else Opt_Res12 := Allocate_With_Private_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res12, Kind => Ada_With_Private_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos85, Token_End_Index => Row_Pos88 - 1); end if; -- End opt_code if Row_Pos88 /= No_Token_Index then Row_Pos85 := Row_Pos88; else Row_Pos85 := No_Token_Index; goto Exit_Row85_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos85 /= No_Token_Index then Transform_Res68 := Allocate_Derived_Type_Def (Parser.Mem_Pool); Initialize (Self => Transform_Res68, Kind => Ada_Derived_Type_Def, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos85 = Pos then No_Token_Index else Row_Pos85 - 1)); Initialize_Fields_For_Derived_Type_Def (Self => Transform_Res68, Derived_Type_Def_F_Has_Abstract => Opt_Res9, Derived_Type_Def_F_Has_Limited => Opt_Res10, Derived_Type_Def_F_Has_Synchronized => Opt_Res11, Derived_Type_Def_F_Subtype_Indication => Defer_Res168, Derived_Type_Def_F_Interfaces => Defer_Res169, Derived_Type_Def_F_Record_Extension => Defer_Res170, Derived_Type_Def_F_Has_With_Private => Opt_Res12); if Opt_Res9 /= null and then Is_Incomplete (Opt_Res9) then Transform_Res68.Last_Attempted_Child := 0; elsif Opt_Res9 /= null and then not Is_Ghost (Opt_Res9) then Transform_Res68.Last_Attempted_Child := -1; end if; if Opt_Res10 /= null and then Is_Incomplete (Opt_Res10) then Transform_Res68.Last_Attempted_Child := 0; elsif Opt_Res10 /= null and then not Is_Ghost (Opt_Res10) then Transform_Res68.Last_Attempted_Child := -1; end if; if Opt_Res11 /= null and then Is_Incomplete (Opt_Res11) then Transform_Res68.Last_Attempted_Child := 0; elsif Opt_Res11 /= null and then not Is_Ghost (Opt_Res11) then Transform_Res68.Last_Attempted_Child := -1; end if; if Defer_Res168 /= null and then Is_Incomplete (Defer_Res168) then Transform_Res68.Last_Attempted_Child := 0; elsif Defer_Res168 /= null and then not Is_Ghost (Defer_Res168) then Transform_Res68.Last_Attempted_Child := -1; end if; if Defer_Res169 /= null and then Is_Incomplete (Defer_Res169) then Transform_Res68.Last_Attempted_Child := 0; elsif Defer_Res169 /= null and then not Is_Ghost (Defer_Res169) then Transform_Res68.Last_Attempted_Child := -1; end if; if Defer_Res170 /= null and then Is_Incomplete (Defer_Res170) then Transform_Res68.Last_Attempted_Child := 0; elsif Defer_Res170 /= null and then not Is_Ghost (Defer_Res170) then Transform_Res68.Last_Attempted_Child := -1; end if; if Opt_Res12 /= null and then Is_Incomplete (Opt_Res12) then Transform_Res68.Last_Attempted_Child := 0; elsif Opt_Res12 /= null and then not Is_Ghost (Opt_Res12) then Transform_Res68.Last_Attempted_Child := -1; end if; elsif Row_Pos85 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags68); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Derived_Type_Def_Transform_Parse0_Memo, Row_Pos85 /= No_Token_Index, Transform_Res68, Pos, Row_Pos85); Parser.Current_Pos := Row_Pos85; return Transform_Res68; end Derived_Type_Def_Transform_Parse0; function Digits_Constraint_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Digits_Constraint is use Bare_Digits_Constraint_Memos; Row_Pos89 : Token_Index := No_Token_Index; Token_Pos140 : Token_Index := No_Token_Index; Token_Res140 : Token_Index := No_Token_Index; Defer_Pos171 : Token_Index := No_Token_Index; Defer_Res171 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos172 : Token_Index := No_Token_Index; Defer_Res172 : Bare_Range_Spec := No_Bare_Ada_Node; Transform_Res69 : Bare_Digits_Constraint := No_Bare_Ada_Node; Transform_Diags69 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Digits_Constraint_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res69 := M.Instance; return Transform_Res69; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res69; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags69 := Parser.Diagnostics.Length; -- Start row_code Row_Pos89 := Pos; -- Start tok_code Token_Res140 := Row_Pos89; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res140)); begin if T.Kind /= From_Token_Kind (Ada_Digits) then Token_Pos140 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos89 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos89, Expected_Token_Id => Ada_Digits, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos140 := Row_Pos89 + 1; end if; end; -- End tok_code if Token_Pos140 /= No_Token_Index then Row_Pos89 := Token_Pos140; else Row_Pos89 := No_Token_Index; goto Exit_Row89_0; end if; Defer_Res171 := Simple_Expr_Or_Parse1 (Parser, Row_Pos89); Defer_Pos171 := Parser.Current_Pos; if Defer_Pos171 /= No_Token_Index then Row_Pos89 := Defer_Pos171; else Row_Pos89 := No_Token_Index; goto Exit_Row89_0; end if; -- Start opt_code Defer_Res172 := Range_Spec_Transform_Parse0 (Parser, Row_Pos89); Defer_Pos172 := Parser.Current_Pos; if Defer_Pos172 = No_Token_Index then Defer_Res172 := No_Bare_Ada_Node; Defer_Pos172 := Row_Pos89; end if; -- End opt_code if Defer_Pos172 /= No_Token_Index then Row_Pos89 := Defer_Pos172; else Row_Pos89 := No_Token_Index; goto Exit_Row89_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos89 /= No_Token_Index then Transform_Res69 := Allocate_Digits_Constraint (Parser.Mem_Pool); Initialize (Self => Transform_Res69, Kind => Ada_Digits_Constraint, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos89 = Pos then No_Token_Index else Row_Pos89 - 1)); Initialize_Fields_For_Digits_Constraint (Self => Transform_Res69, Digits_Constraint_F_Digits => Defer_Res171, Digits_Constraint_F_Range => Defer_Res172); if Defer_Res171 /= null and then Is_Incomplete (Defer_Res171) then Transform_Res69.Last_Attempted_Child := 0; elsif Defer_Res171 /= null and then not Is_Ghost (Defer_Res171) then Transform_Res69.Last_Attempted_Child := -1; end if; if Defer_Res172 /= null and then Is_Incomplete (Defer_Res172) then Transform_Res69.Last_Attempted_Child := 0; elsif Defer_Res172 /= null and then not Is_Ghost (Defer_Res172) then Transform_Res69.Last_Attempted_Child := -1; end if; elsif Row_Pos89 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags69); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Digits_Constraint_Transform_Parse0_Memo, Row_Pos89 /= No_Token_Index, Transform_Res69, Pos, Row_Pos89); Parser.Current_Pos := Row_Pos89; return Transform_Res69; end Digits_Constraint_Transform_Parse0; function Direct_Name_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Id is use Bare_Base_Id_Memos; Defer_Pos173 : Token_Index := No_Token_Index; Defer_Res173 : Bare_Identifier := No_Bare_Ada_Node; Defer_Pos174 : Token_Index := No_Token_Index; Defer_Res174 : Bare_String_Literal := No_Bare_Ada_Node; Defer_Pos175 : Token_Index := No_Token_Index; Defer_Res175 : Bare_Char_Literal := No_Bare_Ada_Node; Or_Pos32 : Token_Index := No_Token_Index; Or_Res32 : Bare_Base_Id := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Direct_Name_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res32 := M.Instance; return Or_Res32; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res32; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos32 := No_Token_Index; Or_Res32 := No_Bare_Ada_Node; Defer_Res173 := Identifier_Transform_Parse0 (Parser, Pos); Defer_Pos173 := Parser.Current_Pos; if Defer_Pos173 /= No_Token_Index then Or_Pos32 := Defer_Pos173; Or_Res32 := Defer_Res173; goto Exit_Or33; end if; Defer_Res174 := String_Literal_Transform_Parse0 (Parser, Pos); Defer_Pos174 := Parser.Current_Pos; if Defer_Pos174 /= No_Token_Index then Or_Pos32 := Defer_Pos174; Or_Res32 := Defer_Res174; goto Exit_Or33; end if; Defer_Res175 := Char_Literal_Transform_Parse0 (Parser, Pos); Defer_Pos175 := Parser.Current_Pos; if Defer_Pos175 /= No_Token_Index then Or_Pos32 := Defer_Pos175; Or_Res32 := Defer_Res175; goto Exit_Or33; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Direct_Name_Or_Parse0_Memo, Or_Pos32 /= No_Token_Index, Or_Res32, Pos, Or_Pos32); Parser.Current_Pos := Or_Pos32; return Or_Res32; end Direct_Name_Or_Parse0; function Direct_Name_Or_Target_Name_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Name is use Bare_Name_Memos; Defer_Pos176 : Token_Index := No_Token_Index; Defer_Res176 : Bare_Base_Id := No_Bare_Ada_Node; Defer_Pos177 : Token_Index := No_Token_Index; Defer_Res177 : Bare_Target_Name := No_Bare_Ada_Node; Or_Pos33 : Token_Index := No_Token_Index; Or_Res33 : Bare_Name := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Direct_Name_Or_Target_Name_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res33 := M.Instance; return Or_Res33; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res33; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos33 := No_Token_Index; Or_Res33 := No_Bare_Ada_Node; Defer_Res176 := Direct_Name_Or_Parse0 (Parser, Pos); Defer_Pos176 := Parser.Current_Pos; if Defer_Pos176 /= No_Token_Index then Or_Pos33 := Defer_Pos176; Or_Res33 := Defer_Res176; goto Exit_Or34; end if; Defer_Res177 := Target_Name_Transform_Parse0 (Parser, Pos); Defer_Pos177 := Parser.Current_Pos; if Defer_Pos177 /= No_Token_Index then Or_Pos33 := Defer_Pos177; Or_Res33 := Defer_Res177; goto Exit_Or34; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Direct_Name_Or_Target_Name_Or_Parse0_Memo, Or_Pos33 /= No_Token_Index, Or_Res33, Pos, Or_Pos33); Parser.Current_Pos := Or_Pos33; return Or_Res33; end Direct_Name_Or_Target_Name_Or_Parse0; function Discr_Spec_List_List_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Discriminant_Spec_List is use Bare_Discriminant_Spec_List_Memos; Lst_Cpos25 : Token_Index := No_Token_Index; Tmp_List25 : Free_Parse_List; Defer_Pos178 : Token_Index := No_Token_Index; Defer_Res178 : Bare_Discriminant_Spec := No_Bare_Ada_Node; Token_Pos141 : Token_Index := No_Token_Index; Token_Res141 : Token_Index := No_Token_Index; List_Pos25 : Token_Index := No_Token_Index; List_Res25 : Bare_Discriminant_Spec_List := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Discr_Spec_List_List_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; List_Res25 := M.Instance; return List_Res25; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return List_Res25; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start list_code List_Pos25 := No_Token_Index; Lst_Cpos25 := Pos; Tmp_List25 := Get_Parse_List (Parser); loop Defer_Res178 := Discriminant_Spec_Transform_Parse0 (Parser, Lst_Cpos25); Defer_Pos178 := Parser.Current_Pos; exit when Defer_Pos178 = No_Token_Index; List_Pos25 := Defer_Pos178; Lst_Cpos25 := List_Pos25; Tmp_List25.Nodes.Append (Defer_Res178); -- Start tok_code Token_Res141 := Lst_Cpos25; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res141)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos141 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos25 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos25, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos141 := Lst_Cpos25 + 1; end if; end; -- End tok_code if Token_Pos141 /= No_Token_Index then Lst_Cpos25 := Token_Pos141; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List25.Nodes.Length; begin List_Res25 := Allocate_Discriminant_Spec_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Pos; Token_End := (if Lst_Cpos25 = Pos then Pos else Lst_Cpos25 - 1); else Token_Start := Token_Index'Max (Pos, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res25, Kind => Ada_Discriminant_Spec_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res25, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List25.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res25.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List25); -- End list_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Discr_Spec_List_List_Parse0_Memo, List_Pos25 /= No_Token_Index, List_Res25, Pos, List_Pos25); Parser.Current_Pos := List_Pos25; return List_Res25; end Discr_Spec_List_List_Parse0; function Discrete_Range_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr is use Bare_Expr_Memos; Row_Pos90 : Token_Index := No_Token_Index; Defer_Pos179 : Token_Index := No_Token_Index; Defer_Res179 : Bare_Expr := No_Bare_Ada_Node; Row_Pos91 : Token_Index := No_Token_Index; Token_Pos142 : Token_Index := No_Token_Index; Token_Res142 : Token_Index := No_Token_Index; Transform_Res70 : Bare_Op_Double_Dot := No_Bare_Ada_Node; Transform_Diags70 : Ada.Containers.Count_Type; Defer_Pos180 : Token_Index := No_Token_Index; Defer_Res180 : Bare_Expr := No_Bare_Ada_Node; Transform_Res71 : Bare_Bin_Op := No_Bare_Ada_Node; Transform_Diags71 : Ada.Containers.Count_Type; Defer_Pos181 : Token_Index := No_Token_Index; Defer_Res181 : Bare_Name := No_Bare_Ada_Node; Predicate_Pos0 : Token_Index := No_Token_Index; Predicate_Res0 : Bare_Name := No_Bare_Ada_Node; Or_Pos34 : Token_Index := No_Token_Index; Or_Res34 : Bare_Expr := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Discrete_Range_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res34 := M.Instance; return Or_Res34; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res34; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos34 := No_Token_Index; Or_Res34 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags71 := Parser.Diagnostics.Length; -- Start row_code Row_Pos90 := Pos; Defer_Res179 := Simple_Expr_Or_Parse1 (Parser, Row_Pos90); Defer_Pos179 := Parser.Current_Pos; if Defer_Pos179 /= No_Token_Index then Row_Pos90 := Defer_Pos179; else Row_Pos90 := No_Token_Index; goto Exit_Row90_0; end if; -- Start transform_code Transform_Diags70 := Parser.Diagnostics.Length; -- Start row_code Row_Pos91 := Row_Pos90; -- Start tok_code Token_Res142 := Row_Pos91; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res142)); begin if T.Kind /= From_Token_Kind (Ada_Doubledot) then Token_Pos142 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos91 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos91, Expected_Token_Id => Ada_Doubledot, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos142 := Row_Pos91 + 1; end if; end; -- End tok_code if Token_Pos142 /= No_Token_Index then Row_Pos91 := Token_Pos142; else Row_Pos91 := No_Token_Index; goto Exit_Row91_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos91 /= No_Token_Index then Transform_Res70 := Allocate_Op_Double_Dot (Parser.Mem_Pool); Initialize (Self => Transform_Res70, Kind => Ada_Op_Double_Dot, Unit => Parser.Unit, Token_Start_Index => Row_Pos90, Token_End_Index => (if Row_Pos91 = Row_Pos90 then No_Token_Index else Row_Pos91 - 1)); Initialize_Fields_For_Op_Double_Dot (Self => Transform_Res70); elsif Row_Pos91 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags70); end if; -- End transform_code if Row_Pos91 /= No_Token_Index then Row_Pos90 := Row_Pos91; else Row_Pos90 := No_Token_Index; goto Exit_Row90_0; end if; Defer_Res180 := Simple_Expr_Or_Parse1 (Parser, Row_Pos90); Defer_Pos180 := Parser.Current_Pos; if Defer_Pos180 /= No_Token_Index then Row_Pos90 := Defer_Pos180; else Row_Pos90 := No_Token_Index; goto Exit_Row90_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos90 /= No_Token_Index then Transform_Res71 := Allocate_Bin_Op (Parser.Mem_Pool); Initialize (Self => Transform_Res71, Kind => Ada_Bin_Op, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos90 = Pos then No_Token_Index else Row_Pos90 - 1)); Initialize_Fields_For_Bin_Op (Self => Transform_Res71, Bin_Op_F_Left => Defer_Res179, Bin_Op_F_Op => Transform_Res70, Bin_Op_F_Right => Defer_Res180); if Defer_Res179 /= null and then Is_Incomplete (Defer_Res179) then Transform_Res71.Last_Attempted_Child := 0; elsif Defer_Res179 /= null and then not Is_Ghost (Defer_Res179) then Transform_Res71.Last_Attempted_Child := -1; end if; if Transform_Res70 /= null and then Is_Incomplete (Transform_Res70) then Transform_Res71.Last_Attempted_Child := 0; elsif Transform_Res70 /= null and then not Is_Ghost (Transform_Res70) then Transform_Res71.Last_Attempted_Child := -1; end if; if Defer_Res180 /= null and then Is_Incomplete (Defer_Res180) then Transform_Res71.Last_Attempted_Child := 0; elsif Defer_Res180 /= null and then not Is_Ghost (Defer_Res180) then Transform_Res71.Last_Attempted_Child := -1; end if; elsif Row_Pos90 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags71); end if; -- End transform_code if Row_Pos90 /= No_Token_Index then Or_Pos34 := Row_Pos90; Or_Res34 := Transform_Res71; goto Exit_Or35; end if; -- Start predicate_code Defer_Res181 := Name_Or_Parse2 (Parser, Pos); Defer_Pos181 := Parser.Current_Pos; if Defer_Res181 /= null and then Name_P_Is_Range_Attribute (Defer_Res181) then Predicate_Res0 := Defer_Res181; Predicate_Pos0 := Defer_Pos181; else Predicate_Pos0 := No_Token_Index; Predicate_Res0 := null; if Parser.Last_Fail.Pos <= Pos then Parser.Last_Fail := (Kind => Custom_Fail, Pos => Pos, Custom_Message => Generic_Parsing_Error_Message_Access); end if; end if; -- End predicate_code if Predicate_Pos0 /= No_Token_Index then Or_Pos34 := Predicate_Pos0; Or_Res34 := Predicate_Res0; goto Exit_Or35; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Discrete_Range_Or_Parse0_Memo, Or_Pos34 /= No_Token_Index, Or_Res34, Pos, Or_Pos34); Parser.Current_Pos := Or_Pos34; return Or_Res34; end Discrete_Range_Or_Parse0; function Discrete_Subtype_Definition_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Defer_Pos182 : Token_Index := No_Token_Index; Defer_Res182 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos183 : Token_Index := No_Token_Index; Defer_Res183 : Bare_Subtype_Indication := No_Bare_Ada_Node; Or_Pos35 : Token_Index := No_Token_Index; Or_Res35 : Bare_Ada_Node := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Discrete_Subtype_Definition_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res35 := M.Instance; return Or_Res35; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res35; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos35 := No_Token_Index; Or_Res35 := No_Bare_Ada_Node; Defer_Res182 := Discrete_Range_Or_Parse0 (Parser, Pos); Defer_Pos182 := Parser.Current_Pos; if Defer_Pos182 /= No_Token_Index then Or_Pos35 := Defer_Pos182; Or_Res35 := Defer_Res182; goto Exit_Or36; end if; Defer_Res183 := Subtype_Indication_Transform_Parse0 (Parser, Pos); Defer_Pos183 := Parser.Current_Pos; if Defer_Pos183 /= No_Token_Index then Or_Pos35 := Defer_Pos183; Or_Res35 := Defer_Res183; goto Exit_Or36; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Discrete_Subtype_Definition_Or_Parse0_Memo, Or_Pos35 /= No_Token_Index, Or_Res35, Pos, Or_Pos35); Parser.Current_Pos := Or_Pos35; return Or_Res35; end Discrete_Subtype_Definition_Or_Parse0; function Discrete_Subtype_Indication_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Discrete_Subtype_Indication is use Bare_Discrete_Subtype_Indication_Memos; Row_Pos92 : Token_Index := No_Token_Index; Row_Pos93 : Token_Index := No_Token_Index; Token_Pos143 : Token_Index := No_Token_Index; Token_Res143 : Token_Index := No_Token_Index; Token_Pos144 : Token_Index := No_Token_Index; Token_Res144 : Token_Index := No_Token_Index; Opt_Res13 : Bare_Not_Null := No_Bare_Ada_Node; Defer_Pos184 : Token_Index := No_Token_Index; Defer_Res184 : Bare_Name := No_Bare_Ada_Node; Stopcut_Pos0 : Token_Index := No_Token_Index; Defer_Pos185 : Token_Index := No_Token_Index; Defer_Res185 : Bare_Range_Constraint := No_Bare_Ada_Node; Transform_Res72 : Bare_Discrete_Subtype_Indication := No_Bare_Ada_Node; Transform_Diags72 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Discrete_Subtype_Indication_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res72 := M.Instance; return Transform_Res72; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res72; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags72 := Parser.Diagnostics.Length; -- Start row_code Row_Pos92 := Pos; -- Start opt_code -- Start row_code Row_Pos93 := Row_Pos92; -- Start tok_code Token_Res143 := Row_Pos93; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res143)); begin if T.Kind /= From_Token_Kind (Ada_Not) then Token_Pos143 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos93 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos93, Expected_Token_Id => Ada_Not, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos143 := Row_Pos93 + 1; end if; end; -- End tok_code if Token_Pos143 /= No_Token_Index then Row_Pos93 := Token_Pos143; else Row_Pos93 := No_Token_Index; goto Exit_Row93_0; end if; -- Start tok_code Token_Res144 := Row_Pos93; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res144)); begin if T.Kind /= From_Token_Kind (Ada_Null) then Token_Pos144 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos93 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos93, Expected_Token_Id => Ada_Null, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos144 := Row_Pos93 + 1; end if; end; -- End tok_code if Token_Pos144 /= No_Token_Index then Row_Pos93 := Token_Pos144; else Row_Pos93 := No_Token_Index; goto Exit_Row93_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos93 = No_Token_Index then Opt_Res13 := Allocate_Not_Null_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res13, Kind => Ada_Not_Null_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos92, Token_End_Index => No_Token_Index); Row_Pos93 := Row_Pos92; else Opt_Res13 := Allocate_Not_Null_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res13, Kind => Ada_Not_Null_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos92, Token_End_Index => Row_Pos93 - 1); end if; -- End opt_code if Row_Pos93 /= No_Token_Index then Row_Pos92 := Row_Pos93; else Row_Pos92 := No_Token_Index; goto Exit_Row92_0; end if; declare Nb_Diags : constant Ada.Containers.Count_Type := Parser.Diagnostics.Length; begin Defer_Res184 := Subtype_Name_Or_Parse0 (Parser, Row_Pos92); Defer_Pos184 := Parser.Current_Pos; if (Defer_Res184 /= null and then Defer_Res184.Last_Attempted_Child /= -1) -- If the subparser has failed, we still want to reset the -- diagnostics, because parsing might have failed because of -- a cut. or else Defer_Pos184 = No_Token_Index then Stopcut_Pos0 := No_Token_Index; Parser.Diagnostics.Set_Length (Nb_Diags); else Stopcut_Pos0 := Defer_Pos184; end if; end; if Stopcut_Pos0 /= No_Token_Index then Row_Pos92 := Stopcut_Pos0; else Row_Pos92 := No_Token_Index; goto Exit_Row92_0; end if; Defer_Res185 := Range_Constraint_Transform_Parse1 (Parser, Row_Pos92); Defer_Pos185 := Parser.Current_Pos; if Defer_Pos185 /= No_Token_Index then Row_Pos92 := Defer_Pos185; else Row_Pos92 := No_Token_Index; goto Exit_Row92_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos92 /= No_Token_Index then Transform_Res72 := Allocate_Discrete_Subtype_Indication (Parser.Mem_Pool); Initialize (Self => Transform_Res72, Kind => Ada_Discrete_Subtype_Indication, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos92 = Pos then No_Token_Index else Row_Pos92 - 1)); Initialize_Fields_For_Discrete_Subtype_Indication (Self => Transform_Res72, Subtype_Indication_F_Has_Not_Null => Opt_Res13, Subtype_Indication_F_Name => Defer_Res184, Subtype_Indication_F_Constraint => Defer_Res185); if Opt_Res13 /= null and then Is_Incomplete (Opt_Res13) then Transform_Res72.Last_Attempted_Child := 0; elsif Opt_Res13 /= null and then not Is_Ghost (Opt_Res13) then Transform_Res72.Last_Attempted_Child := -1; end if; if Defer_Res184 /= null and then Is_Incomplete (Defer_Res184) then Transform_Res72.Last_Attempted_Child := 0; elsif Defer_Res184 /= null and then not Is_Ghost (Defer_Res184) then Transform_Res72.Last_Attempted_Child := -1; end if; if Defer_Res185 /= null and then Is_Incomplete (Defer_Res185) then Transform_Res72.Last_Attempted_Child := 0; elsif Defer_Res185 /= null and then not Is_Ghost (Defer_Res185) then Transform_Res72.Last_Attempted_Child := -1; end if; elsif Row_Pos92 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags72); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Discrete_Subtype_Indication_Transform_Parse0_Memo, Row_Pos92 /= No_Token_Index, Transform_Res72, Pos, Row_Pos92); Parser.Current_Pos := Row_Pos92; return Transform_Res72; end Discrete_Subtype_Indication_Transform_Parse0; function Discriminant_Part_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Discriminant_Part is use Bare_Discriminant_Part_Memos; Row_Pos94 : Token_Index := No_Token_Index; Token_Pos145 : Token_Index := No_Token_Index; Token_Res145 : Token_Index := No_Token_Index; Defer_Pos186 : Token_Index := No_Token_Index; Defer_Res186 : Bare_Discriminant_Spec_List := No_Bare_Ada_Node; Token_Pos146 : Token_Index := No_Token_Index; Token_Res146 : Token_Index := No_Token_Index; Transform_Res73 : Bare_Known_Discriminant_Part := No_Bare_Ada_Node; Transform_Diags73 : Ada.Containers.Count_Type; Row_Pos95 : Token_Index := No_Token_Index; Token_Pos147 : Token_Index := No_Token_Index; Token_Res147 : Token_Index := No_Token_Index; Token_Pos148 : Token_Index := No_Token_Index; Token_Res148 : Token_Index := No_Token_Index; Token_Pos149 : Token_Index := No_Token_Index; Token_Res149 : Token_Index := No_Token_Index; Transform_Res74 : Bare_Unknown_Discriminant_Part := No_Bare_Ada_Node; Transform_Diags74 : Ada.Containers.Count_Type; Or_Pos36 : Token_Index := No_Token_Index; Or_Res36 : Bare_Discriminant_Part := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Discriminant_Part_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res36 := M.Instance; return Or_Res36; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res36; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos36 := No_Token_Index; Or_Res36 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags73 := Parser.Diagnostics.Length; -- Start row_code Row_Pos94 := Pos; -- Start tok_code Token_Res145 := Row_Pos94; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res145)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos145 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos94 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos94, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos145 := Row_Pos94 + 1; end if; end; -- End tok_code if Token_Pos145 /= No_Token_Index then Row_Pos94 := Token_Pos145; else Row_Pos94 := No_Token_Index; goto Exit_Row94_0; end if; Defer_Res186 := Discr_Spec_List_List_Parse0 (Parser, Row_Pos94); Defer_Pos186 := Parser.Current_Pos; if Defer_Pos186 /= No_Token_Index then Row_Pos94 := Defer_Pos186; else Row_Pos94 := No_Token_Index; goto Exit_Row94_0; end if; -- Start tok_code Token_Res146 := Row_Pos94; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res146)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos146 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos94 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos94, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos146 := Row_Pos94 + 1; end if; end; -- End tok_code if Token_Pos146 /= No_Token_Index then Row_Pos94 := Token_Pos146; else Row_Pos94 := No_Token_Index; goto Exit_Row94_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos94 /= No_Token_Index then Transform_Res73 := Allocate_Known_Discriminant_Part (Parser.Mem_Pool); Initialize (Self => Transform_Res73, Kind => Ada_Known_Discriminant_Part, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos94 = Pos then No_Token_Index else Row_Pos94 - 1)); Initialize_Fields_For_Known_Discriminant_Part (Self => Transform_Res73, Known_Discriminant_Part_F_Discr_Specs => Defer_Res186); if Defer_Res186 /= null and then Is_Incomplete (Defer_Res186) then Transform_Res73.Last_Attempted_Child := 0; elsif Defer_Res186 /= null and then not Is_Ghost (Defer_Res186) then Transform_Res73.Last_Attempted_Child := -1; end if; elsif Row_Pos94 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags73); end if; -- End transform_code if Row_Pos94 /= No_Token_Index then Or_Pos36 := Row_Pos94; Or_Res36 := Transform_Res73; goto Exit_Or37; end if; -- Start transform_code Transform_Diags74 := Parser.Diagnostics.Length; -- Start row_code Row_Pos95 := Pos; -- Start tok_code Token_Res147 := Row_Pos95; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res147)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos147 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos95 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos95, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos147 := Row_Pos95 + 1; end if; end; -- End tok_code if Token_Pos147 /= No_Token_Index then Row_Pos95 := Token_Pos147; else Row_Pos95 := No_Token_Index; goto Exit_Row95_0; end if; -- Start tok_code Token_Res148 := Row_Pos95; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res148)); begin if T.Kind /= From_Token_Kind (Ada_Diamond) then Token_Pos148 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos95 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos95, Expected_Token_Id => Ada_Diamond, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos148 := Row_Pos95 + 1; end if; end; -- End tok_code if Token_Pos148 /= No_Token_Index then Row_Pos95 := Token_Pos148; else Row_Pos95 := No_Token_Index; goto Exit_Row95_0; end if; -- Start tok_code Token_Res149 := Row_Pos95; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res149)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos149 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos95 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos95, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos149 := Row_Pos95 + 1; end if; end; -- End tok_code if Token_Pos149 /= No_Token_Index then Row_Pos95 := Token_Pos149; else Row_Pos95 := No_Token_Index; goto Exit_Row95_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos95 /= No_Token_Index then Transform_Res74 := Allocate_Unknown_Discriminant_Part (Parser.Mem_Pool); Initialize (Self => Transform_Res74, Kind => Ada_Unknown_Discriminant_Part, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos95 = Pos then No_Token_Index else Row_Pos95 - 1)); elsif Row_Pos95 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags74); end if; -- End transform_code if Row_Pos95 /= No_Token_Index then Or_Pos36 := Row_Pos95; Or_Res36 := Transform_Res74; goto Exit_Or37; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Discriminant_Part_Or_Parse0_Memo, Or_Pos36 /= No_Token_Index, Or_Res36, Pos, Or_Pos36); Parser.Current_Pos := Or_Pos36; return Or_Res36; end Discriminant_Part_Or_Parse0; function Discriminant_Spec_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Discriminant_Spec is use Bare_Discriminant_Spec_Memos; Row_Pos96 : Token_Index := No_Token_Index; Lst_Cpos26 : Token_Index := No_Token_Index; Tmp_List26 : Free_Parse_List; Defer_Pos187 : Token_Index := No_Token_Index; Defer_Res187 : Bare_Defining_Name := No_Bare_Ada_Node; Token_Pos150 : Token_Index := No_Token_Index; Token_Res150 : Token_Index := No_Token_Index; List_Pos26 : Token_Index := No_Token_Index; List_Res26 : Bare_Defining_Name_List := No_Bare_Ada_Node; Token_Pos151 : Token_Index := No_Token_Index; Token_Res151 : Token_Index := No_Token_Index; Defer_Pos188 : Token_Index := No_Token_Index; Defer_Res188 : Bare_Type_Expr := No_Bare_Ada_Node; Row_Pos97 : Token_Index := No_Token_Index; Token_Pos152 : Token_Index := No_Token_Index; Token_Res152 : Token_Index := No_Token_Index; Defer_Pos189 : Token_Index := No_Token_Index; Defer_Res189 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos190 : Token_Index := No_Token_Index; Defer_Res190 : Bare_Aspect_Spec := No_Bare_Ada_Node; Transform_Res75 : Bare_Discriminant_Spec := No_Bare_Ada_Node; Transform_Diags75 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Discriminant_Spec_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res75 := M.Instance; return Transform_Res75; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res75; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags75 := Parser.Diagnostics.Length; -- Start row_code Row_Pos96 := Pos; -- Start list_code List_Pos26 := No_Token_Index; Lst_Cpos26 := Row_Pos96; Tmp_List26 := Get_Parse_List (Parser); loop Defer_Res187 := Defining_Id_Transform_Parse0 (Parser, Lst_Cpos26); Defer_Pos187 := Parser.Current_Pos; exit when Defer_Pos187 = No_Token_Index; List_Pos26 := Defer_Pos187; Lst_Cpos26 := List_Pos26; Tmp_List26.Nodes.Append (Defer_Res187); -- Start tok_code Token_Res150 := Lst_Cpos26; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res150)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos150 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos26 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos26, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos150 := Lst_Cpos26 + 1; end if; end; -- End tok_code if Token_Pos150 /= No_Token_Index then Lst_Cpos26 := Token_Pos150; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List26.Nodes.Length; begin List_Res26 := Allocate_Defining_Name_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos96; Token_End := (if Lst_Cpos26 = Row_Pos96 then Row_Pos96 else Lst_Cpos26 - 1); else Token_Start := Token_Index'Max (Row_Pos96, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res26, Kind => Ada_Defining_Name_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res26, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List26.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res26.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List26); -- End list_code if List_Pos26 /= No_Token_Index then Row_Pos96 := List_Pos26; else Row_Pos96 := No_Token_Index; goto Exit_Row96_0; end if; -- Start tok_code Token_Res151 := Row_Pos96; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res151)); begin if T.Kind /= From_Token_Kind (Ada_Colon) then Token_Pos151 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos96 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos96, Expected_Token_Id => Ada_Colon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos151 := Row_Pos96 + 1; end if; end; -- End tok_code if Token_Pos151 /= No_Token_Index then Row_Pos96 := Token_Pos151; else Row_Pos96 := No_Token_Index; goto Exit_Row96_0; end if; Defer_Res188 := Type_Expr_Or_Parse0 (Parser, Row_Pos96); Defer_Pos188 := Parser.Current_Pos; if Defer_Pos188 /= No_Token_Index then Row_Pos96 := Defer_Pos188; else Row_Pos96 := No_Token_Index; goto Exit_Row96_0; end if; -- Start opt_code -- Start row_code Row_Pos97 := Row_Pos96; -- Start tok_code Token_Res152 := Row_Pos97; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res152)); begin if T.Kind /= From_Token_Kind (Ada_Assign) then Token_Pos152 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos97 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos97, Expected_Token_Id => Ada_Assign, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos152 := Row_Pos97 + 1; end if; end; -- End tok_code if Token_Pos152 /= No_Token_Index then Row_Pos97 := Token_Pos152; else Row_Pos97 := No_Token_Index; goto Exit_Row97_0; end if; Defer_Res189 := Expr_Or_Parse0 (Parser, Row_Pos97); Defer_Pos189 := Parser.Current_Pos; if Defer_Pos189 /= No_Token_Index then Row_Pos97 := Defer_Pos189; else Row_Pos97 := No_Token_Index; goto Exit_Row97_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos97 = No_Token_Index then Defer_Res189 := No_Bare_Ada_Node; Row_Pos97 := Row_Pos96; end if; -- End opt_code if Row_Pos97 /= No_Token_Index then Row_Pos96 := Row_Pos97; else Row_Pos96 := No_Token_Index; goto Exit_Row96_0; end if; -- Start opt_code Defer_Res190 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos96); Defer_Pos190 := Parser.Current_Pos; if Defer_Pos190 = No_Token_Index then Defer_Res190 := No_Bare_Ada_Node; Defer_Pos190 := Row_Pos96; end if; -- End opt_code if Defer_Pos190 /= No_Token_Index then Row_Pos96 := Defer_Pos190; else Row_Pos96 := No_Token_Index; goto Exit_Row96_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos96 /= No_Token_Index then Transform_Res75 := Allocate_Discriminant_Spec (Parser.Mem_Pool); Initialize (Self => Transform_Res75, Kind => Ada_Discriminant_Spec, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos96 = Pos then No_Token_Index else Row_Pos96 - 1)); Initialize_Fields_For_Discriminant_Spec (Self => Transform_Res75, Discriminant_Spec_F_Ids => List_Res26, Discriminant_Spec_F_Type_Expr => Defer_Res188, Discriminant_Spec_F_Default_Expr => Defer_Res189, Discriminant_Spec_F_Aspects => Defer_Res190); if List_Res26 /= null and then Is_Incomplete (List_Res26) then Transform_Res75.Last_Attempted_Child := 0; elsif List_Res26 /= null and then not Is_Ghost (List_Res26) then Transform_Res75.Last_Attempted_Child := -1; end if; if Defer_Res188 /= null and then Is_Incomplete (Defer_Res188) then Transform_Res75.Last_Attempted_Child := 0; elsif Defer_Res188 /= null and then not Is_Ghost (Defer_Res188) then Transform_Res75.Last_Attempted_Child := -1; end if; if Defer_Res189 /= null and then Is_Incomplete (Defer_Res189) then Transform_Res75.Last_Attempted_Child := 0; elsif Defer_Res189 /= null and then not Is_Ghost (Defer_Res189) then Transform_Res75.Last_Attempted_Child := -1; end if; if Defer_Res190 /= null and then Is_Incomplete (Defer_Res190) then Transform_Res75.Last_Attempted_Child := 0; elsif Defer_Res190 /= null and then not Is_Ghost (Defer_Res190) then Transform_Res75.Last_Attempted_Child := -1; end if; elsif Row_Pos96 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags75); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Discriminant_Spec_Transform_Parse0_Memo, Row_Pos96 /= No_Token_Index, Transform_Res75, Pos, Row_Pos96); Parser.Current_Pos := Row_Pos96; return Transform_Res75; end Discriminant_Spec_Transform_Parse0; function Dontskip_Case_Alt0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos98 : Token_Index := No_Token_Index; Null_Res2 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos153 : Token_Index := No_Token_Index; Token_Res153 : Token_Index := No_Token_Index; Token_Pos154 : Token_Index := No_Token_Index; Token_Res154 : Token_Index := No_Token_Index; Or_Pos37 : Token_Index := No_Token_Index; Or_Res37 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Case_Alt0_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res2 := M.Instance; return Null_Res2; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res2; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos98 := Pos; Null_Res2 := No_Bare_Ada_Node; if Row_Pos98 /= No_Token_Index then Row_Pos98 := Row_Pos98; else Row_Pos98 := No_Token_Index; goto Exit_Row98_0; end if; -- Start or_code Or_Pos37 := No_Token_Index; Or_Res37 := No_Token_Index; -- Start tok_code Token_Res153 := Row_Pos98; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res153)); begin if T.Kind /= From_Token_Kind (Ada_When) then Token_Pos153 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos98 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos98, Expected_Token_Id => Ada_When, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos153 := Row_Pos98 + 1; end if; end; -- End tok_code if Token_Pos153 /= No_Token_Index then Or_Pos37 := Token_Pos153; Or_Res37 := Token_Res153; goto Exit_Or38; end if; -- Start tok_code Token_Res154 := Row_Pos98; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res154)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos154 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos98 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos98, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos154 := Row_Pos98 + 1; end if; end; -- End tok_code if Token_Pos154 /= No_Token_Index then Or_Pos37 := Token_Pos154; Or_Res37 := Token_Res154; goto Exit_Or38; end if; <> -- End or_code if Or_Pos37 /= No_Token_Index then Row_Pos98 := Or_Pos37; else Row_Pos98 := No_Token_Index; goto Exit_Row98_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Case_Alt0_Extract_Parse0_Memo, Row_Pos98 /= No_Token_Index, Null_Res2, Pos, Row_Pos98); Parser.Current_Pos := Row_Pos98; return Null_Res2; end Dontskip_Case_Alt0_Extract_Parse0; function Dontskip_Elsif_Part0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos99 : Token_Index := No_Token_Index; Null_Res3 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos155 : Token_Index := No_Token_Index; Token_Res155 : Token_Index := No_Token_Index; Token_Pos156 : Token_Index := No_Token_Index; Token_Res156 : Token_Index := No_Token_Index; Token_Pos157 : Token_Index := No_Token_Index; Token_Res157 : Token_Index := No_Token_Index; Or_Pos38 : Token_Index := No_Token_Index; Or_Res38 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Elsif_Part0_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res3 := M.Instance; return Null_Res3; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res3; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos99 := Pos; Null_Res3 := No_Bare_Ada_Node; if Row_Pos99 /= No_Token_Index then Row_Pos99 := Row_Pos99; else Row_Pos99 := No_Token_Index; goto Exit_Row99_0; end if; -- Start or_code Or_Pos38 := No_Token_Index; Or_Res38 := No_Token_Index; -- Start tok_code Token_Res155 := Row_Pos99; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res155)); begin if T.Kind /= From_Token_Kind (Ada_Elsif) then Token_Pos155 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos99 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos99, Expected_Token_Id => Ada_Elsif, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos155 := Row_Pos99 + 1; end if; end; -- End tok_code if Token_Pos155 /= No_Token_Index then Or_Pos38 := Token_Pos155; Or_Res38 := Token_Res155; goto Exit_Or39; end if; -- Start tok_code Token_Res156 := Row_Pos99; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res156)); begin if T.Kind /= From_Token_Kind (Ada_Else) then Token_Pos156 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos99 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos99, Expected_Token_Id => Ada_Else, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos156 := Row_Pos99 + 1; end if; end; -- End tok_code if Token_Pos156 /= No_Token_Index then Or_Pos38 := Token_Pos156; Or_Res38 := Token_Res156; goto Exit_Or39; end if; -- Start tok_code Token_Res157 := Row_Pos99; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res157)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos157 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos99 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos99, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos157 := Row_Pos99 + 1; end if; end; -- End tok_code if Token_Pos157 /= No_Token_Index then Or_Pos38 := Token_Pos157; Or_Res38 := Token_Res157; goto Exit_Or39; end if; <> -- End or_code if Or_Pos38 /= No_Token_Index then Row_Pos99 := Or_Pos38; else Row_Pos99 := No_Token_Index; goto Exit_Row99_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Elsif_Part0_Extract_Parse0_Memo, Row_Pos99 /= No_Token_Index, Null_Res3, Pos, Row_Pos99); Parser.Current_Pos := Row_Pos99; return Null_Res3; end Dontskip_Elsif_Part0_Extract_Parse0; function Dontskip_Exception_Handler0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos100 : Token_Index := No_Token_Index; Null_Res4 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos158 : Token_Index := No_Token_Index; Token_Res158 : Token_Index := No_Token_Index; Token_Pos159 : Token_Index := No_Token_Index; Token_Res159 : Token_Index := No_Token_Index; Token_Pos160 : Token_Index := No_Token_Index; Token_Res160 : Token_Index := No_Token_Index; Or_Pos39 : Token_Index := No_Token_Index; Or_Res39 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Exception_Handler0_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res4 := M.Instance; return Null_Res4; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res4; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos100 := Pos; Null_Res4 := No_Bare_Ada_Node; if Row_Pos100 /= No_Token_Index then Row_Pos100 := Row_Pos100; else Row_Pos100 := No_Token_Index; goto Exit_Row100_0; end if; -- Start or_code Or_Pos39 := No_Token_Index; Or_Res39 := No_Token_Index; -- Start tok_code Token_Res158 := Row_Pos100; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res158)); begin if T.Kind /= From_Token_Kind (Ada_When) then Token_Pos158 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos100 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos100, Expected_Token_Id => Ada_When, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos158 := Row_Pos100 + 1; end if; end; -- End tok_code if Token_Pos158 /= No_Token_Index then Or_Pos39 := Token_Pos158; Or_Res39 := Token_Res158; goto Exit_Or40; end if; -- Start tok_code Token_Res159 := Row_Pos100; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res159)); begin if T.Kind /= From_Token_Kind (Ada_Pragma) then Token_Pos159 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos100 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos100, Expected_Token_Id => Ada_Pragma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos159 := Row_Pos100 + 1; end if; end; -- End tok_code if Token_Pos159 /= No_Token_Index then Or_Pos39 := Token_Pos159; Or_Res39 := Token_Res159; goto Exit_Or40; end if; -- Start tok_code Token_Res160 := Row_Pos100; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res160)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos160 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos100 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos100, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos160 := Row_Pos100 + 1; end if; end; -- End tok_code if Token_Pos160 /= No_Token_Index then Or_Pos39 := Token_Pos160; Or_Res39 := Token_Res160; goto Exit_Or40; end if; <> -- End or_code if Or_Pos39 /= No_Token_Index then Row_Pos100 := Or_Pos39; else Row_Pos100 := No_Token_Index; goto Exit_Row100_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Exception_Handler0_Extract_Parse0_Memo, Row_Pos100 /= No_Token_Index, Null_Res4, Pos, Row_Pos100); Parser.Current_Pos := Row_Pos100; return Null_Res4; end Dontskip_Exception_Handler0_Extract_Parse0; function Dontskip_Generic_Decl0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos101 : Token_Index := No_Token_Index; Null_Res5 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos161 : Token_Index := No_Token_Index; Token_Res161 : Token_Index := No_Token_Index; Token_Pos162 : Token_Index := No_Token_Index; Token_Res162 : Token_Index := No_Token_Index; Or_Pos40 : Token_Index := No_Token_Index; Or_Res40 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Generic_Decl0_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res5 := M.Instance; return Null_Res5; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res5; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos101 := Pos; Null_Res5 := No_Bare_Ada_Node; if Row_Pos101 /= No_Token_Index then Row_Pos101 := Row_Pos101; else Row_Pos101 := No_Token_Index; goto Exit_Row101_0; end if; -- Start or_code Or_Pos40 := No_Token_Index; Or_Res40 := No_Token_Index; -- Start tok_code Token_Res161 := Row_Pos101; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res161)); begin if T.Kind /= From_Token_Kind (Ada_Private) then Token_Pos161 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos101 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos101, Expected_Token_Id => Ada_Private, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos161 := Row_Pos101 + 1; end if; end; -- End tok_code if Token_Pos161 /= No_Token_Index then Or_Pos40 := Token_Pos161; Or_Res40 := Token_Res161; goto Exit_Or41; end if; -- Start tok_code Token_Res162 := Row_Pos101; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res162)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos162 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos101 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos101, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos162 := Row_Pos101 + 1; end if; end; -- End tok_code if Token_Pos162 /= No_Token_Index then Or_Pos40 := Token_Pos162; Or_Res40 := Token_Res162; goto Exit_Or41; end if; <> -- End or_code if Or_Pos40 /= No_Token_Index then Row_Pos101 := Or_Pos40; else Row_Pos101 := No_Token_Index; goto Exit_Row101_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Generic_Decl0_Extract_Parse0_Memo, Row_Pos101 /= No_Token_Index, Null_Res5, Pos, Row_Pos101); Parser.Current_Pos := Row_Pos101; return Null_Res5; end Dontskip_Generic_Decl0_Extract_Parse0; function Dontskip_Generic_Decl1_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos102 : Token_Index := No_Token_Index; Null_Res6 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos163 : Token_Index := No_Token_Index; Token_Res163 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Generic_Decl1_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res6 := M.Instance; return Null_Res6; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res6; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos102 := Pos; Null_Res6 := No_Bare_Ada_Node; if Row_Pos102 /= No_Token_Index then Row_Pos102 := Row_Pos102; else Row_Pos102 := No_Token_Index; goto Exit_Row102_0; end if; -- Start tok_code Token_Res163 := Row_Pos102; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res163)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos163 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos102 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos102, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos163 := Row_Pos102 + 1; end if; end; -- End tok_code if Token_Pos163 /= No_Token_Index then Row_Pos102 := Token_Pos163; else Row_Pos102 := No_Token_Index; goto Exit_Row102_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Generic_Decl1_Extract_Parse0_Memo, Row_Pos102 /= No_Token_Index, Null_Res6, Pos, Row_Pos102); Parser.Current_Pos := Row_Pos102; return Null_Res6; end Dontskip_Generic_Decl1_Extract_Parse0; function Dontskip_Handled_Stmts0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos103 : Token_Index := No_Token_Index; Null_Res7 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos164 : Token_Index := No_Token_Index; Token_Res164 : Token_Index := No_Token_Index; Token_Pos165 : Token_Index := No_Token_Index; Token_Res165 : Token_Index := No_Token_Index; Or_Pos41 : Token_Index := No_Token_Index; Or_Res41 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Handled_Stmts0_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res7 := M.Instance; return Null_Res7; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res7; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos103 := Pos; Null_Res7 := No_Bare_Ada_Node; if Row_Pos103 /= No_Token_Index then Row_Pos103 := Row_Pos103; else Row_Pos103 := No_Token_Index; goto Exit_Row103_0; end if; -- Start or_code Or_Pos41 := No_Token_Index; Or_Res41 := No_Token_Index; -- Start tok_code Token_Res164 := Row_Pos103; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res164)); begin if T.Kind /= From_Token_Kind (Ada_Exception) then Token_Pos164 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos103 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos103, Expected_Token_Id => Ada_Exception, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos164 := Row_Pos103 + 1; end if; end; -- End tok_code if Token_Pos164 /= No_Token_Index then Or_Pos41 := Token_Pos164; Or_Res41 := Token_Res164; goto Exit_Or42; end if; -- Start tok_code Token_Res165 := Row_Pos103; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res165)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos165 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos103 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos103, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos165 := Row_Pos103 + 1; end if; end; -- End tok_code if Token_Pos165 /= No_Token_Index then Or_Pos41 := Token_Pos165; Or_Res41 := Token_Res165; goto Exit_Or42; end if; <> -- End or_code if Or_Pos41 /= No_Token_Index then Row_Pos103 := Or_Pos41; else Row_Pos103 := No_Token_Index; goto Exit_Row103_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Handled_Stmts0_Extract_Parse0_Memo, Row_Pos103 /= No_Token_Index, Null_Res7, Pos, Row_Pos103); Parser.Current_Pos := Row_Pos103; return Null_Res7; end Dontskip_Handled_Stmts0_Extract_Parse0; function Dontskip_If_Stmt0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos104 : Token_Index := No_Token_Index; Null_Res8 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos166 : Token_Index := No_Token_Index; Token_Res166 : Token_Index := No_Token_Index; Token_Pos167 : Token_Index := No_Token_Index; Token_Res167 : Token_Index := No_Token_Index; Token_Pos168 : Token_Index := No_Token_Index; Token_Res168 : Token_Index := No_Token_Index; Or_Pos42 : Token_Index := No_Token_Index; Or_Res42 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_If_Stmt0_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res8 := M.Instance; return Null_Res8; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res8; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos104 := Pos; Null_Res8 := No_Bare_Ada_Node; if Row_Pos104 /= No_Token_Index then Row_Pos104 := Row_Pos104; else Row_Pos104 := No_Token_Index; goto Exit_Row104_0; end if; -- Start or_code Or_Pos42 := No_Token_Index; Or_Res42 := No_Token_Index; -- Start tok_code Token_Res166 := Row_Pos104; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res166)); begin if T.Kind /= From_Token_Kind (Ada_Elsif) then Token_Pos166 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos104 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos104, Expected_Token_Id => Ada_Elsif, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos166 := Row_Pos104 + 1; end if; end; -- End tok_code if Token_Pos166 /= No_Token_Index then Or_Pos42 := Token_Pos166; Or_Res42 := Token_Res166; goto Exit_Or43; end if; -- Start tok_code Token_Res167 := Row_Pos104; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res167)); begin if T.Kind /= From_Token_Kind (Ada_Else) then Token_Pos167 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos104 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos104, Expected_Token_Id => Ada_Else, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos167 := Row_Pos104 + 1; end if; end; -- End tok_code if Token_Pos167 /= No_Token_Index then Or_Pos42 := Token_Pos167; Or_Res42 := Token_Res167; goto Exit_Or43; end if; -- Start tok_code Token_Res168 := Row_Pos104; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res168)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos168 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos104 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos104, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos168 := Row_Pos104 + 1; end if; end; -- End tok_code if Token_Pos168 /= No_Token_Index then Or_Pos42 := Token_Pos168; Or_Res42 := Token_Res168; goto Exit_Or43; end if; <> -- End or_code if Or_Pos42 /= No_Token_Index then Row_Pos104 := Or_Pos42; else Row_Pos104 := No_Token_Index; goto Exit_Row104_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_If_Stmt0_Extract_Parse0_Memo, Row_Pos104 /= No_Token_Index, Null_Res8, Pos, Row_Pos104); Parser.Current_Pos := Row_Pos104; return Null_Res8; end Dontskip_If_Stmt0_Extract_Parse0; function Dontskip_If_Stmt1_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos105 : Token_Index := No_Token_Index; Null_Res9 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos169 : Token_Index := No_Token_Index; Token_Res169 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_If_Stmt1_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res9 := M.Instance; return Null_Res9; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res9; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos105 := Pos; Null_Res9 := No_Bare_Ada_Node; if Row_Pos105 /= No_Token_Index then Row_Pos105 := Row_Pos105; else Row_Pos105 := No_Token_Index; goto Exit_Row105_0; end if; -- Start tok_code Token_Res169 := Row_Pos105; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res169)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos169 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos105 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos105, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos169 := Row_Pos105 + 1; end if; end; -- End tok_code if Token_Pos169 /= No_Token_Index then Row_Pos105 := Token_Pos169; else Row_Pos105 := No_Token_Index; goto Exit_Row105_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_If_Stmt1_Extract_Parse0_Memo, Row_Pos105 /= No_Token_Index, Null_Res9, Pos, Row_Pos105); Parser.Current_Pos := Row_Pos105; return Null_Res9; end Dontskip_If_Stmt1_Extract_Parse0; function Dontskip_Iloop_Stmt0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos106 : Token_Index := No_Token_Index; Null_Res10 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos170 : Token_Index := No_Token_Index; Token_Res170 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Iloop_Stmt0_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res10 := M.Instance; return Null_Res10; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res10; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos106 := Pos; Null_Res10 := No_Bare_Ada_Node; if Row_Pos106 /= No_Token_Index then Row_Pos106 := Row_Pos106; else Row_Pos106 := No_Token_Index; goto Exit_Row106_0; end if; -- Start tok_code Token_Res170 := Row_Pos106; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res170)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos170 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos106 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos106, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos170 := Row_Pos106 + 1; end if; end; -- End tok_code if Token_Pos170 /= No_Token_Index then Row_Pos106 := Token_Pos170; else Row_Pos106 := No_Token_Index; goto Exit_Row106_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Iloop_Stmt0_Extract_Parse0_Memo, Row_Pos106 /= No_Token_Index, Null_Res10, Pos, Row_Pos106); Parser.Current_Pos := Row_Pos106; return Null_Res10; end Dontskip_Iloop_Stmt0_Extract_Parse0; function Dontskip_Iloop_Stmt1_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos107 : Token_Index := No_Token_Index; Null_Res11 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos171 : Token_Index := No_Token_Index; Token_Res171 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Iloop_Stmt1_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res11 := M.Instance; return Null_Res11; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res11; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos107 := Pos; Null_Res11 := No_Bare_Ada_Node; if Row_Pos107 /= No_Token_Index then Row_Pos107 := Row_Pos107; else Row_Pos107 := No_Token_Index; goto Exit_Row107_0; end if; -- Start tok_code Token_Res171 := Row_Pos107; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res171)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos171 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos107 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos107, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos171 := Row_Pos107 + 1; end if; end; -- End tok_code if Token_Pos171 /= No_Token_Index then Row_Pos107 := Token_Pos171; else Row_Pos107 := No_Token_Index; goto Exit_Row107_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Iloop_Stmt1_Extract_Parse0_Memo, Row_Pos107 /= No_Token_Index, Null_Res11, Pos, Row_Pos107); Parser.Current_Pos := Row_Pos107; return Null_Res11; end Dontskip_Iloop_Stmt1_Extract_Parse0; function Dontskip_Iloop_Stmt2_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos108 : Token_Index := No_Token_Index; Null_Res12 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos172 : Token_Index := No_Token_Index; Token_Res172 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Iloop_Stmt2_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res12 := M.Instance; return Null_Res12; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res12; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos108 := Pos; Null_Res12 := No_Bare_Ada_Node; if Row_Pos108 /= No_Token_Index then Row_Pos108 := Row_Pos108; else Row_Pos108 := No_Token_Index; goto Exit_Row108_0; end if; -- Start tok_code Token_Res172 := Row_Pos108; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res172)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos172 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos108 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos108, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos172 := Row_Pos108 + 1; end if; end; -- End tok_code if Token_Pos172 /= No_Token_Index then Row_Pos108 := Token_Pos172; else Row_Pos108 := No_Token_Index; goto Exit_Row108_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Iloop_Stmt2_Extract_Parse0_Memo, Row_Pos108 /= No_Token_Index, Null_Res12, Pos, Row_Pos108); Parser.Current_Pos := Row_Pos108; return Null_Res12; end Dontskip_Iloop_Stmt2_Extract_Parse0; function Dontskip_Package_Body0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos109 : Token_Index := No_Token_Index; Null_Res13 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos173 : Token_Index := No_Token_Index; Token_Res173 : Token_Index := No_Token_Index; Token_Pos174 : Token_Index := No_Token_Index; Token_Res174 : Token_Index := No_Token_Index; Or_Pos43 : Token_Index := No_Token_Index; Or_Res43 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Package_Body0_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res13 := M.Instance; return Null_Res13; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res13; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos109 := Pos; Null_Res13 := No_Bare_Ada_Node; if Row_Pos109 /= No_Token_Index then Row_Pos109 := Row_Pos109; else Row_Pos109 := No_Token_Index; goto Exit_Row109_0; end if; -- Start or_code Or_Pos43 := No_Token_Index; Or_Res43 := No_Token_Index; -- Start tok_code Token_Res173 := Row_Pos109; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res173)); begin if T.Kind /= From_Token_Kind (Ada_Begin) then Token_Pos173 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos109 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos109, Expected_Token_Id => Ada_Begin, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos173 := Row_Pos109 + 1; end if; end; -- End tok_code if Token_Pos173 /= No_Token_Index then Or_Pos43 := Token_Pos173; Or_Res43 := Token_Res173; goto Exit_Or44; end if; -- Start tok_code Token_Res174 := Row_Pos109; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res174)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos174 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos109 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos109, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos174 := Row_Pos109 + 1; end if; end; -- End tok_code if Token_Pos174 /= No_Token_Index then Or_Pos43 := Token_Pos174; Or_Res43 := Token_Res174; goto Exit_Or44; end if; <> -- End or_code if Or_Pos43 /= No_Token_Index then Row_Pos109 := Or_Pos43; else Row_Pos109 := No_Token_Index; goto Exit_Row109_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Package_Body0_Extract_Parse0_Memo, Row_Pos109 /= No_Token_Index, Null_Res13, Pos, Row_Pos109); Parser.Current_Pos := Row_Pos109; return Null_Res13; end Dontskip_Package_Body0_Extract_Parse0; function Dontskip_Package_Decl0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos110 : Token_Index := No_Token_Index; Null_Res14 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos175 : Token_Index := No_Token_Index; Token_Res175 : Token_Index := No_Token_Index; Token_Pos176 : Token_Index := No_Token_Index; Token_Res176 : Token_Index := No_Token_Index; Or_Pos44 : Token_Index := No_Token_Index; Or_Res44 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Package_Decl0_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res14 := M.Instance; return Null_Res14; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res14; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos110 := Pos; Null_Res14 := No_Bare_Ada_Node; if Row_Pos110 /= No_Token_Index then Row_Pos110 := Row_Pos110; else Row_Pos110 := No_Token_Index; goto Exit_Row110_0; end if; -- Start or_code Or_Pos44 := No_Token_Index; Or_Res44 := No_Token_Index; -- Start tok_code Token_Res175 := Row_Pos110; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res175)); begin if T.Kind /= From_Token_Kind (Ada_Private) then Token_Pos175 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos110 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos110, Expected_Token_Id => Ada_Private, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos175 := Row_Pos110 + 1; end if; end; -- End tok_code if Token_Pos175 /= No_Token_Index then Or_Pos44 := Token_Pos175; Or_Res44 := Token_Res175; goto Exit_Or45; end if; -- Start tok_code Token_Res176 := Row_Pos110; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res176)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos176 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos110 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos110, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos176 := Row_Pos110 + 1; end if; end; -- End tok_code if Token_Pos176 /= No_Token_Index then Or_Pos44 := Token_Pos176; Or_Res44 := Token_Res176; goto Exit_Or45; end if; <> -- End or_code if Or_Pos44 /= No_Token_Index then Row_Pos110 := Or_Pos44; else Row_Pos110 := No_Token_Index; goto Exit_Row110_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Package_Decl0_Extract_Parse0_Memo, Row_Pos110 /= No_Token_Index, Null_Res14, Pos, Row_Pos110); Parser.Current_Pos := Row_Pos110; return Null_Res14; end Dontskip_Package_Decl0_Extract_Parse0; function Dontskip_Package_Decl1_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos111 : Token_Index := No_Token_Index; Null_Res15 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos177 : Token_Index := No_Token_Index; Token_Res177 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Package_Decl1_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res15 := M.Instance; return Null_Res15; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res15; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos111 := Pos; Null_Res15 := No_Bare_Ada_Node; if Row_Pos111 /= No_Token_Index then Row_Pos111 := Row_Pos111; else Row_Pos111 := No_Token_Index; goto Exit_Row111_0; end if; -- Start tok_code Token_Res177 := Row_Pos111; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res177)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos177 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos111 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos111, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos177 := Row_Pos111 + 1; end if; end; -- End tok_code if Token_Pos177 /= No_Token_Index then Row_Pos111 := Token_Pos177; else Row_Pos111 := No_Token_Index; goto Exit_Row111_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Package_Decl1_Extract_Parse0_Memo, Row_Pos111 /= No_Token_Index, Null_Res15, Pos, Row_Pos111); Parser.Current_Pos := Row_Pos111; return Null_Res15; end Dontskip_Package_Decl1_Extract_Parse0; function Dontskip_Protected_Body0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos112 : Token_Index := No_Token_Index; Null_Res16 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos178 : Token_Index := No_Token_Index; Token_Res178 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Protected_Body0_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res16 := M.Instance; return Null_Res16; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res16; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos112 := Pos; Null_Res16 := No_Bare_Ada_Node; if Row_Pos112 /= No_Token_Index then Row_Pos112 := Row_Pos112; else Row_Pos112 := No_Token_Index; goto Exit_Row112_0; end if; -- Start tok_code Token_Res178 := Row_Pos112; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res178)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos178 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos112 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos112, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos178 := Row_Pos112 + 1; end if; end; -- End tok_code if Token_Pos178 /= No_Token_Index then Row_Pos112 := Token_Pos178; else Row_Pos112 := No_Token_Index; goto Exit_Row112_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Protected_Body0_Extract_Parse0_Memo, Row_Pos112 /= No_Token_Index, Null_Res16, Pos, Row_Pos112); Parser.Current_Pos := Row_Pos112; return Null_Res16; end Dontskip_Protected_Body0_Extract_Parse0; function Dontskip_Recov_Decl_Part0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos113 : Token_Index := No_Token_Index; Null_Res17 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos179 : Token_Index := No_Token_Index; Token_Res179 : Token_Index := No_Token_Index; Token_Pos180 : Token_Index := No_Token_Index; Token_Res180 : Token_Index := No_Token_Index; Token_Pos181 : Token_Index := No_Token_Index; Token_Res181 : Token_Index := No_Token_Index; Token_Pos182 : Token_Index := No_Token_Index; Token_Res182 : Token_Index := No_Token_Index; Token_Pos183 : Token_Index := No_Token_Index; Token_Res183 : Token_Index := No_Token_Index; Token_Pos184 : Token_Index := No_Token_Index; Token_Res184 : Token_Index := No_Token_Index; Token_Pos185 : Token_Index := No_Token_Index; Token_Res185 : Token_Index := No_Token_Index; Token_Pos186 : Token_Index := No_Token_Index; Token_Res186 : Token_Index := No_Token_Index; Token_Pos187 : Token_Index := No_Token_Index; Token_Res187 : Token_Index := No_Token_Index; Token_Pos188 : Token_Index := No_Token_Index; Token_Res188 : Token_Index := No_Token_Index; Or_Pos45 : Token_Index := No_Token_Index; Or_Res45 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Recov_Decl_Part0_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res17 := M.Instance; return Null_Res17; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res17; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos113 := Pos; Null_Res17 := No_Bare_Ada_Node; if Row_Pos113 /= No_Token_Index then Row_Pos113 := Row_Pos113; else Row_Pos113 := No_Token_Index; goto Exit_Row113_0; end if; -- Start or_code Or_Pos45 := No_Token_Index; Or_Res45 := No_Token_Index; -- Start tok_code Token_Res179 := Row_Pos113; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res179)); begin if T.Kind /= From_Token_Kind (Ada_Begin) then Token_Pos179 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos113 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos113, Expected_Token_Id => Ada_Begin, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos179 := Row_Pos113 + 1; end if; end; -- End tok_code if Token_Pos179 /= No_Token_Index then Or_Pos45 := Token_Pos179; Or_Res45 := Token_Res179; goto Exit_Or46; end if; -- Start tok_code Token_Res180 := Row_Pos113; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res180)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos180 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos113 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos113, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos180 := Row_Pos113 + 1; end if; end; -- End tok_code if Token_Pos180 /= No_Token_Index then Or_Pos45 := Token_Pos180; Or_Res45 := Token_Res180; goto Exit_Or46; end if; -- Start tok_code Token_Res181 := Row_Pos113; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res181)); begin if T.Kind /= From_Token_Kind (Ada_If) then Token_Pos181 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos113 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos113, Expected_Token_Id => Ada_If, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos181 := Row_Pos113 + 1; end if; end; -- End tok_code if Token_Pos181 /= No_Token_Index then Or_Pos45 := Token_Pos181; Or_Res45 := Token_Res181; goto Exit_Or46; end if; -- Start tok_code Token_Res182 := Row_Pos113; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res182)); begin if T.Kind /= From_Token_Kind (Ada_For) then Token_Pos182 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos113 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos113, Expected_Token_Id => Ada_For, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos182 := Row_Pos113 + 1; end if; end; -- End tok_code if Token_Pos182 /= No_Token_Index then Or_Pos45 := Token_Pos182; Or_Res45 := Token_Res182; goto Exit_Or46; end if; -- Start tok_code Token_Res183 := Row_Pos113; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res183)); begin if T.Kind /= From_Token_Kind (Ada_While) then Token_Pos183 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos113 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos113, Expected_Token_Id => Ada_While, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos183 := Row_Pos113 + 1; end if; end; -- End tok_code if Token_Pos183 /= No_Token_Index then Or_Pos45 := Token_Pos183; Or_Res45 := Token_Res183; goto Exit_Or46; end if; -- Start tok_code Token_Res184 := Row_Pos113; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res184)); begin if T.Kind /= From_Token_Kind (Ada_Loop) then Token_Pos184 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos113 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos113, Expected_Token_Id => Ada_Loop, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos184 := Row_Pos113 + 1; end if; end; -- End tok_code if Token_Pos184 /= No_Token_Index then Or_Pos45 := Token_Pos184; Or_Res45 := Token_Res184; goto Exit_Or46; end if; -- Start tok_code Token_Res185 := Row_Pos113; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res185)); begin if T.Kind /= From_Token_Kind (Ada_Declare) then Token_Pos185 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos113 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos113, Expected_Token_Id => Ada_Declare, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos185 := Row_Pos113 + 1; end if; end; -- End tok_code if Token_Pos185 /= No_Token_Index then Or_Pos45 := Token_Pos185; Or_Res45 := Token_Res185; goto Exit_Or46; end if; -- Start tok_code Token_Res186 := Row_Pos113; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res186)); begin if T.Kind /= From_Token_Kind (Ada_Accept) then Token_Pos186 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos113 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos113, Expected_Token_Id => Ada_Accept, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos186 := Row_Pos113 + 1; end if; end; -- End tok_code if Token_Pos186 /= No_Token_Index then Or_Pos45 := Token_Pos186; Or_Res45 := Token_Res186; goto Exit_Or46; end if; -- Start tok_code Token_Res187 := Row_Pos113; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res187)); begin if T.Kind /= From_Token_Kind (Ada_Select) then Token_Pos187 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos113 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos113, Expected_Token_Id => Ada_Select, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos187 := Row_Pos113 + 1; end if; end; -- End tok_code if Token_Pos187 /= No_Token_Index then Or_Pos45 := Token_Pos187; Or_Res45 := Token_Res187; goto Exit_Or46; end if; -- Start tok_code Token_Res188 := Row_Pos113; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res188)); begin if T.Kind /= From_Token_Kind (Ada_Case) then Token_Pos188 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos113 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos113, Expected_Token_Id => Ada_Case, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos188 := Row_Pos113 + 1; end if; end; -- End tok_code if Token_Pos188 /= No_Token_Index then Or_Pos45 := Token_Pos188; Or_Res45 := Token_Res188; goto Exit_Or46; end if; <> -- End or_code if Or_Pos45 /= No_Token_Index then Row_Pos113 := Or_Pos45; else Row_Pos113 := No_Token_Index; goto Exit_Row113_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Recov_Decl_Part0_Extract_Parse0_Memo, Row_Pos113 /= No_Token_Index, Null_Res17, Pos, Row_Pos113); Parser.Current_Pos := Row_Pos113; return Null_Res17; end Dontskip_Recov_Decl_Part0_Extract_Parse0; function Dontskip_Select_Stmt0_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos114 : Token_Index := No_Token_Index; Null_Res18 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos189 : Token_Index := No_Token_Index; Token_Res189 : Token_Index := No_Token_Index; Token_Pos190 : Token_Index := No_Token_Index; Token_Res190 : Token_Index := No_Token_Index; Token_Pos191 : Token_Index := No_Token_Index; Token_Res191 : Token_Index := No_Token_Index; Token_Pos192 : Token_Index := No_Token_Index; Token_Res192 : Token_Index := No_Token_Index; Or_Pos46 : Token_Index := No_Token_Index; Or_Res46 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Select_Stmt0_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res18 := M.Instance; return Null_Res18; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res18; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos114 := Pos; Null_Res18 := No_Bare_Ada_Node; if Row_Pos114 /= No_Token_Index then Row_Pos114 := Row_Pos114; else Row_Pos114 := No_Token_Index; goto Exit_Row114_0; end if; -- Start or_code Or_Pos46 := No_Token_Index; Or_Res46 := No_Token_Index; -- Start tok_code Token_Res189 := Row_Pos114; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res189)); begin if T.Kind /= From_Token_Kind (Ada_Else) then Token_Pos189 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos114 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos114, Expected_Token_Id => Ada_Else, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos189 := Row_Pos114 + 1; end if; end; -- End tok_code if Token_Pos189 /= No_Token_Index then Or_Pos46 := Token_Pos189; Or_Res46 := Token_Res189; goto Exit_Or47; end if; -- Start tok_code Token_Res190 := Row_Pos114; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res190)); begin if T.Kind /= From_Token_Kind (Ada_Then) then Token_Pos190 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos114 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos114, Expected_Token_Id => Ada_Then, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos190 := Row_Pos114 + 1; end if; end; -- End tok_code if Token_Pos190 /= No_Token_Index then Or_Pos46 := Token_Pos190; Or_Res46 := Token_Res190; goto Exit_Or47; end if; -- Start tok_code Token_Res191 := Row_Pos114; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res191)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos191 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos114 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos114, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos191 := Row_Pos114 + 1; end if; end; -- End tok_code if Token_Pos191 /= No_Token_Index then Or_Pos46 := Token_Pos191; Or_Res46 := Token_Res191; goto Exit_Or47; end if; -- Start tok_code Token_Res192 := Row_Pos114; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res192)); begin if T.Kind /= From_Token_Kind (Ada_Or) then Token_Pos192 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos114 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos114, Expected_Token_Id => Ada_Or, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos192 := Row_Pos114 + 1; end if; end; -- End tok_code if Token_Pos192 /= No_Token_Index then Or_Pos46 := Token_Pos192; Or_Res46 := Token_Res192; goto Exit_Or47; end if; <> -- End or_code if Or_Pos46 /= No_Token_Index then Row_Pos114 := Or_Pos46; else Row_Pos114 := No_Token_Index; goto Exit_Row114_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Select_Stmt0_Extract_Parse0_Memo, Row_Pos114 /= No_Token_Index, Null_Res18, Pos, Row_Pos114); Parser.Current_Pos := Row_Pos114; return Null_Res18; end Dontskip_Select_Stmt0_Extract_Parse0; function Dontskip_Select_Stmt1_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos115 : Token_Index := No_Token_Index; Null_Res19 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos193 : Token_Index := No_Token_Index; Token_Res193 : Token_Index := No_Token_Index; Token_Pos194 : Token_Index := No_Token_Index; Token_Res194 : Token_Index := No_Token_Index; Or_Pos47 : Token_Index := No_Token_Index; Or_Res47 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Select_Stmt1_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res19 := M.Instance; return Null_Res19; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res19; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos115 := Pos; Null_Res19 := No_Bare_Ada_Node; if Row_Pos115 /= No_Token_Index then Row_Pos115 := Row_Pos115; else Row_Pos115 := No_Token_Index; goto Exit_Row115_0; end if; -- Start or_code Or_Pos47 := No_Token_Index; Or_Res47 := No_Token_Index; -- Start tok_code Token_Res193 := Row_Pos115; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res193)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos193 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos115 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos115, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos193 := Row_Pos115 + 1; end if; end; -- End tok_code if Token_Pos193 /= No_Token_Index then Or_Pos47 := Token_Pos193; Or_Res47 := Token_Res193; goto Exit_Or48; end if; -- Start tok_code Token_Res194 := Row_Pos115; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res194)); begin if T.Kind /= From_Token_Kind (Ada_Then) then Token_Pos194 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos115 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos115, Expected_Token_Id => Ada_Then, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos194 := Row_Pos115 + 1; end if; end; -- End tok_code if Token_Pos194 /= No_Token_Index then Or_Pos47 := Token_Pos194; Or_Res47 := Token_Res194; goto Exit_Or48; end if; <> -- End or_code if Or_Pos47 /= No_Token_Index then Row_Pos115 := Or_Pos47; else Row_Pos115 := No_Token_Index; goto Exit_Row115_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Select_Stmt1_Extract_Parse0_Memo, Row_Pos115 /= No_Token_Index, Null_Res19, Pos, Row_Pos115); Parser.Current_Pos := Row_Pos115; return Null_Res19; end Dontskip_Select_Stmt1_Extract_Parse0; function Dontskip_Select_Stmt2_Extract_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Row_Pos116 : Token_Index := No_Token_Index; Null_Res20 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos195 : Token_Index := No_Token_Index; Token_Res195 : Token_Index := No_Token_Index; M : Memo_Entry := Get (Parser.Private_Part.Dontskip_Select_Stmt2_Extract_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Null_Res20 := M.Instance; return Null_Res20; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Null_Res20; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start row_code Row_Pos116 := Pos; Null_Res20 := No_Bare_Ada_Node; if Row_Pos116 /= No_Token_Index then Row_Pos116 := Row_Pos116; else Row_Pos116 := No_Token_Index; goto Exit_Row116_0; end if; -- Start tok_code Token_Res195 := Row_Pos116; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res195)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos195 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos116 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos116, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos195 := Row_Pos116 + 1; end if; end; -- End tok_code if Token_Pos195 /= No_Token_Index then Row_Pos116 := Token_Pos195; else Row_Pos116 := No_Token_Index; goto Exit_Row116_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Dontskip_Select_Stmt2_Extract_Parse0_Memo, Row_Pos116 /= No_Token_Index, Null_Res20, Pos, Row_Pos116); Parser.Current_Pos := Row_Pos116; return Null_Res20; end Dontskip_Select_Stmt2_Extract_Parse0; function Elsif_Part_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Elsif_Stmt_Part is use Bare_Elsif_Stmt_Part_Memos; Nobt10 : Boolean := False; Row_Pos117 : Token_Index := No_Token_Index; Token_Pos196 : Token_Index := No_Token_Index; Token_Res196 : Token_Index := No_Token_Index; Defer_Pos191 : Token_Index := No_Token_Index; Defer_Res191 : Bare_Expr := No_Bare_Ada_Node; Token_Pos197 : Token_Index := No_Token_Index; Token_Res197 : Token_Index := No_Token_Index; Defer_Pos192 : Token_Index := No_Token_Index; Defer_Res192 : Bare_Stmt_List := No_Bare_Ada_Node; Row_Progress10 : Integer := 0; Transform_Res76 : Bare_Elsif_Stmt_Part := No_Bare_Ada_Node; Transform_Has_Failed10 : Boolean := False; Transform_Diags76 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Elsif_Part_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res76 := M.Instance; return Transform_Res76; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res76; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags76 := Parser.Diagnostics.Length; -- Start row_code Row_Pos117 := Pos; -- Start tok_code Token_Res196 := Row_Pos117; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res196)); begin if T.Kind /= From_Token_Kind (Ada_Elsif) then Token_Pos196 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos117 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos117, Expected_Token_Id => Ada_Elsif, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos196 := Row_Pos117 + 1; end if; end; -- End tok_code Row_Progress10 := 1; if Token_Pos196 /= No_Token_Index then Row_Pos117 := Token_Pos196; else Row_Pos117 := No_Token_Index; goto Exit_Row117_0; end if; Nobt10 := True; Nobt10 := Nobt10; Row_Progress10 := 2; if Row_Pos117 /= No_Token_Index then Row_Pos117 := Row_Pos117; else Row_Pos117 := No_Token_Index; goto Exit_Row117_0; end if; Defer_Res191 := Expr_Or_Parse0 (Parser, Row_Pos117); Defer_Pos191 := Parser.Current_Pos; Row_Progress10 := 3; if Defer_Pos191 /= No_Token_Index then Row_Pos117 := Defer_Pos191; else Row_Pos117 := No_Token_Index; goto Exit_Row117_0; end if; -- Start tok_code Token_Res197 := Row_Pos117; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res197)); begin if T.Kind /= From_Token_Kind (Ada_Then) then Token_Pos197 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos117 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos117, Expected_Token_Id => Ada_Then, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos197 := Row_Pos117 + 1; end if; end; -- End tok_code Row_Progress10 := 4; if Token_Pos197 /= No_Token_Index then Row_Pos117 := Token_Pos197; else Row_Pos117 := No_Token_Index; goto Exit_Row117_0; end if; Parser.Private_Part.Dont_Skip.Append (Dontskip_Elsif_Part0_Extract_Parse0'Access); Defer_Res192 := Stmts_List_Parse0 (Parser, Row_Pos117); Defer_Pos192 := Parser.Current_Pos; Parser.Private_Part.Dont_Skip.Delete_Last; Row_Progress10 := 5; if Defer_Pos192 /= No_Token_Index then Row_Pos117 := Defer_Pos192; else Row_Pos117 := No_Token_Index; goto Exit_Row117_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos117 = No_Token_Index and then Nobt10 then Row_Pos117 := Parser.Last_Fail.Pos; Transform_Has_Failed10 := True; end if; if Row_Pos117 /= No_Token_Index then Transform_Res76 := Allocate_Elsif_Stmt_Part (Parser.Mem_Pool); Initialize (Self => Transform_Res76, Kind => Ada_Elsif_Stmt_Part, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos117 = Pos then No_Token_Index else Row_Pos117 - 1)); Initialize_Fields_For_Elsif_Stmt_Part (Self => Transform_Res76, Elsif_Stmt_Part_F_Cond_Expr => Defer_Res191, Elsif_Stmt_Part_F_Stmts => Defer_Res192); if Defer_Res191 /= null and then Is_Incomplete (Defer_Res191) then Transform_Res76.Last_Attempted_Child := 0; elsif Defer_Res191 /= null and then not Is_Ghost (Defer_Res191) then Transform_Res76.Last_Attempted_Child := -1; end if; if Defer_Res192 /= null and then Is_Incomplete (Defer_Res192) then Transform_Res76.Last_Attempted_Child := 0; elsif Defer_Res192 /= null and then not Is_Ghost (Defer_Res192) then Transform_Res76.Last_Attempted_Child := -1; end if; if Transform_Has_Failed10 then Transform_Res76.Last_Attempted_Child := Row_Progress10; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos117 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags76); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Elsif_Part_Transform_Parse0_Memo, Row_Pos117 /= No_Token_Index, Transform_Res76, Pos, Row_Pos117); Parser.Current_Pos := Row_Pos117; return Transform_Res76; end Elsif_Part_Transform_Parse0; function Entry_Body_Transform_Parse3 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Entry_Body is use Bare_Entry_Body_Memos; Nobt11 : Boolean := False; Row_Pos118 : Token_Index := No_Token_Index; Token_Pos198 : Token_Index := No_Token_Index; Token_Res198 : Token_Index := No_Token_Index; Defer_Pos193 : Token_Index := No_Token_Index; Defer_Res193 : Bare_Defining_Name := No_Bare_Ada_Node; Row_Pos119 : Token_Index := No_Token_Index; Token_Pos199 : Token_Index := No_Token_Index; Token_Res199 : Token_Index := No_Token_Index; Token_Pos200 : Token_Index := No_Token_Index; Token_Res200 : Token_Index := No_Token_Index; Defer_Pos194 : Token_Index := No_Token_Index; Defer_Res194 : Bare_Defining_Name := No_Bare_Ada_Node; Token_Pos201 : Token_Index := No_Token_Index; Token_Res201 : Token_Index := No_Token_Index; Defer_Pos195 : Token_Index := No_Token_Index; Defer_Res195 : Bare_Ada_Node := No_Bare_Ada_Node; Defer_Pos196 : Token_Index := No_Token_Index; Defer_Res196 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos202 : Token_Index := No_Token_Index; Token_Res202 : Token_Index := No_Token_Index; Transform_Res77 : Bare_Entry_Index_Spec := No_Bare_Ada_Node; Transform_Diags77 : Ada.Containers.Count_Type; Row_Pos120 : Token_Index := No_Token_Index; Defer_Pos197 : Token_Index := No_Token_Index; Defer_Res197 : Bare_Params := No_Bare_Ada_Node; Transform_Res78 : Bare_Entry_Completion_Formal_Params := No_Bare_Ada_Node; Transform_Diags78 : Ada.Containers.Count_Type; Defer_Pos198 : Token_Index := No_Token_Index; Defer_Res198 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos203 : Token_Index := No_Token_Index; Token_Res203 : Token_Index := No_Token_Index; Defer_Pos199 : Token_Index := No_Token_Index; Defer_Res199 : Bare_Expr := No_Bare_Ada_Node; Token_Pos204 : Token_Index := No_Token_Index; Token_Res204 : Token_Index := No_Token_Index; Defer_Pos200 : Token_Index := No_Token_Index; Defer_Res200 : Bare_Declarative_Part := No_Bare_Ada_Node; Token_Pos205 : Token_Index := No_Token_Index; Token_Res205 : Token_Index := No_Token_Index; Defer_Pos201 : Token_Index := No_Token_Index; Defer_Res201 : Bare_Handled_Stmts := No_Bare_Ada_Node; Row_Pos121 : Token_Index := No_Token_Index; Token_Pos206 : Token_Index := No_Token_Index; Token_Res206 : Token_Index := No_Token_Index; Row_Pos122 : Token_Index := No_Token_Index; Defer_Pos202 : Token_Index := No_Token_Index; Defer_Res202 : Bare_Name := No_Bare_Ada_Node; Transform_Res79 : Bare_End_Name := No_Bare_Ada_Node; Transform_Diags79 : Ada.Containers.Count_Type; Token_Pos207 : Token_Index := No_Token_Index; Token_Res207 : Token_Index := No_Token_Index; Row_Progress11 : Integer := 0; Transform_Res80 : Bare_Entry_Body := No_Bare_Ada_Node; Transform_Has_Failed11 : Boolean := False; Transform_Diags80 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Entry_Body_Transform_Parse3_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res80 := M.Instance; return Transform_Res80; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res80; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags80 := Parser.Diagnostics.Length; -- Start row_code Row_Pos118 := Pos; -- Start tok_code Token_Res198 := Row_Pos118; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res198)); begin if T.Kind /= From_Token_Kind (Ada_Entry) then Token_Pos198 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos118 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos118, Expected_Token_Id => Ada_Entry, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos198 := Row_Pos118 + 1; end if; end; -- End tok_code Row_Progress11 := 1; if Token_Pos198 /= No_Token_Index then Row_Pos118 := Token_Pos198; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; Defer_Res193 := Defining_Id_Transform_Parse0 (Parser, Row_Pos118); Defer_Pos193 := Parser.Current_Pos; Row_Progress11 := 2; if Defer_Pos193 /= No_Token_Index then Row_Pos118 := Defer_Pos193; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; -- Start opt_code -- Start transform_code Transform_Diags77 := Parser.Diagnostics.Length; -- Start row_code Row_Pos119 := Row_Pos118; -- Start tok_code Token_Res199 := Row_Pos119; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res199)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos199 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos119 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos119, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos199 := Row_Pos119 + 1; end if; end; -- End tok_code if Token_Pos199 /= No_Token_Index then Row_Pos119 := Token_Pos199; else Row_Pos119 := No_Token_Index; goto Exit_Row119_0; end if; -- Start tok_code Token_Res200 := Row_Pos119; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res200)); begin if T.Kind /= From_Token_Kind (Ada_For) then Token_Pos200 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos119 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos119, Expected_Token_Id => Ada_For, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos200 := Row_Pos119 + 1; end if; end; -- End tok_code if Token_Pos200 /= No_Token_Index then Row_Pos119 := Token_Pos200; else Row_Pos119 := No_Token_Index; goto Exit_Row119_0; end if; Defer_Res194 := Defining_Id_Transform_Parse0 (Parser, Row_Pos119); Defer_Pos194 := Parser.Current_Pos; if Defer_Pos194 /= No_Token_Index then Row_Pos119 := Defer_Pos194; else Row_Pos119 := No_Token_Index; goto Exit_Row119_0; end if; -- Start tok_code Token_Res201 := Row_Pos119; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res201)); begin if T.Kind /= From_Token_Kind (Ada_In) then Token_Pos201 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos119 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos119, Expected_Token_Id => Ada_In, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos201 := Row_Pos119 + 1; end if; end; -- End tok_code if Token_Pos201 /= No_Token_Index then Row_Pos119 := Token_Pos201; else Row_Pos119 := No_Token_Index; goto Exit_Row119_0; end if; Defer_Res195 := Discrete_Subtype_Definition_Or_Parse0 (Parser, Row_Pos119); Defer_Pos195 := Parser.Current_Pos; if Defer_Pos195 /= No_Token_Index then Row_Pos119 := Defer_Pos195; else Row_Pos119 := No_Token_Index; goto Exit_Row119_0; end if; -- Start opt_code Defer_Res196 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos119); Defer_Pos196 := Parser.Current_Pos; if Defer_Pos196 = No_Token_Index then Defer_Res196 := No_Bare_Ada_Node; Defer_Pos196 := Row_Pos119; end if; -- End opt_code if Defer_Pos196 /= No_Token_Index then Row_Pos119 := Defer_Pos196; else Row_Pos119 := No_Token_Index; goto Exit_Row119_0; end if; -- Start tok_code Token_Res202 := Row_Pos119; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res202)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos202 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos119 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos119, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos202 := Row_Pos119 + 1; end if; end; -- End tok_code if Token_Pos202 /= No_Token_Index then Row_Pos119 := Token_Pos202; else Row_Pos119 := No_Token_Index; goto Exit_Row119_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos119 /= No_Token_Index then Transform_Res77 := Allocate_Entry_Index_Spec (Parser.Mem_Pool); Initialize (Self => Transform_Res77, Kind => Ada_Entry_Index_Spec, Unit => Parser.Unit, Token_Start_Index => Row_Pos118, Token_End_Index => (if Row_Pos119 = Row_Pos118 then No_Token_Index else Row_Pos119 - 1)); Initialize_Fields_For_Entry_Index_Spec (Self => Transform_Res77, Entry_Index_Spec_F_Id => Defer_Res194, Entry_Index_Spec_F_Subtype => Defer_Res195, Entry_Index_Spec_F_Aspects => Defer_Res196); if Defer_Res194 /= null and then Is_Incomplete (Defer_Res194) then Transform_Res77.Last_Attempted_Child := 0; elsif Defer_Res194 /= null and then not Is_Ghost (Defer_Res194) then Transform_Res77.Last_Attempted_Child := -1; end if; if Defer_Res195 /= null and then Is_Incomplete (Defer_Res195) then Transform_Res77.Last_Attempted_Child := 0; elsif Defer_Res195 /= null and then not Is_Ghost (Defer_Res195) then Transform_Res77.Last_Attempted_Child := -1; end if; if Defer_Res196 /= null and then Is_Incomplete (Defer_Res196) then Transform_Res77.Last_Attempted_Child := 0; elsif Defer_Res196 /= null and then not Is_Ghost (Defer_Res196) then Transform_Res77.Last_Attempted_Child := -1; end if; elsif Row_Pos119 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags77); end if; -- End transform_code if Row_Pos119 = No_Token_Index then Transform_Res77 := No_Bare_Ada_Node; Row_Pos119 := Row_Pos118; end if; -- End opt_code Row_Progress11 := 3; if Row_Pos119 /= No_Token_Index then Row_Pos118 := Row_Pos119; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; -- Start transform_code Transform_Diags78 := Parser.Diagnostics.Length; -- Start row_code Row_Pos120 := Row_Pos118; -- Start opt_code Defer_Res197 := Param_Specs_Transform_Parse0 (Parser, Row_Pos120); Defer_Pos197 := Parser.Current_Pos; if Defer_Pos197 = No_Token_Index then Defer_Res197 := No_Bare_Ada_Node; Defer_Pos197 := Row_Pos120; end if; -- End opt_code if Defer_Pos197 /= No_Token_Index then Row_Pos120 := Defer_Pos197; else Row_Pos120 := No_Token_Index; goto Exit_Row120_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos120 /= No_Token_Index then Transform_Res78 := Allocate_Entry_Completion_Formal_Params (Parser.Mem_Pool); Initialize (Self => Transform_Res78, Kind => Ada_Entry_Completion_Formal_Params, Unit => Parser.Unit, Token_Start_Index => Row_Pos118, Token_End_Index => (if Row_Pos120 = Row_Pos118 then No_Token_Index else Row_Pos120 - 1)); Initialize_Fields_For_Entry_Completion_Formal_Params (Self => Transform_Res78, Entry_Completion_Formal_Params_F_Params => Defer_Res197); if Defer_Res197 /= null and then Is_Incomplete (Defer_Res197) then Transform_Res78.Last_Attempted_Child := 0; elsif Defer_Res197 /= null and then not Is_Ghost (Defer_Res197) then Transform_Res78.Last_Attempted_Child := -1; end if; elsif Row_Pos120 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags78); end if; -- End transform_code Row_Progress11 := 4; if Row_Pos120 /= No_Token_Index then Row_Pos118 := Row_Pos120; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; Defer_Res198 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos118); Defer_Pos198 := Parser.Current_Pos; Row_Progress11 := 5; if Defer_Pos198 /= No_Token_Index then Row_Pos118 := Defer_Pos198; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; -- Start tok_code Token_Res203 := Row_Pos118; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res203)); begin if T.Kind /= From_Token_Kind (Ada_When) then Token_Pos203 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos118 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos118, Expected_Token_Id => Ada_When, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos203 := Row_Pos118 + 1; end if; end; -- End tok_code Row_Progress11 := 6; if Token_Pos203 /= No_Token_Index then Row_Pos118 := Token_Pos203; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; Defer_Res199 := Expr_Or_Parse0 (Parser, Row_Pos118); Defer_Pos199 := Parser.Current_Pos; Row_Progress11 := 7; if Defer_Pos199 /= No_Token_Index then Row_Pos118 := Defer_Pos199; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; -- Start tok_code Token_Res204 := Row_Pos118; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res204)); begin if T.Kind /= From_Token_Kind (Ada_Is) then Token_Pos204 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos118 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos118, Expected_Token_Id => Ada_Is, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos204 := Row_Pos118 + 1; end if; end; -- End tok_code Row_Progress11 := 8; if Token_Pos204 /= No_Token_Index then Row_Pos118 := Token_Pos204; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; Nobt11 := True; Nobt11 := Nobt11; Row_Progress11 := 9; if Row_Pos118 /= No_Token_Index then Row_Pos118 := Row_Pos118; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; Defer_Res200 := Recov_Decl_Part_Dont_Skip_Parse0 (Parser, Row_Pos118); Defer_Pos200 := Parser.Current_Pos; Row_Progress11 := 10; if Defer_Pos200 /= No_Token_Index then Row_Pos118 := Defer_Pos200; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; -- Start tok_code Token_Res205 := Row_Pos118; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res205)); begin if T.Kind /= From_Token_Kind (Ada_Begin) then Token_Pos205 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos118 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos118, Expected_Token_Id => Ada_Begin, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos205 := Row_Pos118 + 1; end if; end; -- End tok_code Row_Progress11 := 11; if Token_Pos205 /= No_Token_Index then Row_Pos118 := Token_Pos205; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; Defer_Res201 := Handled_Stmts_Transform_Parse0 (Parser, Row_Pos118); Defer_Pos201 := Parser.Current_Pos; Row_Progress11 := 12; if Defer_Pos201 /= No_Token_Index then Row_Pos118 := Defer_Pos201; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; -- Start row_code Row_Pos121 := Row_Pos118; -- Start tok_code Token_Res206 := Row_Pos121; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res206)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos206 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos121 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos121, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos206 := Row_Pos121 + 1; end if; end; -- End tok_code if Token_Pos206 /= No_Token_Index then Row_Pos121 := Token_Pos206; else Row_Pos121 := No_Token_Index; goto Exit_Row121_0; end if; -- Start opt_code -- Start transform_code Transform_Diags79 := Parser.Diagnostics.Length; -- Start row_code Row_Pos122 := Row_Pos121; Defer_Res202 := Static_Name_Or_Parse0 (Parser, Row_Pos122); Defer_Pos202 := Parser.Current_Pos; if Defer_Pos202 /= No_Token_Index then Row_Pos122 := Defer_Pos202; else Row_Pos122 := No_Token_Index; goto Exit_Row122_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos122 /= No_Token_Index then Transform_Res79 := Allocate_End_Name (Parser.Mem_Pool); Initialize (Self => Transform_Res79, Kind => Ada_End_Name, Unit => Parser.Unit, Token_Start_Index => Row_Pos121, Token_End_Index => (if Row_Pos122 = Row_Pos121 then No_Token_Index else Row_Pos122 - 1)); Initialize_Fields_For_End_Name (Self => Transform_Res79, End_Name_F_Name => Defer_Res202); if Defer_Res202 /= null and then Is_Incomplete (Defer_Res202) then Transform_Res79.Last_Attempted_Child := 0; elsif Defer_Res202 /= null and then not Is_Ghost (Defer_Res202) then Transform_Res79.Last_Attempted_Child := -1; end if; elsif Row_Pos122 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags79); end if; -- End transform_code if Row_Pos122 = No_Token_Index then Transform_Res79 := No_Bare_Ada_Node; Row_Pos122 := Row_Pos121; end if; -- End opt_code if Row_Pos122 /= No_Token_Index then Row_Pos121 := Row_Pos122; else Row_Pos121 := No_Token_Index; goto Exit_Row121_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code Row_Progress11 := 13; if Row_Pos121 /= No_Token_Index then Row_Pos118 := Row_Pos121; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; -- Start opt_code -- Start tok_code Token_Res207 := Row_Pos118; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res207)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos207 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos118 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos118, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos207 := Row_Pos118 + 1; end if; end; -- End tok_code if Token_Pos207 = No_Token_Index then Token_Res207 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos118)), To_Text ("Missing ';'")); Token_Pos207 := Row_Pos118; end if; -- End opt_code Row_Progress11 := 14; if Token_Pos207 /= No_Token_Index then Row_Pos118 := Token_Pos207; else Row_Pos118 := No_Token_Index; goto Exit_Row118_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos118 = No_Token_Index and then Nobt11 then Row_Pos118 := Parser.Last_Fail.Pos; Transform_Has_Failed11 := True; end if; if Row_Pos118 /= No_Token_Index then Transform_Res80 := Allocate_Entry_Body (Parser.Mem_Pool); Initialize (Self => Transform_Res80, Kind => Ada_Entry_Body, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos118 = Pos then No_Token_Index else Row_Pos118 - 1)); Initialize_Fields_For_Entry_Body (Self => Transform_Res80, Entry_Body_F_Entry_Name => Defer_Res193, Entry_Body_F_Index_Spec => Transform_Res77, Entry_Body_F_Params => Transform_Res78, Entry_Body_F_Aspects => Defer_Res198, Entry_Body_F_Barrier => Defer_Res199, Entry_Body_F_Decls => Defer_Res200, Entry_Body_F_Stmts => Defer_Res201, Entry_Body_F_End_Name => Transform_Res79); if Defer_Res193 /= null and then Is_Incomplete (Defer_Res193) then Transform_Res80.Last_Attempted_Child := 0; elsif Defer_Res193 /= null and then not Is_Ghost (Defer_Res193) then Transform_Res80.Last_Attempted_Child := -1; end if; if Transform_Res77 /= null and then Is_Incomplete (Transform_Res77) then Transform_Res80.Last_Attempted_Child := 0; elsif Transform_Res77 /= null and then not Is_Ghost (Transform_Res77) then Transform_Res80.Last_Attempted_Child := -1; end if; if Transform_Res78 /= null and then Is_Incomplete (Transform_Res78) then Transform_Res80.Last_Attempted_Child := 0; elsif Transform_Res78 /= null and then not Is_Ghost (Transform_Res78) then Transform_Res80.Last_Attempted_Child := -1; end if; if Defer_Res198 /= null and then Is_Incomplete (Defer_Res198) then Transform_Res80.Last_Attempted_Child := 0; elsif Defer_Res198 /= null and then not Is_Ghost (Defer_Res198) then Transform_Res80.Last_Attempted_Child := -1; end if; if Defer_Res199 /= null and then Is_Incomplete (Defer_Res199) then Transform_Res80.Last_Attempted_Child := 0; elsif Defer_Res199 /= null and then not Is_Ghost (Defer_Res199) then Transform_Res80.Last_Attempted_Child := -1; end if; if Defer_Res200 /= null and then Is_Incomplete (Defer_Res200) then Transform_Res80.Last_Attempted_Child := 0; elsif Defer_Res200 /= null and then not Is_Ghost (Defer_Res200) then Transform_Res80.Last_Attempted_Child := -1; end if; if Defer_Res201 /= null and then Is_Incomplete (Defer_Res201) then Transform_Res80.Last_Attempted_Child := 0; elsif Defer_Res201 /= null and then not Is_Ghost (Defer_Res201) then Transform_Res80.Last_Attempted_Child := -1; end if; if Transform_Res79 /= null and then Is_Incomplete (Transform_Res79) then Transform_Res80.Last_Attempted_Child := 0; elsif Transform_Res79 /= null and then not Is_Ghost (Transform_Res79) then Transform_Res80.Last_Attempted_Child := -1; end if; if Transform_Has_Failed11 then Transform_Res80.Last_Attempted_Child := Row_Progress11; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos118 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags80); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Entry_Body_Transform_Parse3_Memo, Row_Pos118 /= No_Token_Index, Transform_Res80, Pos, Row_Pos118); Parser.Current_Pos := Row_Pos118; return Transform_Res80; end Entry_Body_Transform_Parse3; function Entry_Decl_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Entry_Decl is use Bare_Entry_Decl_Memos; Row_Pos123 : Token_Index := No_Token_Index; Defer_Pos203 : Token_Index := No_Token_Index; Defer_Res203 : Bare_Overriding_Node := No_Bare_Ada_Node; Row_Pos124 : Token_Index := No_Token_Index; Token_Pos208 : Token_Index := No_Token_Index; Token_Res208 : Token_Index := No_Token_Index; Defer_Pos204 : Token_Index := No_Token_Index; Defer_Res204 : Bare_Defining_Name := No_Bare_Ada_Node; Row_Pos125 : Token_Index := No_Token_Index; Token_Pos209 : Token_Index := No_Token_Index; Token_Res209 : Token_Index := No_Token_Index; Defer_Pos205 : Token_Index := No_Token_Index; Defer_Res205 : Bare_Constrained_Subtype_Indication := No_Bare_Ada_Node; Defer_Pos206 : Token_Index := No_Token_Index; Defer_Res206 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos207 : Token_Index := No_Token_Index; Defer_Res207 : Bare_Subtype_Indication := No_Bare_Ada_Node; Or_Pos48 : Token_Index := No_Token_Index; Or_Res48 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos210 : Token_Index := No_Token_Index; Token_Res210 : Token_Index := No_Token_Index; Defer_Pos208 : Token_Index := No_Token_Index; Defer_Res208 : Bare_Params := No_Bare_Ada_Node; Transform_Res81 : Bare_Entry_Spec := No_Bare_Ada_Node; Transform_Diags81 : Ada.Containers.Count_Type; Defer_Pos209 : Token_Index := No_Token_Index; Defer_Res209 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos211 : Token_Index := No_Token_Index; Token_Res211 : Token_Index := No_Token_Index; Transform_Res82 : Bare_Entry_Decl := No_Bare_Ada_Node; Transform_Diags82 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Entry_Decl_Transform_Parse1_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res82 := M.Instance; return Transform_Res82; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res82; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags82 := Parser.Diagnostics.Length; -- Start row_code Row_Pos123 := Pos; Defer_Res203 := Overriding_Indicator_Or_Parse0 (Parser, Row_Pos123); Defer_Pos203 := Parser.Current_Pos; if Defer_Pos203 /= No_Token_Index then Row_Pos123 := Defer_Pos203; else Row_Pos123 := No_Token_Index; goto Exit_Row123_0; end if; -- Start transform_code Transform_Diags81 := Parser.Diagnostics.Length; -- Start row_code Row_Pos124 := Row_Pos123; -- Start tok_code Token_Res208 := Row_Pos124; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res208)); begin if T.Kind /= From_Token_Kind (Ada_Entry) then Token_Pos208 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos124 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos124, Expected_Token_Id => Ada_Entry, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos208 := Row_Pos124 + 1; end if; end; -- End tok_code if Token_Pos208 /= No_Token_Index then Row_Pos124 := Token_Pos208; else Row_Pos124 := No_Token_Index; goto Exit_Row124_0; end if; Defer_Res204 := Defining_Id_Transform_Parse0 (Parser, Row_Pos124); Defer_Pos204 := Parser.Current_Pos; if Defer_Pos204 /= No_Token_Index then Row_Pos124 := Defer_Pos204; else Row_Pos124 := No_Token_Index; goto Exit_Row124_0; end if; -- Start opt_code -- Start row_code Row_Pos125 := Row_Pos124; -- Start tok_code Token_Res209 := Row_Pos125; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res209)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos209 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos125 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos125, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos209 := Row_Pos125 + 1; end if; end; -- End tok_code if Token_Pos209 /= No_Token_Index then Row_Pos125 := Token_Pos209; else Row_Pos125 := No_Token_Index; goto Exit_Row125_0; end if; -- Start or_code Or_Pos48 := No_Token_Index; Or_Res48 := No_Bare_Ada_Node; Defer_Res205 := Constrained_Subtype_Indication_Transform_Parse0 (Parser, Row_Pos125); Defer_Pos205 := Parser.Current_Pos; if Defer_Pos205 /= No_Token_Index then Or_Pos48 := Defer_Pos205; Or_Res48 := Defer_Res205; goto Exit_Or49; end if; Defer_Res206 := Discrete_Range_Or_Parse0 (Parser, Row_Pos125); Defer_Pos206 := Parser.Current_Pos; if Defer_Pos206 /= No_Token_Index then Or_Pos48 := Defer_Pos206; Or_Res48 := Defer_Res206; goto Exit_Or49; end if; Defer_Res207 := Subtype_Indication_Transform_Parse0 (Parser, Row_Pos125); Defer_Pos207 := Parser.Current_Pos; if Defer_Pos207 /= No_Token_Index then Or_Pos48 := Defer_Pos207; Or_Res48 := Defer_Res207; goto Exit_Or49; end if; <> -- End or_code if Or_Pos48 /= No_Token_Index then Row_Pos125 := Or_Pos48; else Row_Pos125 := No_Token_Index; goto Exit_Row125_0; end if; -- Start tok_code Token_Res210 := Row_Pos125; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res210)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos210 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos125 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos125, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos210 := Row_Pos125 + 1; end if; end; -- End tok_code if Token_Pos210 /= No_Token_Index then Row_Pos125 := Token_Pos210; else Row_Pos125 := No_Token_Index; goto Exit_Row125_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos125 = No_Token_Index then Or_Res48 := No_Bare_Ada_Node; Row_Pos125 := Row_Pos124; end if; -- End opt_code if Row_Pos125 /= No_Token_Index then Row_Pos124 := Row_Pos125; else Row_Pos124 := No_Token_Index; goto Exit_Row124_0; end if; -- Start opt_code Defer_Res208 := Param_Specs_Transform_Parse0 (Parser, Row_Pos124); Defer_Pos208 := Parser.Current_Pos; if Defer_Pos208 = No_Token_Index then Defer_Res208 := No_Bare_Ada_Node; Defer_Pos208 := Row_Pos124; end if; -- End opt_code if Defer_Pos208 /= No_Token_Index then Row_Pos124 := Defer_Pos208; else Row_Pos124 := No_Token_Index; goto Exit_Row124_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos124 /= No_Token_Index then Transform_Res81 := Allocate_Entry_Spec (Parser.Mem_Pool); Initialize (Self => Transform_Res81, Kind => Ada_Entry_Spec, Unit => Parser.Unit, Token_Start_Index => Row_Pos123, Token_End_Index => (if Row_Pos124 = Row_Pos123 then No_Token_Index else Row_Pos124 - 1)); Initialize_Fields_For_Entry_Spec (Self => Transform_Res81, Entry_Spec_F_Entry_Name => Defer_Res204, Entry_Spec_F_Family_Type => Or_Res48, Entry_Spec_F_Entry_Params => Defer_Res208); if Defer_Res204 /= null and then Is_Incomplete (Defer_Res204) then Transform_Res81.Last_Attempted_Child := 0; elsif Defer_Res204 /= null and then not Is_Ghost (Defer_Res204) then Transform_Res81.Last_Attempted_Child := -1; end if; if Or_Res48 /= null and then Is_Incomplete (Or_Res48) then Transform_Res81.Last_Attempted_Child := 0; elsif Or_Res48 /= null and then not Is_Ghost (Or_Res48) then Transform_Res81.Last_Attempted_Child := -1; end if; if Defer_Res208 /= null and then Is_Incomplete (Defer_Res208) then Transform_Res81.Last_Attempted_Child := 0; elsif Defer_Res208 /= null and then not Is_Ghost (Defer_Res208) then Transform_Res81.Last_Attempted_Child := -1; end if; elsif Row_Pos124 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags81); end if; -- End transform_code if Row_Pos124 /= No_Token_Index then Row_Pos123 := Row_Pos124; else Row_Pos123 := No_Token_Index; goto Exit_Row123_0; end if; Defer_Res209 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos123); Defer_Pos209 := Parser.Current_Pos; if Defer_Pos209 /= No_Token_Index then Row_Pos123 := Defer_Pos209; else Row_Pos123 := No_Token_Index; goto Exit_Row123_0; end if; -- Start opt_code -- Start tok_code Token_Res211 := Row_Pos123; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res211)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos211 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos123 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos123, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos211 := Row_Pos123 + 1; end if; end; -- End tok_code if Token_Pos211 = No_Token_Index then Token_Res211 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos123)), To_Text ("Missing ';'")); Token_Pos211 := Row_Pos123; end if; -- End opt_code if Token_Pos211 /= No_Token_Index then Row_Pos123 := Token_Pos211; else Row_Pos123 := No_Token_Index; goto Exit_Row123_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos123 /= No_Token_Index then Transform_Res82 := Allocate_Entry_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res82, Kind => Ada_Entry_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos123 = Pos then No_Token_Index else Row_Pos123 - 1)); Initialize_Fields_For_Entry_Decl (Self => Transform_Res82, Entry_Decl_F_Overriding => Defer_Res203, Entry_Decl_F_Spec => Transform_Res81, Entry_Decl_F_Aspects => Defer_Res209); if Defer_Res203 /= null and then Is_Incomplete (Defer_Res203) then Transform_Res82.Last_Attempted_Child := 0; elsif Defer_Res203 /= null and then not Is_Ghost (Defer_Res203) then Transform_Res82.Last_Attempted_Child := -1; end if; if Transform_Res81 /= null and then Is_Incomplete (Transform_Res81) then Transform_Res82.Last_Attempted_Child := 0; elsif Transform_Res81 /= null and then not Is_Ghost (Transform_Res81) then Transform_Res82.Last_Attempted_Child := -1; end if; if Defer_Res209 /= null and then Is_Incomplete (Defer_Res209) then Transform_Res82.Last_Attempted_Child := 0; elsif Defer_Res209 /= null and then not Is_Ghost (Defer_Res209) then Transform_Res82.Last_Attempted_Child := -1; end if; elsif Row_Pos123 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags82); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Entry_Decl_Transform_Parse1_Memo, Row_Pos123 /= No_Token_Index, Transform_Res82, Pos, Row_Pos123); Parser.Current_Pos := Row_Pos123; return Transform_Res82; end Entry_Decl_Transform_Parse1; function Enum_Literal_Decl_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Enum_Literal_Decl is use Bare_Enum_Literal_Decl_Memos; Row_Pos126 : Token_Index := No_Token_Index; Defer_Pos210 : Token_Index := No_Token_Index; Defer_Res210 : Bare_Defining_Name := No_Bare_Ada_Node; Row_Pos127 : Token_Index := No_Token_Index; Defer_Pos211 : Token_Index := No_Token_Index; Defer_Res211 : Bare_Char_Literal := No_Bare_Ada_Node; Transform_Res83 : Bare_Defining_Name := No_Bare_Ada_Node; Transform_Diags83 : Ada.Containers.Count_Type; Or_Pos49 : Token_Index := No_Token_Index; Or_Res49 : Bare_Defining_Name := No_Bare_Ada_Node; Transform_Res84 : Bare_Enum_Literal_Decl := No_Bare_Ada_Node; Transform_Diags84 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Enum_Literal_Decl_Transform_Parse1_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res84 := M.Instance; return Transform_Res84; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res84; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags84 := Parser.Diagnostics.Length; -- Start row_code Row_Pos126 := Pos; -- Start or_code Or_Pos49 := No_Token_Index; Or_Res49 := No_Bare_Ada_Node; Defer_Res210 := Defining_Id_Transform_Parse0 (Parser, Row_Pos126); Defer_Pos210 := Parser.Current_Pos; if Defer_Pos210 /= No_Token_Index then Or_Pos49 := Defer_Pos210; Or_Res49 := Defer_Res210; goto Exit_Or50; end if; -- Start transform_code Transform_Diags83 := Parser.Diagnostics.Length; -- Start row_code Row_Pos127 := Row_Pos126; Defer_Res211 := Char_Literal_Transform_Parse0 (Parser, Row_Pos127); Defer_Pos211 := Parser.Current_Pos; if Defer_Pos211 /= No_Token_Index then Row_Pos127 := Defer_Pos211; else Row_Pos127 := No_Token_Index; goto Exit_Row127_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos127 /= No_Token_Index then Transform_Res83 := Allocate_Defining_Name (Parser.Mem_Pool); Initialize (Self => Transform_Res83, Kind => Ada_Defining_Name, Unit => Parser.Unit, Token_Start_Index => Row_Pos126, Token_End_Index => (if Row_Pos127 = Row_Pos126 then No_Token_Index else Row_Pos127 - 1)); Initialize_Fields_For_Defining_Name (Self => Transform_Res83, Defining_Name_F_Name => Defer_Res211); if Defer_Res211 /= null and then Is_Incomplete (Defer_Res211) then Transform_Res83.Last_Attempted_Child := 0; elsif Defer_Res211 /= null and then not Is_Ghost (Defer_Res211) then Transform_Res83.Last_Attempted_Child := -1; end if; elsif Row_Pos127 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags83); end if; -- End transform_code if Row_Pos127 /= No_Token_Index then Or_Pos49 := Row_Pos127; Or_Res49 := Transform_Res83; goto Exit_Or50; end if; <> -- End or_code if Or_Pos49 /= No_Token_Index then Row_Pos126 := Or_Pos49; else Row_Pos126 := No_Token_Index; goto Exit_Row126_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos126 /= No_Token_Index then Transform_Res84 := Allocate_Enum_Literal_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res84, Kind => Ada_Enum_Literal_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos126 = Pos then No_Token_Index else Row_Pos126 - 1)); Initialize_Fields_For_Enum_Literal_Decl (Self => Transform_Res84, Enum_Literal_Decl_F_Name => Or_Res49); if Or_Res49 /= null and then Is_Incomplete (Or_Res49) then Transform_Res84.Last_Attempted_Child := 0; elsif Or_Res49 /= null and then not Is_Ghost (Or_Res49) then Transform_Res84.Last_Attempted_Child := -1; end if; elsif Row_Pos126 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags84); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Enum_Literal_Decl_Transform_Parse1_Memo, Row_Pos126 /= No_Token_Index, Transform_Res84, Pos, Row_Pos126); Parser.Current_Pos := Row_Pos126; return Transform_Res84; end Enum_Literal_Decl_Transform_Parse1; function Enum_Type_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Enum_Type_Def is use Bare_Enum_Type_Def_Memos; Row_Pos128 : Token_Index := No_Token_Index; Token_Pos212 : Token_Index := No_Token_Index; Token_Res212 : Token_Index := No_Token_Index; Lst_Cpos27 : Token_Index := No_Token_Index; Tmp_List27 : Free_Parse_List; Defer_Pos212 : Token_Index := No_Token_Index; Defer_Res212 : Bare_Enum_Literal_Decl := No_Bare_Ada_Node; Token_Pos213 : Token_Index := No_Token_Index; Token_Res213 : Token_Index := No_Token_Index; List_Pos27 : Token_Index := No_Token_Index; List_Res27 : Bare_Enum_Literal_Decl_List := No_Bare_Ada_Node; Token_Pos214 : Token_Index := No_Token_Index; Token_Res214 : Token_Index := No_Token_Index; Transform_Res85 : Bare_Enum_Type_Def := No_Bare_Ada_Node; Transform_Diags85 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Enum_Type_Def_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res85 := M.Instance; return Transform_Res85; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res85; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags85 := Parser.Diagnostics.Length; -- Start row_code Row_Pos128 := Pos; -- Start tok_code Token_Res212 := Row_Pos128; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res212)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos212 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos128 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos128, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos212 := Row_Pos128 + 1; end if; end; -- End tok_code if Token_Pos212 /= No_Token_Index then Row_Pos128 := Token_Pos212; else Row_Pos128 := No_Token_Index; goto Exit_Row128_0; end if; -- Start list_code List_Pos27 := No_Token_Index; Lst_Cpos27 := Row_Pos128; Tmp_List27 := Get_Parse_List (Parser); loop Defer_Res212 := Enum_Literal_Decl_Transform_Parse1 (Parser, Lst_Cpos27); Defer_Pos212 := Parser.Current_Pos; exit when Defer_Pos212 = No_Token_Index; List_Pos27 := Defer_Pos212; Lst_Cpos27 := List_Pos27; Tmp_List27.Nodes.Append (Defer_Res212); -- Start tok_code Token_Res213 := Lst_Cpos27; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res213)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos213 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos27 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos27, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos213 := Lst_Cpos27 + 1; end if; end; -- End tok_code if Token_Pos213 /= No_Token_Index then Lst_Cpos27 := Token_Pos213; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List27.Nodes.Length; begin List_Res27 := Allocate_Enum_Literal_Decl_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos128; Token_End := (if Lst_Cpos27 = Row_Pos128 then Row_Pos128 else Lst_Cpos27 - 1); else Token_Start := Token_Index'Max (Row_Pos128, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res27, Kind => Ada_Enum_Literal_Decl_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res27, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List27.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res27.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List27); -- End list_code if List_Pos27 /= No_Token_Index then Row_Pos128 := List_Pos27; else Row_Pos128 := No_Token_Index; goto Exit_Row128_0; end if; -- Start tok_code Token_Res214 := Row_Pos128; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res214)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos214 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos128 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos128, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos214 := Row_Pos128 + 1; end if; end; -- End tok_code if Token_Pos214 /= No_Token_Index then Row_Pos128 := Token_Pos214; else Row_Pos128 := No_Token_Index; goto Exit_Row128_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos128 /= No_Token_Index then Transform_Res85 := Allocate_Enum_Type_Def (Parser.Mem_Pool); Initialize (Self => Transform_Res85, Kind => Ada_Enum_Type_Def, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos128 = Pos then No_Token_Index else Row_Pos128 - 1)); Initialize_Fields_For_Enum_Type_Def (Self => Transform_Res85, Enum_Type_Def_F_Enum_Literals => List_Res27); if List_Res27 /= null and then Is_Incomplete (List_Res27) then Transform_Res85.Last_Attempted_Child := 0; elsif List_Res27 /= null and then not Is_Ghost (List_Res27) then Transform_Res85.Last_Attempted_Child := -1; end if; elsif Row_Pos128 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags85); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Enum_Type_Def_Transform_Parse0_Memo, Row_Pos128 /= No_Token_Index, Transform_Res85, Pos, Row_Pos128); Parser.Current_Pos := Row_Pos128; return Transform_Res85; end Enum_Type_Def_Transform_Parse0; function Exception_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Exception_Decl is use Bare_Exception_Decl_Memos; Row_Pos129 : Token_Index := No_Token_Index; Defer_Pos213 : Token_Index := No_Token_Index; Defer_Res213 : Bare_Defining_Name_List := No_Bare_Ada_Node; Token_Pos215 : Token_Index := No_Token_Index; Token_Res215 : Token_Index := No_Token_Index; Token_Pos216 : Token_Index := No_Token_Index; Token_Res216 : Token_Index := No_Token_Index; Defer_Pos214 : Token_Index := No_Token_Index; Defer_Res214 : Bare_Renaming_Clause := No_Bare_Ada_Node; Defer_Pos215 : Token_Index := No_Token_Index; Defer_Res215 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos217 : Token_Index := No_Token_Index; Token_Res217 : Token_Index := No_Token_Index; Transform_Res86 : Bare_Exception_Decl := No_Bare_Ada_Node; Transform_Diags86 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Exception_Decl_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res86 := M.Instance; return Transform_Res86; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res86; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags86 := Parser.Diagnostics.Length; -- Start row_code Row_Pos129 := Pos; Defer_Res213 := Defining_Id_List_List_Parse0 (Parser, Row_Pos129); Defer_Pos213 := Parser.Current_Pos; if Defer_Pos213 /= No_Token_Index then Row_Pos129 := Defer_Pos213; else Row_Pos129 := No_Token_Index; goto Exit_Row129_0; end if; -- Start tok_code Token_Res215 := Row_Pos129; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res215)); begin if T.Kind /= From_Token_Kind (Ada_Colon) then Token_Pos215 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos129 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos129, Expected_Token_Id => Ada_Colon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos215 := Row_Pos129 + 1; end if; end; -- End tok_code if Token_Pos215 /= No_Token_Index then Row_Pos129 := Token_Pos215; else Row_Pos129 := No_Token_Index; goto Exit_Row129_0; end if; -- Start tok_code Token_Res216 := Row_Pos129; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res216)); begin if T.Kind /= From_Token_Kind (Ada_Exception) then Token_Pos216 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos129 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos129, Expected_Token_Id => Ada_Exception, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos216 := Row_Pos129 + 1; end if; end; -- End tok_code if Token_Pos216 /= No_Token_Index then Row_Pos129 := Token_Pos216; else Row_Pos129 := No_Token_Index; goto Exit_Row129_0; end if; -- Start opt_code Defer_Res214 := Renaming_Clause_Transform_Parse0 (Parser, Row_Pos129); Defer_Pos214 := Parser.Current_Pos; if Defer_Pos214 = No_Token_Index then Defer_Res214 := No_Bare_Ada_Node; Defer_Pos214 := Row_Pos129; end if; -- End opt_code if Defer_Pos214 /= No_Token_Index then Row_Pos129 := Defer_Pos214; else Row_Pos129 := No_Token_Index; goto Exit_Row129_0; end if; Defer_Res215 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos129); Defer_Pos215 := Parser.Current_Pos; if Defer_Pos215 /= No_Token_Index then Row_Pos129 := Defer_Pos215; else Row_Pos129 := No_Token_Index; goto Exit_Row129_0; end if; -- Start opt_code -- Start tok_code Token_Res217 := Row_Pos129; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res217)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos217 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos129 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos129, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos217 := Row_Pos129 + 1; end if; end; -- End tok_code if Token_Pos217 = No_Token_Index then Token_Res217 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos129)), To_Text ("Missing ';'")); Token_Pos217 := Row_Pos129; end if; -- End opt_code if Token_Pos217 /= No_Token_Index then Row_Pos129 := Token_Pos217; else Row_Pos129 := No_Token_Index; goto Exit_Row129_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos129 /= No_Token_Index then Transform_Res86 := Allocate_Exception_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res86, Kind => Ada_Exception_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos129 = Pos then No_Token_Index else Row_Pos129 - 1)); Initialize_Fields_For_Exception_Decl (Self => Transform_Res86, Exception_Decl_F_Ids => Defer_Res213, Exception_Decl_F_Renames => Defer_Res214, Exception_Decl_F_Aspects => Defer_Res215); if Defer_Res213 /= null and then Is_Incomplete (Defer_Res213) then Transform_Res86.Last_Attempted_Child := 0; elsif Defer_Res213 /= null and then not Is_Ghost (Defer_Res213) then Transform_Res86.Last_Attempted_Child := -1; end if; if Defer_Res214 /= null and then Is_Incomplete (Defer_Res214) then Transform_Res86.Last_Attempted_Child := 0; elsif Defer_Res214 /= null and then not Is_Ghost (Defer_Res214) then Transform_Res86.Last_Attempted_Child := -1; end if; if Defer_Res215 /= null and then Is_Incomplete (Defer_Res215) then Transform_Res86.Last_Attempted_Child := 0; elsif Defer_Res215 /= null and then not Is_Ghost (Defer_Res215) then Transform_Res86.Last_Attempted_Child := -1; end if; elsif Row_Pos129 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags86); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Exception_Decl_Transform_Parse0_Memo, Row_Pos129 /= No_Token_Index, Transform_Res86, Pos, Row_Pos129); Parser.Current_Pos := Row_Pos129; return Transform_Res86; end Exception_Decl_Transform_Parse0; function Exception_Handler_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Exception_Handler is use Bare_Exception_Handler_Memos; Row_Pos130 : Token_Index := No_Token_Index; Token_Pos218 : Token_Index := No_Token_Index; Token_Res218 : Token_Index := No_Token_Index; Row_Pos131 : Token_Index := No_Token_Index; Defer_Pos216 : Token_Index := No_Token_Index; Defer_Res216 : Bare_Defining_Name := No_Bare_Ada_Node; Token_Pos219 : Token_Index := No_Token_Index; Token_Res219 : Token_Index := No_Token_Index; Lst_Cpos28 : Token_Index := No_Token_Index; Tmp_List28 : Free_Parse_List; Defer_Pos217 : Token_Index := No_Token_Index; Defer_Res217 : Bare_Name := No_Bare_Ada_Node; Defer_Pos218 : Token_Index := No_Token_Index; Defer_Res218 : Bare_Others_Designator := No_Bare_Ada_Node; Or_Pos50 : Token_Index := No_Token_Index; Or_Res50 : Bare_Ada_Node := No_Bare_Ada_Node; Token_Pos220 : Token_Index := No_Token_Index; Token_Res220 : Token_Index := No_Token_Index; List_Pos28 : Token_Index := No_Token_Index; List_Res28 : Bare_Alternatives_List := No_Bare_Ada_Node; Token_Pos221 : Token_Index := No_Token_Index; Token_Res221 : Token_Index := No_Token_Index; Defer_Pos219 : Token_Index := No_Token_Index; Defer_Res219 : Bare_Stmt_List := No_Bare_Ada_Node; Transform_Res87 : Bare_Exception_Handler := No_Bare_Ada_Node; Transform_Diags87 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Exception_Handler_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res87 := M.Instance; return Transform_Res87; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res87; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags87 := Parser.Diagnostics.Length; -- Start row_code Row_Pos130 := Pos; -- Start tok_code Token_Res218 := Row_Pos130; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res218)); begin if T.Kind /= From_Token_Kind (Ada_When) then Token_Pos218 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos130 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos130, Expected_Token_Id => Ada_When, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos218 := Row_Pos130 + 1; end if; end; -- End tok_code if Token_Pos218 /= No_Token_Index then Row_Pos130 := Token_Pos218; else Row_Pos130 := No_Token_Index; goto Exit_Row130_0; end if; -- Start opt_code -- Start row_code Row_Pos131 := Row_Pos130; Defer_Res216 := Defining_Id_Transform_Parse0 (Parser, Row_Pos131); Defer_Pos216 := Parser.Current_Pos; if Defer_Pos216 /= No_Token_Index then Row_Pos131 := Defer_Pos216; else Row_Pos131 := No_Token_Index; goto Exit_Row131_0; end if; -- Start tok_code Token_Res219 := Row_Pos131; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res219)); begin if T.Kind /= From_Token_Kind (Ada_Colon) then Token_Pos219 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos131 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos131, Expected_Token_Id => Ada_Colon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos219 := Row_Pos131 + 1; end if; end; -- End tok_code if Token_Pos219 /= No_Token_Index then Row_Pos131 := Token_Pos219; else Row_Pos131 := No_Token_Index; goto Exit_Row131_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos131 = No_Token_Index then Defer_Res216 := No_Bare_Ada_Node; Row_Pos131 := Row_Pos130; end if; -- End opt_code if Row_Pos131 /= No_Token_Index then Row_Pos130 := Row_Pos131; else Row_Pos130 := No_Token_Index; goto Exit_Row130_0; end if; -- Start list_code List_Pos28 := No_Token_Index; Lst_Cpos28 := Row_Pos130; Tmp_List28 := Get_Parse_List (Parser); loop -- Start or_code Or_Pos50 := No_Token_Index; Or_Res50 := No_Bare_Ada_Node; Defer_Res217 := Name_Or_Parse2 (Parser, Lst_Cpos28); Defer_Pos217 := Parser.Current_Pos; if Defer_Pos217 /= No_Token_Index then Or_Pos50 := Defer_Pos217; Or_Res50 := Defer_Res217; goto Exit_Or51; end if; Defer_Res218 := Others_Designator_Transform_Parse0 (Parser, Lst_Cpos28); Defer_Pos218 := Parser.Current_Pos; if Defer_Pos218 /= No_Token_Index then Or_Pos50 := Defer_Pos218; Or_Res50 := Defer_Res218; goto Exit_Or51; end if; <> -- End or_code exit when Or_Pos50 = No_Token_Index; List_Pos28 := Or_Pos50; Lst_Cpos28 := List_Pos28; Tmp_List28.Nodes.Append (Or_Res50); -- Start tok_code Token_Res220 := Lst_Cpos28; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res220)); begin if T.Kind /= From_Token_Kind (Ada_Pipe) then Token_Pos220 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos28 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos28, Expected_Token_Id => Ada_Pipe, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos220 := Lst_Cpos28 + 1; end if; end; -- End tok_code if Token_Pos220 /= No_Token_Index then Lst_Cpos28 := Token_Pos220; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List28.Nodes.Length; begin List_Res28 := Allocate_Alternatives_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos130; Token_End := (if Lst_Cpos28 = Row_Pos130 then Row_Pos130 else Lst_Cpos28 - 1); else Token_Start := Token_Index'Max (Row_Pos130, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res28, Kind => Ada_Alternatives_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res28, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List28.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res28.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List28); -- End list_code if List_Pos28 /= No_Token_Index then Row_Pos130 := List_Pos28; else Row_Pos130 := No_Token_Index; goto Exit_Row130_0; end if; -- Start tok_code Token_Res221 := Row_Pos130; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res221)); begin if T.Kind /= From_Token_Kind (Ada_Arrow) then Token_Pos221 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos130 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos130, Expected_Token_Id => Ada_Arrow, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos221 := Row_Pos130 + 1; end if; end; -- End tok_code if Token_Pos221 /= No_Token_Index then Row_Pos130 := Token_Pos221; else Row_Pos130 := No_Token_Index; goto Exit_Row130_0; end if; Parser.Private_Part.Dont_Skip.Append (Dontskip_Exception_Handler0_Extract_Parse0'Access); Defer_Res219 := Stmts_List_Parse0 (Parser, Row_Pos130); Defer_Pos219 := Parser.Current_Pos; Parser.Private_Part.Dont_Skip.Delete_Last; if Defer_Pos219 /= No_Token_Index then Row_Pos130 := Defer_Pos219; else Row_Pos130 := No_Token_Index; goto Exit_Row130_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos130 /= No_Token_Index then Transform_Res87 := Allocate_Exception_Handler (Parser.Mem_Pool); Initialize (Self => Transform_Res87, Kind => Ada_Exception_Handler, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos130 = Pos then No_Token_Index else Row_Pos130 - 1)); Initialize_Fields_For_Exception_Handler (Self => Transform_Res87, Exception_Handler_F_Exception_Name => Defer_Res216, Exception_Handler_F_Handled_Exceptions => List_Res28, Exception_Handler_F_Stmts => Defer_Res219); if Defer_Res216 /= null and then Is_Incomplete (Defer_Res216) then Transform_Res87.Last_Attempted_Child := 0; elsif Defer_Res216 /= null and then not Is_Ghost (Defer_Res216) then Transform_Res87.Last_Attempted_Child := -1; end if; if List_Res28 /= null and then Is_Incomplete (List_Res28) then Transform_Res87.Last_Attempted_Child := 0; elsif List_Res28 /= null and then not Is_Ghost (List_Res28) then Transform_Res87.Last_Attempted_Child := -1; end if; if Defer_Res219 /= null and then Is_Incomplete (Defer_Res219) then Transform_Res87.Last_Attempted_Child := 0; elsif Defer_Res219 /= null and then not Is_Ghost (Defer_Res219) then Transform_Res87.Last_Attempted_Child := -1; end if; elsif Row_Pos130 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags87); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Exception_Handler_Transform_Parse0_Memo, Row_Pos130 /= No_Token_Index, Transform_Res87, Pos, Row_Pos130); Parser.Current_Pos := Row_Pos130; return Transform_Res87; end Exception_Handler_Transform_Parse0; function Exit_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Exit_Stmt is use Bare_Exit_Stmt_Memos; Nobt12 : Boolean := False; Row_Pos132 : Token_Index := No_Token_Index; Token_Pos222 : Token_Index := No_Token_Index; Token_Res222 : Token_Index := No_Token_Index; Defer_Pos220 : Token_Index := No_Token_Index; Defer_Res220 : Bare_Name := No_Bare_Ada_Node; Row_Pos133 : Token_Index := No_Token_Index; Token_Pos223 : Token_Index := No_Token_Index; Token_Res223 : Token_Index := No_Token_Index; Defer_Pos221 : Token_Index := No_Token_Index; Defer_Res221 : Bare_Expr := No_Bare_Ada_Node; Token_Pos224 : Token_Index := No_Token_Index; Token_Res224 : Token_Index := No_Token_Index; Row_Progress12 : Integer := 0; Transform_Res88 : Bare_Exit_Stmt := No_Bare_Ada_Node; Transform_Has_Failed12 : Boolean := False; Transform_Diags88 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Exit_Stmt_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res88 := M.Instance; return Transform_Res88; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res88; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags88 := Parser.Diagnostics.Length; -- Start row_code Row_Pos132 := Pos; -- Start tok_code Token_Res222 := Row_Pos132; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res222)); begin if T.Kind /= From_Token_Kind (Ada_Exit) then Token_Pos222 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos132 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos132, Expected_Token_Id => Ada_Exit, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos222 := Row_Pos132 + 1; end if; end; -- End tok_code Row_Progress12 := 1; if Token_Pos222 /= No_Token_Index then Row_Pos132 := Token_Pos222; else Row_Pos132 := No_Token_Index; goto Exit_Row132_0; end if; Nobt12 := True; Nobt12 := Nobt12; Row_Progress12 := 2; if Row_Pos132 /= No_Token_Index then Row_Pos132 := Row_Pos132; else Row_Pos132 := No_Token_Index; goto Exit_Row132_0; end if; -- Start opt_code Defer_Res220 := Static_Name_Or_Parse0 (Parser, Row_Pos132); Defer_Pos220 := Parser.Current_Pos; if Defer_Pos220 = No_Token_Index then Defer_Res220 := No_Bare_Ada_Node; Defer_Pos220 := Row_Pos132; end if; -- End opt_code Row_Progress12 := 3; if Defer_Pos220 /= No_Token_Index then Row_Pos132 := Defer_Pos220; else Row_Pos132 := No_Token_Index; goto Exit_Row132_0; end if; -- Start opt_code -- Start row_code Row_Pos133 := Row_Pos132; -- Start tok_code Token_Res223 := Row_Pos133; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res223)); begin if T.Kind /= From_Token_Kind (Ada_When) then Token_Pos223 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos133 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos133, Expected_Token_Id => Ada_When, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos223 := Row_Pos133 + 1; end if; end; -- End tok_code if Token_Pos223 /= No_Token_Index then Row_Pos133 := Token_Pos223; else Row_Pos133 := No_Token_Index; goto Exit_Row133_0; end if; Defer_Res221 := Expr_Or_Parse0 (Parser, Row_Pos133); Defer_Pos221 := Parser.Current_Pos; if Defer_Pos221 /= No_Token_Index then Row_Pos133 := Defer_Pos221; else Row_Pos133 := No_Token_Index; goto Exit_Row133_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos133 = No_Token_Index then Defer_Res221 := No_Bare_Ada_Node; Row_Pos133 := Row_Pos132; end if; -- End opt_code Row_Progress12 := 4; if Row_Pos133 /= No_Token_Index then Row_Pos132 := Row_Pos133; else Row_Pos132 := No_Token_Index; goto Exit_Row132_0; end if; -- Start opt_code -- Start tok_code Token_Res224 := Row_Pos132; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res224)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos224 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos132 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos132, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos224 := Row_Pos132 + 1; end if; end; -- End tok_code if Token_Pos224 = No_Token_Index then Token_Res224 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos132)), To_Text ("Missing ';'")); Token_Pos224 := Row_Pos132; end if; -- End opt_code Row_Progress12 := 5; if Token_Pos224 /= No_Token_Index then Row_Pos132 := Token_Pos224; else Row_Pos132 := No_Token_Index; goto Exit_Row132_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos132 = No_Token_Index and then Nobt12 then Row_Pos132 := Parser.Last_Fail.Pos; Transform_Has_Failed12 := True; end if; if Row_Pos132 /= No_Token_Index then Transform_Res88 := Allocate_Exit_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res88, Kind => Ada_Exit_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos132 = Pos then No_Token_Index else Row_Pos132 - 1)); Initialize_Fields_For_Exit_Stmt (Self => Transform_Res88, Exit_Stmt_F_Loop_Name => Defer_Res220, Exit_Stmt_F_Cond_Expr => Defer_Res221); if Defer_Res220 /= null and then Is_Incomplete (Defer_Res220) then Transform_Res88.Last_Attempted_Child := 0; elsif Defer_Res220 /= null and then not Is_Ghost (Defer_Res220) then Transform_Res88.Last_Attempted_Child := -1; end if; if Defer_Res221 /= null and then Is_Incomplete (Defer_Res221) then Transform_Res88.Last_Attempted_Child := 0; elsif Defer_Res221 /= null and then not Is_Ghost (Defer_Res221) then Transform_Res88.Last_Attempted_Child := -1; end if; if Transform_Has_Failed12 then Transform_Res88.Last_Attempted_Child := Row_Progress12; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos132 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags88); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Exit_Stmt_Transform_Parse0_Memo, Row_Pos132 /= No_Token_Index, Transform_Res88, Pos, Row_Pos132); Parser.Current_Pos := Row_Pos132; return Transform_Res88; end Exit_Stmt_Transform_Parse0; function Expr_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr is use Bare_Expr_Memos; Nobt13 : Boolean := False; Row_Pos134 : Token_Index := No_Token_Index; Defer_Pos222 : Token_Index := No_Token_Index; Defer_Res222 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos223 : Token_Index := No_Token_Index; Defer_Res223 : Bare_Op := No_Bare_Ada_Node; Defer_Pos224 : Token_Index := No_Token_Index; Defer_Res224 : Bare_Expr := No_Bare_Ada_Node; Row_Progress13 : Integer := 0; Transform_Res89 : Bare_Bin_Op := No_Bare_Ada_Node; Transform_Has_Failed13 : Boolean := False; Transform_Diags89 : Ada.Containers.Count_Type; Defer_Pos225 : Token_Index := No_Token_Index; Defer_Res225 : Bare_Expr := No_Bare_Ada_Node; Or_Pos51 : Token_Index := No_Token_Index; Or_Res51 : Bare_Expr := No_Bare_Ada_Node; Mem_Pos : Token_Index := Pos; Mem_Res : Bare_Expr := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Expr_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res51 := M.Instance; return Or_Res51; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res51; end if; Set (Parser.Private_Part.Expr_Or_Parse0_Memo, False, Or_Res51, Pos, Mem_Pos); <> Nobt13 := False; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos51 := No_Token_Index; Or_Res51 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags89 := Parser.Diagnostics.Length; -- Start row_code Row_Pos134 := Pos; Defer_Res222 := Expr_Or_Parse0 (Parser, Row_Pos134); Defer_Pos222 := Parser.Current_Pos; Row_Progress13 := 1; if Defer_Pos222 /= No_Token_Index then Row_Pos134 := Defer_Pos222; else Row_Pos134 := No_Token_Index; goto Exit_Row134_0; end if; Defer_Res223 := Boolean_Op_Or_Parse0 (Parser, Row_Pos134); Defer_Pos223 := Parser.Current_Pos; Row_Progress13 := 2; if Defer_Pos223 /= No_Token_Index then Row_Pos134 := Defer_Pos223; else Row_Pos134 := No_Token_Index; goto Exit_Row134_0; end if; Nobt13 := True; Nobt13 := Nobt13; Row_Progress13 := 3; if Row_Pos134 /= No_Token_Index then Row_Pos134 := Row_Pos134; else Row_Pos134 := No_Token_Index; goto Exit_Row134_0; end if; Defer_Res224 := Relation_Or_Parse1 (Parser, Row_Pos134); Defer_Pos224 := Parser.Current_Pos; Row_Progress13 := 4; if Defer_Pos224 /= No_Token_Index then Row_Pos134 := Defer_Pos224; else Row_Pos134 := No_Token_Index; goto Exit_Row134_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos134 = No_Token_Index and then Nobt13 then Row_Pos134 := Parser.Last_Fail.Pos; Transform_Has_Failed13 := True; end if; if Row_Pos134 /= No_Token_Index then Transform_Res89 := Allocate_Bin_Op (Parser.Mem_Pool); Initialize (Self => Transform_Res89, Kind => Ada_Bin_Op, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos134 = Pos then No_Token_Index else Row_Pos134 - 1)); Initialize_Fields_For_Bin_Op (Self => Transform_Res89, Bin_Op_F_Left => Defer_Res222, Bin_Op_F_Op => Defer_Res223, Bin_Op_F_Right => Defer_Res224); if Defer_Res222 /= null and then Is_Incomplete (Defer_Res222) then Transform_Res89.Last_Attempted_Child := 0; elsif Defer_Res222 /= null and then not Is_Ghost (Defer_Res222) then Transform_Res89.Last_Attempted_Child := -1; end if; if Defer_Res223 /= null and then Is_Incomplete (Defer_Res223) then Transform_Res89.Last_Attempted_Child := 0; elsif Defer_Res223 /= null and then not Is_Ghost (Defer_Res223) then Transform_Res89.Last_Attempted_Child := -1; end if; if Defer_Res224 /= null and then Is_Incomplete (Defer_Res224) then Transform_Res89.Last_Attempted_Child := 0; elsif Defer_Res224 /= null and then not Is_Ghost (Defer_Res224) then Transform_Res89.Last_Attempted_Child := -1; end if; if Transform_Has_Failed13 then Transform_Res89.Last_Attempted_Child := Row_Progress13; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos134 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags89); end if; -- End transform_code if Row_Pos134 /= No_Token_Index then Or_Pos51 := Row_Pos134; Or_Res51 := Transform_Res89; goto Exit_Or52; end if; Defer_Res225 := Relation_Or_Parse1 (Parser, Pos); Defer_Pos225 := Parser.Current_Pos; if Defer_Pos225 /= No_Token_Index then Or_Pos51 := Defer_Pos225; Or_Res51 := Defer_Res225; goto Exit_Or52; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- if Or_Pos51 > Mem_Pos then Mem_Pos := Or_Pos51; Mem_Res := Or_Res51; Set (Parser.Private_Part.Expr_Or_Parse0_Memo, Or_Pos51 /= No_Token_Index, Or_Res51, Pos, Or_Pos51); goto Try_Again; elsif Mem_Pos > Pos then Or_Res51 := Mem_Res; Or_Pos51 := Mem_Pos; goto No_Memo; end if; Set (Parser.Private_Part.Expr_Or_Parse0_Memo, Or_Pos51 /= No_Token_Index, Or_Res51, Pos, Or_Pos51); <> Parser.Current_Pos := Or_Pos51; return Or_Res51; end Expr_Or_Parse0; function Expr_Fn_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr_Function is use Bare_Expr_Function_Memos; Row_Pos135 : Token_Index := No_Token_Index; Defer_Pos226 : Token_Index := No_Token_Index; Defer_Res226 : Bare_Overriding_Node := No_Bare_Ada_Node; Defer_Pos227 : Token_Index := No_Token_Index; Defer_Res227 : Bare_Subp_Spec := No_Bare_Ada_Node; Token_Pos225 : Token_Index := No_Token_Index; Token_Res225 : Token_Index := No_Token_Index; Defer_Pos228 : Token_Index := No_Token_Index; Defer_Res228 : Bare_Paren_Expr := No_Bare_Ada_Node; Defer_Pos229 : Token_Index := No_Token_Index; Defer_Res229 : Bare_Base_Aggregate := No_Bare_Ada_Node; Or_Pos52 : Token_Index := No_Token_Index; Or_Res52 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos230 : Token_Index := No_Token_Index; Defer_Res230 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos226 : Token_Index := No_Token_Index; Token_Res226 : Token_Index := No_Token_Index; Transform_Res90 : Bare_Expr_Function := No_Bare_Ada_Node; Transform_Diags90 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Expr_Fn_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res90 := M.Instance; return Transform_Res90; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res90; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags90 := Parser.Diagnostics.Length; -- Start row_code Row_Pos135 := Pos; Defer_Res226 := Overriding_Indicator_Or_Parse0 (Parser, Row_Pos135); Defer_Pos226 := Parser.Current_Pos; if Defer_Pos226 /= No_Token_Index then Row_Pos135 := Defer_Pos226; else Row_Pos135 := No_Token_Index; goto Exit_Row135_0; end if; Defer_Res227 := Subp_Spec_Transform_Parse2 (Parser, Row_Pos135); Defer_Pos227 := Parser.Current_Pos; if Defer_Pos227 /= No_Token_Index then Row_Pos135 := Defer_Pos227; else Row_Pos135 := No_Token_Index; goto Exit_Row135_0; end if; -- Start tok_code Token_Res225 := Row_Pos135; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res225)); begin if T.Kind /= From_Token_Kind (Ada_Is) then Token_Pos225 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos135 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos135, Expected_Token_Id => Ada_Is, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos225 := Row_Pos135 + 1; end if; end; -- End tok_code if Token_Pos225 /= No_Token_Index then Row_Pos135 := Token_Pos225; else Row_Pos135 := No_Token_Index; goto Exit_Row135_0; end if; -- Start or_code Or_Pos52 := No_Token_Index; Or_Res52 := No_Bare_Ada_Node; Defer_Res228 := Paren_Expr_Transform_Parse0 (Parser, Row_Pos135); Defer_Pos228 := Parser.Current_Pos; if Defer_Pos228 /= No_Token_Index then Or_Pos52 := Defer_Pos228; Or_Res52 := Defer_Res228; goto Exit_Or53; end if; Defer_Res229 := Aggregate_Or_Parse0 (Parser, Row_Pos135); Defer_Pos229 := Parser.Current_Pos; if Defer_Pos229 /= No_Token_Index then Or_Pos52 := Defer_Pos229; Or_Res52 := Defer_Res229; goto Exit_Or53; end if; <> -- End or_code if Or_Pos52 /= No_Token_Index then Row_Pos135 := Or_Pos52; else Row_Pos135 := No_Token_Index; goto Exit_Row135_0; end if; Defer_Res230 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos135); Defer_Pos230 := Parser.Current_Pos; if Defer_Pos230 /= No_Token_Index then Row_Pos135 := Defer_Pos230; else Row_Pos135 := No_Token_Index; goto Exit_Row135_0; end if; -- Start opt_code -- Start tok_code Token_Res226 := Row_Pos135; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res226)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos226 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos135 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos135, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos226 := Row_Pos135 + 1; end if; end; -- End tok_code if Token_Pos226 = No_Token_Index then Token_Res226 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos135)), To_Text ("Missing ';'")); Token_Pos226 := Row_Pos135; end if; -- End opt_code if Token_Pos226 /= No_Token_Index then Row_Pos135 := Token_Pos226; else Row_Pos135 := No_Token_Index; goto Exit_Row135_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos135 /= No_Token_Index then Transform_Res90 := Allocate_Expr_Function (Parser.Mem_Pool); Initialize (Self => Transform_Res90, Kind => Ada_Expr_Function, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos135 = Pos then No_Token_Index else Row_Pos135 - 1)); Initialize_Fields_For_Expr_Function (Self => Transform_Res90, Base_Subp_Body_F_Overriding => Defer_Res226, Base_Subp_Body_F_Subp_Spec => Defer_Res227, Expr_Function_F_Expr => Or_Res52, Expr_Function_F_Aspects => Defer_Res230); if Defer_Res226 /= null and then Is_Incomplete (Defer_Res226) then Transform_Res90.Last_Attempted_Child := 0; elsif Defer_Res226 /= null and then not Is_Ghost (Defer_Res226) then Transform_Res90.Last_Attempted_Child := -1; end if; if Defer_Res227 /= null and then Is_Incomplete (Defer_Res227) then Transform_Res90.Last_Attempted_Child := 0; elsif Defer_Res227 /= null and then not Is_Ghost (Defer_Res227) then Transform_Res90.Last_Attempted_Child := -1; end if; if Or_Res52 /= null and then Is_Incomplete (Or_Res52) then Transform_Res90.Last_Attempted_Child := 0; elsif Or_Res52 /= null and then not Is_Ghost (Or_Res52) then Transform_Res90.Last_Attempted_Child := -1; end if; if Defer_Res230 /= null and then Is_Incomplete (Defer_Res230) then Transform_Res90.Last_Attempted_Child := 0; elsif Defer_Res230 /= null and then not Is_Ghost (Defer_Res230) then Transform_Res90.Last_Attempted_Child := -1; end if; elsif Row_Pos135 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags90); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Expr_Fn_Transform_Parse0_Memo, Row_Pos135 /= No_Token_Index, Transform_Res90, Pos, Row_Pos135); Parser.Current_Pos := Row_Pos135; return Transform_Res90; end Expr_Fn_Transform_Parse0; function Ext_Ret_Stmt_Object_Decl_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Extended_Return_Stmt_Object_Decl is use Bare_Extended_Return_Stmt_Object_Decl_Memos; Row_Pos136 : Token_Index := No_Token_Index; Defer_Pos231 : Token_Index := No_Token_Index; Defer_Res231 : Bare_Defining_Name_List := No_Bare_Ada_Node; Token_Pos227 : Token_Index := No_Token_Index; Token_Res227 : Token_Index := No_Token_Index; Token_Pos228 : Token_Index := No_Token_Index; Token_Res228 : Token_Index := No_Token_Index; Opt_Res14 : Bare_Aliased_Node := No_Bare_Ada_Node; Token_Pos229 : Token_Index := No_Token_Index; Token_Res229 : Token_Index := No_Token_Index; Opt_Res15 : Bare_Constant_Node := No_Bare_Ada_Node; Defer_Pos232 : Token_Index := No_Token_Index; Defer_Res232 : Bare_Mode := No_Bare_Ada_Node; Defer_Pos233 : Token_Index := No_Token_Index; Defer_Res233 : Bare_Type_Expr := No_Bare_Ada_Node; Row_Pos137 : Token_Index := No_Token_Index; Token_Pos230 : Token_Index := No_Token_Index; Token_Res230 : Token_Index := No_Token_Index; Defer_Pos234 : Token_Index := No_Token_Index; Defer_Res234 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos235 : Token_Index := No_Token_Index; Defer_Res235 : Bare_Renaming_Clause := No_Bare_Ada_Node; Defer_Pos236 : Token_Index := No_Token_Index; Defer_Res236 : Bare_Aspect_Spec := No_Bare_Ada_Node; Transform_Res91 : Bare_Extended_Return_Stmt_Object_Decl := No_Bare_Ada_Node; Transform_Diags91 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Ext_Ret_Stmt_Object_Decl_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res91 := M.Instance; return Transform_Res91; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res91; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags91 := Parser.Diagnostics.Length; -- Start row_code Row_Pos136 := Pos; Defer_Res231 := Defining_Id_List_List_Parse0 (Parser, Row_Pos136); Defer_Pos231 := Parser.Current_Pos; if Defer_Pos231 /= No_Token_Index then Row_Pos136 := Defer_Pos231; else Row_Pos136 := No_Token_Index; goto Exit_Row136_0; end if; -- Start tok_code Token_Res227 := Row_Pos136; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res227)); begin if T.Kind /= From_Token_Kind (Ada_Colon) then Token_Pos227 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos136 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos136, Expected_Token_Id => Ada_Colon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos227 := Row_Pos136 + 1; end if; end; -- End tok_code if Token_Pos227 /= No_Token_Index then Row_Pos136 := Token_Pos227; else Row_Pos136 := No_Token_Index; goto Exit_Row136_0; end if; -- Start opt_code -- Start tok_code Token_Res228 := Row_Pos136; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res228)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Aliased) then Token_Pos228 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos136 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos136, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos228 := Row_Pos136 + 1; end if; end; -- End tok_code if Token_Pos228 = No_Token_Index then Opt_Res14 := Allocate_Aliased_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res14, Kind => Ada_Aliased_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos136, Token_End_Index => No_Token_Index); Token_Pos228 := Row_Pos136; else Opt_Res14 := Allocate_Aliased_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res14, Kind => Ada_Aliased_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos136, Token_End_Index => Token_Pos228 - 1); end if; -- End opt_code if Token_Pos228 /= No_Token_Index then Row_Pos136 := Token_Pos228; else Row_Pos136 := No_Token_Index; goto Exit_Row136_0; end if; -- Start opt_code -- Start tok_code Token_Res229 := Row_Pos136; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res229)); begin if T.Kind /= From_Token_Kind (Ada_Constant) then Token_Pos229 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos136 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos136, Expected_Token_Id => Ada_Constant, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos229 := Row_Pos136 + 1; end if; end; -- End tok_code if Token_Pos229 = No_Token_Index then Opt_Res15 := Allocate_Constant_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res15, Kind => Ada_Constant_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos136, Token_End_Index => No_Token_Index); Token_Pos229 := Row_Pos136; else Opt_Res15 := Allocate_Constant_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res15, Kind => Ada_Constant_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos136, Token_End_Index => Token_Pos229 - 1); end if; -- End opt_code if Token_Pos229 /= No_Token_Index then Row_Pos136 := Token_Pos229; else Row_Pos136 := No_Token_Index; goto Exit_Row136_0; end if; -- Start opt_code Defer_Res232 := Mode_Or_Parse0 (Parser, Row_Pos136); Defer_Pos232 := Parser.Current_Pos; if Defer_Pos232 = No_Token_Index then Defer_Res232 := No_Bare_Ada_Node; Defer_Pos232 := Row_Pos136; end if; -- End opt_code if Defer_Pos232 /= No_Token_Index then Row_Pos136 := Defer_Pos232; else Row_Pos136 := No_Token_Index; goto Exit_Row136_0; end if; Defer_Res233 := Type_Expr_Or_Parse0 (Parser, Row_Pos136); Defer_Pos233 := Parser.Current_Pos; if Defer_Pos233 /= No_Token_Index then Row_Pos136 := Defer_Pos233; else Row_Pos136 := No_Token_Index; goto Exit_Row136_0; end if; -- Start opt_code -- Start row_code Row_Pos137 := Row_Pos136; -- Start tok_code Token_Res230 := Row_Pos137; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res230)); begin if T.Kind /= From_Token_Kind (Ada_Assign) then Token_Pos230 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos137 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos137, Expected_Token_Id => Ada_Assign, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos230 := Row_Pos137 + 1; end if; end; -- End tok_code if Token_Pos230 /= No_Token_Index then Row_Pos137 := Token_Pos230; else Row_Pos137 := No_Token_Index; goto Exit_Row137_0; end if; Defer_Res234 := Expr_Or_Parse0 (Parser, Row_Pos137); Defer_Pos234 := Parser.Current_Pos; if Defer_Pos234 /= No_Token_Index then Row_Pos137 := Defer_Pos234; else Row_Pos137 := No_Token_Index; goto Exit_Row137_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos137 = No_Token_Index then Defer_Res234 := No_Bare_Ada_Node; Row_Pos137 := Row_Pos136; end if; -- End opt_code if Row_Pos137 /= No_Token_Index then Row_Pos136 := Row_Pos137; else Row_Pos136 := No_Token_Index; goto Exit_Row136_0; end if; -- Start opt_code Defer_Res235 := Renaming_Clause_Transform_Parse0 (Parser, Row_Pos136); Defer_Pos235 := Parser.Current_Pos; if Defer_Pos235 = No_Token_Index then Defer_Res235 := No_Bare_Ada_Node; Defer_Pos235 := Row_Pos136; end if; -- End opt_code if Defer_Pos235 /= No_Token_Index then Row_Pos136 := Defer_Pos235; else Row_Pos136 := No_Token_Index; goto Exit_Row136_0; end if; Defer_Res236 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos136); Defer_Pos236 := Parser.Current_Pos; if Defer_Pos236 /= No_Token_Index then Row_Pos136 := Defer_Pos236; else Row_Pos136 := No_Token_Index; goto Exit_Row136_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos136 /= No_Token_Index then Transform_Res91 := Allocate_Extended_Return_Stmt_Object_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res91, Kind => Ada_Extended_Return_Stmt_Object_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos136 = Pos then No_Token_Index else Row_Pos136 - 1)); Initialize_Fields_For_Extended_Return_Stmt_Object_Decl (Self => Transform_Res91, Object_Decl_F_Ids => Defer_Res231, Object_Decl_F_Has_Aliased => Opt_Res14, Object_Decl_F_Has_Constant => Opt_Res15, Object_Decl_F_Mode => Defer_Res232, Object_Decl_F_Type_Expr => Defer_Res233, Object_Decl_F_Default_Expr => Defer_Res234, Object_Decl_F_Renaming_Clause => Defer_Res235, Object_Decl_F_Aspects => Defer_Res236); if Defer_Res231 /= null and then Is_Incomplete (Defer_Res231) then Transform_Res91.Last_Attempted_Child := 0; elsif Defer_Res231 /= null and then not Is_Ghost (Defer_Res231) then Transform_Res91.Last_Attempted_Child := -1; end if; if Opt_Res14 /= null and then Is_Incomplete (Opt_Res14) then Transform_Res91.Last_Attempted_Child := 0; elsif Opt_Res14 /= null and then not Is_Ghost (Opt_Res14) then Transform_Res91.Last_Attempted_Child := -1; end if; if Opt_Res15 /= null and then Is_Incomplete (Opt_Res15) then Transform_Res91.Last_Attempted_Child := 0; elsif Opt_Res15 /= null and then not Is_Ghost (Opt_Res15) then Transform_Res91.Last_Attempted_Child := -1; end if; if Defer_Res232 /= null and then Is_Incomplete (Defer_Res232) then Transform_Res91.Last_Attempted_Child := 0; elsif Defer_Res232 /= null and then not Is_Ghost (Defer_Res232) then Transform_Res91.Last_Attempted_Child := -1; end if; if Defer_Res233 /= null and then Is_Incomplete (Defer_Res233) then Transform_Res91.Last_Attempted_Child := 0; elsif Defer_Res233 /= null and then not Is_Ghost (Defer_Res233) then Transform_Res91.Last_Attempted_Child := -1; end if; if Defer_Res234 /= null and then Is_Incomplete (Defer_Res234) then Transform_Res91.Last_Attempted_Child := 0; elsif Defer_Res234 /= null and then not Is_Ghost (Defer_Res234) then Transform_Res91.Last_Attempted_Child := -1; end if; if Defer_Res235 /= null and then Is_Incomplete (Defer_Res235) then Transform_Res91.Last_Attempted_Child := 0; elsif Defer_Res235 /= null and then not Is_Ghost (Defer_Res235) then Transform_Res91.Last_Attempted_Child := -1; end if; if Defer_Res236 /= null and then Is_Incomplete (Defer_Res236) then Transform_Res91.Last_Attempted_Child := 0; elsif Defer_Res236 /= null and then not Is_Ghost (Defer_Res236) then Transform_Res91.Last_Attempted_Child := -1; end if; elsif Row_Pos136 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags91); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Ext_Ret_Stmt_Object_Decl_Transform_Parse0_Memo, Row_Pos136 /= No_Token_Index, Transform_Res91, Pos, Row_Pos136); Parser.Current_Pos := Row_Pos136; return Transform_Res91; end Ext_Ret_Stmt_Object_Decl_Transform_Parse0; function Ext_Return_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Extended_Return_Stmt is use Bare_Extended_Return_Stmt_Memos; Nobt14 : Boolean := False; Nobt15 : Boolean := False; Row_Pos138 : Token_Index := No_Token_Index; Token_Pos231 : Token_Index := No_Token_Index; Token_Res231 : Token_Index := No_Token_Index; Defer_Pos237 : Token_Index := No_Token_Index; Defer_Res237 : Bare_Extended_Return_Stmt_Object_Decl := No_Bare_Ada_Node; Row_Pos139 : Token_Index := No_Token_Index; Token_Pos232 : Token_Index := No_Token_Index; Token_Res232 : Token_Index := No_Token_Index; Defer_Pos238 : Token_Index := No_Token_Index; Defer_Res238 : Bare_Handled_Stmts := No_Bare_Ada_Node; Token_Pos233 : Token_Index := No_Token_Index; Token_Res233 : Token_Index := No_Token_Index; Token_Pos234 : Token_Index := No_Token_Index; Token_Res234 : Token_Index := No_Token_Index; Token_Pos235 : Token_Index := No_Token_Index; Token_Res235 : Token_Index := No_Token_Index; Row_Progress14 : Integer := 0; Transform_Res92 : Bare_Extended_Return_Stmt := No_Bare_Ada_Node; Transform_Has_Failed14 : Boolean := False; Transform_Diags92 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Ext_Return_Stmt_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res92 := M.Instance; return Transform_Res92; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res92; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags92 := Parser.Diagnostics.Length; -- Start row_code Row_Pos138 := Pos; -- Start tok_code Token_Res231 := Row_Pos138; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res231)); begin if T.Kind /= From_Token_Kind (Ada_Return) then Token_Pos231 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos138 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos138, Expected_Token_Id => Ada_Return, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos231 := Row_Pos138 + 1; end if; end; -- End tok_code Row_Progress14 := 1; if Token_Pos231 /= No_Token_Index then Row_Pos138 := Token_Pos231; else Row_Pos138 := No_Token_Index; goto Exit_Row138_0; end if; Defer_Res237 := Ext_Ret_Stmt_Object_Decl_Transform_Parse0 (Parser, Row_Pos138); Defer_Pos237 := Parser.Current_Pos; Row_Progress14 := 2; if Defer_Pos237 /= No_Token_Index then Row_Pos138 := Defer_Pos237; else Row_Pos138 := No_Token_Index; goto Exit_Row138_0; end if; Nobt14 := True; Nobt14 := Nobt14; Row_Progress14 := 3; if Row_Pos138 /= No_Token_Index then Row_Pos138 := Row_Pos138; else Row_Pos138 := No_Token_Index; goto Exit_Row138_0; end if; -- Start opt_code -- Start row_code Row_Pos139 := Row_Pos138; -- Start tok_code Token_Res232 := Row_Pos139; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res232)); begin if T.Kind /= From_Token_Kind (Ada_Do) then Token_Pos232 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos139 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos139, Expected_Token_Id => Ada_Do, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos232 := Row_Pos139 + 1; end if; end; -- End tok_code if Token_Pos232 /= No_Token_Index then Row_Pos139 := Token_Pos232; else Row_Pos139 := No_Token_Index; goto Exit_Row139_0; end if; Nobt15 := True; Nobt15 := Nobt15; if Row_Pos139 /= No_Token_Index then Row_Pos139 := Row_Pos139; else Row_Pos139 := No_Token_Index; goto Exit_Row139_0; end if; Defer_Res238 := Handled_Stmts_Transform_Parse0 (Parser, Row_Pos139); Defer_Pos238 := Parser.Current_Pos; if Defer_Pos238 /= No_Token_Index then Row_Pos139 := Defer_Pos238; else Row_Pos139 := No_Token_Index; goto Exit_Row139_0; end if; -- Start tok_code Token_Res233 := Row_Pos139; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res233)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos233 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos139 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos139, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos233 := Row_Pos139 + 1; end if; end; -- End tok_code if Token_Pos233 /= No_Token_Index then Row_Pos139 := Token_Pos233; else Row_Pos139 := No_Token_Index; goto Exit_Row139_0; end if; -- Start tok_code Token_Res234 := Row_Pos139; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res234)); begin if T.Kind /= From_Token_Kind (Ada_Return) then Token_Pos234 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos139 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos139, Expected_Token_Id => Ada_Return, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos234 := Row_Pos139 + 1; end if; end; -- End tok_code if Token_Pos234 /= No_Token_Index then Row_Pos139 := Token_Pos234; else Row_Pos139 := No_Token_Index; goto Exit_Row139_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos139 = No_Token_Index then if Nobt15 then Row_Pos139 := Parser.Last_Fail.Pos; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos139)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; if not Nobt15 then Defer_Res238 := No_Bare_Ada_Node; end if; if not Nobt15 then Row_Pos139 := Row_Pos138; end if; end if; -- End opt_code Nobt14 := Nobt15; Row_Progress14 := 4; if Row_Pos139 /= No_Token_Index then Row_Pos138 := Row_Pos139; else Row_Pos138 := No_Token_Index; goto Exit_Row138_0; end if; -- Start tok_code Token_Res235 := Row_Pos138; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res235)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos235 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos138 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos138, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos235 := Row_Pos138 + 1; end if; end; -- End tok_code Row_Progress14 := 5; if Token_Pos235 /= No_Token_Index then Row_Pos138 := Token_Pos235; else Row_Pos138 := No_Token_Index; goto Exit_Row138_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos138 = No_Token_Index and then Nobt14 then Row_Pos138 := Parser.Last_Fail.Pos; Transform_Has_Failed14 := True; end if; if Row_Pos138 /= No_Token_Index then Transform_Res92 := Allocate_Extended_Return_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res92, Kind => Ada_Extended_Return_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos138 = Pos then No_Token_Index else Row_Pos138 - 1)); Initialize_Fields_For_Extended_Return_Stmt (Self => Transform_Res92, Extended_Return_Stmt_F_Decl => Defer_Res237, Extended_Return_Stmt_F_Stmts => Defer_Res238); if Defer_Res237 /= null and then Is_Incomplete (Defer_Res237) then Transform_Res92.Last_Attempted_Child := 0; elsif Defer_Res237 /= null and then not Is_Ghost (Defer_Res237) then Transform_Res92.Last_Attempted_Child := -1; end if; if Defer_Res238 /= null and then Is_Incomplete (Defer_Res238) then Transform_Res92.Last_Attempted_Child := 0; elsif Defer_Res238 /= null and then not Is_Ghost (Defer_Res238) then Transform_Res92.Last_Attempted_Child := -1; end if; if Transform_Has_Failed14 then Transform_Res92.Last_Attempted_Child := Row_Progress14; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos138 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags92); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Ext_Return_Stmt_Transform_Parse0_Memo, Row_Pos138 /= No_Token_Index, Transform_Res92, Pos, Row_Pos138); Parser.Current_Pos := Row_Pos138; return Transform_Res92; end Ext_Return_Stmt_Transform_Parse0; function Factor_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Expr is use Bare_Expr_Memos; Nobt16 : Boolean := False; Nobt17 : Boolean := False; Row_Pos140 : Token_Index := No_Token_Index; Row_Pos141 : Token_Index := No_Token_Index; Token_Pos236 : Token_Index := No_Token_Index; Token_Res236 : Token_Index := No_Token_Index; Transform_Res93 : Bare_Op_Abs := No_Bare_Ada_Node; Transform_Diags93 : Ada.Containers.Count_Type; Row_Pos142 : Token_Index := No_Token_Index; Token_Pos237 : Token_Index := No_Token_Index; Token_Res237 : Token_Index := No_Token_Index; Transform_Res94 : Bare_Op_Not := No_Bare_Ada_Node; Transform_Diags94 : Ada.Containers.Count_Type; Or_Pos53 : Token_Index := No_Token_Index; Or_Res53 : Bare_Op := No_Bare_Ada_Node; Defer_Pos239 : Token_Index := No_Token_Index; Defer_Res239 : Bare_Expr := No_Bare_Ada_Node; Row_Progress15 : Integer := 0; Transform_Res95 : Bare_Un_Op := No_Bare_Ada_Node; Transform_Has_Failed15 : Boolean := False; Transform_Diags95 : Ada.Containers.Count_Type; Row_Pos143 : Token_Index := No_Token_Index; Defer_Pos240 : Token_Index := No_Token_Index; Defer_Res240 : Bare_Expr := No_Bare_Ada_Node; Row_Pos144 : Token_Index := No_Token_Index; Token_Pos238 : Token_Index := No_Token_Index; Token_Res238 : Token_Index := No_Token_Index; Transform_Res96 : Bare_Op_Pow := No_Bare_Ada_Node; Transform_Diags96 : Ada.Containers.Count_Type; Defer_Pos241 : Token_Index := No_Token_Index; Defer_Res241 : Bare_Expr := No_Bare_Ada_Node; Row_Progress16 : Integer := 0; Transform_Res97 : Bare_Bin_Op := No_Bare_Ada_Node; Transform_Has_Failed16 : Boolean := False; Transform_Diags97 : Ada.Containers.Count_Type; Defer_Pos242 : Token_Index := No_Token_Index; Defer_Res242 : Bare_Expr := No_Bare_Ada_Node; Or_Pos54 : Token_Index := No_Token_Index; Or_Res54 : Bare_Expr := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Factor_Or_Parse1_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res54 := M.Instance; return Or_Res54; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res54; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos54 := No_Token_Index; Or_Res54 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags95 := Parser.Diagnostics.Length; -- Start row_code Row_Pos140 := Pos; -- Start or_code Or_Pos53 := No_Token_Index; Or_Res53 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags93 := Parser.Diagnostics.Length; -- Start row_code Row_Pos141 := Row_Pos140; -- Start tok_code Token_Res236 := Row_Pos141; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res236)); begin if T.Kind /= From_Token_Kind (Ada_Abs) then Token_Pos236 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos141 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos141, Expected_Token_Id => Ada_Abs, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos236 := Row_Pos141 + 1; end if; end; -- End tok_code if Token_Pos236 /= No_Token_Index then Row_Pos141 := Token_Pos236; else Row_Pos141 := No_Token_Index; goto Exit_Row141_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos141 /= No_Token_Index then Transform_Res93 := Allocate_Op_Abs (Parser.Mem_Pool); Initialize (Self => Transform_Res93, Kind => Ada_Op_Abs, Unit => Parser.Unit, Token_Start_Index => Row_Pos140, Token_End_Index => (if Row_Pos141 = Row_Pos140 then No_Token_Index else Row_Pos141 - 1)); Initialize_Fields_For_Op_Abs (Self => Transform_Res93); elsif Row_Pos141 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags93); end if; -- End transform_code if Row_Pos141 /= No_Token_Index then Or_Pos53 := Row_Pos141; Or_Res53 := Transform_Res93; goto Exit_Or55; end if; -- Start transform_code Transform_Diags94 := Parser.Diagnostics.Length; -- Start row_code Row_Pos142 := Row_Pos140; -- Start tok_code Token_Res237 := Row_Pos142; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res237)); begin if T.Kind /= From_Token_Kind (Ada_Not) then Token_Pos237 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos142 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos142, Expected_Token_Id => Ada_Not, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos237 := Row_Pos142 + 1; end if; end; -- End tok_code if Token_Pos237 /= No_Token_Index then Row_Pos142 := Token_Pos237; else Row_Pos142 := No_Token_Index; goto Exit_Row142_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos142 /= No_Token_Index then Transform_Res94 := Allocate_Op_Not (Parser.Mem_Pool); Initialize (Self => Transform_Res94, Kind => Ada_Op_Not, Unit => Parser.Unit, Token_Start_Index => Row_Pos140, Token_End_Index => (if Row_Pos142 = Row_Pos140 then No_Token_Index else Row_Pos142 - 1)); Initialize_Fields_For_Op_Not (Self => Transform_Res94); elsif Row_Pos142 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags94); end if; -- End transform_code if Row_Pos142 /= No_Token_Index then Or_Pos53 := Row_Pos142; Or_Res53 := Transform_Res94; goto Exit_Or55; end if; <> -- End or_code Row_Progress15 := 1; if Or_Pos53 /= No_Token_Index then Row_Pos140 := Or_Pos53; else Row_Pos140 := No_Token_Index; goto Exit_Row140_0; end if; Nobt16 := True; Nobt16 := Nobt16; Row_Progress15 := 2; if Row_Pos140 /= No_Token_Index then Row_Pos140 := Row_Pos140; else Row_Pos140 := No_Token_Index; goto Exit_Row140_0; end if; Defer_Res239 := Primary_Or_Parse0 (Parser, Row_Pos140); Defer_Pos239 := Parser.Current_Pos; Row_Progress15 := 3; if Defer_Pos239 /= No_Token_Index then Row_Pos140 := Defer_Pos239; else Row_Pos140 := No_Token_Index; goto Exit_Row140_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos140 = No_Token_Index and then Nobt16 then Row_Pos140 := Parser.Last_Fail.Pos; Transform_Has_Failed15 := True; end if; if Row_Pos140 /= No_Token_Index then Transform_Res95 := Allocate_Un_Op (Parser.Mem_Pool); Initialize (Self => Transform_Res95, Kind => Ada_Un_Op, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos140 = Pos then No_Token_Index else Row_Pos140 - 1)); Initialize_Fields_For_Un_Op (Self => Transform_Res95, Un_Op_F_Op => Or_Res53, Un_Op_F_Expr => Defer_Res239); if Or_Res53 /= null and then Is_Incomplete (Or_Res53) then Transform_Res95.Last_Attempted_Child := 0; elsif Or_Res53 /= null and then not Is_Ghost (Or_Res53) then Transform_Res95.Last_Attempted_Child := -1; end if; if Defer_Res239 /= null and then Is_Incomplete (Defer_Res239) then Transform_Res95.Last_Attempted_Child := 0; elsif Defer_Res239 /= null and then not Is_Ghost (Defer_Res239) then Transform_Res95.Last_Attempted_Child := -1; end if; if Transform_Has_Failed15 then Transform_Res95.Last_Attempted_Child := Row_Progress15; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos140 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags95); end if; -- End transform_code if Row_Pos140 /= No_Token_Index then Or_Pos54 := Row_Pos140; Or_Res54 := Transform_Res95; goto Exit_Or54; end if; -- Start transform_code Transform_Diags97 := Parser.Diagnostics.Length; -- Start row_code Row_Pos143 := Pos; Defer_Res240 := Primary_Or_Parse0 (Parser, Row_Pos143); Defer_Pos240 := Parser.Current_Pos; Row_Progress16 := 1; if Defer_Pos240 /= No_Token_Index then Row_Pos143 := Defer_Pos240; else Row_Pos143 := No_Token_Index; goto Exit_Row143_0; end if; -- Start transform_code Transform_Diags96 := Parser.Diagnostics.Length; -- Start row_code Row_Pos144 := Row_Pos143; -- Start tok_code Token_Res238 := Row_Pos144; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res238)); begin if T.Kind /= From_Token_Kind (Ada_Power) then Token_Pos238 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos144 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos144, Expected_Token_Id => Ada_Power, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos238 := Row_Pos144 + 1; end if; end; -- End tok_code if Token_Pos238 /= No_Token_Index then Row_Pos144 := Token_Pos238; else Row_Pos144 := No_Token_Index; goto Exit_Row144_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos144 /= No_Token_Index then Transform_Res96 := Allocate_Op_Pow (Parser.Mem_Pool); Initialize (Self => Transform_Res96, Kind => Ada_Op_Pow, Unit => Parser.Unit, Token_Start_Index => Row_Pos143, Token_End_Index => (if Row_Pos144 = Row_Pos143 then No_Token_Index else Row_Pos144 - 1)); Initialize_Fields_For_Op_Pow (Self => Transform_Res96); elsif Row_Pos144 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags96); end if; -- End transform_code Row_Progress16 := 2; if Row_Pos144 /= No_Token_Index then Row_Pos143 := Row_Pos144; else Row_Pos143 := No_Token_Index; goto Exit_Row143_0; end if; Nobt17 := True; Nobt17 := Nobt17; Row_Progress16 := 3; if Row_Pos143 /= No_Token_Index then Row_Pos143 := Row_Pos143; else Row_Pos143 := No_Token_Index; goto Exit_Row143_0; end if; Defer_Res241 := Primary_Or_Parse0 (Parser, Row_Pos143); Defer_Pos241 := Parser.Current_Pos; Row_Progress16 := 4; if Defer_Pos241 /= No_Token_Index then Row_Pos143 := Defer_Pos241; else Row_Pos143 := No_Token_Index; goto Exit_Row143_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos143 = No_Token_Index and then Nobt17 then Row_Pos143 := Parser.Last_Fail.Pos; Transform_Has_Failed16 := True; end if; if Row_Pos143 /= No_Token_Index then Transform_Res97 := Allocate_Bin_Op (Parser.Mem_Pool); Initialize (Self => Transform_Res97, Kind => Ada_Bin_Op, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos143 = Pos then No_Token_Index else Row_Pos143 - 1)); Initialize_Fields_For_Bin_Op (Self => Transform_Res97, Bin_Op_F_Left => Defer_Res240, Bin_Op_F_Op => Transform_Res96, Bin_Op_F_Right => Defer_Res241); if Defer_Res240 /= null and then Is_Incomplete (Defer_Res240) then Transform_Res97.Last_Attempted_Child := 0; elsif Defer_Res240 /= null and then not Is_Ghost (Defer_Res240) then Transform_Res97.Last_Attempted_Child := -1; end if; if Transform_Res96 /= null and then Is_Incomplete (Transform_Res96) then Transform_Res97.Last_Attempted_Child := 0; elsif Transform_Res96 /= null and then not Is_Ghost (Transform_Res96) then Transform_Res97.Last_Attempted_Child := -1; end if; if Defer_Res241 /= null and then Is_Incomplete (Defer_Res241) then Transform_Res97.Last_Attempted_Child := 0; elsif Defer_Res241 /= null and then not Is_Ghost (Defer_Res241) then Transform_Res97.Last_Attempted_Child := -1; end if; if Transform_Has_Failed16 then Transform_Res97.Last_Attempted_Child := Row_Progress16; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos143 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags97); end if; -- End transform_code if Row_Pos143 /= No_Token_Index then Or_Pos54 := Row_Pos143; Or_Res54 := Transform_Res97; goto Exit_Or54; end if; Defer_Res242 := Primary_Or_Parse0 (Parser, Pos); Defer_Pos242 := Parser.Current_Pos; if Defer_Pos242 /= No_Token_Index then Or_Pos54 := Defer_Pos242; Or_Res54 := Defer_Res242; goto Exit_Or54; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Factor_Or_Parse1_Memo, Or_Pos54 /= No_Token_Index, Or_Res54, Pos, Or_Pos54); Parser.Current_Pos := Or_Pos54; return Or_Res54; end Factor_Or_Parse1; function Floating_Point_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Floating_Point_Def is use Bare_Floating_Point_Def_Memos; Row_Pos145 : Token_Index := No_Token_Index; Token_Pos239 : Token_Index := No_Token_Index; Token_Res239 : Token_Index := No_Token_Index; Defer_Pos243 : Token_Index := No_Token_Index; Defer_Res243 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos244 : Token_Index := No_Token_Index; Defer_Res244 : Bare_Range_Spec := No_Bare_Ada_Node; Transform_Res98 : Bare_Floating_Point_Def := No_Bare_Ada_Node; Transform_Diags98 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Floating_Point_Def_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res98 := M.Instance; return Transform_Res98; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res98; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags98 := Parser.Diagnostics.Length; -- Start row_code Row_Pos145 := Pos; -- Start tok_code Token_Res239 := Row_Pos145; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res239)); begin if T.Kind /= From_Token_Kind (Ada_Digits) then Token_Pos239 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos145 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos145, Expected_Token_Id => Ada_Digits, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos239 := Row_Pos145 + 1; end if; end; -- End tok_code if Token_Pos239 /= No_Token_Index then Row_Pos145 := Token_Pos239; else Row_Pos145 := No_Token_Index; goto Exit_Row145_0; end if; Defer_Res243 := Sexpr_Or_Box_Or_Parse0 (Parser, Row_Pos145); Defer_Pos243 := Parser.Current_Pos; if Defer_Pos243 /= No_Token_Index then Row_Pos145 := Defer_Pos243; else Row_Pos145 := No_Token_Index; goto Exit_Row145_0; end if; -- Start opt_code Defer_Res244 := Range_Spec_Transform_Parse0 (Parser, Row_Pos145); Defer_Pos244 := Parser.Current_Pos; if Defer_Pos244 = No_Token_Index then Defer_Res244 := No_Bare_Ada_Node; Defer_Pos244 := Row_Pos145; end if; -- End opt_code if Defer_Pos244 /= No_Token_Index then Row_Pos145 := Defer_Pos244; else Row_Pos145 := No_Token_Index; goto Exit_Row145_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos145 /= No_Token_Index then Transform_Res98 := Allocate_Floating_Point_Def (Parser.Mem_Pool); Initialize (Self => Transform_Res98, Kind => Ada_Floating_Point_Def, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos145 = Pos then No_Token_Index else Row_Pos145 - 1)); Initialize_Fields_For_Floating_Point_Def (Self => Transform_Res98, Floating_Point_Def_F_Num_Digits => Defer_Res243, Floating_Point_Def_F_Range => Defer_Res244); if Defer_Res243 /= null and then Is_Incomplete (Defer_Res243) then Transform_Res98.Last_Attempted_Child := 0; elsif Defer_Res243 /= null and then not Is_Ghost (Defer_Res243) then Transform_Res98.Last_Attempted_Child := -1; end if; if Defer_Res244 /= null and then Is_Incomplete (Defer_Res244) then Transform_Res98.Last_Attempted_Child := 0; elsif Defer_Res244 /= null and then not Is_Ghost (Defer_Res244) then Transform_Res98.Last_Attempted_Child := -1; end if; elsif Row_Pos145 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags98); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Floating_Point_Def_Transform_Parse0_Memo, Row_Pos145 /= No_Token_Index, Transform_Res98, Pos, Row_Pos145); Parser.Current_Pos := Row_Pos145; return Transform_Res98; end Floating_Point_Def_Transform_Parse0; function For_Loop_Param_Spec_Transform_Parse3 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_For_Loop_Spec is use Bare_For_Loop_Spec_Memos; Row_Pos146 : Token_Index := No_Token_Index; Row_Pos147 : Token_Index := No_Token_Index; Defer_Pos245 : Token_Index := No_Token_Index; Defer_Res245 : Bare_Defining_Name := No_Bare_Ada_Node; Row_Pos148 : Token_Index := No_Token_Index; Token_Pos240 : Token_Index := No_Token_Index; Token_Res240 : Token_Index := No_Token_Index; Defer_Pos246 : Token_Index := No_Token_Index; Defer_Res246 : Bare_Type_Expr := No_Bare_Ada_Node; Transform_Res99 : Bare_For_Loop_Var_Decl := No_Bare_Ada_Node; Transform_Diags99 : Ada.Containers.Count_Type; Row_Pos149 : Token_Index := No_Token_Index; Token_Pos241 : Token_Index := No_Token_Index; Token_Res241 : Token_Index := No_Token_Index; Transform_Res100 : Bare_Iter_Type_In := No_Bare_Ada_Node; Transform_Diags100 : Ada.Containers.Count_Type; Row_Pos150 : Token_Index := No_Token_Index; Token_Pos242 : Token_Index := No_Token_Index; Token_Res242 : Token_Index := No_Token_Index; Transform_Res101 : Bare_Iter_Type_Of := No_Bare_Ada_Node; Transform_Diags101 : Ada.Containers.Count_Type; Or_Pos55 : Token_Index := No_Token_Index; Or_Res55 : Bare_Iter_Type := No_Bare_Ada_Node; Token_Pos243 : Token_Index := No_Token_Index; Token_Res243 : Token_Index := No_Token_Index; Opt_Res16 : Bare_Reverse_Node := No_Bare_Ada_Node; Defer_Pos247 : Token_Index := No_Token_Index; Defer_Res247 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos248 : Token_Index := No_Token_Index; Defer_Res248 : Bare_Discrete_Subtype_Indication := No_Bare_Ada_Node; Defer_Pos249 : Token_Index := No_Token_Index; Defer_Res249 : Bare_Name := No_Bare_Ada_Node; Or_Pos56 : Token_Index := No_Token_Index; Or_Res56 : Bare_Ada_Node := No_Bare_Ada_Node; Row_Pos151 : Token_Index := No_Token_Index; Token_Pos244 : Token_Index := No_Token_Index; Token_Res244 : Token_Index := No_Token_Index; Defer_Pos250 : Token_Index := No_Token_Index; Defer_Res250 : Bare_Expr := No_Bare_Ada_Node; Transform_Res102 : Bare_For_Loop_Spec := No_Bare_Ada_Node; Transform_Diags102 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.For_Loop_Param_Spec_Transform_Parse3_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res102 := M.Instance; return Transform_Res102; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res102; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags102 := Parser.Diagnostics.Length; -- Start row_code Row_Pos146 := Pos; -- Start transform_code Transform_Diags99 := Parser.Diagnostics.Length; -- Start row_code Row_Pos147 := Row_Pos146; Defer_Res245 := Defining_Id_Transform_Parse0 (Parser, Row_Pos147); Defer_Pos245 := Parser.Current_Pos; if Defer_Pos245 /= No_Token_Index then Row_Pos147 := Defer_Pos245; else Row_Pos147 := No_Token_Index; goto Exit_Row147_0; end if; -- Start opt_code -- Start row_code Row_Pos148 := Row_Pos147; -- Start tok_code Token_Res240 := Row_Pos148; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res240)); begin if T.Kind /= From_Token_Kind (Ada_Colon) then Token_Pos240 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos148 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos148, Expected_Token_Id => Ada_Colon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos240 := Row_Pos148 + 1; end if; end; -- End tok_code if Token_Pos240 /= No_Token_Index then Row_Pos148 := Token_Pos240; else Row_Pos148 := No_Token_Index; goto Exit_Row148_0; end if; Defer_Res246 := Type_Expr_Or_Parse0 (Parser, Row_Pos148); Defer_Pos246 := Parser.Current_Pos; if Defer_Pos246 /= No_Token_Index then Row_Pos148 := Defer_Pos246; else Row_Pos148 := No_Token_Index; goto Exit_Row148_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos148 = No_Token_Index then Defer_Res246 := No_Bare_Ada_Node; Row_Pos148 := Row_Pos147; end if; -- End opt_code if Row_Pos148 /= No_Token_Index then Row_Pos147 := Row_Pos148; else Row_Pos147 := No_Token_Index; goto Exit_Row147_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos147 /= No_Token_Index then Transform_Res99 := Allocate_For_Loop_Var_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res99, Kind => Ada_For_Loop_Var_Decl, Unit => Parser.Unit, Token_Start_Index => Row_Pos146, Token_End_Index => (if Row_Pos147 = Row_Pos146 then No_Token_Index else Row_Pos147 - 1)); Initialize_Fields_For_For_Loop_Var_Decl (Self => Transform_Res99, For_Loop_Var_Decl_F_Id => Defer_Res245, For_Loop_Var_Decl_F_Id_Type => Defer_Res246); if Defer_Res245 /= null and then Is_Incomplete (Defer_Res245) then Transform_Res99.Last_Attempted_Child := 0; elsif Defer_Res245 /= null and then not Is_Ghost (Defer_Res245) then Transform_Res99.Last_Attempted_Child := -1; end if; if Defer_Res246 /= null and then Is_Incomplete (Defer_Res246) then Transform_Res99.Last_Attempted_Child := 0; elsif Defer_Res246 /= null and then not Is_Ghost (Defer_Res246) then Transform_Res99.Last_Attempted_Child := -1; end if; elsif Row_Pos147 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags99); end if; -- End transform_code if Row_Pos147 /= No_Token_Index then Row_Pos146 := Row_Pos147; else Row_Pos146 := No_Token_Index; goto Exit_Row146_0; end if; -- Start or_code Or_Pos55 := No_Token_Index; Or_Res55 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags100 := Parser.Diagnostics.Length; -- Start row_code Row_Pos149 := Row_Pos146; -- Start tok_code Token_Res241 := Row_Pos149; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res241)); begin if T.Kind /= From_Token_Kind (Ada_In) then Token_Pos241 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos149 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos149, Expected_Token_Id => Ada_In, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos241 := Row_Pos149 + 1; end if; end; -- End tok_code if Token_Pos241 /= No_Token_Index then Row_Pos149 := Token_Pos241; else Row_Pos149 := No_Token_Index; goto Exit_Row149_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos149 /= No_Token_Index then Transform_Res100 := Allocate_Iter_Type_In (Parser.Mem_Pool); Initialize (Self => Transform_Res100, Kind => Ada_Iter_Type_In, Unit => Parser.Unit, Token_Start_Index => Row_Pos146, Token_End_Index => (if Row_Pos149 = Row_Pos146 then No_Token_Index else Row_Pos149 - 1)); elsif Row_Pos149 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags100); end if; -- End transform_code if Row_Pos149 /= No_Token_Index then Or_Pos55 := Row_Pos149; Or_Res55 := Transform_Res100; goto Exit_Or56; end if; -- Start transform_code Transform_Diags101 := Parser.Diagnostics.Length; -- Start row_code Row_Pos150 := Row_Pos146; -- Start tok_code Token_Res242 := Row_Pos150; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res242)); begin if T.Kind /= From_Token_Kind (Ada_Of) then Token_Pos242 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos150 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos150, Expected_Token_Id => Ada_Of, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos242 := Row_Pos150 + 1; end if; end; -- End tok_code if Token_Pos242 /= No_Token_Index then Row_Pos150 := Token_Pos242; else Row_Pos150 := No_Token_Index; goto Exit_Row150_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos150 /= No_Token_Index then Transform_Res101 := Allocate_Iter_Type_Of (Parser.Mem_Pool); Initialize (Self => Transform_Res101, Kind => Ada_Iter_Type_Of, Unit => Parser.Unit, Token_Start_Index => Row_Pos146, Token_End_Index => (if Row_Pos150 = Row_Pos146 then No_Token_Index else Row_Pos150 - 1)); elsif Row_Pos150 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags101); end if; -- End transform_code if Row_Pos150 /= No_Token_Index then Or_Pos55 := Row_Pos150; Or_Res55 := Transform_Res101; goto Exit_Or56; end if; <> -- End or_code if Or_Pos55 /= No_Token_Index then Row_Pos146 := Or_Pos55; else Row_Pos146 := No_Token_Index; goto Exit_Row146_0; end if; -- Start opt_code -- Start tok_code Token_Res243 := Row_Pos146; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res243)); begin if T.Kind /= From_Token_Kind (Ada_Reverse) then Token_Pos243 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos146 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos146, Expected_Token_Id => Ada_Reverse, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos243 := Row_Pos146 + 1; end if; end; -- End tok_code if Token_Pos243 = No_Token_Index then Opt_Res16 := Allocate_Reverse_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res16, Kind => Ada_Reverse_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos146, Token_End_Index => No_Token_Index); Token_Pos243 := Row_Pos146; else Opt_Res16 := Allocate_Reverse_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res16, Kind => Ada_Reverse_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos146, Token_End_Index => Token_Pos243 - 1); end if; -- End opt_code if Token_Pos243 /= No_Token_Index then Row_Pos146 := Token_Pos243; else Row_Pos146 := No_Token_Index; goto Exit_Row146_0; end if; -- Start or_code Or_Pos56 := No_Token_Index; Or_Res56 := No_Bare_Ada_Node; Defer_Res247 := Discrete_Range_Or_Parse0 (Parser, Row_Pos146); Defer_Pos247 := Parser.Current_Pos; if Defer_Pos247 /= No_Token_Index then Or_Pos56 := Defer_Pos247; Or_Res56 := Defer_Res247; goto Exit_Or57; end if; Defer_Res248 := Discrete_Subtype_Indication_Transform_Parse0 (Parser, Row_Pos146); Defer_Pos248 := Parser.Current_Pos; if Defer_Pos248 /= No_Token_Index then Or_Pos56 := Defer_Pos248; Or_Res56 := Defer_Res248; goto Exit_Or57; end if; Defer_Res249 := Name_Or_Parse2 (Parser, Row_Pos146); Defer_Pos249 := Parser.Current_Pos; if Defer_Pos249 /= No_Token_Index then Or_Pos56 := Defer_Pos249; Or_Res56 := Defer_Res249; goto Exit_Or57; end if; <> -- End or_code if Or_Pos56 /= No_Token_Index then Row_Pos146 := Or_Pos56; else Row_Pos146 := No_Token_Index; goto Exit_Row146_0; end if; -- Start opt_code -- Start row_code Row_Pos151 := Row_Pos146; -- Start tok_code Token_Res244 := Row_Pos151; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res244)); begin if T.Kind /= From_Token_Kind (Ada_When) then Token_Pos244 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos151 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos151, Expected_Token_Id => Ada_When, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos244 := Row_Pos151 + 1; end if; end; -- End tok_code if Token_Pos244 /= No_Token_Index then Row_Pos151 := Token_Pos244; else Row_Pos151 := No_Token_Index; goto Exit_Row151_0; end if; Defer_Res250 := Expr_Or_Parse0 (Parser, Row_Pos151); Defer_Pos250 := Parser.Current_Pos; if Defer_Pos250 /= No_Token_Index then Row_Pos151 := Defer_Pos250; else Row_Pos151 := No_Token_Index; goto Exit_Row151_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos151 = No_Token_Index then Defer_Res250 := No_Bare_Ada_Node; Row_Pos151 := Row_Pos146; end if; -- End opt_code if Row_Pos151 /= No_Token_Index then Row_Pos146 := Row_Pos151; else Row_Pos146 := No_Token_Index; goto Exit_Row146_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos146 /= No_Token_Index then Transform_Res102 := Allocate_For_Loop_Spec (Parser.Mem_Pool); Initialize (Self => Transform_Res102, Kind => Ada_For_Loop_Spec, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos146 = Pos then No_Token_Index else Row_Pos146 - 1)); Initialize_Fields_For_For_Loop_Spec (Self => Transform_Res102, For_Loop_Spec_F_Var_Decl => Transform_Res99, For_Loop_Spec_F_Loop_Type => Or_Res55, For_Loop_Spec_F_Has_Reverse => Opt_Res16, For_Loop_Spec_F_Iter_Expr => Or_Res56, For_Loop_Spec_F_Iter_Filter => Defer_Res250); if Transform_Res99 /= null and then Is_Incomplete (Transform_Res99) then Transform_Res102.Last_Attempted_Child := 0; elsif Transform_Res99 /= null and then not Is_Ghost (Transform_Res99) then Transform_Res102.Last_Attempted_Child := -1; end if; if Or_Res55 /= null and then Is_Incomplete (Or_Res55) then Transform_Res102.Last_Attempted_Child := 0; elsif Or_Res55 /= null and then not Is_Ghost (Or_Res55) then Transform_Res102.Last_Attempted_Child := -1; end if; if Opt_Res16 /= null and then Is_Incomplete (Opt_Res16) then Transform_Res102.Last_Attempted_Child := 0; elsif Opt_Res16 /= null and then not Is_Ghost (Opt_Res16) then Transform_Res102.Last_Attempted_Child := -1; end if; if Or_Res56 /= null and then Is_Incomplete (Or_Res56) then Transform_Res102.Last_Attempted_Child := 0; elsif Or_Res56 /= null and then not Is_Ghost (Or_Res56) then Transform_Res102.Last_Attempted_Child := -1; end if; if Defer_Res250 /= null and then Is_Incomplete (Defer_Res250) then Transform_Res102.Last_Attempted_Child := 0; elsif Defer_Res250 /= null and then not Is_Ghost (Defer_Res250) then Transform_Res102.Last_Attempted_Child := -1; end if; elsif Row_Pos146 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags102); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.For_Loop_Param_Spec_Transform_Parse3_Memo, Row_Pos146 /= No_Token_Index, Transform_Res102, Pos, Row_Pos146); Parser.Current_Pos := Row_Pos146; return Transform_Res102; end For_Loop_Param_Spec_Transform_Parse3; function Formal_Discrete_Type_Def_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Formal_Discrete_Type_Def is use Bare_Formal_Discrete_Type_Def_Memos; Row_Pos152 : Token_Index := No_Token_Index; Token_Pos245 : Token_Index := No_Token_Index; Token_Res245 : Token_Index := No_Token_Index; Token_Pos246 : Token_Index := No_Token_Index; Token_Res246 : Token_Index := No_Token_Index; Token_Pos247 : Token_Index := No_Token_Index; Token_Res247 : Token_Index := No_Token_Index; Transform_Res103 : Bare_Formal_Discrete_Type_Def := No_Bare_Ada_Node; Transform_Diags103 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Formal_Discrete_Type_Def_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res103 := M.Instance; return Transform_Res103; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res103; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags103 := Parser.Diagnostics.Length; -- Start row_code Row_Pos152 := Pos; -- Start tok_code Token_Res245 := Row_Pos152; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res245)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos245 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos152 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos152, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos245 := Row_Pos152 + 1; end if; end; -- End tok_code if Token_Pos245 /= No_Token_Index then Row_Pos152 := Token_Pos245; else Row_Pos152 := No_Token_Index; goto Exit_Row152_0; end if; -- Start tok_code Token_Res246 := Row_Pos152; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res246)); begin if T.Kind /= From_Token_Kind (Ada_Diamond) then Token_Pos246 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos152 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos152, Expected_Token_Id => Ada_Diamond, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos246 := Row_Pos152 + 1; end if; end; -- End tok_code if Token_Pos246 /= No_Token_Index then Row_Pos152 := Token_Pos246; else Row_Pos152 := No_Token_Index; goto Exit_Row152_0; end if; -- Start tok_code Token_Res247 := Row_Pos152; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res247)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos247 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos152 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos152, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos247 := Row_Pos152 + 1; end if; end; -- End tok_code if Token_Pos247 /= No_Token_Index then Row_Pos152 := Token_Pos247; else Row_Pos152 := No_Token_Index; goto Exit_Row152_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos152 /= No_Token_Index then Transform_Res103 := Allocate_Formal_Discrete_Type_Def (Parser.Mem_Pool); Initialize (Self => Transform_Res103, Kind => Ada_Formal_Discrete_Type_Def, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos152 = Pos then No_Token_Index else Row_Pos152 - 1)); elsif Row_Pos152 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags103); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Formal_Discrete_Type_Def_Transform_Parse0_Memo, Row_Pos152 /= No_Token_Index, Transform_Res103, Pos, Row_Pos152); Parser.Current_Pos := Row_Pos152; return Transform_Res103; end Formal_Discrete_Type_Def_Transform_Parse0; function Formal_Subp_Decl_Or_Parse2 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Formal_Subp_Decl is use Bare_Formal_Subp_Decl_Memos; Row_Pos153 : Token_Index := No_Token_Index; Token_Pos248 : Token_Index := No_Token_Index; Token_Res248 : Token_Index := No_Token_Index; Row_Pos154 : Token_Index := No_Token_Index; Transform_Res104 : Bare_Overriding_Unspecified := No_Bare_Ada_Node; Transform_Diags104 : Ada.Containers.Count_Type; Defer_Pos251 : Token_Index := No_Token_Index; Defer_Res251 : Bare_Subp_Spec := No_Bare_Ada_Node; Token_Pos249 : Token_Index := No_Token_Index; Token_Res249 : Token_Index := No_Token_Index; Token_Pos250 : Token_Index := No_Token_Index; Token_Res250 : Token_Index := No_Token_Index; Defer_Pos252 : Token_Index := No_Token_Index; Defer_Res252 : Bare_Box_Expr := No_Bare_Ada_Node; Defer_Pos253 : Token_Index := No_Token_Index; Defer_Res253 : Bare_Name := No_Bare_Ada_Node; Defer_Pos254 : Token_Index := No_Token_Index; Defer_Res254 : Bare_Null_Literal := No_Bare_Ada_Node; Or_Pos57 : Token_Index := No_Token_Index; Or_Res57 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos255 : Token_Index := No_Token_Index; Defer_Res255 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos251 : Token_Index := No_Token_Index; Token_Res251 : Token_Index := No_Token_Index; Transform_Res105 : Bare_Abstract_Formal_Subp_Decl := No_Bare_Ada_Node; Transform_Diags105 : Ada.Containers.Count_Type; Row_Pos155 : Token_Index := No_Token_Index; Token_Pos252 : Token_Index := No_Token_Index; Token_Res252 : Token_Index := No_Token_Index; Row_Pos156 : Token_Index := No_Token_Index; Transform_Res106 : Bare_Overriding_Unspecified := No_Bare_Ada_Node; Transform_Diags106 : Ada.Containers.Count_Type; Defer_Pos256 : Token_Index := No_Token_Index; Defer_Res256 : Bare_Subp_Spec := No_Bare_Ada_Node; Row_Pos157 : Token_Index := No_Token_Index; Token_Pos253 : Token_Index := No_Token_Index; Token_Res253 : Token_Index := No_Token_Index; Defer_Pos257 : Token_Index := No_Token_Index; Defer_Res257 : Bare_Box_Expr := No_Bare_Ada_Node; Defer_Pos258 : Token_Index := No_Token_Index; Defer_Res258 : Bare_Name := No_Bare_Ada_Node; Defer_Pos259 : Token_Index := No_Token_Index; Defer_Res259 : Bare_Null_Literal := No_Bare_Ada_Node; Or_Pos58 : Token_Index := No_Token_Index; Or_Res58 : Bare_Expr := No_Bare_Ada_Node; Defer_Pos260 : Token_Index := No_Token_Index; Defer_Res260 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos254 : Token_Index := No_Token_Index; Token_Res254 : Token_Index := No_Token_Index; Transform_Res107 : Bare_Concrete_Formal_Subp_Decl := No_Bare_Ada_Node; Transform_Diags107 : Ada.Containers.Count_Type; Or_Pos59 : Token_Index := No_Token_Index; Or_Res59 : Bare_Formal_Subp_Decl := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Formal_Subp_Decl_Or_Parse2_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res59 := M.Instance; return Or_Res59; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res59; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos59 := No_Token_Index; Or_Res59 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags105 := Parser.Diagnostics.Length; -- Start row_code Row_Pos153 := Pos; -- Start tok_code Token_Res248 := Row_Pos153; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res248)); begin if T.Kind /= From_Token_Kind (Ada_With) then Token_Pos248 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos153 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos153, Expected_Token_Id => Ada_With, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos248 := Row_Pos153 + 1; end if; end; -- End tok_code if Token_Pos248 /= No_Token_Index then Row_Pos153 := Token_Pos248; else Row_Pos153 := No_Token_Index; goto Exit_Row153_0; end if; -- Start transform_code Transform_Diags104 := Parser.Diagnostics.Length; -- Start row_code Row_Pos154 := Row_Pos153; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos154 /= No_Token_Index then Transform_Res104 := Allocate_Overriding_Unspecified (Parser.Mem_Pool); Initialize (Self => Transform_Res104, Kind => Ada_Overriding_Unspecified, Unit => Parser.Unit, Token_Start_Index => Row_Pos153, Token_End_Index => (if Row_Pos154 = Row_Pos153 then No_Token_Index else Row_Pos154 - 1)); elsif Row_Pos154 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags104); end if; -- End transform_code if Row_Pos154 /= No_Token_Index then Row_Pos153 := Row_Pos154; else Row_Pos153 := No_Token_Index; goto Exit_Row153_0; end if; Defer_Res251 := Subp_Spec_Transform_Parse2 (Parser, Row_Pos153); Defer_Pos251 := Parser.Current_Pos; if Defer_Pos251 /= No_Token_Index then Row_Pos153 := Defer_Pos251; else Row_Pos153 := No_Token_Index; goto Exit_Row153_0; end if; -- Start tok_code Token_Res249 := Row_Pos153; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res249)); begin if T.Kind /= From_Token_Kind (Ada_Is) then Token_Pos249 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos153 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos153, Expected_Token_Id => Ada_Is, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos249 := Row_Pos153 + 1; end if; end; -- End tok_code if Token_Pos249 /= No_Token_Index then Row_Pos153 := Token_Pos249; else Row_Pos153 := No_Token_Index; goto Exit_Row153_0; end if; -- Start tok_code Token_Res250 := Row_Pos153; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res250)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Abstract) then Token_Pos250 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos153 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos153, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos250 := Row_Pos153 + 1; end if; end; -- End tok_code if Token_Pos250 /= No_Token_Index then Row_Pos153 := Token_Pos250; else Row_Pos153 := No_Token_Index; goto Exit_Row153_0; end if; -- Start opt_code -- Start or_code Or_Pos57 := No_Token_Index; Or_Res57 := No_Bare_Ada_Node; Defer_Res252 := Box_Expr_Transform_Parse0 (Parser, Row_Pos153); Defer_Pos252 := Parser.Current_Pos; if Defer_Pos252 /= No_Token_Index then Or_Pos57 := Defer_Pos252; Or_Res57 := Defer_Res252; goto Exit_Or59; end if; Defer_Res253 := Name_Or_Parse2 (Parser, Row_Pos153); Defer_Pos253 := Parser.Current_Pos; if Defer_Pos253 /= No_Token_Index then Or_Pos57 := Defer_Pos253; Or_Res57 := Defer_Res253; goto Exit_Or59; end if; Defer_Res254 := Null_Literal_Transform_Parse0 (Parser, Row_Pos153); Defer_Pos254 := Parser.Current_Pos; if Defer_Pos254 /= No_Token_Index then Or_Pos57 := Defer_Pos254; Or_Res57 := Defer_Res254; goto Exit_Or59; end if; <> -- End or_code if Or_Pos57 = No_Token_Index then Or_Res57 := No_Bare_Ada_Node; Or_Pos57 := Row_Pos153; end if; -- End opt_code if Or_Pos57 /= No_Token_Index then Row_Pos153 := Or_Pos57; else Row_Pos153 := No_Token_Index; goto Exit_Row153_0; end if; Defer_Res255 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos153); Defer_Pos255 := Parser.Current_Pos; if Defer_Pos255 /= No_Token_Index then Row_Pos153 := Defer_Pos255; else Row_Pos153 := No_Token_Index; goto Exit_Row153_0; end if; -- Start opt_code -- Start tok_code Token_Res251 := Row_Pos153; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res251)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos251 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos153 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos153, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos251 := Row_Pos153 + 1; end if; end; -- End tok_code if Token_Pos251 = No_Token_Index then Token_Res251 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos153)), To_Text ("Missing ';'")); Token_Pos251 := Row_Pos153; end if; -- End opt_code if Token_Pos251 /= No_Token_Index then Row_Pos153 := Token_Pos251; else Row_Pos153 := No_Token_Index; goto Exit_Row153_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos153 /= No_Token_Index then Transform_Res105 := Allocate_Abstract_Formal_Subp_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res105, Kind => Ada_Abstract_Formal_Subp_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos153 = Pos then No_Token_Index else Row_Pos153 - 1)); Initialize_Fields_For_Abstract_Formal_Subp_Decl (Self => Transform_Res105, Classic_Subp_Decl_F_Overriding => Transform_Res104, Classic_Subp_Decl_F_Subp_Spec => Defer_Res251, Formal_Subp_Decl_F_Default_Expr => Or_Res57, Formal_Subp_Decl_F_Aspects => Defer_Res255); if Transform_Res104 /= null and then Is_Incomplete (Transform_Res104) then Transform_Res105.Last_Attempted_Child := 0; elsif Transform_Res104 /= null and then not Is_Ghost (Transform_Res104) then Transform_Res105.Last_Attempted_Child := -1; end if; if Defer_Res251 /= null and then Is_Incomplete (Defer_Res251) then Transform_Res105.Last_Attempted_Child := 0; elsif Defer_Res251 /= null and then not Is_Ghost (Defer_Res251) then Transform_Res105.Last_Attempted_Child := -1; end if; if Or_Res57 /= null and then Is_Incomplete (Or_Res57) then Transform_Res105.Last_Attempted_Child := 0; elsif Or_Res57 /= null and then not Is_Ghost (Or_Res57) then Transform_Res105.Last_Attempted_Child := -1; end if; if Defer_Res255 /= null and then Is_Incomplete (Defer_Res255) then Transform_Res105.Last_Attempted_Child := 0; elsif Defer_Res255 /= null and then not Is_Ghost (Defer_Res255) then Transform_Res105.Last_Attempted_Child := -1; end if; elsif Row_Pos153 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags105); end if; -- End transform_code if Row_Pos153 /= No_Token_Index then Or_Pos59 := Row_Pos153; Or_Res59 := Transform_Res105; goto Exit_Or58; end if; -- Start transform_code Transform_Diags107 := Parser.Diagnostics.Length; -- Start row_code Row_Pos155 := Pos; -- Start tok_code Token_Res252 := Row_Pos155; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res252)); begin if T.Kind /= From_Token_Kind (Ada_With) then Token_Pos252 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos155 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos155, Expected_Token_Id => Ada_With, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos252 := Row_Pos155 + 1; end if; end; -- End tok_code if Token_Pos252 /= No_Token_Index then Row_Pos155 := Token_Pos252; else Row_Pos155 := No_Token_Index; goto Exit_Row155_0; end if; -- Start transform_code Transform_Diags106 := Parser.Diagnostics.Length; -- Start row_code Row_Pos156 := Row_Pos155; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos156 /= No_Token_Index then Transform_Res106 := Allocate_Overriding_Unspecified (Parser.Mem_Pool); Initialize (Self => Transform_Res106, Kind => Ada_Overriding_Unspecified, Unit => Parser.Unit, Token_Start_Index => Row_Pos155, Token_End_Index => (if Row_Pos156 = Row_Pos155 then No_Token_Index else Row_Pos156 - 1)); elsif Row_Pos156 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags106); end if; -- End transform_code if Row_Pos156 /= No_Token_Index then Row_Pos155 := Row_Pos156; else Row_Pos155 := No_Token_Index; goto Exit_Row155_0; end if; Defer_Res256 := Subp_Spec_Transform_Parse2 (Parser, Row_Pos155); Defer_Pos256 := Parser.Current_Pos; if Defer_Pos256 /= No_Token_Index then Row_Pos155 := Defer_Pos256; else Row_Pos155 := No_Token_Index; goto Exit_Row155_0; end if; -- Start opt_code -- Start row_code Row_Pos157 := Row_Pos155; -- Start tok_code Token_Res253 := Row_Pos157; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res253)); begin if T.Kind /= From_Token_Kind (Ada_Is) then Token_Pos253 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos157 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos157, Expected_Token_Id => Ada_Is, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos253 := Row_Pos157 + 1; end if; end; -- End tok_code if Token_Pos253 /= No_Token_Index then Row_Pos157 := Token_Pos253; else Row_Pos157 := No_Token_Index; goto Exit_Row157_0; end if; -- Start or_code Or_Pos58 := No_Token_Index; Or_Res58 := No_Bare_Ada_Node; Defer_Res257 := Box_Expr_Transform_Parse0 (Parser, Row_Pos157); Defer_Pos257 := Parser.Current_Pos; if Defer_Pos257 /= No_Token_Index then Or_Pos58 := Defer_Pos257; Or_Res58 := Defer_Res257; goto Exit_Or60; end if; Defer_Res258 := Name_Or_Parse2 (Parser, Row_Pos157); Defer_Pos258 := Parser.Current_Pos; if Defer_Pos258 /= No_Token_Index then Or_Pos58 := Defer_Pos258; Or_Res58 := Defer_Res258; goto Exit_Or60; end if; Defer_Res259 := Null_Literal_Transform_Parse0 (Parser, Row_Pos157); Defer_Pos259 := Parser.Current_Pos; if Defer_Pos259 /= No_Token_Index then Or_Pos58 := Defer_Pos259; Or_Res58 := Defer_Res259; goto Exit_Or60; end if; <> -- End or_code if Or_Pos58 /= No_Token_Index then Row_Pos157 := Or_Pos58; else Row_Pos157 := No_Token_Index; goto Exit_Row157_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos157 = No_Token_Index then Or_Res58 := No_Bare_Ada_Node; Row_Pos157 := Row_Pos155; end if; -- End opt_code if Row_Pos157 /= No_Token_Index then Row_Pos155 := Row_Pos157; else Row_Pos155 := No_Token_Index; goto Exit_Row155_0; end if; Defer_Res260 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos155); Defer_Pos260 := Parser.Current_Pos; if Defer_Pos260 /= No_Token_Index then Row_Pos155 := Defer_Pos260; else Row_Pos155 := No_Token_Index; goto Exit_Row155_0; end if; -- Start tok_code Token_Res254 := Row_Pos155; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res254)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos254 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos155 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos155, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos254 := Row_Pos155 + 1; end if; end; -- End tok_code if Token_Pos254 /= No_Token_Index then Row_Pos155 := Token_Pos254; else Row_Pos155 := No_Token_Index; goto Exit_Row155_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos155 /= No_Token_Index then Transform_Res107 := Allocate_Concrete_Formal_Subp_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res107, Kind => Ada_Concrete_Formal_Subp_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos155 = Pos then No_Token_Index else Row_Pos155 - 1)); Initialize_Fields_For_Concrete_Formal_Subp_Decl (Self => Transform_Res107, Classic_Subp_Decl_F_Overriding => Transform_Res106, Classic_Subp_Decl_F_Subp_Spec => Defer_Res256, Formal_Subp_Decl_F_Default_Expr => Or_Res58, Formal_Subp_Decl_F_Aspects => Defer_Res260); if Transform_Res106 /= null and then Is_Incomplete (Transform_Res106) then Transform_Res107.Last_Attempted_Child := 0; elsif Transform_Res106 /= null and then not Is_Ghost (Transform_Res106) then Transform_Res107.Last_Attempted_Child := -1; end if; if Defer_Res256 /= null and then Is_Incomplete (Defer_Res256) then Transform_Res107.Last_Attempted_Child := 0; elsif Defer_Res256 /= null and then not Is_Ghost (Defer_Res256) then Transform_Res107.Last_Attempted_Child := -1; end if; if Or_Res58 /= null and then Is_Incomplete (Or_Res58) then Transform_Res107.Last_Attempted_Child := 0; elsif Or_Res58 /= null and then not Is_Ghost (Or_Res58) then Transform_Res107.Last_Attempted_Child := -1; end if; if Defer_Res260 /= null and then Is_Incomplete (Defer_Res260) then Transform_Res107.Last_Attempted_Child := 0; elsif Defer_Res260 /= null and then not Is_Ghost (Defer_Res260) then Transform_Res107.Last_Attempted_Child := -1; end if; elsif Row_Pos155 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags107); end if; -- End transform_code if Row_Pos155 /= No_Token_Index then Or_Pos59 := Row_Pos155; Or_Res59 := Transform_Res107; goto Exit_Or58; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Formal_Subp_Decl_Or_Parse2_Memo, Or_Pos59 /= No_Token_Index, Or_Res59, Pos, Or_Pos59); Parser.Current_Pos := Or_Pos59; return Or_Res59; end Formal_Subp_Decl_Or_Parse2; function Formal_Type_Decl_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Type_Decl is use Bare_Base_Type_Decl_Memos; Row_Pos158 : Token_Index := No_Token_Index; Token_Pos255 : Token_Index := No_Token_Index; Token_Res255 : Token_Index := No_Token_Index; Defer_Pos261 : Token_Index := No_Token_Index; Defer_Res261 : Bare_Defining_Name := No_Bare_Ada_Node; Defer_Pos262 : Token_Index := No_Token_Index; Defer_Res262 : Bare_Discriminant_Part := No_Bare_Ada_Node; Token_Pos256 : Token_Index := No_Token_Index; Token_Res256 : Token_Index := No_Token_Index; Defer_Pos263 : Token_Index := No_Token_Index; Defer_Res263 : Bare_Type_Def := No_Bare_Ada_Node; Row_Pos159 : Token_Index := No_Token_Index; Token_Pos257 : Token_Index := No_Token_Index; Token_Res257 : Token_Index := No_Token_Index; Opt_Res17 : Bare_Abstract_Node := No_Bare_Ada_Node; Token_Pos258 : Token_Index := No_Token_Index; Token_Res258 : Token_Index := No_Token_Index; Opt_Res18 : Bare_Tagged_Node := No_Bare_Ada_Node; Token_Pos259 : Token_Index := No_Token_Index; Token_Res259 : Token_Index := No_Token_Index; Opt_Res19 : Bare_Limited_Node := No_Bare_Ada_Node; Token_Pos260 : Token_Index := No_Token_Index; Token_Res260 : Token_Index := No_Token_Index; Transform_Res108 : Bare_Private_Type_Def := No_Bare_Ada_Node; Transform_Diags108 : Ada.Containers.Count_Type; Or_Pos60 : Token_Index := No_Token_Index; Or_Res60 : Bare_Type_Def := No_Bare_Ada_Node; Row_Pos160 : Token_Index := No_Token_Index; Token_Pos261 : Token_Index := No_Token_Index; Token_Res261 : Token_Index := No_Token_Index; Token_Pos262 : Token_Index := No_Token_Index; Token_Res262 : Token_Index := No_Token_Index; Defer_Pos264 : Token_Index := No_Token_Index; Defer_Res264 : Bare_Name := No_Bare_Ada_Node; Defer_Pos265 : Token_Index := No_Token_Index; Defer_Res265 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos263 : Token_Index := No_Token_Index; Token_Res263 : Token_Index := No_Token_Index; Transform_Res109 : Bare_Formal_Type_Decl := No_Bare_Ada_Node; Transform_Diags109 : Ada.Containers.Count_Type; Row_Pos161 : Token_Index := No_Token_Index; Token_Pos264 : Token_Index := No_Token_Index; Token_Res264 : Token_Index := No_Token_Index; Defer_Pos266 : Token_Index := No_Token_Index; Defer_Res266 : Bare_Defining_Name := No_Bare_Ada_Node; Defer_Pos267 : Token_Index := No_Token_Index; Defer_Res267 : Bare_Discriminant_Part := No_Bare_Ada_Node; Row_Pos162 : Token_Index := No_Token_Index; Token_Pos265 : Token_Index := No_Token_Index; Token_Res265 : Token_Index := No_Token_Index; Token_Pos266 : Token_Index := No_Token_Index; Token_Res266 : Token_Index := No_Token_Index; Opt_Res20 : Bare_Tagged_Node := No_Bare_Ada_Node; Row_Pos163 : Token_Index := No_Token_Index; Token_Pos267 : Token_Index := No_Token_Index; Token_Res267 : Token_Index := No_Token_Index; Token_Pos268 : Token_Index := No_Token_Index; Token_Res268 : Token_Index := No_Token_Index; Defer_Pos268 : Token_Index := No_Token_Index; Defer_Res268 : Bare_Name := No_Bare_Ada_Node; Token_Pos269 : Token_Index := No_Token_Index; Token_Res269 : Token_Index := No_Token_Index; Transform_Res110 : Bare_Incomplete_Formal_Type_Decl := No_Bare_Ada_Node; Transform_Diags110 : Ada.Containers.Count_Type; Or_Pos61 : Token_Index := No_Token_Index; Or_Res61 : Bare_Base_Type_Decl := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Formal_Type_Decl_Or_Parse1_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res61 := M.Instance; return Or_Res61; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res61; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos61 := No_Token_Index; Or_Res61 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags109 := Parser.Diagnostics.Length; -- Start row_code Row_Pos158 := Pos; -- Start tok_code Token_Res255 := Row_Pos158; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res255)); begin if T.Kind /= From_Token_Kind (Ada_Type) then Token_Pos255 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos158 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos158, Expected_Token_Id => Ada_Type, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos255 := Row_Pos158 + 1; end if; end; -- End tok_code if Token_Pos255 /= No_Token_Index then Row_Pos158 := Token_Pos255; else Row_Pos158 := No_Token_Index; goto Exit_Row158_0; end if; Defer_Res261 := Defining_Id_Transform_Parse0 (Parser, Row_Pos158); Defer_Pos261 := Parser.Current_Pos; if Defer_Pos261 /= No_Token_Index then Row_Pos158 := Defer_Pos261; else Row_Pos158 := No_Token_Index; goto Exit_Row158_0; end if; -- Start opt_code Defer_Res262 := Discriminant_Part_Or_Parse0 (Parser, Row_Pos158); Defer_Pos262 := Parser.Current_Pos; if Defer_Pos262 = No_Token_Index then Defer_Res262 := No_Bare_Ada_Node; Defer_Pos262 := Row_Pos158; end if; -- End opt_code if Defer_Pos262 /= No_Token_Index then Row_Pos158 := Defer_Pos262; else Row_Pos158 := No_Token_Index; goto Exit_Row158_0; end if; -- Start tok_code Token_Res256 := Row_Pos158; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res256)); begin if T.Kind /= From_Token_Kind (Ada_Is) then Token_Pos256 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos158 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos158, Expected_Token_Id => Ada_Is, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos256 := Row_Pos158 + 1; end if; end; -- End tok_code if Token_Pos256 /= No_Token_Index then Row_Pos158 := Token_Pos256; else Row_Pos158 := No_Token_Index; goto Exit_Row158_0; end if; -- Start or_code Or_Pos60 := No_Token_Index; Or_Res60 := No_Bare_Ada_Node; Defer_Res263 := Type_Def_Or_Parse0 (Parser, Row_Pos158); Defer_Pos263 := Parser.Current_Pos; if Defer_Pos263 /= No_Token_Index then Or_Pos60 := Defer_Pos263; Or_Res60 := Defer_Res263; goto Exit_Or62; end if; -- Start transform_code Transform_Diags108 := Parser.Diagnostics.Length; -- Start row_code Row_Pos159 := Row_Pos158; -- Start opt_code -- Start tok_code Token_Res257 := Row_Pos159; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res257)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Abstract) then Token_Pos257 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos159 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos159, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos257 := Row_Pos159 + 1; end if; end; -- End tok_code if Token_Pos257 = No_Token_Index then Opt_Res17 := Allocate_Abstract_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res17, Kind => Ada_Abstract_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos159, Token_End_Index => No_Token_Index); Token_Pos257 := Row_Pos159; else Opt_Res17 := Allocate_Abstract_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res17, Kind => Ada_Abstract_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos159, Token_End_Index => Token_Pos257 - 1); end if; -- End opt_code if Token_Pos257 /= No_Token_Index then Row_Pos159 := Token_Pos257; else Row_Pos159 := No_Token_Index; goto Exit_Row159_0; end if; -- Start opt_code -- Start tok_code Token_Res258 := Row_Pos159; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res258)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Tagged) then Token_Pos258 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos159 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos159, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos258 := Row_Pos159 + 1; end if; end; -- End tok_code if Token_Pos258 = No_Token_Index then Opt_Res18 := Allocate_Tagged_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res18, Kind => Ada_Tagged_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos159, Token_End_Index => No_Token_Index); Token_Pos258 := Row_Pos159; else Opt_Res18 := Allocate_Tagged_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res18, Kind => Ada_Tagged_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos159, Token_End_Index => Token_Pos258 - 1); end if; -- End opt_code if Token_Pos258 /= No_Token_Index then Row_Pos159 := Token_Pos258; else Row_Pos159 := No_Token_Index; goto Exit_Row159_0; end if; -- Start opt_code -- Start tok_code Token_Res259 := Row_Pos159; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res259)); begin if T.Kind /= From_Token_Kind (Ada_Limited) then Token_Pos259 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos159 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos159, Expected_Token_Id => Ada_Limited, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos259 := Row_Pos159 + 1; end if; end; -- End tok_code if Token_Pos259 = No_Token_Index then Opt_Res19 := Allocate_Limited_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res19, Kind => Ada_Limited_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos159, Token_End_Index => No_Token_Index); Token_Pos259 := Row_Pos159; else Opt_Res19 := Allocate_Limited_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res19, Kind => Ada_Limited_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos159, Token_End_Index => Token_Pos259 - 1); end if; -- End opt_code if Token_Pos259 /= No_Token_Index then Row_Pos159 := Token_Pos259; else Row_Pos159 := No_Token_Index; goto Exit_Row159_0; end if; -- Start tok_code Token_Res260 := Row_Pos159; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res260)); begin if T.Kind /= From_Token_Kind (Ada_Private) then Token_Pos260 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos159 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos159, Expected_Token_Id => Ada_Private, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos260 := Row_Pos159 + 1; end if; end; -- End tok_code if Token_Pos260 /= No_Token_Index then Row_Pos159 := Token_Pos260; else Row_Pos159 := No_Token_Index; goto Exit_Row159_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos159 /= No_Token_Index then Transform_Res108 := Allocate_Private_Type_Def (Parser.Mem_Pool); Initialize (Self => Transform_Res108, Kind => Ada_Private_Type_Def, Unit => Parser.Unit, Token_Start_Index => Row_Pos158, Token_End_Index => (if Row_Pos159 = Row_Pos158 then No_Token_Index else Row_Pos159 - 1)); Initialize_Fields_For_Private_Type_Def (Self => Transform_Res108, Private_Type_Def_F_Has_Abstract => Opt_Res17, Private_Type_Def_F_Has_Tagged => Opt_Res18, Private_Type_Def_F_Has_Limited => Opt_Res19); if Opt_Res17 /= null and then Is_Incomplete (Opt_Res17) then Transform_Res108.Last_Attempted_Child := 0; elsif Opt_Res17 /= null and then not Is_Ghost (Opt_Res17) then Transform_Res108.Last_Attempted_Child := -1; end if; if Opt_Res18 /= null and then Is_Incomplete (Opt_Res18) then Transform_Res108.Last_Attempted_Child := 0; elsif Opt_Res18 /= null and then not Is_Ghost (Opt_Res18) then Transform_Res108.Last_Attempted_Child := -1; end if; if Opt_Res19 /= null and then Is_Incomplete (Opt_Res19) then Transform_Res108.Last_Attempted_Child := 0; elsif Opt_Res19 /= null and then not Is_Ghost (Opt_Res19) then Transform_Res108.Last_Attempted_Child := -1; end if; elsif Row_Pos159 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags108); end if; -- End transform_code if Row_Pos159 /= No_Token_Index then Or_Pos60 := Row_Pos159; Or_Res60 := Transform_Res108; goto Exit_Or62; end if; <> -- End or_code if Or_Pos60 /= No_Token_Index then Row_Pos158 := Or_Pos60; else Row_Pos158 := No_Token_Index; goto Exit_Row158_0; end if; -- Start opt_code -- Start row_code Row_Pos160 := Row_Pos158; -- Start tok_code Token_Res261 := Row_Pos160; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res261)); begin if T.Kind /= From_Token_Kind (Ada_Or) then Token_Pos261 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos160 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos160, Expected_Token_Id => Ada_Or, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos261 := Row_Pos160 + 1; end if; end; -- End tok_code if Token_Pos261 /= No_Token_Index then Row_Pos160 := Token_Pos261; else Row_Pos160 := No_Token_Index; goto Exit_Row160_0; end if; -- Start tok_code Token_Res262 := Row_Pos160; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res262)); begin if T.Kind /= From_Token_Kind (Ada_Use) then Token_Pos262 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos160 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos160, Expected_Token_Id => Ada_Use, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos262 := Row_Pos160 + 1; end if; end; -- End tok_code if Token_Pos262 /= No_Token_Index then Row_Pos160 := Token_Pos262; else Row_Pos160 := No_Token_Index; goto Exit_Row160_0; end if; Defer_Res264 := Name_Or_Parse2 (Parser, Row_Pos160); Defer_Pos264 := Parser.Current_Pos; if Defer_Pos264 /= No_Token_Index then Row_Pos160 := Defer_Pos264; else Row_Pos160 := No_Token_Index; goto Exit_Row160_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos160 = No_Token_Index then Defer_Res264 := No_Bare_Ada_Node; Row_Pos160 := Row_Pos158; end if; -- End opt_code if Row_Pos160 /= No_Token_Index then Row_Pos158 := Row_Pos160; else Row_Pos158 := No_Token_Index; goto Exit_Row158_0; end if; Defer_Res265 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos158); Defer_Pos265 := Parser.Current_Pos; if Defer_Pos265 /= No_Token_Index then Row_Pos158 := Defer_Pos265; else Row_Pos158 := No_Token_Index; goto Exit_Row158_0; end if; -- Start opt_code -- Start tok_code Token_Res263 := Row_Pos158; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res263)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos263 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos158 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos158, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos263 := Row_Pos158 + 1; end if; end; -- End tok_code if Token_Pos263 = No_Token_Index then Token_Res263 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos158)), To_Text ("Missing ';'")); Token_Pos263 := Row_Pos158; end if; -- End opt_code if Token_Pos263 /= No_Token_Index then Row_Pos158 := Token_Pos263; else Row_Pos158 := No_Token_Index; goto Exit_Row158_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos158 /= No_Token_Index then Transform_Res109 := Allocate_Formal_Type_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res109, Kind => Ada_Formal_Type_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos158 = Pos then No_Token_Index else Row_Pos158 - 1)); Initialize_Fields_For_Formal_Type_Decl (Self => Transform_Res109, Base_Type_Decl_F_Name => Defer_Res261, Type_Decl_F_Discriminants => Defer_Res262, Type_Decl_F_Type_Def => Or_Res60, Formal_Type_Decl_F_Default_Type => Defer_Res264, Formal_Type_Decl_F_Aspects => Defer_Res265); if Defer_Res261 /= null and then Is_Incomplete (Defer_Res261) then Transform_Res109.Last_Attempted_Child := 0; elsif Defer_Res261 /= null and then not Is_Ghost (Defer_Res261) then Transform_Res109.Last_Attempted_Child := -1; end if; if Defer_Res262 /= null and then Is_Incomplete (Defer_Res262) then Transform_Res109.Last_Attempted_Child := 0; elsif Defer_Res262 /= null and then not Is_Ghost (Defer_Res262) then Transform_Res109.Last_Attempted_Child := -1; end if; if Or_Res60 /= null and then Is_Incomplete (Or_Res60) then Transform_Res109.Last_Attempted_Child := 0; elsif Or_Res60 /= null and then not Is_Ghost (Or_Res60) then Transform_Res109.Last_Attempted_Child := -1; end if; if Defer_Res264 /= null and then Is_Incomplete (Defer_Res264) then Transform_Res109.Last_Attempted_Child := 0; elsif Defer_Res264 /= null and then not Is_Ghost (Defer_Res264) then Transform_Res109.Last_Attempted_Child := -1; end if; if Defer_Res265 /= null and then Is_Incomplete (Defer_Res265) then Transform_Res109.Last_Attempted_Child := 0; elsif Defer_Res265 /= null and then not Is_Ghost (Defer_Res265) then Transform_Res109.Last_Attempted_Child := -1; end if; elsif Row_Pos158 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags109); end if; -- End transform_code if Row_Pos158 /= No_Token_Index then Or_Pos61 := Row_Pos158; Or_Res61 := Transform_Res109; goto Exit_Or61; end if; -- Start transform_code Transform_Diags110 := Parser.Diagnostics.Length; -- Start row_code Row_Pos161 := Pos; -- Start tok_code Token_Res264 := Row_Pos161; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res264)); begin if T.Kind /= From_Token_Kind (Ada_Type) then Token_Pos264 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos161 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos161, Expected_Token_Id => Ada_Type, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos264 := Row_Pos161 + 1; end if; end; -- End tok_code if Token_Pos264 /= No_Token_Index then Row_Pos161 := Token_Pos264; else Row_Pos161 := No_Token_Index; goto Exit_Row161_0; end if; Defer_Res266 := Defining_Id_Transform_Parse0 (Parser, Row_Pos161); Defer_Pos266 := Parser.Current_Pos; if Defer_Pos266 /= No_Token_Index then Row_Pos161 := Defer_Pos266; else Row_Pos161 := No_Token_Index; goto Exit_Row161_0; end if; -- Start opt_code Defer_Res267 := Discriminant_Part_Or_Parse0 (Parser, Row_Pos161); Defer_Pos267 := Parser.Current_Pos; if Defer_Pos267 = No_Token_Index then Defer_Res267 := No_Bare_Ada_Node; Defer_Pos267 := Row_Pos161; end if; -- End opt_code if Defer_Pos267 /= No_Token_Index then Row_Pos161 := Defer_Pos267; else Row_Pos161 := No_Token_Index; goto Exit_Row161_0; end if; -- Start opt_code -- Start row_code Row_Pos162 := Row_Pos161; -- Start tok_code Token_Res265 := Row_Pos162; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res265)); begin if T.Kind /= From_Token_Kind (Ada_Is) then Token_Pos265 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos162 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos162, Expected_Token_Id => Ada_Is, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos265 := Row_Pos162 + 1; end if; end; -- End tok_code if Token_Pos265 /= No_Token_Index then Row_Pos162 := Token_Pos265; else Row_Pos162 := No_Token_Index; goto Exit_Row162_0; end if; -- Start opt_code -- Start tok_code Token_Res266 := Row_Pos162; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res266)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Tagged) then Token_Pos266 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos162 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos162, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos266 := Row_Pos162 + 1; end if; end; -- End tok_code if Token_Pos266 = No_Token_Index then Opt_Res20 := Allocate_Tagged_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res20, Kind => Ada_Tagged_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos162, Token_End_Index => No_Token_Index); Token_Pos266 := Row_Pos162; else Opt_Res20 := Allocate_Tagged_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res20, Kind => Ada_Tagged_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos162, Token_End_Index => Token_Pos266 - 1); end if; -- End opt_code if Token_Pos266 /= No_Token_Index then Row_Pos162 := Token_Pos266; else Row_Pos162 := No_Token_Index; goto Exit_Row162_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos162 = No_Token_Index then Opt_Res20 := No_Bare_Ada_Node; Row_Pos162 := Row_Pos161; end if; -- End opt_code if Row_Pos162 /= No_Token_Index then Row_Pos161 := Row_Pos162; else Row_Pos161 := No_Token_Index; goto Exit_Row161_0; end if; -- Start opt_code -- Start row_code Row_Pos163 := Row_Pos161; -- Start tok_code Token_Res267 := Row_Pos163; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res267)); begin if T.Kind /= From_Token_Kind (Ada_Or) then Token_Pos267 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos163 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos163, Expected_Token_Id => Ada_Or, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos267 := Row_Pos163 + 1; end if; end; -- End tok_code if Token_Pos267 /= No_Token_Index then Row_Pos163 := Token_Pos267; else Row_Pos163 := No_Token_Index; goto Exit_Row163_0; end if; -- Start tok_code Token_Res268 := Row_Pos163; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res268)); begin if T.Kind /= From_Token_Kind (Ada_Use) then Token_Pos268 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos163 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos163, Expected_Token_Id => Ada_Use, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos268 := Row_Pos163 + 1; end if; end; -- End tok_code if Token_Pos268 /= No_Token_Index then Row_Pos163 := Token_Pos268; else Row_Pos163 := No_Token_Index; goto Exit_Row163_0; end if; Defer_Res268 := Name_Or_Parse2 (Parser, Row_Pos163); Defer_Pos268 := Parser.Current_Pos; if Defer_Pos268 /= No_Token_Index then Row_Pos163 := Defer_Pos268; else Row_Pos163 := No_Token_Index; goto Exit_Row163_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos163 = No_Token_Index then Defer_Res268 := No_Bare_Ada_Node; Row_Pos163 := Row_Pos161; end if; -- End opt_code if Row_Pos163 /= No_Token_Index then Row_Pos161 := Row_Pos163; else Row_Pos161 := No_Token_Index; goto Exit_Row161_0; end if; -- Start tok_code Token_Res269 := Row_Pos161; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res269)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos269 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos161 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos161, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos269 := Row_Pos161 + 1; end if; end; -- End tok_code if Token_Pos269 /= No_Token_Index then Row_Pos161 := Token_Pos269; else Row_Pos161 := No_Token_Index; goto Exit_Row161_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos161 /= No_Token_Index then Transform_Res110 := Allocate_Incomplete_Formal_Type_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res110, Kind => Ada_Incomplete_Formal_Type_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos161 = Pos then No_Token_Index else Row_Pos161 - 1)); Initialize_Fields_For_Incomplete_Formal_Type_Decl (Self => Transform_Res110, Base_Type_Decl_F_Name => Defer_Res266, Incomplete_Type_Decl_F_Discriminants => Defer_Res267, Incomplete_Formal_Type_Decl_F_Is_Tagged => Opt_Res20, Incomplete_Formal_Type_Decl_F_Default_Type => Defer_Res268); if Defer_Res266 /= null and then Is_Incomplete (Defer_Res266) then Transform_Res110.Last_Attempted_Child := 0; elsif Defer_Res266 /= null and then not Is_Ghost (Defer_Res266) then Transform_Res110.Last_Attempted_Child := -1; end if; if Defer_Res267 /= null and then Is_Incomplete (Defer_Res267) then Transform_Res110.Last_Attempted_Child := 0; elsif Defer_Res267 /= null and then not Is_Ghost (Defer_Res267) then Transform_Res110.Last_Attempted_Child := -1; end if; if Opt_Res20 /= null and then Is_Incomplete (Opt_Res20) then Transform_Res110.Last_Attempted_Child := 0; elsif Opt_Res20 /= null and then not Is_Ghost (Opt_Res20) then Transform_Res110.Last_Attempted_Child := -1; end if; if Defer_Res268 /= null and then Is_Incomplete (Defer_Res268) then Transform_Res110.Last_Attempted_Child := 0; elsif Defer_Res268 /= null and then not Is_Ghost (Defer_Res268) then Transform_Res110.Last_Attempted_Child := -1; end if; elsif Row_Pos161 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags110); end if; -- End transform_code if Row_Pos161 /= No_Token_Index then Or_Pos61 := Row_Pos161; Or_Res61 := Transform_Res110; goto Exit_Or61; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Formal_Type_Decl_Or_Parse1_Memo, Or_Pos61 /= No_Token_Index, Or_Res61, Pos, Or_Pos61); Parser.Current_Pos := Or_Pos61; return Or_Res61; end Formal_Type_Decl_Or_Parse1; function Generic_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Generic_Decl is use Bare_Generic_Decl_Memos; Row_Pos164 : Token_Index := No_Token_Index; Defer_Pos269 : Token_Index := No_Token_Index; Defer_Res269 : Bare_Generic_Formal_Part := No_Bare_Ada_Node; Row_Pos165 : Token_Index := No_Token_Index; Defer_Pos270 : Token_Index := No_Token_Index; Defer_Res270 : Bare_Subp_Spec := No_Bare_Ada_Node; Defer_Pos271 : Token_Index := No_Token_Index; Defer_Res271 : Bare_Aspect_Spec := No_Bare_Ada_Node; Transform_Res111 : Bare_Generic_Subp_Internal := No_Bare_Ada_Node; Transform_Diags111 : Ada.Containers.Count_Type; Token_Pos270 : Token_Index := No_Token_Index; Token_Res270 : Token_Index := No_Token_Index; Transform_Res112 : Bare_Generic_Subp_Decl := No_Bare_Ada_Node; Transform_Diags112 : Ada.Containers.Count_Type; Row_Pos166 : Token_Index := No_Token_Index; Defer_Pos272 : Token_Index := No_Token_Index; Defer_Res272 : Bare_Generic_Formal_Part := No_Bare_Ada_Node; Row_Pos167 : Token_Index := No_Token_Index; Token_Pos271 : Token_Index := No_Token_Index; Token_Res271 : Token_Index := No_Token_Index; Defer_Pos273 : Token_Index := No_Token_Index; Defer_Res273 : Bare_Defining_Name := No_Bare_Ada_Node; Defer_Pos274 : Token_Index := No_Token_Index; Defer_Res274 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos272 : Token_Index := No_Token_Index; Token_Res272 : Token_Index := No_Token_Index; Row_Pos168 : Token_Index := No_Token_Index; Defer_Pos275 : Token_Index := No_Token_Index; Defer_Res275 : Bare_Ada_Node_List := No_Bare_Ada_Node; Transform_Res113 : Bare_Public_Part := No_Bare_Ada_Node; Transform_Diags113 : Ada.Containers.Count_Type; Row_Pos169 : Token_Index := No_Token_Index; Token_Pos273 : Token_Index := No_Token_Index; Token_Res273 : Token_Index := No_Token_Index; Row_Pos170 : Token_Index := No_Token_Index; Defer_Pos276 : Token_Index := No_Token_Index; Defer_Res276 : Bare_Ada_Node_List := No_Bare_Ada_Node; Transform_Res114 : Bare_Private_Part := No_Bare_Ada_Node; Transform_Diags114 : Ada.Containers.Count_Type; Row_Pos171 : Token_Index := No_Token_Index; Token_Pos274 : Token_Index := No_Token_Index; Token_Res274 : Token_Index := No_Token_Index; Row_Pos172 : Token_Index := No_Token_Index; Defer_Pos277 : Token_Index := No_Token_Index; Defer_Res277 : Bare_Name := No_Bare_Ada_Node; Transform_Res115 : Bare_End_Name := No_Bare_Ada_Node; Transform_Diags115 : Ada.Containers.Count_Type; Token_Pos275 : Token_Index := No_Token_Index; Token_Res275 : Token_Index := No_Token_Index; Transform_Res116 : Bare_Generic_Package_Internal := No_Bare_Ada_Node; Transform_Diags116 : Ada.Containers.Count_Type; Transform_Res117 : Bare_Generic_Package_Decl := No_Bare_Ada_Node; Transform_Diags117 : Ada.Containers.Count_Type; Or_Pos62 : Token_Index := No_Token_Index; Or_Res62 : Bare_Generic_Decl := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Generic_Decl_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res62 := M.Instance; return Or_Res62; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res62; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos62 := No_Token_Index; Or_Res62 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags112 := Parser.Diagnostics.Length; -- Start row_code Row_Pos164 := Pos; Defer_Res269 := Generic_Formal_Part_Transform_Parse0 (Parser, Row_Pos164); Defer_Pos269 := Parser.Current_Pos; if Defer_Pos269 /= No_Token_Index then Row_Pos164 := Defer_Pos269; else Row_Pos164 := No_Token_Index; goto Exit_Row164_0; end if; -- Start transform_code Transform_Diags111 := Parser.Diagnostics.Length; -- Start row_code Row_Pos165 := Row_Pos164; Defer_Res270 := Subp_Spec_Transform_Parse2 (Parser, Row_Pos165); Defer_Pos270 := Parser.Current_Pos; if Defer_Pos270 /= No_Token_Index then Row_Pos165 := Defer_Pos270; else Row_Pos165 := No_Token_Index; goto Exit_Row165_0; end if; Defer_Res271 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos165); Defer_Pos271 := Parser.Current_Pos; if Defer_Pos271 /= No_Token_Index then Row_Pos165 := Defer_Pos271; else Row_Pos165 := No_Token_Index; goto Exit_Row165_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos165 /= No_Token_Index then Transform_Res111 := Allocate_Generic_Subp_Internal (Parser.Mem_Pool); Initialize (Self => Transform_Res111, Kind => Ada_Generic_Subp_Internal, Unit => Parser.Unit, Token_Start_Index => Row_Pos164, Token_End_Index => (if Row_Pos165 = Row_Pos164 then No_Token_Index else Row_Pos165 - 1)); Initialize_Fields_For_Generic_Subp_Internal (Self => Transform_Res111, Generic_Subp_Internal_F_Subp_Spec => Defer_Res270, Generic_Subp_Internal_F_Aspects => Defer_Res271); if Defer_Res270 /= null and then Is_Incomplete (Defer_Res270) then Transform_Res111.Last_Attempted_Child := 0; elsif Defer_Res270 /= null and then not Is_Ghost (Defer_Res270) then Transform_Res111.Last_Attempted_Child := -1; end if; if Defer_Res271 /= null and then Is_Incomplete (Defer_Res271) then Transform_Res111.Last_Attempted_Child := 0; elsif Defer_Res271 /= null and then not Is_Ghost (Defer_Res271) then Transform_Res111.Last_Attempted_Child := -1; end if; elsif Row_Pos165 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags111); end if; -- End transform_code if Row_Pos165 /= No_Token_Index then Row_Pos164 := Row_Pos165; else Row_Pos164 := No_Token_Index; goto Exit_Row164_0; end if; -- Start opt_code -- Start tok_code Token_Res270 := Row_Pos164; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res270)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos270 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos164 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos164, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos270 := Row_Pos164 + 1; end if; end; -- End tok_code if Token_Pos270 = No_Token_Index then Token_Res270 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos164)), To_Text ("Missing ';'")); Token_Pos270 := Row_Pos164; end if; -- End opt_code if Token_Pos270 /= No_Token_Index then Row_Pos164 := Token_Pos270; else Row_Pos164 := No_Token_Index; goto Exit_Row164_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos164 /= No_Token_Index then Transform_Res112 := Allocate_Generic_Subp_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res112, Kind => Ada_Generic_Subp_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos164 = Pos then No_Token_Index else Row_Pos164 - 1)); Initialize_Fields_For_Generic_Subp_Decl (Self => Transform_Res112, Generic_Decl_F_Formal_Part => Defer_Res269, Generic_Subp_Decl_F_Subp_Decl => Transform_Res111); if Defer_Res269 /= null and then Is_Incomplete (Defer_Res269) then Transform_Res112.Last_Attempted_Child := 0; elsif Defer_Res269 /= null and then not Is_Ghost (Defer_Res269) then Transform_Res112.Last_Attempted_Child := -1; end if; if Transform_Res111 /= null and then Is_Incomplete (Transform_Res111) then Transform_Res112.Last_Attempted_Child := 0; elsif Transform_Res111 /= null and then not Is_Ghost (Transform_Res111) then Transform_Res112.Last_Attempted_Child := -1; end if; elsif Row_Pos164 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags112); end if; -- End transform_code if Row_Pos164 /= No_Token_Index then Or_Pos62 := Row_Pos164; Or_Res62 := Transform_Res112; goto Exit_Or63; end if; -- Start transform_code Transform_Diags117 := Parser.Diagnostics.Length; -- Start row_code Row_Pos166 := Pos; Defer_Res272 := Generic_Formal_Part_Transform_Parse0 (Parser, Row_Pos166); Defer_Pos272 := Parser.Current_Pos; if Defer_Pos272 /= No_Token_Index then Row_Pos166 := Defer_Pos272; else Row_Pos166 := No_Token_Index; goto Exit_Row166_0; end if; -- Start transform_code Transform_Diags116 := Parser.Diagnostics.Length; -- Start row_code Row_Pos167 := Row_Pos166; -- Start tok_code Token_Res271 := Row_Pos167; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res271)); begin if T.Kind /= From_Token_Kind (Ada_Package) then Token_Pos271 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos167 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos167, Expected_Token_Id => Ada_Package, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos271 := Row_Pos167 + 1; end if; end; -- End tok_code if Token_Pos271 /= No_Token_Index then Row_Pos167 := Token_Pos271; else Row_Pos167 := No_Token_Index; goto Exit_Row167_0; end if; Defer_Res273 := Defining_Name_Transform_Parse0 (Parser, Row_Pos167); Defer_Pos273 := Parser.Current_Pos; if Defer_Pos273 /= No_Token_Index then Row_Pos167 := Defer_Pos273; else Row_Pos167 := No_Token_Index; goto Exit_Row167_0; end if; Defer_Res274 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos167); Defer_Pos274 := Parser.Current_Pos; if Defer_Pos274 /= No_Token_Index then Row_Pos167 := Defer_Pos274; else Row_Pos167 := No_Token_Index; goto Exit_Row167_0; end if; -- Start tok_code Token_Res272 := Row_Pos167; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res272)); begin if T.Kind /= From_Token_Kind (Ada_Is) then Token_Pos272 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos167 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos167, Expected_Token_Id => Ada_Is, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos272 := Row_Pos167 + 1; end if; end; -- End tok_code if Token_Pos272 /= No_Token_Index then Row_Pos167 := Token_Pos272; else Row_Pos167 := No_Token_Index; goto Exit_Row167_0; end if; -- Start transform_code Transform_Diags113 := Parser.Diagnostics.Length; -- Start row_code Row_Pos168 := Row_Pos167; Parser.Private_Part.Dont_Skip.Append (Dontskip_Generic_Decl0_Extract_Parse0'Access); Defer_Res275 := Basic_Decls_List_Parse0 (Parser, Row_Pos168); Defer_Pos275 := Parser.Current_Pos; Parser.Private_Part.Dont_Skip.Delete_Last; if Defer_Pos275 /= No_Token_Index then Row_Pos168 := Defer_Pos275; else Row_Pos168 := No_Token_Index; goto Exit_Row168_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos168 /= No_Token_Index then Transform_Res113 := Allocate_Public_Part (Parser.Mem_Pool); Initialize (Self => Transform_Res113, Kind => Ada_Public_Part, Unit => Parser.Unit, Token_Start_Index => Row_Pos167, Token_End_Index => (if Row_Pos168 = Row_Pos167 then No_Token_Index else Row_Pos168 - 1)); Initialize_Fields_For_Public_Part (Self => Transform_Res113, Declarative_Part_F_Decls => Defer_Res275); if Defer_Res275 /= null and then Is_Incomplete (Defer_Res275) then Transform_Res113.Last_Attempted_Child := 0; elsif Defer_Res275 /= null and then not Is_Ghost (Defer_Res275) then Transform_Res113.Last_Attempted_Child := -1; end if; elsif Row_Pos168 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags113); end if; -- End transform_code if Row_Pos168 /= No_Token_Index then Row_Pos167 := Row_Pos168; else Row_Pos167 := No_Token_Index; goto Exit_Row167_0; end if; -- Start opt_code -- Start row_code Row_Pos169 := Row_Pos167; -- Start tok_code Token_Res273 := Row_Pos169; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res273)); begin if T.Kind /= From_Token_Kind (Ada_Private) then Token_Pos273 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos169 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos169, Expected_Token_Id => Ada_Private, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos273 := Row_Pos169 + 1; end if; end; -- End tok_code if Token_Pos273 /= No_Token_Index then Row_Pos169 := Token_Pos273; else Row_Pos169 := No_Token_Index; goto Exit_Row169_0; end if; -- Start transform_code Transform_Diags114 := Parser.Diagnostics.Length; -- Start row_code Row_Pos170 := Row_Pos169; Parser.Private_Part.Dont_Skip.Append (Dontskip_Generic_Decl1_Extract_Parse0'Access); Defer_Res276 := Basic_Decls_List_Parse0 (Parser, Row_Pos170); Defer_Pos276 := Parser.Current_Pos; Parser.Private_Part.Dont_Skip.Delete_Last; if Defer_Pos276 /= No_Token_Index then Row_Pos170 := Defer_Pos276; else Row_Pos170 := No_Token_Index; goto Exit_Row170_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos170 /= No_Token_Index then Transform_Res114 := Allocate_Private_Part (Parser.Mem_Pool); Initialize (Self => Transform_Res114, Kind => Ada_Private_Part, Unit => Parser.Unit, Token_Start_Index => Row_Pos169, Token_End_Index => (if Row_Pos170 = Row_Pos169 then No_Token_Index else Row_Pos170 - 1)); Initialize_Fields_For_Private_Part (Self => Transform_Res114, Declarative_Part_F_Decls => Defer_Res276); if Defer_Res276 /= null and then Is_Incomplete (Defer_Res276) then Transform_Res114.Last_Attempted_Child := 0; elsif Defer_Res276 /= null and then not Is_Ghost (Defer_Res276) then Transform_Res114.Last_Attempted_Child := -1; end if; elsif Row_Pos170 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags114); end if; -- End transform_code if Row_Pos170 /= No_Token_Index then Row_Pos169 := Row_Pos170; else Row_Pos169 := No_Token_Index; goto Exit_Row169_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos169 = No_Token_Index then Transform_Res114 := No_Bare_Ada_Node; Row_Pos169 := Row_Pos167; end if; -- End opt_code if Row_Pos169 /= No_Token_Index then Row_Pos167 := Row_Pos169; else Row_Pos167 := No_Token_Index; goto Exit_Row167_0; end if; -- Start row_code Row_Pos171 := Row_Pos167; -- Start tok_code Token_Res274 := Row_Pos171; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res274)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos274 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos171 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos171, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos274 := Row_Pos171 + 1; end if; end; -- End tok_code if Token_Pos274 /= No_Token_Index then Row_Pos171 := Token_Pos274; else Row_Pos171 := No_Token_Index; goto Exit_Row171_0; end if; -- Start opt_code -- Start transform_code Transform_Diags115 := Parser.Diagnostics.Length; -- Start row_code Row_Pos172 := Row_Pos171; Defer_Res277 := Static_Name_Or_Parse0 (Parser, Row_Pos172); Defer_Pos277 := Parser.Current_Pos; if Defer_Pos277 /= No_Token_Index then Row_Pos172 := Defer_Pos277; else Row_Pos172 := No_Token_Index; goto Exit_Row172_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos172 /= No_Token_Index then Transform_Res115 := Allocate_End_Name (Parser.Mem_Pool); Initialize (Self => Transform_Res115, Kind => Ada_End_Name, Unit => Parser.Unit, Token_Start_Index => Row_Pos171, Token_End_Index => (if Row_Pos172 = Row_Pos171 then No_Token_Index else Row_Pos172 - 1)); Initialize_Fields_For_End_Name (Self => Transform_Res115, End_Name_F_Name => Defer_Res277); if Defer_Res277 /= null and then Is_Incomplete (Defer_Res277) then Transform_Res115.Last_Attempted_Child := 0; elsif Defer_Res277 /= null and then not Is_Ghost (Defer_Res277) then Transform_Res115.Last_Attempted_Child := -1; end if; elsif Row_Pos172 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags115); end if; -- End transform_code if Row_Pos172 = No_Token_Index then Transform_Res115 := No_Bare_Ada_Node; Row_Pos172 := Row_Pos171; end if; -- End opt_code if Row_Pos172 /= No_Token_Index then Row_Pos171 := Row_Pos172; else Row_Pos171 := No_Token_Index; goto Exit_Row171_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos171 /= No_Token_Index then Row_Pos167 := Row_Pos171; else Row_Pos167 := No_Token_Index; goto Exit_Row167_0; end if; -- Start opt_code -- Start tok_code Token_Res275 := Row_Pos167; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res275)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos275 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos167 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos167, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos275 := Row_Pos167 + 1; end if; end; -- End tok_code if Token_Pos275 = No_Token_Index then Token_Res275 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos167)), To_Text ("Missing ';'")); Token_Pos275 := Row_Pos167; end if; -- End opt_code if Token_Pos275 /= No_Token_Index then Row_Pos167 := Token_Pos275; else Row_Pos167 := No_Token_Index; goto Exit_Row167_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos167 /= No_Token_Index then Transform_Res116 := Allocate_Generic_Package_Internal (Parser.Mem_Pool); Initialize (Self => Transform_Res116, Kind => Ada_Generic_Package_Internal, Unit => Parser.Unit, Token_Start_Index => Row_Pos166, Token_End_Index => (if Row_Pos167 = Row_Pos166 then No_Token_Index else Row_Pos167 - 1)); Initialize_Fields_For_Generic_Package_Internal (Self => Transform_Res116, Base_Package_Decl_F_Package_Name => Defer_Res273, Base_Package_Decl_F_Aspects => Defer_Res274, Base_Package_Decl_F_Public_Part => Transform_Res113, Base_Package_Decl_F_Private_Part => Transform_Res114, Base_Package_Decl_F_End_Name => Transform_Res115); if Defer_Res273 /= null and then Is_Incomplete (Defer_Res273) then Transform_Res116.Last_Attempted_Child := 0; elsif Defer_Res273 /= null and then not Is_Ghost (Defer_Res273) then Transform_Res116.Last_Attempted_Child := -1; end if; if Defer_Res274 /= null and then Is_Incomplete (Defer_Res274) then Transform_Res116.Last_Attempted_Child := 0; elsif Defer_Res274 /= null and then not Is_Ghost (Defer_Res274) then Transform_Res116.Last_Attempted_Child := -1; end if; if Transform_Res113 /= null and then Is_Incomplete (Transform_Res113) then Transform_Res116.Last_Attempted_Child := 0; elsif Transform_Res113 /= null and then not Is_Ghost (Transform_Res113) then Transform_Res116.Last_Attempted_Child := -1; end if; if Transform_Res114 /= null and then Is_Incomplete (Transform_Res114) then Transform_Res116.Last_Attempted_Child := 0; elsif Transform_Res114 /= null and then not Is_Ghost (Transform_Res114) then Transform_Res116.Last_Attempted_Child := -1; end if; if Transform_Res115 /= null and then Is_Incomplete (Transform_Res115) then Transform_Res116.Last_Attempted_Child := 0; elsif Transform_Res115 /= null and then not Is_Ghost (Transform_Res115) then Transform_Res116.Last_Attempted_Child := -1; end if; elsif Row_Pos167 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags116); end if; -- End transform_code if Row_Pos167 /= No_Token_Index then Row_Pos166 := Row_Pos167; else Row_Pos166 := No_Token_Index; goto Exit_Row166_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos166 /= No_Token_Index then Transform_Res117 := Allocate_Generic_Package_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res117, Kind => Ada_Generic_Package_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos166 = Pos then No_Token_Index else Row_Pos166 - 1)); Initialize_Fields_For_Generic_Package_Decl (Self => Transform_Res117, Generic_Decl_F_Formal_Part => Defer_Res272, Generic_Package_Decl_F_Package_Decl => Transform_Res116); if Defer_Res272 /= null and then Is_Incomplete (Defer_Res272) then Transform_Res117.Last_Attempted_Child := 0; elsif Defer_Res272 /= null and then not Is_Ghost (Defer_Res272) then Transform_Res117.Last_Attempted_Child := -1; end if; if Transform_Res116 /= null and then Is_Incomplete (Transform_Res116) then Transform_Res117.Last_Attempted_Child := 0; elsif Transform_Res116 /= null and then not Is_Ghost (Transform_Res116) then Transform_Res117.Last_Attempted_Child := -1; end if; elsif Row_Pos166 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags117); end if; -- End transform_code if Row_Pos166 /= No_Token_Index then Or_Pos62 := Row_Pos166; Or_Res62 := Transform_Res117; goto Exit_Or63; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Generic_Decl_Or_Parse0_Memo, Or_Pos62 /= No_Token_Index, Or_Res62, Pos, Or_Pos62); Parser.Current_Pos := Or_Pos62; return Or_Res62; end Generic_Decl_Or_Parse0; function Generic_Formal_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Ada_Node is use Bare_Ada_Node_Memos; Defer_Pos278 : Token_Index := No_Token_Index; Defer_Res278 : Bare_Pragma_Node := No_Bare_Ada_Node; Row_Pos173 : Token_Index := No_Token_Index; Defer_Pos279 : Token_Index := No_Token_Index; Defer_Res279 : Bare_Basic_Decl := No_Bare_Ada_Node; Transform_Res118 : Bare_Generic_Formal_Obj_Decl := No_Bare_Ada_Node; Transform_Diags118 : Ada.Containers.Count_Type; Row_Pos174 : Token_Index := No_Token_Index; Defer_Pos280 : Token_Index := No_Token_Index; Defer_Res280 : Bare_Base_Type_Decl := No_Bare_Ada_Node; Transform_Res119 : Bare_Generic_Formal_Type_Decl := No_Bare_Ada_Node; Transform_Diags119 : Ada.Containers.Count_Type; Row_Pos175 : Token_Index := No_Token_Index; Defer_Pos281 : Token_Index := No_Token_Index; Defer_Res281 : Bare_Formal_Subp_Decl := No_Bare_Ada_Node; Transform_Res120 : Bare_Generic_Formal_Subp_Decl := No_Bare_Ada_Node; Transform_Diags120 : Ada.Containers.Count_Type; Row_Pos176 : Token_Index := No_Token_Index; Token_Pos276 : Token_Index := No_Token_Index; Token_Res276 : Token_Index := No_Token_Index; Defer_Pos282 : Token_Index := No_Token_Index; Defer_Res282 : Bare_Generic_Instantiation := No_Bare_Ada_Node; Transform_Res121 : Bare_Generic_Formal_Package := No_Bare_Ada_Node; Transform_Diags121 : Ada.Containers.Count_Type; Or_Pos63 : Token_Index := No_Token_Index; Or_Res63 : Bare_Ada_Node := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Generic_Formal_Decl_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res63 := M.Instance; return Or_Res63; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res63; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos63 := No_Token_Index; Or_Res63 := No_Bare_Ada_Node; Defer_Res278 := Pragma_Transform_Parse0 (Parser, Pos); Defer_Pos278 := Parser.Current_Pos; if Defer_Pos278 /= No_Token_Index then Or_Pos63 := Defer_Pos278; Or_Res63 := Defer_Res278; goto Exit_Or64; end if; -- Start transform_code Transform_Diags118 := Parser.Diagnostics.Length; -- Start row_code Row_Pos173 := Pos; Defer_Res279 := Object_Decl_Or_Parse0 (Parser, Row_Pos173); Defer_Pos279 := Parser.Current_Pos; if Defer_Pos279 /= No_Token_Index then Row_Pos173 := Defer_Pos279; else Row_Pos173 := No_Token_Index; goto Exit_Row173_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos173 /= No_Token_Index then Transform_Res118 := Allocate_Generic_Formal_Obj_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res118, Kind => Ada_Generic_Formal_Obj_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos173 = Pos then No_Token_Index else Row_Pos173 - 1)); Initialize_Fields_For_Generic_Formal_Obj_Decl (Self => Transform_Res118, Generic_Formal_F_Decl => Defer_Res279); if Defer_Res279 /= null and then Is_Incomplete (Defer_Res279) then Transform_Res118.Last_Attempted_Child := 0; elsif Defer_Res279 /= null and then not Is_Ghost (Defer_Res279) then Transform_Res118.Last_Attempted_Child := -1; end if; elsif Row_Pos173 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags118); end if; -- End transform_code if Row_Pos173 /= No_Token_Index then Or_Pos63 := Row_Pos173; Or_Res63 := Transform_Res118; goto Exit_Or64; end if; -- Start transform_code Transform_Diags119 := Parser.Diagnostics.Length; -- Start row_code Row_Pos174 := Pos; Defer_Res280 := Formal_Type_Decl_Or_Parse1 (Parser, Row_Pos174); Defer_Pos280 := Parser.Current_Pos; if Defer_Pos280 /= No_Token_Index then Row_Pos174 := Defer_Pos280; else Row_Pos174 := No_Token_Index; goto Exit_Row174_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos174 /= No_Token_Index then Transform_Res119 := Allocate_Generic_Formal_Type_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res119, Kind => Ada_Generic_Formal_Type_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos174 = Pos then No_Token_Index else Row_Pos174 - 1)); Initialize_Fields_For_Generic_Formal_Type_Decl (Self => Transform_Res119, Generic_Formal_F_Decl => Defer_Res280); if Defer_Res280 /= null and then Is_Incomplete (Defer_Res280) then Transform_Res119.Last_Attempted_Child := 0; elsif Defer_Res280 /= null and then not Is_Ghost (Defer_Res280) then Transform_Res119.Last_Attempted_Child := -1; end if; elsif Row_Pos174 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags119); end if; -- End transform_code if Row_Pos174 /= No_Token_Index then Or_Pos63 := Row_Pos174; Or_Res63 := Transform_Res119; goto Exit_Or64; end if; -- Start transform_code Transform_Diags120 := Parser.Diagnostics.Length; -- Start row_code Row_Pos175 := Pos; Defer_Res281 := Formal_Subp_Decl_Or_Parse2 (Parser, Row_Pos175); Defer_Pos281 := Parser.Current_Pos; if Defer_Pos281 /= No_Token_Index then Row_Pos175 := Defer_Pos281; else Row_Pos175 := No_Token_Index; goto Exit_Row175_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos175 /= No_Token_Index then Transform_Res120 := Allocate_Generic_Formal_Subp_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res120, Kind => Ada_Generic_Formal_Subp_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos175 = Pos then No_Token_Index else Row_Pos175 - 1)); Initialize_Fields_For_Generic_Formal_Subp_Decl (Self => Transform_Res120, Generic_Formal_F_Decl => Defer_Res281); if Defer_Res281 /= null and then Is_Incomplete (Defer_Res281) then Transform_Res120.Last_Attempted_Child := 0; elsif Defer_Res281 /= null and then not Is_Ghost (Defer_Res281) then Transform_Res120.Last_Attempted_Child := -1; end if; elsif Row_Pos175 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags120); end if; -- End transform_code if Row_Pos175 /= No_Token_Index then Or_Pos63 := Row_Pos175; Or_Res63 := Transform_Res120; goto Exit_Or64; end if; -- Start transform_code Transform_Diags121 := Parser.Diagnostics.Length; -- Start row_code Row_Pos176 := Pos; -- Start tok_code Token_Res276 := Row_Pos176; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res276)); begin if T.Kind /= From_Token_Kind (Ada_With) then Token_Pos276 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos176 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos176, Expected_Token_Id => Ada_With, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos276 := Row_Pos176 + 1; end if; end; -- End tok_code if Token_Pos276 /= No_Token_Index then Row_Pos176 := Token_Pos276; else Row_Pos176 := No_Token_Index; goto Exit_Row176_0; end if; Defer_Res282 := Generic_Instantiation_Or_Parse1 (Parser, Row_Pos176); Defer_Pos282 := Parser.Current_Pos; if Defer_Pos282 /= No_Token_Index then Row_Pos176 := Defer_Pos282; else Row_Pos176 := No_Token_Index; goto Exit_Row176_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos176 /= No_Token_Index then Transform_Res121 := Allocate_Generic_Formal_Package (Parser.Mem_Pool); Initialize (Self => Transform_Res121, Kind => Ada_Generic_Formal_Package, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos176 = Pos then No_Token_Index else Row_Pos176 - 1)); Initialize_Fields_For_Generic_Formal_Package (Self => Transform_Res121, Generic_Formal_F_Decl => Defer_Res282); if Defer_Res282 /= null and then Is_Incomplete (Defer_Res282) then Transform_Res121.Last_Attempted_Child := 0; elsif Defer_Res282 /= null and then not Is_Ghost (Defer_Res282) then Transform_Res121.Last_Attempted_Child := -1; end if; elsif Row_Pos176 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags121); end if; -- End transform_code if Row_Pos176 /= No_Token_Index then Or_Pos63 := Row_Pos176; Or_Res63 := Transform_Res121; goto Exit_Or64; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Generic_Formal_Decl_Or_Parse0_Memo, Or_Pos63 /= No_Token_Index, Or_Res63, Pos, Or_Pos63); Parser.Current_Pos := Or_Pos63; return Or_Res63; end Generic_Formal_Decl_Or_Parse0; function Generic_Formal_Part_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Generic_Formal_Part is use Bare_Generic_Formal_Part_Memos; Row_Pos177 : Token_Index := No_Token_Index; Token_Pos277 : Token_Index := No_Token_Index; Token_Res277 : Token_Index := No_Token_Index; Lst_Cpos29 : Token_Index := No_Token_Index; Tmp_List29 : Free_Parse_List; Defer_Pos283 : Token_Index := No_Token_Index; Defer_Res283 : Bare_Ada_Node := No_Bare_Ada_Node; Defer_Pos284 : Token_Index := No_Token_Index; Defer_Res284 : Bare_Use_Clause := No_Bare_Ada_Node; Or_Pos64 : Token_Index := No_Token_Index; Or_Res64 : Bare_Ada_Node := No_Bare_Ada_Node; List_Pos29 : Token_Index := No_Token_Index; List_Res29 : Bare_Ada_Node_List := No_Bare_Ada_Node; Transform_Res122 : Bare_Generic_Formal_Part := No_Bare_Ada_Node; Transform_Diags122 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Generic_Formal_Part_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res122 := M.Instance; return Transform_Res122; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res122; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags122 := Parser.Diagnostics.Length; -- Start row_code Row_Pos177 := Pos; -- Start tok_code Token_Res277 := Row_Pos177; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res277)); begin if T.Kind /= From_Token_Kind (Ada_Generic) then Token_Pos277 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos177 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos177, Expected_Token_Id => Ada_Generic, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos277 := Row_Pos177 + 1; end if; end; -- End tok_code if Token_Pos277 /= No_Token_Index then Row_Pos177 := Token_Pos277; else Row_Pos177 := No_Token_Index; goto Exit_Row177_0; end if; -- Start list_code List_Pos29 := Row_Pos177; Lst_Cpos29 := Row_Pos177; Tmp_List29 := Get_Parse_List (Parser); loop -- Start or_code Or_Pos64 := No_Token_Index; Or_Res64 := No_Bare_Ada_Node; Defer_Res283 := Generic_Formal_Decl_Or_Parse0 (Parser, Lst_Cpos29); Defer_Pos283 := Parser.Current_Pos; if Defer_Pos283 /= No_Token_Index then Or_Pos64 := Defer_Pos283; Or_Res64 := Defer_Res283; goto Exit_Or65; end if; Defer_Res284 := Use_Clause_Or_Parse0 (Parser, Lst_Cpos29); Defer_Pos284 := Parser.Current_Pos; if Defer_Pos284 /= No_Token_Index then Or_Pos64 := Defer_Pos284; Or_Res64 := Defer_Res284; goto Exit_Or65; end if; <> -- End or_code exit when Or_Pos64 = No_Token_Index; List_Pos29 := Or_Pos64; Lst_Cpos29 := List_Pos29; Tmp_List29.Nodes.Append (Or_Res64); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List29.Nodes.Length; begin List_Res29 := Allocate_Ada_Node_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos177; Token_End := (if Lst_Cpos29 = Row_Pos177 then Row_Pos177 else Lst_Cpos29 - 1); else Token_Start := Token_Index'Max (Row_Pos177, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res29, Kind => Ada_Ada_Node_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res29, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List29.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res29.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List29); -- End list_code if List_Pos29 /= No_Token_Index then Row_Pos177 := List_Pos29; else Row_Pos177 := No_Token_Index; goto Exit_Row177_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos177 /= No_Token_Index then Transform_Res122 := Allocate_Generic_Formal_Part (Parser.Mem_Pool); Initialize (Self => Transform_Res122, Kind => Ada_Generic_Formal_Part, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos177 = Pos then No_Token_Index else Row_Pos177 - 1)); Initialize_Fields_For_Generic_Formal_Part (Self => Transform_Res122, Generic_Formal_Part_F_Decls => List_Res29); if List_Res29 /= null and then Is_Incomplete (List_Res29) then Transform_Res122.Last_Attempted_Child := 0; elsif List_Res29 /= null and then not Is_Ghost (List_Res29) then Transform_Res122.Last_Attempted_Child := -1; end if; elsif Row_Pos177 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags122); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Generic_Formal_Part_Transform_Parse0_Memo, Row_Pos177 /= No_Token_Index, Transform_Res122, Pos, Row_Pos177); Parser.Current_Pos := Row_Pos177; return Transform_Res122; end Generic_Formal_Part_Transform_Parse0; function Generic_Instantiation_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Generic_Instantiation is use Bare_Generic_Instantiation_Memos; Nobt18 : Boolean := False; Nobt19 : Boolean := False; Nobt20 : Boolean := False; Nobt21 : Boolean := False; Row_Pos178 : Token_Index := No_Token_Index; Token_Pos278 : Token_Index := No_Token_Index; Token_Res278 : Token_Index := No_Token_Index; Defer_Pos285 : Token_Index := No_Token_Index; Defer_Res285 : Bare_Defining_Name := No_Bare_Ada_Node; Token_Pos279 : Token_Index := No_Token_Index; Token_Res279 : Token_Index := No_Token_Index; Token_Pos280 : Token_Index := No_Token_Index; Token_Res280 : Token_Index := No_Token_Index; Defer_Pos286 : Token_Index := No_Token_Index; Defer_Res286 : Bare_Name := No_Bare_Ada_Node; Row_Pos179 : Token_Index := No_Token_Index; Token_Pos281 : Token_Index := No_Token_Index; Token_Res281 : Token_Index := No_Token_Index; Lst_Cpos30 : Token_Index := No_Token_Index; Tmp_List30 : Free_Parse_List; Defer_Pos287 : Token_Index := No_Token_Index; Defer_Res287 : Bare_Param_Assoc := No_Bare_Ada_Node; Token_Pos282 : Token_Index := No_Token_Index; Token_Res282 : Token_Index := No_Token_Index; List_Pos30 : Token_Index := No_Token_Index; List_Res30 : Bare_Assoc_List := No_Bare_Ada_Node; Token_Pos283 : Token_Index := No_Token_Index; Token_Res283 : Token_Index := No_Token_Index; Defer_Pos288 : Token_Index := No_Token_Index; Defer_Res288 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos284 : Token_Index := No_Token_Index; Token_Res284 : Token_Index := No_Token_Index; Row_Progress17 : Integer := 0; Transform_Res123 : Bare_Generic_Package_Instantiation := No_Bare_Ada_Node; Transform_Has_Failed17 : Boolean := False; Transform_Diags123 : Ada.Containers.Count_Type; Row_Pos180 : Token_Index := No_Token_Index; Defer_Pos289 : Token_Index := No_Token_Index; Defer_Res289 : Bare_Overriding_Node := No_Bare_Ada_Node; Row_Pos181 : Token_Index := No_Token_Index; Token_Pos285 : Token_Index := No_Token_Index; Token_Res285 : Token_Index := No_Token_Index; Transform_Res124 : Bare_Subp_Kind_Procedure := No_Bare_Ada_Node; Transform_Diags124 : Ada.Containers.Count_Type; Row_Pos182 : Token_Index := No_Token_Index; Token_Pos286 : Token_Index := No_Token_Index; Token_Res286 : Token_Index := No_Token_Index; Transform_Res125 : Bare_Subp_Kind_Function := No_Bare_Ada_Node; Transform_Diags125 : Ada.Containers.Count_Type; Or_Pos65 : Token_Index := No_Token_Index; Or_Res65 : Bare_Subp_Kind := No_Bare_Ada_Node; Defer_Pos290 : Token_Index := No_Token_Index; Defer_Res290 : Bare_Defining_Name := No_Bare_Ada_Node; Token_Pos287 : Token_Index := No_Token_Index; Token_Res287 : Token_Index := No_Token_Index; Token_Pos288 : Token_Index := No_Token_Index; Token_Res288 : Token_Index := No_Token_Index; Defer_Pos291 : Token_Index := No_Token_Index; Defer_Res291 : Bare_Name := No_Bare_Ada_Node; Row_Pos183 : Token_Index := No_Token_Index; Token_Pos289 : Token_Index := No_Token_Index; Token_Res289 : Token_Index := No_Token_Index; Lst_Cpos31 : Token_Index := No_Token_Index; Tmp_List31 : Free_Parse_List; Defer_Pos292 : Token_Index := No_Token_Index; Defer_Res292 : Bare_Param_Assoc := No_Bare_Ada_Node; Token_Pos290 : Token_Index := No_Token_Index; Token_Res290 : Token_Index := No_Token_Index; List_Pos31 : Token_Index := No_Token_Index; List_Res31 : Bare_Assoc_List := No_Bare_Ada_Node; Token_Pos291 : Token_Index := No_Token_Index; Token_Res291 : Token_Index := No_Token_Index; Defer_Pos293 : Token_Index := No_Token_Index; Defer_Res293 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos292 : Token_Index := No_Token_Index; Token_Res292 : Token_Index := No_Token_Index; Row_Progress18 : Integer := 0; Transform_Res126 : Bare_Generic_Subp_Instantiation := No_Bare_Ada_Node; Transform_Has_Failed18 : Boolean := False; Transform_Diags126 : Ada.Containers.Count_Type; Or_Pos66 : Token_Index := No_Token_Index; Or_Res66 : Bare_Generic_Instantiation := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Generic_Instantiation_Or_Parse1_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res66 := M.Instance; return Or_Res66; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res66; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos66 := No_Token_Index; Or_Res66 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags123 := Parser.Diagnostics.Length; -- Start row_code Row_Pos178 := Pos; -- Start tok_code Token_Res278 := Row_Pos178; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res278)); begin if T.Kind /= From_Token_Kind (Ada_Package) then Token_Pos278 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos178 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos178, Expected_Token_Id => Ada_Package, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos278 := Row_Pos178 + 1; end if; end; -- End tok_code Row_Progress17 := 1; if Token_Pos278 /= No_Token_Index then Row_Pos178 := Token_Pos278; else Row_Pos178 := No_Token_Index; goto Exit_Row178_0; end if; Defer_Res285 := Defining_Name_Transform_Parse0 (Parser, Row_Pos178); Defer_Pos285 := Parser.Current_Pos; Row_Progress17 := 2; if Defer_Pos285 /= No_Token_Index then Row_Pos178 := Defer_Pos285; else Row_Pos178 := No_Token_Index; goto Exit_Row178_0; end if; -- Start tok_code Token_Res279 := Row_Pos178; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res279)); begin if T.Kind /= From_Token_Kind (Ada_Is) then Token_Pos279 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos178 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos178, Expected_Token_Id => Ada_Is, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos279 := Row_Pos178 + 1; end if; end; -- End tok_code Row_Progress17 := 3; if Token_Pos279 /= No_Token_Index then Row_Pos178 := Token_Pos279; else Row_Pos178 := No_Token_Index; goto Exit_Row178_0; end if; -- Start tok_code Token_Res280 := Row_Pos178; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res280)); begin if T.Kind /= From_Token_Kind (Ada_New) then Token_Pos280 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos178 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos178, Expected_Token_Id => Ada_New, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos280 := Row_Pos178 + 1; end if; end; -- End tok_code Row_Progress17 := 4; if Token_Pos280 /= No_Token_Index then Row_Pos178 := Token_Pos280; else Row_Pos178 := No_Token_Index; goto Exit_Row178_0; end if; Nobt18 := True; Nobt18 := Nobt18; Row_Progress17 := 5; if Row_Pos178 /= No_Token_Index then Row_Pos178 := Row_Pos178; else Row_Pos178 := No_Token_Index; goto Exit_Row178_0; end if; Defer_Res286 := Static_Name_Or_Parse0 (Parser, Row_Pos178); Defer_Pos286 := Parser.Current_Pos; Row_Progress17 := 6; if Defer_Pos286 /= No_Token_Index then Row_Pos178 := Defer_Pos286; else Row_Pos178 := No_Token_Index; goto Exit_Row178_0; end if; -- Start opt_code -- Start row_code Row_Pos179 := Row_Pos178; -- Start tok_code Token_Res281 := Row_Pos179; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res281)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos281 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos179 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos179, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos281 := Row_Pos179 + 1; end if; end; -- End tok_code if Token_Pos281 /= No_Token_Index then Row_Pos179 := Token_Pos281; else Row_Pos179 := No_Token_Index; goto Exit_Row179_0; end if; Nobt19 := True; Nobt19 := Nobt19; if Row_Pos179 /= No_Token_Index then Row_Pos179 := Row_Pos179; else Row_Pos179 := No_Token_Index; goto Exit_Row179_0; end if; -- Start list_code List_Pos30 := No_Token_Index; Lst_Cpos30 := Row_Pos179; Tmp_List30 := Get_Parse_List (Parser); loop Defer_Res287 := Param_Assoc_Transform_Parse0 (Parser, Lst_Cpos30); Defer_Pos287 := Parser.Current_Pos; exit when Defer_Pos287 = No_Token_Index; List_Pos30 := Defer_Pos287; Lst_Cpos30 := List_Pos30; Tmp_List30.Nodes.Append (Defer_Res287); -- Start tok_code Token_Res282 := Lst_Cpos30; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res282)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos282 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos30 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos30, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos282 := Lst_Cpos30 + 1; end if; end; -- End tok_code if Token_Pos282 /= No_Token_Index then Lst_Cpos30 := Token_Pos282; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List30.Nodes.Length; begin List_Res30 := Allocate_Assoc_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos179; Token_End := (if Lst_Cpos30 = Row_Pos179 then Row_Pos179 else Lst_Cpos30 - 1); else Token_Start := Token_Index'Max (Row_Pos179, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res30, Kind => Ada_Assoc_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res30, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List30.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res30.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List30); -- End list_code if List_Pos30 /= No_Token_Index then Row_Pos179 := List_Pos30; else Row_Pos179 := No_Token_Index; goto Exit_Row179_0; end if; -- Start tok_code Token_Res283 := Row_Pos179; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res283)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos283 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos179 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos179, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos283 := Row_Pos179 + 1; end if; end; -- End tok_code if Token_Pos283 /= No_Token_Index then Row_Pos179 := Token_Pos283; else Row_Pos179 := No_Token_Index; goto Exit_Row179_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos179 = No_Token_Index then if Nobt19 then Row_Pos179 := Parser.Last_Fail.Pos; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos179)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; if List_Res30 = No_Bare_Ada_Node then List_Res30 := Allocate_Assoc_List (Parser.Mem_Pool); Initialize (Self => List_Res30, Kind => Ada_Assoc_List, Unit => Parser.Unit, Token_Start_Index => Row_Pos178 - 1, Token_End_Index => No_Token_Index); Initialize_List (Self => List_Res30, Parser => Parser, Count => 0); end if; if not Nobt19 then Row_Pos179 := Row_Pos178; end if; end if; -- End opt_code Nobt18 := Nobt19; Row_Progress17 := 7; if Row_Pos179 /= No_Token_Index then Row_Pos178 := Row_Pos179; else Row_Pos178 := No_Token_Index; goto Exit_Row178_0; end if; Defer_Res288 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos178); Defer_Pos288 := Parser.Current_Pos; Row_Progress17 := 8; if Defer_Pos288 /= No_Token_Index then Row_Pos178 := Defer_Pos288; else Row_Pos178 := No_Token_Index; goto Exit_Row178_0; end if; -- Start opt_code -- Start tok_code Token_Res284 := Row_Pos178; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res284)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos284 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos178 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos178, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos284 := Row_Pos178 + 1; end if; end; -- End tok_code if Token_Pos284 = No_Token_Index then Token_Res284 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos178)), To_Text ("Missing ';'")); Token_Pos284 := Row_Pos178; end if; -- End opt_code Row_Progress17 := 9; if Token_Pos284 /= No_Token_Index then Row_Pos178 := Token_Pos284; else Row_Pos178 := No_Token_Index; goto Exit_Row178_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos178 = No_Token_Index and then Nobt18 then Row_Pos178 := Parser.Last_Fail.Pos; Transform_Has_Failed17 := True; end if; if Row_Pos178 /= No_Token_Index then Transform_Res123 := Allocate_Generic_Package_Instantiation (Parser.Mem_Pool); Initialize (Self => Transform_Res123, Kind => Ada_Generic_Package_Instantiation, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos178 = Pos then No_Token_Index else Row_Pos178 - 1)); Initialize_Fields_For_Generic_Package_Instantiation (Self => Transform_Res123, Generic_Package_Instantiation_F_Name => Defer_Res285, Generic_Package_Instantiation_F_Generic_Pkg_Name => Defer_Res286, Generic_Package_Instantiation_F_Params => List_Res30, Generic_Package_Instantiation_F_Aspects => Defer_Res288); if Defer_Res285 /= null and then Is_Incomplete (Defer_Res285) then Transform_Res123.Last_Attempted_Child := 0; elsif Defer_Res285 /= null and then not Is_Ghost (Defer_Res285) then Transform_Res123.Last_Attempted_Child := -1; end if; if Defer_Res286 /= null and then Is_Incomplete (Defer_Res286) then Transform_Res123.Last_Attempted_Child := 0; elsif Defer_Res286 /= null and then not Is_Ghost (Defer_Res286) then Transform_Res123.Last_Attempted_Child := -1; end if; if List_Res30 /= null and then Is_Incomplete (List_Res30) then Transform_Res123.Last_Attempted_Child := 0; elsif List_Res30 /= null and then not Is_Ghost (List_Res30) then Transform_Res123.Last_Attempted_Child := -1; end if; if Defer_Res288 /= null and then Is_Incomplete (Defer_Res288) then Transform_Res123.Last_Attempted_Child := 0; elsif Defer_Res288 /= null and then not Is_Ghost (Defer_Res288) then Transform_Res123.Last_Attempted_Child := -1; end if; if Transform_Has_Failed17 then Transform_Res123.Last_Attempted_Child := Row_Progress17; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos178 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags123); end if; -- End transform_code if Row_Pos178 /= No_Token_Index then Or_Pos66 := Row_Pos178; Or_Res66 := Transform_Res123; goto Exit_Or66; end if; -- Start transform_code Transform_Diags126 := Parser.Diagnostics.Length; -- Start row_code Row_Pos180 := Pos; Defer_Res289 := Overriding_Indicator_Or_Parse0 (Parser, Row_Pos180); Defer_Pos289 := Parser.Current_Pos; Row_Progress18 := 1; if Defer_Pos289 /= No_Token_Index then Row_Pos180 := Defer_Pos289; else Row_Pos180 := No_Token_Index; goto Exit_Row180_0; end if; -- Start or_code Or_Pos65 := No_Token_Index; Or_Res65 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags124 := Parser.Diagnostics.Length; -- Start row_code Row_Pos181 := Row_Pos180; -- Start tok_code Token_Res285 := Row_Pos181; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res285)); begin if T.Kind /= From_Token_Kind (Ada_Procedure) then Token_Pos285 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos181 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos181, Expected_Token_Id => Ada_Procedure, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos285 := Row_Pos181 + 1; end if; end; -- End tok_code if Token_Pos285 /= No_Token_Index then Row_Pos181 := Token_Pos285; else Row_Pos181 := No_Token_Index; goto Exit_Row181_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos181 /= No_Token_Index then Transform_Res124 := Allocate_Subp_Kind_Procedure (Parser.Mem_Pool); Initialize (Self => Transform_Res124, Kind => Ada_Subp_Kind_Procedure, Unit => Parser.Unit, Token_Start_Index => Row_Pos180, Token_End_Index => (if Row_Pos181 = Row_Pos180 then No_Token_Index else Row_Pos181 - 1)); elsif Row_Pos181 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags124); end if; -- End transform_code if Row_Pos181 /= No_Token_Index then Or_Pos65 := Row_Pos181; Or_Res65 := Transform_Res124; goto Exit_Or67; end if; -- Start transform_code Transform_Diags125 := Parser.Diagnostics.Length; -- Start row_code Row_Pos182 := Row_Pos180; -- Start tok_code Token_Res286 := Row_Pos182; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res286)); begin if T.Kind /= From_Token_Kind (Ada_Function) then Token_Pos286 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos182 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos182, Expected_Token_Id => Ada_Function, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos286 := Row_Pos182 + 1; end if; end; -- End tok_code if Token_Pos286 /= No_Token_Index then Row_Pos182 := Token_Pos286; else Row_Pos182 := No_Token_Index; goto Exit_Row182_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos182 /= No_Token_Index then Transform_Res125 := Allocate_Subp_Kind_Function (Parser.Mem_Pool); Initialize (Self => Transform_Res125, Kind => Ada_Subp_Kind_Function, Unit => Parser.Unit, Token_Start_Index => Row_Pos180, Token_End_Index => (if Row_Pos182 = Row_Pos180 then No_Token_Index else Row_Pos182 - 1)); elsif Row_Pos182 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags125); end if; -- End transform_code if Row_Pos182 /= No_Token_Index then Or_Pos65 := Row_Pos182; Or_Res65 := Transform_Res125; goto Exit_Or67; end if; <> -- End or_code Row_Progress18 := 2; if Or_Pos65 /= No_Token_Index then Row_Pos180 := Or_Pos65; else Row_Pos180 := No_Token_Index; goto Exit_Row180_0; end if; Defer_Res290 := Defining_Name_Transform_Parse0 (Parser, Row_Pos180); Defer_Pos290 := Parser.Current_Pos; Row_Progress18 := 3; if Defer_Pos290 /= No_Token_Index then Row_Pos180 := Defer_Pos290; else Row_Pos180 := No_Token_Index; goto Exit_Row180_0; end if; -- Start tok_code Token_Res287 := Row_Pos180; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res287)); begin if T.Kind /= From_Token_Kind (Ada_Is) then Token_Pos287 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos180 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos180, Expected_Token_Id => Ada_Is, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos287 := Row_Pos180 + 1; end if; end; -- End tok_code Row_Progress18 := 4; if Token_Pos287 /= No_Token_Index then Row_Pos180 := Token_Pos287; else Row_Pos180 := No_Token_Index; goto Exit_Row180_0; end if; -- Start tok_code Token_Res288 := Row_Pos180; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res288)); begin if T.Kind /= From_Token_Kind (Ada_New) then Token_Pos288 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos180 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos180, Expected_Token_Id => Ada_New, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos288 := Row_Pos180 + 1; end if; end; -- End tok_code Row_Progress18 := 5; if Token_Pos288 /= No_Token_Index then Row_Pos180 := Token_Pos288; else Row_Pos180 := No_Token_Index; goto Exit_Row180_0; end if; Nobt20 := True; Nobt20 := Nobt20; Row_Progress18 := 6; if Row_Pos180 /= No_Token_Index then Row_Pos180 := Row_Pos180; else Row_Pos180 := No_Token_Index; goto Exit_Row180_0; end if; Defer_Res291 := Static_Name_Or_Parse0 (Parser, Row_Pos180); Defer_Pos291 := Parser.Current_Pos; Row_Progress18 := 7; if Defer_Pos291 /= No_Token_Index then Row_Pos180 := Defer_Pos291; else Row_Pos180 := No_Token_Index; goto Exit_Row180_0; end if; -- Start opt_code -- Start row_code Row_Pos183 := Row_Pos180; -- Start tok_code Token_Res289 := Row_Pos183; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res289)); begin if T.Kind /= From_Token_Kind (Ada_Par_Open) then Token_Pos289 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos183 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos183, Expected_Token_Id => Ada_Par_Open, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos289 := Row_Pos183 + 1; end if; end; -- End tok_code if Token_Pos289 /= No_Token_Index then Row_Pos183 := Token_Pos289; else Row_Pos183 := No_Token_Index; goto Exit_Row183_0; end if; Nobt21 := True; Nobt21 := Nobt21; if Row_Pos183 /= No_Token_Index then Row_Pos183 := Row_Pos183; else Row_Pos183 := No_Token_Index; goto Exit_Row183_0; end if; -- Start list_code List_Pos31 := No_Token_Index; Lst_Cpos31 := Row_Pos183; Tmp_List31 := Get_Parse_List (Parser); loop Defer_Res292 := Param_Assoc_Transform_Parse0 (Parser, Lst_Cpos31); Defer_Pos292 := Parser.Current_Pos; exit when Defer_Pos292 = No_Token_Index; List_Pos31 := Defer_Pos292; Lst_Cpos31 := List_Pos31; Tmp_List31.Nodes.Append (Defer_Res292); -- Start tok_code Token_Res290 := Lst_Cpos31; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res290)); begin if T.Kind /= From_Token_Kind (Ada_Comma) then Token_Pos290 := No_Token_Index; if Parser.Last_Fail.Pos <= Lst_Cpos31 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Lst_Cpos31, Expected_Token_Id => Ada_Comma, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos290 := Lst_Cpos31 + 1; end if; end; -- End tok_code if Token_Pos290 /= No_Token_Index then Lst_Cpos31 := Token_Pos290; else exit; end if; end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List31.Nodes.Length; begin List_Res31 := Allocate_Assoc_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos183; Token_End := (if Lst_Cpos31 = Row_Pos183 then Row_Pos183 else Lst_Cpos31 - 1); else Token_Start := Token_Index'Max (Row_Pos183, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res31, Kind => Ada_Assoc_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res31, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List31.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res31.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List31); -- End list_code if List_Pos31 /= No_Token_Index then Row_Pos183 := List_Pos31; else Row_Pos183 := No_Token_Index; goto Exit_Row183_0; end if; -- Start tok_code Token_Res291 := Row_Pos183; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res291)); begin if T.Kind /= From_Token_Kind (Ada_Par_Close) then Token_Pos291 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos183 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos183, Expected_Token_Id => Ada_Par_Close, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos291 := Row_Pos183 + 1; end if; end; -- End tok_code if Token_Pos291 /= No_Token_Index then Row_Pos183 := Token_Pos291; else Row_Pos183 := No_Token_Index; goto Exit_Row183_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos183 = No_Token_Index then if Nobt21 then Row_Pos183 := Parser.Last_Fail.Pos; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos183)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; if List_Res31 = No_Bare_Ada_Node then List_Res31 := Allocate_Assoc_List (Parser.Mem_Pool); Initialize (Self => List_Res31, Kind => Ada_Assoc_List, Unit => Parser.Unit, Token_Start_Index => Row_Pos180 - 1, Token_End_Index => No_Token_Index); Initialize_List (Self => List_Res31, Parser => Parser, Count => 0); end if; if not Nobt21 then Row_Pos183 := Row_Pos180; end if; end if; -- End opt_code Nobt20 := Nobt21; Row_Progress18 := 8; if Row_Pos183 /= No_Token_Index then Row_Pos180 := Row_Pos183; else Row_Pos180 := No_Token_Index; goto Exit_Row180_0; end if; Defer_Res293 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos180); Defer_Pos293 := Parser.Current_Pos; Row_Progress18 := 9; if Defer_Pos293 /= No_Token_Index then Row_Pos180 := Defer_Pos293; else Row_Pos180 := No_Token_Index; goto Exit_Row180_0; end if; -- Start opt_code -- Start tok_code Token_Res292 := Row_Pos180; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res292)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos292 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos180 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos180, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos292 := Row_Pos180 + 1; end if; end; -- End tok_code if Token_Pos292 = No_Token_Index then Token_Res292 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos180)), To_Text ("Missing ';'")); Token_Pos292 := Row_Pos180; end if; -- End opt_code Row_Progress18 := 10; if Token_Pos292 /= No_Token_Index then Row_Pos180 := Token_Pos292; else Row_Pos180 := No_Token_Index; goto Exit_Row180_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos180 = No_Token_Index and then Nobt20 then Row_Pos180 := Parser.Last_Fail.Pos; Transform_Has_Failed18 := True; end if; if Row_Pos180 /= No_Token_Index then Transform_Res126 := Allocate_Generic_Subp_Instantiation (Parser.Mem_Pool); Initialize (Self => Transform_Res126, Kind => Ada_Generic_Subp_Instantiation, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos180 = Pos then No_Token_Index else Row_Pos180 - 1)); Initialize_Fields_For_Generic_Subp_Instantiation (Self => Transform_Res126, Generic_Subp_Instantiation_F_Overriding => Defer_Res289, Generic_Subp_Instantiation_F_Kind => Or_Res65, Generic_Subp_Instantiation_F_Subp_Name => Defer_Res290, Generic_Subp_Instantiation_F_Generic_Subp_Name => Defer_Res291, Generic_Subp_Instantiation_F_Params => List_Res31, Generic_Subp_Instantiation_F_Aspects => Defer_Res293); if Defer_Res289 /= null and then Is_Incomplete (Defer_Res289) then Transform_Res126.Last_Attempted_Child := 0; elsif Defer_Res289 /= null and then not Is_Ghost (Defer_Res289) then Transform_Res126.Last_Attempted_Child := -1; end if; if Or_Res65 /= null and then Is_Incomplete (Or_Res65) then Transform_Res126.Last_Attempted_Child := 0; elsif Or_Res65 /= null and then not Is_Ghost (Or_Res65) then Transform_Res126.Last_Attempted_Child := -1; end if; if Defer_Res290 /= null and then Is_Incomplete (Defer_Res290) then Transform_Res126.Last_Attempted_Child := 0; elsif Defer_Res290 /= null and then not Is_Ghost (Defer_Res290) then Transform_Res126.Last_Attempted_Child := -1; end if; if Defer_Res291 /= null and then Is_Incomplete (Defer_Res291) then Transform_Res126.Last_Attempted_Child := 0; elsif Defer_Res291 /= null and then not Is_Ghost (Defer_Res291) then Transform_Res126.Last_Attempted_Child := -1; end if; if List_Res31 /= null and then Is_Incomplete (List_Res31) then Transform_Res126.Last_Attempted_Child := 0; elsif List_Res31 /= null and then not Is_Ghost (List_Res31) then Transform_Res126.Last_Attempted_Child := -1; end if; if Defer_Res293 /= null and then Is_Incomplete (Defer_Res293) then Transform_Res126.Last_Attempted_Child := 0; elsif Defer_Res293 /= null and then not Is_Ghost (Defer_Res293) then Transform_Res126.Last_Attempted_Child := -1; end if; if Transform_Has_Failed18 then Transform_Res126.Last_Attempted_Child := Row_Progress18; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos180 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags126); end if; -- End transform_code if Row_Pos180 /= No_Token_Index then Or_Pos66 := Row_Pos180; Or_Res66 := Transform_Res126; goto Exit_Or66; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Generic_Instantiation_Or_Parse1_Memo, Or_Pos66 /= No_Token_Index, Or_Res66, Pos, Or_Pos66); Parser.Current_Pos := Or_Pos66; return Or_Res66; end Generic_Instantiation_Or_Parse1; function Generic_Renaming_Decl_Or_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Generic_Renaming_Decl is use Bare_Generic_Renaming_Decl_Memos; Row_Pos184 : Token_Index := No_Token_Index; Token_Pos293 : Token_Index := No_Token_Index; Token_Res293 : Token_Index := No_Token_Index; Token_Pos294 : Token_Index := No_Token_Index; Token_Res294 : Token_Index := No_Token_Index; Defer_Pos294 : Token_Index := No_Token_Index; Defer_Res294 : Bare_Defining_Name := No_Bare_Ada_Node; Token_Pos295 : Token_Index := No_Token_Index; Token_Res295 : Token_Index := No_Token_Index; Defer_Pos295 : Token_Index := No_Token_Index; Defer_Res295 : Bare_Name := No_Bare_Ada_Node; Defer_Pos296 : Token_Index := No_Token_Index; Defer_Res296 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos296 : Token_Index := No_Token_Index; Token_Res296 : Token_Index := No_Token_Index; Transform_Res127 : Bare_Generic_Package_Renaming_Decl := No_Bare_Ada_Node; Transform_Diags127 : Ada.Containers.Count_Type; Row_Pos185 : Token_Index := No_Token_Index; Token_Pos297 : Token_Index := No_Token_Index; Token_Res297 : Token_Index := No_Token_Index; Row_Pos186 : Token_Index := No_Token_Index; Token_Pos298 : Token_Index := No_Token_Index; Token_Res298 : Token_Index := No_Token_Index; Transform_Res128 : Bare_Subp_Kind_Procedure := No_Bare_Ada_Node; Transform_Diags128 : Ada.Containers.Count_Type; Row_Pos187 : Token_Index := No_Token_Index; Token_Pos299 : Token_Index := No_Token_Index; Token_Res299 : Token_Index := No_Token_Index; Transform_Res129 : Bare_Subp_Kind_Function := No_Bare_Ada_Node; Transform_Diags129 : Ada.Containers.Count_Type; Or_Pos67 : Token_Index := No_Token_Index; Or_Res67 : Bare_Subp_Kind := No_Bare_Ada_Node; Defer_Pos297 : Token_Index := No_Token_Index; Defer_Res297 : Bare_Defining_Name := No_Bare_Ada_Node; Token_Pos300 : Token_Index := No_Token_Index; Token_Res300 : Token_Index := No_Token_Index; Defer_Pos298 : Token_Index := No_Token_Index; Defer_Res298 : Bare_Name := No_Bare_Ada_Node; Defer_Pos299 : Token_Index := No_Token_Index; Defer_Res299 : Bare_Aspect_Spec := No_Bare_Ada_Node; Token_Pos301 : Token_Index := No_Token_Index; Token_Res301 : Token_Index := No_Token_Index; Transform_Res130 : Bare_Generic_Subp_Renaming_Decl := No_Bare_Ada_Node; Transform_Diags130 : Ada.Containers.Count_Type; Or_Pos68 : Token_Index := No_Token_Index; Or_Res68 : Bare_Generic_Renaming_Decl := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Generic_Renaming_Decl_Or_Parse1_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res68 := M.Instance; return Or_Res68; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res68; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos68 := No_Token_Index; Or_Res68 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags127 := Parser.Diagnostics.Length; -- Start row_code Row_Pos184 := Pos; -- Start tok_code Token_Res293 := Row_Pos184; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res293)); begin if T.Kind /= From_Token_Kind (Ada_Generic) then Token_Pos293 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos184 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos184, Expected_Token_Id => Ada_Generic, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos293 := Row_Pos184 + 1; end if; end; -- End tok_code if Token_Pos293 /= No_Token_Index then Row_Pos184 := Token_Pos293; else Row_Pos184 := No_Token_Index; goto Exit_Row184_0; end if; -- Start tok_code Token_Res294 := Row_Pos184; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res294)); begin if T.Kind /= From_Token_Kind (Ada_Package) then Token_Pos294 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos184 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos184, Expected_Token_Id => Ada_Package, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos294 := Row_Pos184 + 1; end if; end; -- End tok_code if Token_Pos294 /= No_Token_Index then Row_Pos184 := Token_Pos294; else Row_Pos184 := No_Token_Index; goto Exit_Row184_0; end if; Defer_Res294 := Defining_Name_Transform_Parse0 (Parser, Row_Pos184); Defer_Pos294 := Parser.Current_Pos; if Defer_Pos294 /= No_Token_Index then Row_Pos184 := Defer_Pos294; else Row_Pos184 := No_Token_Index; goto Exit_Row184_0; end if; -- Start tok_code Token_Res295 := Row_Pos184; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res295)); begin if T.Kind /= From_Token_Kind (Ada_Renames) then Token_Pos295 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos184 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos184, Expected_Token_Id => Ada_Renames, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos295 := Row_Pos184 + 1; end if; end; -- End tok_code if Token_Pos295 /= No_Token_Index then Row_Pos184 := Token_Pos295; else Row_Pos184 := No_Token_Index; goto Exit_Row184_0; end if; Defer_Res295 := Static_Name_Or_Parse0 (Parser, Row_Pos184); Defer_Pos295 := Parser.Current_Pos; if Defer_Pos295 /= No_Token_Index then Row_Pos184 := Defer_Pos295; else Row_Pos184 := No_Token_Index; goto Exit_Row184_0; end if; Defer_Res296 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos184); Defer_Pos296 := Parser.Current_Pos; if Defer_Pos296 /= No_Token_Index then Row_Pos184 := Defer_Pos296; else Row_Pos184 := No_Token_Index; goto Exit_Row184_0; end if; -- Start tok_code Token_Res296 := Row_Pos184; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res296)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos296 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos184 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos184, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos296 := Row_Pos184 + 1; end if; end; -- End tok_code if Token_Pos296 /= No_Token_Index then Row_Pos184 := Token_Pos296; else Row_Pos184 := No_Token_Index; goto Exit_Row184_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos184 /= No_Token_Index then Transform_Res127 := Allocate_Generic_Package_Renaming_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res127, Kind => Ada_Generic_Package_Renaming_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos184 = Pos then No_Token_Index else Row_Pos184 - 1)); Initialize_Fields_For_Generic_Package_Renaming_Decl (Self => Transform_Res127, Generic_Package_Renaming_Decl_F_Name => Defer_Res294, Generic_Package_Renaming_Decl_F_Renames => Defer_Res295, Generic_Package_Renaming_Decl_F_Aspects => Defer_Res296); if Defer_Res294 /= null and then Is_Incomplete (Defer_Res294) then Transform_Res127.Last_Attempted_Child := 0; elsif Defer_Res294 /= null and then not Is_Ghost (Defer_Res294) then Transform_Res127.Last_Attempted_Child := -1; end if; if Defer_Res295 /= null and then Is_Incomplete (Defer_Res295) then Transform_Res127.Last_Attempted_Child := 0; elsif Defer_Res295 /= null and then not Is_Ghost (Defer_Res295) then Transform_Res127.Last_Attempted_Child := -1; end if; if Defer_Res296 /= null and then Is_Incomplete (Defer_Res296) then Transform_Res127.Last_Attempted_Child := 0; elsif Defer_Res296 /= null and then not Is_Ghost (Defer_Res296) then Transform_Res127.Last_Attempted_Child := -1; end if; elsif Row_Pos184 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags127); end if; -- End transform_code if Row_Pos184 /= No_Token_Index then Or_Pos68 := Row_Pos184; Or_Res68 := Transform_Res127; goto Exit_Or68; end if; -- Start transform_code Transform_Diags130 := Parser.Diagnostics.Length; -- Start row_code Row_Pos185 := Pos; -- Start tok_code Token_Res297 := Row_Pos185; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res297)); begin if T.Kind /= From_Token_Kind (Ada_Generic) then Token_Pos297 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos185 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos185, Expected_Token_Id => Ada_Generic, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos297 := Row_Pos185 + 1; end if; end; -- End tok_code if Token_Pos297 /= No_Token_Index then Row_Pos185 := Token_Pos297; else Row_Pos185 := No_Token_Index; goto Exit_Row185_0; end if; -- Start or_code Or_Pos67 := No_Token_Index; Or_Res67 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags128 := Parser.Diagnostics.Length; -- Start row_code Row_Pos186 := Row_Pos185; -- Start tok_code Token_Res298 := Row_Pos186; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res298)); begin if T.Kind /= From_Token_Kind (Ada_Procedure) then Token_Pos298 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos186 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos186, Expected_Token_Id => Ada_Procedure, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos298 := Row_Pos186 + 1; end if; end; -- End tok_code if Token_Pos298 /= No_Token_Index then Row_Pos186 := Token_Pos298; else Row_Pos186 := No_Token_Index; goto Exit_Row186_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos186 /= No_Token_Index then Transform_Res128 := Allocate_Subp_Kind_Procedure (Parser.Mem_Pool); Initialize (Self => Transform_Res128, Kind => Ada_Subp_Kind_Procedure, Unit => Parser.Unit, Token_Start_Index => Row_Pos185, Token_End_Index => (if Row_Pos186 = Row_Pos185 then No_Token_Index else Row_Pos186 - 1)); elsif Row_Pos186 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags128); end if; -- End transform_code if Row_Pos186 /= No_Token_Index then Or_Pos67 := Row_Pos186; Or_Res67 := Transform_Res128; goto Exit_Or69; end if; -- Start transform_code Transform_Diags129 := Parser.Diagnostics.Length; -- Start row_code Row_Pos187 := Row_Pos185; -- Start tok_code Token_Res299 := Row_Pos187; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res299)); begin if T.Kind /= From_Token_Kind (Ada_Function) then Token_Pos299 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos187 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos187, Expected_Token_Id => Ada_Function, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos299 := Row_Pos187 + 1; end if; end; -- End tok_code if Token_Pos299 /= No_Token_Index then Row_Pos187 := Token_Pos299; else Row_Pos187 := No_Token_Index; goto Exit_Row187_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos187 /= No_Token_Index then Transform_Res129 := Allocate_Subp_Kind_Function (Parser.Mem_Pool); Initialize (Self => Transform_Res129, Kind => Ada_Subp_Kind_Function, Unit => Parser.Unit, Token_Start_Index => Row_Pos185, Token_End_Index => (if Row_Pos187 = Row_Pos185 then No_Token_Index else Row_Pos187 - 1)); elsif Row_Pos187 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags129); end if; -- End transform_code if Row_Pos187 /= No_Token_Index then Or_Pos67 := Row_Pos187; Or_Res67 := Transform_Res129; goto Exit_Or69; end if; <> -- End or_code if Or_Pos67 /= No_Token_Index then Row_Pos185 := Or_Pos67; else Row_Pos185 := No_Token_Index; goto Exit_Row185_0; end if; Defer_Res297 := Defining_Name_Transform_Parse0 (Parser, Row_Pos185); Defer_Pos297 := Parser.Current_Pos; if Defer_Pos297 /= No_Token_Index then Row_Pos185 := Defer_Pos297; else Row_Pos185 := No_Token_Index; goto Exit_Row185_0; end if; -- Start tok_code Token_Res300 := Row_Pos185; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res300)); begin if T.Kind /= From_Token_Kind (Ada_Renames) then Token_Pos300 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos185 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos185, Expected_Token_Id => Ada_Renames, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos300 := Row_Pos185 + 1; end if; end; -- End tok_code if Token_Pos300 /= No_Token_Index then Row_Pos185 := Token_Pos300; else Row_Pos185 := No_Token_Index; goto Exit_Row185_0; end if; Defer_Res298 := Static_Name_Or_Parse0 (Parser, Row_Pos185); Defer_Pos298 := Parser.Current_Pos; if Defer_Pos298 /= No_Token_Index then Row_Pos185 := Defer_Pos298; else Row_Pos185 := No_Token_Index; goto Exit_Row185_0; end if; Defer_Res299 := Aspect_Spec_Opt_Parse0 (Parser, Row_Pos185); Defer_Pos299 := Parser.Current_Pos; if Defer_Pos299 /= No_Token_Index then Row_Pos185 := Defer_Pos299; else Row_Pos185 := No_Token_Index; goto Exit_Row185_0; end if; -- Start tok_code Token_Res301 := Row_Pos185; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res301)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos301 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos185 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos185, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos301 := Row_Pos185 + 1; end if; end; -- End tok_code if Token_Pos301 /= No_Token_Index then Row_Pos185 := Token_Pos301; else Row_Pos185 := No_Token_Index; goto Exit_Row185_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos185 /= No_Token_Index then Transform_Res130 := Allocate_Generic_Subp_Renaming_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res130, Kind => Ada_Generic_Subp_Renaming_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos185 = Pos then No_Token_Index else Row_Pos185 - 1)); Initialize_Fields_For_Generic_Subp_Renaming_Decl (Self => Transform_Res130, Generic_Subp_Renaming_Decl_F_Kind => Or_Res67, Generic_Subp_Renaming_Decl_F_Name => Defer_Res297, Generic_Subp_Renaming_Decl_F_Renames => Defer_Res298, Generic_Subp_Renaming_Decl_F_Aspects => Defer_Res299); if Or_Res67 /= null and then Is_Incomplete (Or_Res67) then Transform_Res130.Last_Attempted_Child := 0; elsif Or_Res67 /= null and then not Is_Ghost (Or_Res67) then Transform_Res130.Last_Attempted_Child := -1; end if; if Defer_Res297 /= null and then Is_Incomplete (Defer_Res297) then Transform_Res130.Last_Attempted_Child := 0; elsif Defer_Res297 /= null and then not Is_Ghost (Defer_Res297) then Transform_Res130.Last_Attempted_Child := -1; end if; if Defer_Res298 /= null and then Is_Incomplete (Defer_Res298) then Transform_Res130.Last_Attempted_Child := 0; elsif Defer_Res298 /= null and then not Is_Ghost (Defer_Res298) then Transform_Res130.Last_Attempted_Child := -1; end if; if Defer_Res299 /= null and then Is_Incomplete (Defer_Res299) then Transform_Res130.Last_Attempted_Child := 0; elsif Defer_Res299 /= null and then not Is_Ghost (Defer_Res299) then Transform_Res130.Last_Attempted_Child := -1; end if; elsif Row_Pos185 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags130); end if; -- End transform_code if Row_Pos185 /= No_Token_Index then Or_Pos68 := Row_Pos185; Or_Res68 := Transform_Res130; goto Exit_Or68; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Generic_Renaming_Decl_Or_Parse1_Memo, Or_Pos68 /= No_Token_Index, Or_Res68, Pos, Or_Pos68); Parser.Current_Pos := Or_Pos68; return Or_Res68; end Generic_Renaming_Decl_Or_Parse1; function Goto_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Goto_Stmt is use Bare_Goto_Stmt_Memos; Nobt22 : Boolean := False; Row_Pos188 : Token_Index := No_Token_Index; Token_Pos302 : Token_Index := No_Token_Index; Token_Res302 : Token_Index := No_Token_Index; Defer_Pos300 : Token_Index := No_Token_Index; Defer_Res300 : Bare_Name := No_Bare_Ada_Node; Token_Pos303 : Token_Index := No_Token_Index; Token_Res303 : Token_Index := No_Token_Index; Row_Progress19 : Integer := 0; Transform_Res131 : Bare_Goto_Stmt := No_Bare_Ada_Node; Transform_Has_Failed19 : Boolean := False; Transform_Diags131 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Goto_Stmt_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res131 := M.Instance; return Transform_Res131; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res131; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags131 := Parser.Diagnostics.Length; -- Start row_code Row_Pos188 := Pos; -- Start tok_code Token_Res302 := Row_Pos188; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res302)); begin if T.Kind /= From_Token_Kind (Ada_Goto) then Token_Pos302 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos188 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos188, Expected_Token_Id => Ada_Goto, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos302 := Row_Pos188 + 1; end if; end; -- End tok_code Row_Progress19 := 1; if Token_Pos302 /= No_Token_Index then Row_Pos188 := Token_Pos302; else Row_Pos188 := No_Token_Index; goto Exit_Row188_0; end if; Nobt22 := True; Nobt22 := Nobt22; Row_Progress19 := 2; if Row_Pos188 /= No_Token_Index then Row_Pos188 := Row_Pos188; else Row_Pos188 := No_Token_Index; goto Exit_Row188_0; end if; Defer_Res300 := Static_Name_Or_Parse0 (Parser, Row_Pos188); Defer_Pos300 := Parser.Current_Pos; Row_Progress19 := 3; if Defer_Pos300 /= No_Token_Index then Row_Pos188 := Defer_Pos300; else Row_Pos188 := No_Token_Index; goto Exit_Row188_0; end if; -- Start opt_code -- Start tok_code Token_Res303 := Row_Pos188; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res303)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos303 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos188 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos188, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos303 := Row_Pos188 + 1; end if; end; -- End tok_code if Token_Pos303 = No_Token_Index then Token_Res303 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos188)), To_Text ("Missing ';'")); Token_Pos303 := Row_Pos188; end if; -- End opt_code Row_Progress19 := 4; if Token_Pos303 /= No_Token_Index then Row_Pos188 := Token_Pos303; else Row_Pos188 := No_Token_Index; goto Exit_Row188_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos188 = No_Token_Index and then Nobt22 then Row_Pos188 := Parser.Last_Fail.Pos; Transform_Has_Failed19 := True; end if; if Row_Pos188 /= No_Token_Index then Transform_Res131 := Allocate_Goto_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res131, Kind => Ada_Goto_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos188 = Pos then No_Token_Index else Row_Pos188 - 1)); Initialize_Fields_For_Goto_Stmt (Self => Transform_Res131, Goto_Stmt_F_Label_Name => Defer_Res300); if Defer_Res300 /= null and then Is_Incomplete (Defer_Res300) then Transform_Res131.Last_Attempted_Child := 0; elsif Defer_Res300 /= null and then not Is_Ghost (Defer_Res300) then Transform_Res131.Last_Attempted_Child := -1; end if; if Transform_Has_Failed19 then Transform_Res131.Last_Attempted_Child := Row_Progress19; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos188 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags131); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Goto_Stmt_Transform_Parse0_Memo, Row_Pos188 /= No_Token_Index, Transform_Res131, Pos, Row_Pos188); Parser.Current_Pos := Row_Pos188; return Transform_Res131; end Goto_Stmt_Transform_Parse0; function Handled_Stmts_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Handled_Stmts is use Bare_Handled_Stmts_Memos; Row_Pos189 : Token_Index := No_Token_Index; Defer_Pos301 : Token_Index := No_Token_Index; Defer_Res301 : Bare_Stmt_List := No_Bare_Ada_Node; Row_Pos190 : Token_Index := No_Token_Index; Token_Pos304 : Token_Index := No_Token_Index; Token_Res304 : Token_Index := No_Token_Index; Lst_Cpos32 : Token_Index := No_Token_Index; Tmp_List32 : Free_Parse_List; Defer_Pos302 : Token_Index := No_Token_Index; Defer_Res302 : Bare_Exception_Handler := No_Bare_Ada_Node; Defer_Pos303 : Token_Index := No_Token_Index; Defer_Res303 : Bare_Pragma_Node := No_Bare_Ada_Node; Or_Pos69 : Token_Index := No_Token_Index; Or_Res69 : Bare_Ada_Node := No_Bare_Ada_Node; List_Pos32 : Token_Index := No_Token_Index; List_Res32 : Bare_Ada_Node_List := No_Bare_Ada_Node; Transform_Res132 : Bare_Handled_Stmts := No_Bare_Ada_Node; Transform_Diags132 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Handled_Stmts_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res132 := M.Instance; return Transform_Res132; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res132; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags132 := Parser.Diagnostics.Length; -- Start row_code Row_Pos189 := Pos; Parser.Private_Part.Dont_Skip.Append (Dontskip_Handled_Stmts0_Extract_Parse0'Access); Defer_Res301 := Stmts_List_Parse0 (Parser, Row_Pos189); Defer_Pos301 := Parser.Current_Pos; Parser.Private_Part.Dont_Skip.Delete_Last; if Defer_Pos301 /= No_Token_Index then Row_Pos189 := Defer_Pos301; else Row_Pos189 := No_Token_Index; goto Exit_Row189_0; end if; -- Start opt_code -- Start row_code Row_Pos190 := Row_Pos189; -- Start tok_code Token_Res304 := Row_Pos190; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res304)); begin if T.Kind /= From_Token_Kind (Ada_Exception) then Token_Pos304 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos190 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos190, Expected_Token_Id => Ada_Exception, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos304 := Row_Pos190 + 1; end if; end; -- End tok_code if Token_Pos304 /= No_Token_Index then Row_Pos190 := Token_Pos304; else Row_Pos190 := No_Token_Index; goto Exit_Row190_0; end if; -- Start list_code List_Pos32 := No_Token_Index; Lst_Cpos32 := Row_Pos190; Tmp_List32 := Get_Parse_List (Parser); loop -- Start or_code Or_Pos69 := No_Token_Index; Or_Res69 := No_Bare_Ada_Node; Defer_Res302 := Exception_Handler_Transform_Parse0 (Parser, Lst_Cpos32); Defer_Pos302 := Parser.Current_Pos; if Defer_Pos302 /= No_Token_Index then Or_Pos69 := Defer_Pos302; Or_Res69 := Defer_Res302; goto Exit_Or70; end if; Defer_Res303 := Pragma_Transform_Parse0 (Parser, Lst_Cpos32); Defer_Pos303 := Parser.Current_Pos; if Defer_Pos303 /= No_Token_Index then Or_Pos69 := Defer_Pos303; Or_Res69 := Defer_Res303; goto Exit_Or70; end if; <> -- End or_code exit when Or_Pos69 = No_Token_Index; List_Pos32 := Or_Pos69; Lst_Cpos32 := List_Pos32; Tmp_List32.Nodes.Append (Or_Res69); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List32.Nodes.Length; begin List_Res32 := Allocate_Ada_Node_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos190; Token_End := (if Lst_Cpos32 = Row_Pos190 then Row_Pos190 else Lst_Cpos32 - 1); else Token_Start := Token_Index'Max (Row_Pos190, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res32, Kind => Ada_Ada_Node_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res32, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List32.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res32.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List32); -- End list_code if List_Pos32 /= No_Token_Index then Row_Pos190 := List_Pos32; else Row_Pos190 := No_Token_Index; goto Exit_Row190_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos190 = No_Token_Index then List_Res32 := Allocate_Ada_Node_List (Parser.Mem_Pool); Initialize (Self => List_Res32, Kind => Ada_Ada_Node_List, Unit => Parser.Unit, Token_Start_Index => Row_Pos189 - 1, Token_End_Index => No_Token_Index); Initialize_List (Self => List_Res32, Parser => Parser, Count => 0); Row_Pos190 := Row_Pos189; end if; -- End opt_code if Row_Pos190 /= No_Token_Index then Row_Pos189 := Row_Pos190; else Row_Pos189 := No_Token_Index; goto Exit_Row189_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos189 /= No_Token_Index then Transform_Res132 := Allocate_Handled_Stmts (Parser.Mem_Pool); Initialize (Self => Transform_Res132, Kind => Ada_Handled_Stmts, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos189 = Pos then No_Token_Index else Row_Pos189 - 1)); Initialize_Fields_For_Handled_Stmts (Self => Transform_Res132, Handled_Stmts_F_Stmts => Defer_Res301, Handled_Stmts_F_Exceptions => List_Res32); if Defer_Res301 /= null and then Is_Incomplete (Defer_Res301) then Transform_Res132.Last_Attempted_Child := 0; elsif Defer_Res301 /= null and then not Is_Ghost (Defer_Res301) then Transform_Res132.Last_Attempted_Child := -1; end if; if List_Res32 /= null and then Is_Incomplete (List_Res32) then Transform_Res132.Last_Attempted_Child := 0; elsif List_Res32 /= null and then not Is_Ghost (List_Res32) then Transform_Res132.Last_Attempted_Child := -1; end if; elsif Row_Pos189 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags132); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Handled_Stmts_Transform_Parse0_Memo, Row_Pos189 /= No_Token_Index, Transform_Res132, Pos, Row_Pos189); Parser.Current_Pos := Row_Pos189; return Transform_Res132; end Handled_Stmts_Transform_Parse0; function Iblock_Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Block_Stmt is use Bare_Block_Stmt_Memos; Nobt23 : Boolean := False; Nobt24 : Boolean := False; Row_Pos191 : Token_Index := No_Token_Index; Token_Pos305 : Token_Index := No_Token_Index; Token_Res305 : Token_Index := No_Token_Index; Defer_Pos304 : Token_Index := No_Token_Index; Defer_Res304 : Bare_Handled_Stmts := No_Bare_Ada_Node; Row_Pos192 : Token_Index := No_Token_Index; Token_Pos306 : Token_Index := No_Token_Index; Token_Res306 : Token_Index := No_Token_Index; Row_Pos193 : Token_Index := No_Token_Index; Defer_Pos305 : Token_Index := No_Token_Index; Defer_Res305 : Bare_Identifier := No_Bare_Ada_Node; Transform_Res133 : Bare_End_Name := No_Bare_Ada_Node; Transform_Diags133 : Ada.Containers.Count_Type; Token_Pos307 : Token_Index := No_Token_Index; Token_Res307 : Token_Index := No_Token_Index; Row_Progress20 : Integer := 0; Transform_Res134 : Bare_Begin_Block := No_Bare_Ada_Node; Transform_Has_Failed20 : Boolean := False; Transform_Diags134 : Ada.Containers.Count_Type; Row_Pos194 : Token_Index := No_Token_Index; Token_Pos308 : Token_Index := No_Token_Index; Token_Res308 : Token_Index := No_Token_Index; Defer_Pos306 : Token_Index := No_Token_Index; Defer_Res306 : Bare_Declarative_Part := No_Bare_Ada_Node; Token_Pos309 : Token_Index := No_Token_Index; Token_Res309 : Token_Index := No_Token_Index; Defer_Pos307 : Token_Index := No_Token_Index; Defer_Res307 : Bare_Handled_Stmts := No_Bare_Ada_Node; Row_Pos195 : Token_Index := No_Token_Index; Token_Pos310 : Token_Index := No_Token_Index; Token_Res310 : Token_Index := No_Token_Index; Row_Pos196 : Token_Index := No_Token_Index; Defer_Pos308 : Token_Index := No_Token_Index; Defer_Res308 : Bare_Identifier := No_Bare_Ada_Node; Transform_Res135 : Bare_End_Name := No_Bare_Ada_Node; Transform_Diags135 : Ada.Containers.Count_Type; Token_Pos311 : Token_Index := No_Token_Index; Token_Res311 : Token_Index := No_Token_Index; Row_Progress21 : Integer := 0; Transform_Res136 : Bare_Decl_Block := No_Bare_Ada_Node; Transform_Has_Failed21 : Boolean := False; Transform_Diags136 : Ada.Containers.Count_Type; Or_Pos70 : Token_Index := No_Token_Index; Or_Res70 : Bare_Block_Stmt := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Iblock_Stmt_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res70 := M.Instance; return Or_Res70; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res70; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos70 := No_Token_Index; Or_Res70 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags134 := Parser.Diagnostics.Length; -- Start row_code Row_Pos191 := Pos; -- Start tok_code Token_Res305 := Row_Pos191; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res305)); begin if T.Kind /= From_Token_Kind (Ada_Begin) then Token_Pos305 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos191 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos191, Expected_Token_Id => Ada_Begin, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos305 := Row_Pos191 + 1; end if; end; -- End tok_code Row_Progress20 := 1; if Token_Pos305 /= No_Token_Index then Row_Pos191 := Token_Pos305; else Row_Pos191 := No_Token_Index; goto Exit_Row191_0; end if; Nobt23 := True; Nobt23 := Nobt23; Row_Progress20 := 2; if Row_Pos191 /= No_Token_Index then Row_Pos191 := Row_Pos191; else Row_Pos191 := No_Token_Index; goto Exit_Row191_0; end if; Defer_Res304 := Handled_Stmts_Transform_Parse0 (Parser, Row_Pos191); Defer_Pos304 := Parser.Current_Pos; Row_Progress20 := 3; if Defer_Pos304 /= No_Token_Index then Row_Pos191 := Defer_Pos304; else Row_Pos191 := No_Token_Index; goto Exit_Row191_0; end if; -- Start row_code Row_Pos192 := Row_Pos191; -- Start tok_code Token_Res306 := Row_Pos192; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res306)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos306 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos192 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos192, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos306 := Row_Pos192 + 1; end if; end; -- End tok_code if Token_Pos306 /= No_Token_Index then Row_Pos192 := Token_Pos306; else Row_Pos192 := No_Token_Index; goto Exit_Row192_0; end if; -- Start opt_code -- Start transform_code Transform_Diags133 := Parser.Diagnostics.Length; -- Start row_code Row_Pos193 := Row_Pos192; Defer_Res305 := Identifier_Transform_Parse0 (Parser, Row_Pos193); Defer_Pos305 := Parser.Current_Pos; if Defer_Pos305 /= No_Token_Index then Row_Pos193 := Defer_Pos305; else Row_Pos193 := No_Token_Index; goto Exit_Row193_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos193 /= No_Token_Index then Transform_Res133 := Allocate_End_Name (Parser.Mem_Pool); Initialize (Self => Transform_Res133, Kind => Ada_End_Name, Unit => Parser.Unit, Token_Start_Index => Row_Pos192, Token_End_Index => (if Row_Pos193 = Row_Pos192 then No_Token_Index else Row_Pos193 - 1)); Initialize_Fields_For_End_Name (Self => Transform_Res133, End_Name_F_Name => Defer_Res305); if Defer_Res305 /= null and then Is_Incomplete (Defer_Res305) then Transform_Res133.Last_Attempted_Child := 0; elsif Defer_Res305 /= null and then not Is_Ghost (Defer_Res305) then Transform_Res133.Last_Attempted_Child := -1; end if; elsif Row_Pos193 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags133); end if; -- End transform_code if Row_Pos193 = No_Token_Index then Transform_Res133 := No_Bare_Ada_Node; Row_Pos193 := Row_Pos192; end if; -- End opt_code if Row_Pos193 /= No_Token_Index then Row_Pos192 := Row_Pos193; else Row_Pos192 := No_Token_Index; goto Exit_Row192_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code Row_Progress20 := 4; if Row_Pos192 /= No_Token_Index then Row_Pos191 := Row_Pos192; else Row_Pos191 := No_Token_Index; goto Exit_Row191_0; end if; -- Start opt_code -- Start tok_code Token_Res307 := Row_Pos191; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res307)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos307 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos191 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos191, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos307 := Row_Pos191 + 1; end if; end; -- End tok_code if Token_Pos307 = No_Token_Index then Token_Res307 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos191)), To_Text ("Missing ';'")); Token_Pos307 := Row_Pos191; end if; -- End opt_code Row_Progress20 := 5; if Token_Pos307 /= No_Token_Index then Row_Pos191 := Token_Pos307; else Row_Pos191 := No_Token_Index; goto Exit_Row191_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos191 = No_Token_Index and then Nobt23 then Row_Pos191 := Parser.Last_Fail.Pos; Transform_Has_Failed20 := True; end if; if Row_Pos191 /= No_Token_Index then Transform_Res134 := Allocate_Begin_Block (Parser.Mem_Pool); Initialize (Self => Transform_Res134, Kind => Ada_Begin_Block, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos191 = Pos then No_Token_Index else Row_Pos191 - 1)); Initialize_Fields_For_Begin_Block (Self => Transform_Res134, Begin_Block_F_Stmts => Defer_Res304, Begin_Block_F_End_Name => Transform_Res133); if Defer_Res304 /= null and then Is_Incomplete (Defer_Res304) then Transform_Res134.Last_Attempted_Child := 0; elsif Defer_Res304 /= null and then not Is_Ghost (Defer_Res304) then Transform_Res134.Last_Attempted_Child := -1; end if; if Transform_Res133 /= null and then Is_Incomplete (Transform_Res133) then Transform_Res134.Last_Attempted_Child := 0; elsif Transform_Res133 /= null and then not Is_Ghost (Transform_Res133) then Transform_Res134.Last_Attempted_Child := -1; end if; if Transform_Has_Failed20 then Transform_Res134.Last_Attempted_Child := Row_Progress20; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos191 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags134); end if; -- End transform_code if Row_Pos191 /= No_Token_Index then Or_Pos70 := Row_Pos191; Or_Res70 := Transform_Res134; goto Exit_Or71; end if; -- Start transform_code Transform_Diags136 := Parser.Diagnostics.Length; -- Start row_code Row_Pos194 := Pos; -- Start tok_code Token_Res308 := Row_Pos194; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res308)); begin if T.Kind /= From_Token_Kind (Ada_Declare) then Token_Pos308 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos194 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos194, Expected_Token_Id => Ada_Declare, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos308 := Row_Pos194 + 1; end if; end; -- End tok_code Row_Progress21 := 1; if Token_Pos308 /= No_Token_Index then Row_Pos194 := Token_Pos308; else Row_Pos194 := No_Token_Index; goto Exit_Row194_0; end if; Nobt24 := True; Nobt24 := Nobt24; Row_Progress21 := 2; if Row_Pos194 /= No_Token_Index then Row_Pos194 := Row_Pos194; else Row_Pos194 := No_Token_Index; goto Exit_Row194_0; end if; Defer_Res306 := Recov_Decl_Part_Dont_Skip_Parse0 (Parser, Row_Pos194); Defer_Pos306 := Parser.Current_Pos; Row_Progress21 := 3; if Defer_Pos306 /= No_Token_Index then Row_Pos194 := Defer_Pos306; else Row_Pos194 := No_Token_Index; goto Exit_Row194_0; end if; -- Start tok_code Token_Res309 := Row_Pos194; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res309)); begin if T.Kind /= From_Token_Kind (Ada_Begin) then Token_Pos309 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos194 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos194, Expected_Token_Id => Ada_Begin, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos309 := Row_Pos194 + 1; end if; end; -- End tok_code Row_Progress21 := 4; if Token_Pos309 /= No_Token_Index then Row_Pos194 := Token_Pos309; else Row_Pos194 := No_Token_Index; goto Exit_Row194_0; end if; Defer_Res307 := Handled_Stmts_Transform_Parse0 (Parser, Row_Pos194); Defer_Pos307 := Parser.Current_Pos; Row_Progress21 := 5; if Defer_Pos307 /= No_Token_Index then Row_Pos194 := Defer_Pos307; else Row_Pos194 := No_Token_Index; goto Exit_Row194_0; end if; -- Start row_code Row_Pos195 := Row_Pos194; -- Start tok_code Token_Res310 := Row_Pos195; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res310)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos310 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos195 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos195, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos310 := Row_Pos195 + 1; end if; end; -- End tok_code if Token_Pos310 /= No_Token_Index then Row_Pos195 := Token_Pos310; else Row_Pos195 := No_Token_Index; goto Exit_Row195_0; end if; -- Start opt_code -- Start transform_code Transform_Diags135 := Parser.Diagnostics.Length; -- Start row_code Row_Pos196 := Row_Pos195; Defer_Res308 := Identifier_Transform_Parse0 (Parser, Row_Pos196); Defer_Pos308 := Parser.Current_Pos; if Defer_Pos308 /= No_Token_Index then Row_Pos196 := Defer_Pos308; else Row_Pos196 := No_Token_Index; goto Exit_Row196_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos196 /= No_Token_Index then Transform_Res135 := Allocate_End_Name (Parser.Mem_Pool); Initialize (Self => Transform_Res135, Kind => Ada_End_Name, Unit => Parser.Unit, Token_Start_Index => Row_Pos195, Token_End_Index => (if Row_Pos196 = Row_Pos195 then No_Token_Index else Row_Pos196 - 1)); Initialize_Fields_For_End_Name (Self => Transform_Res135, End_Name_F_Name => Defer_Res308); if Defer_Res308 /= null and then Is_Incomplete (Defer_Res308) then Transform_Res135.Last_Attempted_Child := 0; elsif Defer_Res308 /= null and then not Is_Ghost (Defer_Res308) then Transform_Res135.Last_Attempted_Child := -1; end if; elsif Row_Pos196 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags135); end if; -- End transform_code if Row_Pos196 = No_Token_Index then Transform_Res135 := No_Bare_Ada_Node; Row_Pos196 := Row_Pos195; end if; -- End opt_code if Row_Pos196 /= No_Token_Index then Row_Pos195 := Row_Pos196; else Row_Pos195 := No_Token_Index; goto Exit_Row195_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code Row_Progress21 := 6; if Row_Pos195 /= No_Token_Index then Row_Pos194 := Row_Pos195; else Row_Pos194 := No_Token_Index; goto Exit_Row194_0; end if; -- Start opt_code -- Start tok_code Token_Res311 := Row_Pos194; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res311)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos311 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos194 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos194, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos311 := Row_Pos194 + 1; end if; end; -- End tok_code if Token_Pos311 = No_Token_Index then Token_Res311 := No_Token_Index; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Row_Pos194)), To_Text ("Missing ';'")); Token_Pos311 := Row_Pos194; end if; -- End opt_code Row_Progress21 := 7; if Token_Pos311 /= No_Token_Index then Row_Pos194 := Token_Pos311; else Row_Pos194 := No_Token_Index; goto Exit_Row194_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos194 = No_Token_Index and then Nobt24 then Row_Pos194 := Parser.Last_Fail.Pos; Transform_Has_Failed21 := True; end if; if Row_Pos194 /= No_Token_Index then Transform_Res136 := Allocate_Decl_Block (Parser.Mem_Pool); Initialize (Self => Transform_Res136, Kind => Ada_Decl_Block, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos194 = Pos then No_Token_Index else Row_Pos194 - 1)); Initialize_Fields_For_Decl_Block (Self => Transform_Res136, Decl_Block_F_Decls => Defer_Res306, Decl_Block_F_Stmts => Defer_Res307, Decl_Block_F_End_Name => Transform_Res135); if Defer_Res306 /= null and then Is_Incomplete (Defer_Res306) then Transform_Res136.Last_Attempted_Child := 0; elsif Defer_Res306 /= null and then not Is_Ghost (Defer_Res306) then Transform_Res136.Last_Attempted_Child := -1; end if; if Defer_Res307 /= null and then Is_Incomplete (Defer_Res307) then Transform_Res136.Last_Attempted_Child := 0; elsif Defer_Res307 /= null and then not Is_Ghost (Defer_Res307) then Transform_Res136.Last_Attempted_Child := -1; end if; if Transform_Res135 /= null and then Is_Incomplete (Transform_Res135) then Transform_Res136.Last_Attempted_Child := 0; elsif Transform_Res135 /= null and then not Is_Ghost (Transform_Res135) then Transform_Res136.Last_Attempted_Child := -1; end if; if Transform_Has_Failed21 then Transform_Res136.Last_Attempted_Child := Row_Progress21; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos194 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags136); end if; -- End transform_code if Row_Pos194 /= No_Token_Index then Or_Pos70 := Row_Pos194; Or_Res70 := Transform_Res136; goto Exit_Or71; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Iblock_Stmt_Or_Parse0_Memo, Or_Pos70 /= No_Token_Index, Or_Res70, Pos, Or_Pos70); Parser.Current_Pos := Or_Pos70; return Or_Res70; end Iblock_Stmt_Or_Parse0; function Identifier_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Identifier is use Bare_Identifier_Memos; Row_Pos197 : Token_Index := No_Token_Index; Token_Pos312 : Token_Index := No_Token_Index; Token_Res312 : Token_Index := No_Token_Index; Transform_Res137 : Bare_Identifier := No_Bare_Ada_Node; Transform_Diags137 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Identifier_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res137 := M.Instance; return Transform_Res137; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res137; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags137 := Parser.Diagnostics.Length; -- Start row_code Row_Pos197 := Pos; -- Start tok_code Token_Res312 := Row_Pos197; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res312)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) then Token_Pos312 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos197 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos197, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos312 := Row_Pos197 + 1; end if; end; -- End tok_code if Token_Pos312 /= No_Token_Index then Row_Pos197 := Token_Pos312; else Row_Pos197 := No_Token_Index; goto Exit_Row197_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos197 /= No_Token_Index then Transform_Res137 := Allocate_Identifier (Parser.Mem_Pool); Initialize (Self => Transform_Res137, Kind => Ada_Identifier, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos197 = Pos then No_Token_Index else Row_Pos197 - 1)); Initialize_Fields_For_Identifier (Self => Transform_Res137); elsif Row_Pos197 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags137); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Identifier_Transform_Parse0_Memo, Row_Pos197 /= No_Token_Index, Transform_Res137, Pos, Row_Pos197); Parser.Current_Pos := Row_Pos197; return Transform_Res137; end Identifier_Transform_Parse0; function If_Expr_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_If_Expr is use Bare_If_Expr_Memos; Row_Pos198 : Token_Index := No_Token_Index; Token_Pos313 : Token_Index := No_Token_Index; Token_Res313 : Token_Index := No_Token_Index; Defer_Pos309 : Token_Index := No_Token_Index; Defer_Res309 : Bare_Expr := No_Bare_Ada_Node; Token_Pos314 : Token_Index := No_Token_Index; Token_Res314 : Token_Index := No_Token_Index; Defer_Pos310 : Token_Index := No_Token_Index; Defer_Res310 : Bare_Expr := No_Bare_Ada_Node; Lst_Cpos33 : Token_Index := No_Token_Index; Tmp_List33 : Free_Parse_List; Row_Pos199 : Token_Index := No_Token_Index; Token_Pos315 : Token_Index := No_Token_Index; Token_Res315 : Token_Index := No_Token_Index; Defer_Pos311 : Token_Index := No_Token_Index; Defer_Res311 : Bare_Expr := No_Bare_Ada_Node; Token_Pos316 : Token_Index := No_Token_Index; Token_Res316 : Token_Index := No_Token_Index; Defer_Pos312 : Token_Index := No_Token_Index; Defer_Res312 : Bare_Expr := No_Bare_Ada_Node; Transform_Res138 : Bare_Elsif_Expr_Part := No_Bare_Ada_Node; Transform_Diags138 : Ada.Containers.Count_Type; List_Pos33 : Token_Index := No_Token_Index; List_Res33 : Bare_Elsif_Expr_Part_List := No_Bare_Ada_Node; Row_Pos200 : Token_Index := No_Token_Index; Token_Pos317 : Token_Index := No_Token_Index; Token_Res317 : Token_Index := No_Token_Index; Defer_Pos313 : Token_Index := No_Token_Index; Defer_Res313 : Bare_Expr := No_Bare_Ada_Node; Transform_Res139 : Bare_If_Expr := No_Bare_Ada_Node; Transform_Diags139 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.If_Expr_Transform_Parse1_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res139 := M.Instance; return Transform_Res139; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res139; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags139 := Parser.Diagnostics.Length; -- Start row_code Row_Pos198 := Pos; -- Start tok_code Token_Res313 := Row_Pos198; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res313)); begin if T.Kind /= From_Token_Kind (Ada_If) then Token_Pos313 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos198 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos198, Expected_Token_Id => Ada_If, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos313 := Row_Pos198 + 1; end if; end; -- End tok_code if Token_Pos313 /= No_Token_Index then Row_Pos198 := Token_Pos313; else Row_Pos198 := No_Token_Index; goto Exit_Row198_0; end if; Defer_Res309 := Expr_Or_Parse0 (Parser, Row_Pos198); Defer_Pos309 := Parser.Current_Pos; if Defer_Pos309 /= No_Token_Index then Row_Pos198 := Defer_Pos309; else Row_Pos198 := No_Token_Index; goto Exit_Row198_0; end if; -- Start tok_code Token_Res314 := Row_Pos198; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res314)); begin if T.Kind /= From_Token_Kind (Ada_Then) then Token_Pos314 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos198 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos198, Expected_Token_Id => Ada_Then, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos314 := Row_Pos198 + 1; end if; end; -- End tok_code if Token_Pos314 /= No_Token_Index then Row_Pos198 := Token_Pos314; else Row_Pos198 := No_Token_Index; goto Exit_Row198_0; end if; Defer_Res310 := Expr_Or_Parse0 (Parser, Row_Pos198); Defer_Pos310 := Parser.Current_Pos; if Defer_Pos310 /= No_Token_Index then Row_Pos198 := Defer_Pos310; else Row_Pos198 := No_Token_Index; goto Exit_Row198_0; end if; -- Start list_code List_Pos33 := Row_Pos198; Lst_Cpos33 := Row_Pos198; Tmp_List33 := Get_Parse_List (Parser); loop -- Start transform_code Transform_Diags138 := Parser.Diagnostics.Length; -- Start row_code Row_Pos199 := Lst_Cpos33; -- Start tok_code Token_Res315 := Row_Pos199; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res315)); begin if T.Kind /= From_Token_Kind (Ada_Elsif) then Token_Pos315 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos199 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos199, Expected_Token_Id => Ada_Elsif, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos315 := Row_Pos199 + 1; end if; end; -- End tok_code if Token_Pos315 /= No_Token_Index then Row_Pos199 := Token_Pos315; else Row_Pos199 := No_Token_Index; goto Exit_Row199_0; end if; Defer_Res311 := Expr_Or_Parse0 (Parser, Row_Pos199); Defer_Pos311 := Parser.Current_Pos; if Defer_Pos311 /= No_Token_Index then Row_Pos199 := Defer_Pos311; else Row_Pos199 := No_Token_Index; goto Exit_Row199_0; end if; -- Start tok_code Token_Res316 := Row_Pos199; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res316)); begin if T.Kind /= From_Token_Kind (Ada_Then) then Token_Pos316 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos199 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos199, Expected_Token_Id => Ada_Then, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos316 := Row_Pos199 + 1; end if; end; -- End tok_code if Token_Pos316 /= No_Token_Index then Row_Pos199 := Token_Pos316; else Row_Pos199 := No_Token_Index; goto Exit_Row199_0; end if; Defer_Res312 := Expr_Or_Parse0 (Parser, Row_Pos199); Defer_Pos312 := Parser.Current_Pos; if Defer_Pos312 /= No_Token_Index then Row_Pos199 := Defer_Pos312; else Row_Pos199 := No_Token_Index; goto Exit_Row199_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos199 /= No_Token_Index then Transform_Res138 := Allocate_Elsif_Expr_Part (Parser.Mem_Pool); Initialize (Self => Transform_Res138, Kind => Ada_Elsif_Expr_Part, Unit => Parser.Unit, Token_Start_Index => Lst_Cpos33, Token_End_Index => (if Row_Pos199 = Lst_Cpos33 then No_Token_Index else Row_Pos199 - 1)); Initialize_Fields_For_Elsif_Expr_Part (Self => Transform_Res138, Elsif_Expr_Part_F_Cond_Expr => Defer_Res311, Elsif_Expr_Part_F_Then_Expr => Defer_Res312); if Defer_Res311 /= null and then Is_Incomplete (Defer_Res311) then Transform_Res138.Last_Attempted_Child := 0; elsif Defer_Res311 /= null and then not Is_Ghost (Defer_Res311) then Transform_Res138.Last_Attempted_Child := -1; end if; if Defer_Res312 /= null and then Is_Incomplete (Defer_Res312) then Transform_Res138.Last_Attempted_Child := 0; elsif Defer_Res312 /= null and then not Is_Ghost (Defer_Res312) then Transform_Res138.Last_Attempted_Child := -1; end if; elsif Row_Pos199 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags138); end if; -- End transform_code exit when Row_Pos199 = No_Token_Index; List_Pos33 := Row_Pos199; Lst_Cpos33 := List_Pos33; Tmp_List33.Nodes.Append (Transform_Res138); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List33.Nodes.Length; begin List_Res33 := Allocate_Elsif_Expr_Part_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos198; Token_End := (if Lst_Cpos33 = Row_Pos198 then Row_Pos198 else Lst_Cpos33 - 1); else Token_Start := Token_Index'Max (Row_Pos198, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res33, Kind => Ada_Elsif_Expr_Part_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res33, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List33.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res33.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List33); -- End list_code if List_Pos33 /= No_Token_Index then Row_Pos198 := List_Pos33; else Row_Pos198 := No_Token_Index; goto Exit_Row198_0; end if; -- Start opt_code -- Start row_code Row_Pos200 := Row_Pos198; -- Start tok_code Token_Res317 := Row_Pos200; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res317)); begin if T.Kind /= From_Token_Kind (Ada_Else) then Token_Pos317 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos200 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos200, Expected_Token_Id => Ada_Else, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos317 := Row_Pos200 + 1; end if; end; -- End tok_code if Token_Pos317 /= No_Token_Index then Row_Pos200 := Token_Pos317; else Row_Pos200 := No_Token_Index; goto Exit_Row200_0; end if; Defer_Res313 := Expr_Or_Parse0 (Parser, Row_Pos200); Defer_Pos313 := Parser.Current_Pos; if Defer_Pos313 /= No_Token_Index then Row_Pos200 := Defer_Pos313; else Row_Pos200 := No_Token_Index; goto Exit_Row200_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos200 = No_Token_Index then Defer_Res313 := No_Bare_Ada_Node; Row_Pos200 := Row_Pos198; end if; -- End opt_code if Row_Pos200 /= No_Token_Index then Row_Pos198 := Row_Pos200; else Row_Pos198 := No_Token_Index; goto Exit_Row198_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos198 /= No_Token_Index then Transform_Res139 := Allocate_If_Expr (Parser.Mem_Pool); Initialize (Self => Transform_Res139, Kind => Ada_If_Expr, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos198 = Pos then No_Token_Index else Row_Pos198 - 1)); Initialize_Fields_For_If_Expr (Self => Transform_Res139, If_Expr_F_Cond_Expr => Defer_Res309, If_Expr_F_Then_Expr => Defer_Res310, If_Expr_F_Alternatives => List_Res33, If_Expr_F_Else_Expr => Defer_Res313); if Defer_Res309 /= null and then Is_Incomplete (Defer_Res309) then Transform_Res139.Last_Attempted_Child := 0; elsif Defer_Res309 /= null and then not Is_Ghost (Defer_Res309) then Transform_Res139.Last_Attempted_Child := -1; end if; if Defer_Res310 /= null and then Is_Incomplete (Defer_Res310) then Transform_Res139.Last_Attempted_Child := 0; elsif Defer_Res310 /= null and then not Is_Ghost (Defer_Res310) then Transform_Res139.Last_Attempted_Child := -1; end if; if List_Res33 /= null and then Is_Incomplete (List_Res33) then Transform_Res139.Last_Attempted_Child := 0; elsif List_Res33 /= null and then not Is_Ghost (List_Res33) then Transform_Res139.Last_Attempted_Child := -1; end if; if Defer_Res313 /= null and then Is_Incomplete (Defer_Res313) then Transform_Res139.Last_Attempted_Child := 0; elsif Defer_Res313 /= null and then not Is_Ghost (Defer_Res313) then Transform_Res139.Last_Attempted_Child := -1; end if; elsif Row_Pos198 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags139); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.If_Expr_Transform_Parse1_Memo, Row_Pos198 /= No_Token_Index, Transform_Res139, Pos, Row_Pos198); Parser.Current_Pos := Row_Pos198; return Transform_Res139; end If_Expr_Transform_Parse1; function If_Stmt_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_If_Stmt is use Bare_If_Stmt_Memos; Nobt25 : Boolean := False; Row_Pos201 : Token_Index := No_Token_Index; Token_Pos318 : Token_Index := No_Token_Index; Token_Res318 : Token_Index := No_Token_Index; Defer_Pos314 : Token_Index := No_Token_Index; Defer_Res314 : Bare_Expr := No_Bare_Ada_Node; Token_Pos319 : Token_Index := No_Token_Index; Token_Res319 : Token_Index := No_Token_Index; Defer_Pos315 : Token_Index := No_Token_Index; Defer_Res315 : Bare_Stmt_List := No_Bare_Ada_Node; Lst_Cpos34 : Token_Index := No_Token_Index; Tmp_List34 : Free_Parse_List; Defer_Pos316 : Token_Index := No_Token_Index; Defer_Res316 : Bare_Elsif_Stmt_Part := No_Bare_Ada_Node; List_Pos34 : Token_Index := No_Token_Index; List_Res34 : Bare_Elsif_Stmt_Part_List := No_Bare_Ada_Node; Row_Pos202 : Token_Index := No_Token_Index; Token_Pos320 : Token_Index := No_Token_Index; Token_Res320 : Token_Index := No_Token_Index; Defer_Pos317 : Token_Index := No_Token_Index; Defer_Res317 : Bare_Stmt_List := No_Bare_Ada_Node; Token_Pos321 : Token_Index := No_Token_Index; Token_Res321 : Token_Index := No_Token_Index; Token_Pos322 : Token_Index := No_Token_Index; Token_Res322 : Token_Index := No_Token_Index; Token_Pos323 : Token_Index := No_Token_Index; Token_Res323 : Token_Index := No_Token_Index; Row_Progress22 : Integer := 0; Transform_Res140 : Bare_If_Stmt := No_Bare_Ada_Node; Transform_Has_Failed22 : Boolean := False; Transform_Diags140 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.If_Stmt_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res140 := M.Instance; return Transform_Res140; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res140; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags140 := Parser.Diagnostics.Length; -- Start row_code Row_Pos201 := Pos; -- Start tok_code Token_Res318 := Row_Pos201; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res318)); begin if T.Kind /= From_Token_Kind (Ada_If) then Token_Pos318 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos201 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos201, Expected_Token_Id => Ada_If, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos318 := Row_Pos201 + 1; end if; end; -- End tok_code Row_Progress22 := 1; if Token_Pos318 /= No_Token_Index then Row_Pos201 := Token_Pos318; else Row_Pos201 := No_Token_Index; goto Exit_Row201_0; end if; Nobt25 := True; Nobt25 := Nobt25; Row_Progress22 := 2; if Row_Pos201 /= No_Token_Index then Row_Pos201 := Row_Pos201; else Row_Pos201 := No_Token_Index; goto Exit_Row201_0; end if; Defer_Res314 := Expr_Or_Parse0 (Parser, Row_Pos201); Defer_Pos314 := Parser.Current_Pos; Row_Progress22 := 3; if Defer_Pos314 /= No_Token_Index then Row_Pos201 := Defer_Pos314; else Row_Pos201 := No_Token_Index; goto Exit_Row201_0; end if; -- Start tok_code Token_Res319 := Row_Pos201; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res319)); begin if T.Kind /= From_Token_Kind (Ada_Then) then Token_Pos319 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos201 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos201, Expected_Token_Id => Ada_Then, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos319 := Row_Pos201 + 1; end if; end; -- End tok_code Row_Progress22 := 4; if Token_Pos319 /= No_Token_Index then Row_Pos201 := Token_Pos319; else Row_Pos201 := No_Token_Index; goto Exit_Row201_0; end if; Parser.Private_Part.Dont_Skip.Append (Dontskip_If_Stmt0_Extract_Parse0'Access); Defer_Res315 := Stmts_List_Parse0 (Parser, Row_Pos201); Defer_Pos315 := Parser.Current_Pos; Parser.Private_Part.Dont_Skip.Delete_Last; Row_Progress22 := 5; if Defer_Pos315 /= No_Token_Index then Row_Pos201 := Defer_Pos315; else Row_Pos201 := No_Token_Index; goto Exit_Row201_0; end if; -- Start list_code List_Pos34 := Row_Pos201; Lst_Cpos34 := Row_Pos201; Tmp_List34 := Get_Parse_List (Parser); loop Defer_Res316 := Elsif_Part_Transform_Parse0 (Parser, Lst_Cpos34); Defer_Pos316 := Parser.Current_Pos; exit when Defer_Pos316 = No_Token_Index; List_Pos34 := Defer_Pos316; Lst_Cpos34 := List_Pos34; Tmp_List34.Nodes.Append (Defer_Res316); end loop; declare Token_Start, Token_End : Token_Index; Count : constant Natural := Tmp_List34.Nodes.Length; begin List_Res34 := Allocate_Elsif_Stmt_Part_List (Parser.Mem_Pool); if Count > 0 then Token_Start := Row_Pos201; Token_End := (if Lst_Cpos34 = Row_Pos201 then Row_Pos201 else Lst_Cpos34 - 1); else Token_Start := Token_Index'Max (Row_Pos201, 1); Token_End := No_Token_Index; end if; Initialize (Self => List_Res34, Kind => Ada_Elsif_Stmt_Part_List, Unit => Parser.Unit, Token_Start_Index => Token_Start, Token_End_Index => Token_End); Initialize_List (Self => List_Res34, Parser => Parser, Count => Count); declare Vec : Bare_Ada_Node_Vectors.Vector renames Tmp_List34.Nodes; Arr : Alloc_AST_List_Array.Element_Array_Access renames List_Res34.Nodes; begin Arr := Alloc_AST_List_Array.Alloc (Parser.Mem_Pool, Vec.Length); for I in Vec.First_Index .. Vec.Last_Index loop Arr (I) := Vec.Get (I); end loop; end; end; Release_Parse_List (Parser, Tmp_List34); -- End list_code Row_Progress22 := 6; if List_Pos34 /= No_Token_Index then Row_Pos201 := List_Pos34; else Row_Pos201 := No_Token_Index; goto Exit_Row201_0; end if; -- Start opt_code -- Start row_code Row_Pos202 := Row_Pos201; -- Start tok_code Token_Res320 := Row_Pos202; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res320)); begin if T.Kind /= From_Token_Kind (Ada_Else) then Token_Pos320 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos202 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos202, Expected_Token_Id => Ada_Else, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos320 := Row_Pos202 + 1; end if; end; -- End tok_code if Token_Pos320 /= No_Token_Index then Row_Pos202 := Token_Pos320; else Row_Pos202 := No_Token_Index; goto Exit_Row202_0; end if; Parser.Private_Part.Dont_Skip.Append (Dontskip_If_Stmt1_Extract_Parse0'Access); Defer_Res317 := Stmts_List_Parse0 (Parser, Row_Pos202); Defer_Pos317 := Parser.Current_Pos; Parser.Private_Part.Dont_Skip.Delete_Last; if Defer_Pos317 /= No_Token_Index then Row_Pos202 := Defer_Pos317; else Row_Pos202 := No_Token_Index; goto Exit_Row202_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos202 = No_Token_Index then Defer_Res317 := Allocate_Stmt_List (Parser.Mem_Pool); Initialize (Self => Defer_Res317, Kind => Ada_Stmt_List, Unit => Parser.Unit, Token_Start_Index => Row_Pos201 - 1, Token_End_Index => No_Token_Index); Initialize_List (Self => Defer_Res317, Parser => Parser, Count => 0); Row_Pos202 := Row_Pos201; end if; -- End opt_code Row_Progress22 := 7; if Row_Pos202 /= No_Token_Index then Row_Pos201 := Row_Pos202; else Row_Pos201 := No_Token_Index; goto Exit_Row201_0; end if; -- Start tok_code Token_Res321 := Row_Pos201; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res321)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos321 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos201 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos201, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos321 := Row_Pos201 + 1; end if; end; -- End tok_code Row_Progress22 := 8; if Token_Pos321 /= No_Token_Index then Row_Pos201 := Token_Pos321; else Row_Pos201 := No_Token_Index; goto Exit_Row201_0; end if; -- Start tok_code Token_Res322 := Row_Pos201; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res322)); begin if T.Kind /= From_Token_Kind (Ada_If) then Token_Pos322 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos201 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos201, Expected_Token_Id => Ada_If, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos322 := Row_Pos201 + 1; end if; end; -- End tok_code Row_Progress22 := 9; if Token_Pos322 /= No_Token_Index then Row_Pos201 := Token_Pos322; else Row_Pos201 := No_Token_Index; goto Exit_Row201_0; end if; -- Start tok_code Token_Res323 := Row_Pos201; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res323)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos323 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos201 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos201, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos323 := Row_Pos201 + 1; end if; end; -- End tok_code Row_Progress22 := 10; if Token_Pos323 /= No_Token_Index then Row_Pos201 := Token_Pos323; else Row_Pos201 := No_Token_Index; goto Exit_Row201_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos201 = No_Token_Index and then Nobt25 then Row_Pos201 := Parser.Last_Fail.Pos; Transform_Has_Failed22 := True; end if; if Row_Pos201 /= No_Token_Index then Transform_Res140 := Allocate_If_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res140, Kind => Ada_If_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos201 = Pos then No_Token_Index else Row_Pos201 - 1)); Initialize_Fields_For_If_Stmt (Self => Transform_Res140, If_Stmt_F_Cond_Expr => Defer_Res314, If_Stmt_F_Then_Stmts => Defer_Res315, If_Stmt_F_Alternatives => List_Res34, If_Stmt_F_Else_Stmts => Defer_Res317); if Defer_Res314 /= null and then Is_Incomplete (Defer_Res314) then Transform_Res140.Last_Attempted_Child := 0; elsif Defer_Res314 /= null and then not Is_Ghost (Defer_Res314) then Transform_Res140.Last_Attempted_Child := -1; end if; if Defer_Res315 /= null and then Is_Incomplete (Defer_Res315) then Transform_Res140.Last_Attempted_Child := 0; elsif Defer_Res315 /= null and then not Is_Ghost (Defer_Res315) then Transform_Res140.Last_Attempted_Child := -1; end if; if List_Res34 /= null and then Is_Incomplete (List_Res34) then Transform_Res140.Last_Attempted_Child := 0; elsif List_Res34 /= null and then not Is_Ghost (List_Res34) then Transform_Res140.Last_Attempted_Child := -1; end if; if Defer_Res317 /= null and then Is_Incomplete (Defer_Res317) then Transform_Res140.Last_Attempted_Child := 0; elsif Defer_Res317 /= null and then not Is_Ghost (Defer_Res317) then Transform_Res140.Last_Attempted_Child := -1; end if; if Transform_Has_Failed22 then Transform_Res140.Last_Attempted_Child := Row_Progress22; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos201 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags140); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.If_Stmt_Transform_Parse0_Memo, Row_Pos201 /= No_Token_Index, Transform_Res140, Pos, Row_Pos201); Parser.Current_Pos := Row_Pos201; return Transform_Res140; end If_Stmt_Transform_Parse0; function Iloop_Stmt_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Base_Loop_Stmt is use Bare_Base_Loop_Stmt_Memos; Nobt26 : Boolean := False; Nobt27 : Boolean := False; Row_Pos203 : Token_Index := No_Token_Index; Token_Pos324 : Token_Index := No_Token_Index; Token_Res324 : Token_Index := No_Token_Index; Defer_Pos318 : Token_Index := No_Token_Index; Defer_Res318 : Bare_For_Loop_Spec := No_Bare_Ada_Node; Token_Pos325 : Token_Index := No_Token_Index; Token_Res325 : Token_Index := No_Token_Index; Defer_Pos319 : Token_Index := No_Token_Index; Defer_Res319 : Bare_Stmt_List := No_Bare_Ada_Node; Token_Pos326 : Token_Index := No_Token_Index; Token_Res326 : Token_Index := No_Token_Index; Token_Pos327 : Token_Index := No_Token_Index; Token_Res327 : Token_Index := No_Token_Index; Row_Pos204 : Token_Index := No_Token_Index; Defer_Pos320 : Token_Index := No_Token_Index; Defer_Res320 : Bare_Identifier := No_Bare_Ada_Node; Transform_Res141 : Bare_End_Name := No_Bare_Ada_Node; Transform_Diags141 : Ada.Containers.Count_Type; Token_Pos328 : Token_Index := No_Token_Index; Token_Res328 : Token_Index := No_Token_Index; Row_Progress23 : Integer := 0; Transform_Res142 : Bare_For_Loop_Stmt := No_Bare_Ada_Node; Transform_Has_Failed23 : Boolean := False; Transform_Diags142 : Ada.Containers.Count_Type; Row_Pos205 : Token_Index := No_Token_Index; Defer_Pos321 : Token_Index := No_Token_Index; Defer_Res321 : Bare_While_Loop_Spec := No_Bare_Ada_Node; Token_Pos329 : Token_Index := No_Token_Index; Token_Res329 : Token_Index := No_Token_Index; Defer_Pos322 : Token_Index := No_Token_Index; Defer_Res322 : Bare_Stmt_List := No_Bare_Ada_Node; Token_Pos330 : Token_Index := No_Token_Index; Token_Res330 : Token_Index := No_Token_Index; Token_Pos331 : Token_Index := No_Token_Index; Token_Res331 : Token_Index := No_Token_Index; Row_Pos206 : Token_Index := No_Token_Index; Defer_Pos323 : Token_Index := No_Token_Index; Defer_Res323 : Bare_Identifier := No_Bare_Ada_Node; Transform_Res143 : Bare_End_Name := No_Bare_Ada_Node; Transform_Diags143 : Ada.Containers.Count_Type; Token_Pos332 : Token_Index := No_Token_Index; Token_Res332 : Token_Index := No_Token_Index; Transform_Res144 : Bare_While_Loop_Stmt := No_Bare_Ada_Node; Transform_Diags144 : Ada.Containers.Count_Type; Row_Pos207 : Token_Index := No_Token_Index; Null_Res21 : Bare_Loop_Spec := No_Bare_Ada_Node; Token_Pos333 : Token_Index := No_Token_Index; Token_Res333 : Token_Index := No_Token_Index; Defer_Pos324 : Token_Index := No_Token_Index; Defer_Res324 : Bare_Stmt_List := No_Bare_Ada_Node; Token_Pos334 : Token_Index := No_Token_Index; Token_Res334 : Token_Index := No_Token_Index; Token_Pos335 : Token_Index := No_Token_Index; Token_Res335 : Token_Index := No_Token_Index; Row_Pos208 : Token_Index := No_Token_Index; Defer_Pos325 : Token_Index := No_Token_Index; Defer_Res325 : Bare_Identifier := No_Bare_Ada_Node; Transform_Res145 : Bare_End_Name := No_Bare_Ada_Node; Transform_Diags145 : Ada.Containers.Count_Type; Token_Pos336 : Token_Index := No_Token_Index; Token_Res336 : Token_Index := No_Token_Index; Row_Progress24 : Integer := 0; Transform_Res146 : Bare_Loop_Stmt := No_Bare_Ada_Node; Transform_Has_Failed24 : Boolean := False; Transform_Diags146 : Ada.Containers.Count_Type; Or_Pos71 : Token_Index := No_Token_Index; Or_Res71 : Bare_Base_Loop_Stmt := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Iloop_Stmt_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res71 := M.Instance; return Or_Res71; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res71; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos71 := No_Token_Index; Or_Res71 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags142 := Parser.Diagnostics.Length; -- Start row_code Row_Pos203 := Pos; -- Start tok_code Token_Res324 := Row_Pos203; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res324)); begin if T.Kind /= From_Token_Kind (Ada_For) then Token_Pos324 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos203 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos203, Expected_Token_Id => Ada_For, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos324 := Row_Pos203 + 1; end if; end; -- End tok_code Row_Progress23 := 1; if Token_Pos324 /= No_Token_Index then Row_Pos203 := Token_Pos324; else Row_Pos203 := No_Token_Index; goto Exit_Row203_0; end if; Nobt26 := True; Nobt26 := Nobt26; Row_Progress23 := 2; if Row_Pos203 /= No_Token_Index then Row_Pos203 := Row_Pos203; else Row_Pos203 := No_Token_Index; goto Exit_Row203_0; end if; Defer_Res318 := For_Loop_Param_Spec_Transform_Parse3 (Parser, Row_Pos203); Defer_Pos318 := Parser.Current_Pos; Row_Progress23 := 3; if Defer_Pos318 /= No_Token_Index then Row_Pos203 := Defer_Pos318; else Row_Pos203 := No_Token_Index; goto Exit_Row203_0; end if; -- Start tok_code Token_Res325 := Row_Pos203; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res325)); begin if T.Kind /= From_Token_Kind (Ada_Loop) then Token_Pos325 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos203 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos203, Expected_Token_Id => Ada_Loop, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos325 := Row_Pos203 + 1; end if; end; -- End tok_code Row_Progress23 := 4; if Token_Pos325 /= No_Token_Index then Row_Pos203 := Token_Pos325; else Row_Pos203 := No_Token_Index; goto Exit_Row203_0; end if; Parser.Private_Part.Dont_Skip.Append (Dontskip_Iloop_Stmt0_Extract_Parse0'Access); Defer_Res319 := Stmts_List_Parse0 (Parser, Row_Pos203); Defer_Pos319 := Parser.Current_Pos; Parser.Private_Part.Dont_Skip.Delete_Last; Row_Progress23 := 5; if Defer_Pos319 /= No_Token_Index then Row_Pos203 := Defer_Pos319; else Row_Pos203 := No_Token_Index; goto Exit_Row203_0; end if; -- Start tok_code Token_Res326 := Row_Pos203; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res326)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos326 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos203 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos203, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos326 := Row_Pos203 + 1; end if; end; -- End tok_code Row_Progress23 := 6; if Token_Pos326 /= No_Token_Index then Row_Pos203 := Token_Pos326; else Row_Pos203 := No_Token_Index; goto Exit_Row203_0; end if; -- Start tok_code Token_Res327 := Row_Pos203; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res327)); begin if T.Kind /= From_Token_Kind (Ada_Loop) then Token_Pos327 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos203 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos203, Expected_Token_Id => Ada_Loop, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos327 := Row_Pos203 + 1; end if; end; -- End tok_code Row_Progress23 := 7; if Token_Pos327 /= No_Token_Index then Row_Pos203 := Token_Pos327; else Row_Pos203 := No_Token_Index; goto Exit_Row203_0; end if; -- Start opt_code -- Start transform_code Transform_Diags141 := Parser.Diagnostics.Length; -- Start row_code Row_Pos204 := Row_Pos203; Defer_Res320 := Identifier_Transform_Parse0 (Parser, Row_Pos204); Defer_Pos320 := Parser.Current_Pos; if Defer_Pos320 /= No_Token_Index then Row_Pos204 := Defer_Pos320; else Row_Pos204 := No_Token_Index; goto Exit_Row204_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos204 /= No_Token_Index then Transform_Res141 := Allocate_End_Name (Parser.Mem_Pool); Initialize (Self => Transform_Res141, Kind => Ada_End_Name, Unit => Parser.Unit, Token_Start_Index => Row_Pos203, Token_End_Index => (if Row_Pos204 = Row_Pos203 then No_Token_Index else Row_Pos204 - 1)); Initialize_Fields_For_End_Name (Self => Transform_Res141, End_Name_F_Name => Defer_Res320); if Defer_Res320 /= null and then Is_Incomplete (Defer_Res320) then Transform_Res141.Last_Attempted_Child := 0; elsif Defer_Res320 /= null and then not Is_Ghost (Defer_Res320) then Transform_Res141.Last_Attempted_Child := -1; end if; elsif Row_Pos204 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags141); end if; -- End transform_code if Row_Pos204 = No_Token_Index then Transform_Res141 := No_Bare_Ada_Node; Row_Pos204 := Row_Pos203; end if; -- End opt_code Row_Progress23 := 8; if Row_Pos204 /= No_Token_Index then Row_Pos203 := Row_Pos204; else Row_Pos203 := No_Token_Index; goto Exit_Row203_0; end if; -- Start tok_code Token_Res328 := Row_Pos203; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res328)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos328 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos203 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos203, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos328 := Row_Pos203 + 1; end if; end; -- End tok_code Row_Progress23 := 9; if Token_Pos328 /= No_Token_Index then Row_Pos203 := Token_Pos328; else Row_Pos203 := No_Token_Index; goto Exit_Row203_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos203 = No_Token_Index and then Nobt26 then Row_Pos203 := Parser.Last_Fail.Pos; Transform_Has_Failed23 := True; end if; if Row_Pos203 /= No_Token_Index then Transform_Res142 := Allocate_For_Loop_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res142, Kind => Ada_For_Loop_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos203 = Pos then No_Token_Index else Row_Pos203 - 1)); Initialize_Fields_For_For_Loop_Stmt (Self => Transform_Res142, Base_Loop_Stmt_F_Spec => Defer_Res318, Base_Loop_Stmt_F_Stmts => Defer_Res319, Base_Loop_Stmt_F_End_Name => Transform_Res141); if Defer_Res318 /= null and then Is_Incomplete (Defer_Res318) then Transform_Res142.Last_Attempted_Child := 0; elsif Defer_Res318 /= null and then not Is_Ghost (Defer_Res318) then Transform_Res142.Last_Attempted_Child := -1; end if; if Defer_Res319 /= null and then Is_Incomplete (Defer_Res319) then Transform_Res142.Last_Attempted_Child := 0; elsif Defer_Res319 /= null and then not Is_Ghost (Defer_Res319) then Transform_Res142.Last_Attempted_Child := -1; end if; if Transform_Res141 /= null and then Is_Incomplete (Transform_Res141) then Transform_Res142.Last_Attempted_Child := 0; elsif Transform_Res141 /= null and then not Is_Ghost (Transform_Res141) then Transform_Res142.Last_Attempted_Child := -1; end if; if Transform_Has_Failed23 then Transform_Res142.Last_Attempted_Child := Row_Progress23; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos203 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags142); end if; -- End transform_code if Row_Pos203 /= No_Token_Index then Or_Pos71 := Row_Pos203; Or_Res71 := Transform_Res142; goto Exit_Or72; end if; -- Start transform_code Transform_Diags144 := Parser.Diagnostics.Length; -- Start row_code Row_Pos205 := Pos; Defer_Res321 := While_Loop_Spec_Transform_Parse0 (Parser, Row_Pos205); Defer_Pos321 := Parser.Current_Pos; if Defer_Pos321 /= No_Token_Index then Row_Pos205 := Defer_Pos321; else Row_Pos205 := No_Token_Index; goto Exit_Row205_0; end if; -- Start tok_code Token_Res329 := Row_Pos205; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res329)); begin if T.Kind /= From_Token_Kind (Ada_Loop) then Token_Pos329 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos205 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos205, Expected_Token_Id => Ada_Loop, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos329 := Row_Pos205 + 1; end if; end; -- End tok_code if Token_Pos329 /= No_Token_Index then Row_Pos205 := Token_Pos329; else Row_Pos205 := No_Token_Index; goto Exit_Row205_0; end if; Parser.Private_Part.Dont_Skip.Append (Dontskip_Iloop_Stmt1_Extract_Parse0'Access); Defer_Res322 := Stmts_List_Parse0 (Parser, Row_Pos205); Defer_Pos322 := Parser.Current_Pos; Parser.Private_Part.Dont_Skip.Delete_Last; if Defer_Pos322 /= No_Token_Index then Row_Pos205 := Defer_Pos322; else Row_Pos205 := No_Token_Index; goto Exit_Row205_0; end if; -- Start tok_code Token_Res330 := Row_Pos205; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res330)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos330 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos205 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos205, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos330 := Row_Pos205 + 1; end if; end; -- End tok_code if Token_Pos330 /= No_Token_Index then Row_Pos205 := Token_Pos330; else Row_Pos205 := No_Token_Index; goto Exit_Row205_0; end if; -- Start tok_code Token_Res331 := Row_Pos205; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res331)); begin if T.Kind /= From_Token_Kind (Ada_Loop) then Token_Pos331 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos205 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos205, Expected_Token_Id => Ada_Loop, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos331 := Row_Pos205 + 1; end if; end; -- End tok_code if Token_Pos331 /= No_Token_Index then Row_Pos205 := Token_Pos331; else Row_Pos205 := No_Token_Index; goto Exit_Row205_0; end if; -- Start opt_code -- Start transform_code Transform_Diags143 := Parser.Diagnostics.Length; -- Start row_code Row_Pos206 := Row_Pos205; Defer_Res323 := Identifier_Transform_Parse0 (Parser, Row_Pos206); Defer_Pos323 := Parser.Current_Pos; if Defer_Pos323 /= No_Token_Index then Row_Pos206 := Defer_Pos323; else Row_Pos206 := No_Token_Index; goto Exit_Row206_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos206 /= No_Token_Index then Transform_Res143 := Allocate_End_Name (Parser.Mem_Pool); Initialize (Self => Transform_Res143, Kind => Ada_End_Name, Unit => Parser.Unit, Token_Start_Index => Row_Pos205, Token_End_Index => (if Row_Pos206 = Row_Pos205 then No_Token_Index else Row_Pos206 - 1)); Initialize_Fields_For_End_Name (Self => Transform_Res143, End_Name_F_Name => Defer_Res323); if Defer_Res323 /= null and then Is_Incomplete (Defer_Res323) then Transform_Res143.Last_Attempted_Child := 0; elsif Defer_Res323 /= null and then not Is_Ghost (Defer_Res323) then Transform_Res143.Last_Attempted_Child := -1; end if; elsif Row_Pos206 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags143); end if; -- End transform_code if Row_Pos206 = No_Token_Index then Transform_Res143 := No_Bare_Ada_Node; Row_Pos206 := Row_Pos205; end if; -- End opt_code if Row_Pos206 /= No_Token_Index then Row_Pos205 := Row_Pos206; else Row_Pos205 := No_Token_Index; goto Exit_Row205_0; end if; -- Start tok_code Token_Res332 := Row_Pos205; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res332)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos332 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos205 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos205, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos332 := Row_Pos205 + 1; end if; end; -- End tok_code if Token_Pos332 /= No_Token_Index then Row_Pos205 := Token_Pos332; else Row_Pos205 := No_Token_Index; goto Exit_Row205_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos205 /= No_Token_Index then Transform_Res144 := Allocate_While_Loop_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res144, Kind => Ada_While_Loop_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos205 = Pos then No_Token_Index else Row_Pos205 - 1)); Initialize_Fields_For_While_Loop_Stmt (Self => Transform_Res144, Base_Loop_Stmt_F_Spec => Defer_Res321, Base_Loop_Stmt_F_Stmts => Defer_Res322, Base_Loop_Stmt_F_End_Name => Transform_Res143); if Defer_Res321 /= null and then Is_Incomplete (Defer_Res321) then Transform_Res144.Last_Attempted_Child := 0; elsif Defer_Res321 /= null and then not Is_Ghost (Defer_Res321) then Transform_Res144.Last_Attempted_Child := -1; end if; if Defer_Res322 /= null and then Is_Incomplete (Defer_Res322) then Transform_Res144.Last_Attempted_Child := 0; elsif Defer_Res322 /= null and then not Is_Ghost (Defer_Res322) then Transform_Res144.Last_Attempted_Child := -1; end if; if Transform_Res143 /= null and then Is_Incomplete (Transform_Res143) then Transform_Res144.Last_Attempted_Child := 0; elsif Transform_Res143 /= null and then not Is_Ghost (Transform_Res143) then Transform_Res144.Last_Attempted_Child := -1; end if; elsif Row_Pos205 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags144); end if; -- End transform_code if Row_Pos205 /= No_Token_Index then Or_Pos71 := Row_Pos205; Or_Res71 := Transform_Res144; goto Exit_Or72; end if; -- Start transform_code Transform_Diags146 := Parser.Diagnostics.Length; -- Start row_code Row_Pos207 := Pos; Null_Res21 := No_Bare_Ada_Node; Row_Progress24 := 1; if Row_Pos207 /= No_Token_Index then Row_Pos207 := Row_Pos207; else Row_Pos207 := No_Token_Index; goto Exit_Row207_0; end if; -- Start tok_code Token_Res333 := Row_Pos207; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res333)); begin if T.Kind /= From_Token_Kind (Ada_Loop) then Token_Pos333 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos207 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos207, Expected_Token_Id => Ada_Loop, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos333 := Row_Pos207 + 1; end if; end; -- End tok_code Row_Progress24 := 2; if Token_Pos333 /= No_Token_Index then Row_Pos207 := Token_Pos333; else Row_Pos207 := No_Token_Index; goto Exit_Row207_0; end if; Nobt27 := True; Nobt27 := Nobt27; Row_Progress24 := 3; if Row_Pos207 /= No_Token_Index then Row_Pos207 := Row_Pos207; else Row_Pos207 := No_Token_Index; goto Exit_Row207_0; end if; Parser.Private_Part.Dont_Skip.Append (Dontskip_Iloop_Stmt2_Extract_Parse0'Access); Defer_Res324 := Stmts_List_Parse0 (Parser, Row_Pos207); Defer_Pos324 := Parser.Current_Pos; Parser.Private_Part.Dont_Skip.Delete_Last; Row_Progress24 := 4; if Defer_Pos324 /= No_Token_Index then Row_Pos207 := Defer_Pos324; else Row_Pos207 := No_Token_Index; goto Exit_Row207_0; end if; -- Start tok_code Token_Res334 := Row_Pos207; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res334)); begin if T.Kind /= From_Token_Kind (Ada_End) then Token_Pos334 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos207 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos207, Expected_Token_Id => Ada_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos334 := Row_Pos207 + 1; end if; end; -- End tok_code Row_Progress24 := 5; if Token_Pos334 /= No_Token_Index then Row_Pos207 := Token_Pos334; else Row_Pos207 := No_Token_Index; goto Exit_Row207_0; end if; -- Start tok_code Token_Res335 := Row_Pos207; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res335)); begin if T.Kind /= From_Token_Kind (Ada_Loop) then Token_Pos335 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos207 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos207, Expected_Token_Id => Ada_Loop, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos335 := Row_Pos207 + 1; end if; end; -- End tok_code Row_Progress24 := 6; if Token_Pos335 /= No_Token_Index then Row_Pos207 := Token_Pos335; else Row_Pos207 := No_Token_Index; goto Exit_Row207_0; end if; -- Start opt_code -- Start transform_code Transform_Diags145 := Parser.Diagnostics.Length; -- Start row_code Row_Pos208 := Row_Pos207; Defer_Res325 := Identifier_Transform_Parse0 (Parser, Row_Pos208); Defer_Pos325 := Parser.Current_Pos; if Defer_Pos325 /= No_Token_Index then Row_Pos208 := Defer_Pos325; else Row_Pos208 := No_Token_Index; goto Exit_Row208_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos208 /= No_Token_Index then Transform_Res145 := Allocate_End_Name (Parser.Mem_Pool); Initialize (Self => Transform_Res145, Kind => Ada_End_Name, Unit => Parser.Unit, Token_Start_Index => Row_Pos207, Token_End_Index => (if Row_Pos208 = Row_Pos207 then No_Token_Index else Row_Pos208 - 1)); Initialize_Fields_For_End_Name (Self => Transform_Res145, End_Name_F_Name => Defer_Res325); if Defer_Res325 /= null and then Is_Incomplete (Defer_Res325) then Transform_Res145.Last_Attempted_Child := 0; elsif Defer_Res325 /= null and then not Is_Ghost (Defer_Res325) then Transform_Res145.Last_Attempted_Child := -1; end if; elsif Row_Pos208 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags145); end if; -- End transform_code if Row_Pos208 = No_Token_Index then Transform_Res145 := No_Bare_Ada_Node; Row_Pos208 := Row_Pos207; end if; -- End opt_code Row_Progress24 := 7; if Row_Pos208 /= No_Token_Index then Row_Pos207 := Row_Pos208; else Row_Pos207 := No_Token_Index; goto Exit_Row207_0; end if; -- Start tok_code Token_Res336 := Row_Pos207; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res336)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos336 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos207 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos207, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos336 := Row_Pos207 + 1; end if; end; -- End tok_code Row_Progress24 := 8; if Token_Pos336 /= No_Token_Index then Row_Pos207 := Token_Pos336; else Row_Pos207 := No_Token_Index; goto Exit_Row207_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos207 = No_Token_Index and then Nobt27 then Row_Pos207 := Parser.Last_Fail.Pos; Transform_Has_Failed24 := True; end if; if Row_Pos207 /= No_Token_Index then Transform_Res146 := Allocate_Loop_Stmt (Parser.Mem_Pool); Initialize (Self => Transform_Res146, Kind => Ada_Loop_Stmt, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos207 = Pos then No_Token_Index else Row_Pos207 - 1)); Initialize_Fields_For_Loop_Stmt (Self => Transform_Res146, Base_Loop_Stmt_F_Spec => Null_Res21, Base_Loop_Stmt_F_Stmts => Defer_Res324, Base_Loop_Stmt_F_End_Name => Transform_Res145); if Null_Res21 /= null and then Is_Incomplete (Null_Res21) then Transform_Res146.Last_Attempted_Child := 0; elsif Null_Res21 /= null and then not Is_Ghost (Null_Res21) then Transform_Res146.Last_Attempted_Child := -1; end if; if Defer_Res324 /= null and then Is_Incomplete (Defer_Res324) then Transform_Res146.Last_Attempted_Child := 0; elsif Defer_Res324 /= null and then not Is_Ghost (Defer_Res324) then Transform_Res146.Last_Attempted_Child := -1; end if; if Transform_Res145 /= null and then Is_Incomplete (Transform_Res145) then Transform_Res146.Last_Attempted_Child := 0; elsif Transform_Res145 /= null and then not Is_Ghost (Transform_Res145) then Transform_Res146.Last_Attempted_Child := -1; end if; if Transform_Has_Failed24 then Transform_Res146.Last_Attempted_Child := Row_Progress24; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos207 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags146); end if; -- End transform_code if Row_Pos207 /= No_Token_Index then Or_Pos71 := Row_Pos207; Or_Res71 := Transform_Res146; goto Exit_Or72; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Iloop_Stmt_Or_Parse0_Memo, Or_Pos71 /= No_Token_Index, Or_Res71, Pos, Or_Pos71); Parser.Current_Pos := Or_Pos71; return Or_Res71; end Iloop_Stmt_Or_Parse0; function Incomplete_Type_Decl_Or_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Incomplete_Type_Decl is use Bare_Incomplete_Type_Decl_Memos; Row_Pos209 : Token_Index := No_Token_Index; Token_Pos337 : Token_Index := No_Token_Index; Token_Res337 : Token_Index := No_Token_Index; Defer_Pos326 : Token_Index := No_Token_Index; Defer_Res326 : Bare_Defining_Name := No_Bare_Ada_Node; Defer_Pos327 : Token_Index := No_Token_Index; Defer_Res327 : Bare_Discriminant_Part := No_Bare_Ada_Node; Token_Pos338 : Token_Index := No_Token_Index; Token_Res338 : Token_Index := No_Token_Index; Token_Pos339 : Token_Index := No_Token_Index; Token_Res339 : Token_Index := No_Token_Index; Opt_Res21 : Bare_Abstract_Node := No_Bare_Ada_Node; Token_Pos340 : Token_Index := No_Token_Index; Token_Res340 : Token_Index := No_Token_Index; Token_Pos341 : Token_Index := No_Token_Index; Token_Res341 : Token_Index := No_Token_Index; Transform_Res147 : Bare_Incomplete_Tagged_Type_Decl := No_Bare_Ada_Node; Transform_Diags147 : Ada.Containers.Count_Type; Row_Pos210 : Token_Index := No_Token_Index; Token_Pos342 : Token_Index := No_Token_Index; Token_Res342 : Token_Index := No_Token_Index; Defer_Pos328 : Token_Index := No_Token_Index; Defer_Res328 : Bare_Defining_Name := No_Bare_Ada_Node; Defer_Pos329 : Token_Index := No_Token_Index; Defer_Res329 : Bare_Discriminant_Part := No_Bare_Ada_Node; Token_Pos343 : Token_Index := No_Token_Index; Token_Res343 : Token_Index := No_Token_Index; Transform_Res148 : Bare_Incomplete_Type_Decl := No_Bare_Ada_Node; Transform_Diags148 : Ada.Containers.Count_Type; Or_Pos72 : Token_Index := No_Token_Index; Or_Res72 : Bare_Incomplete_Type_Decl := No_Bare_Ada_Node; M : Memo_Entry := Get (Parser.Private_Part.Incomplete_Type_Decl_Or_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Or_Res72 := M.Instance; return Or_Res72; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Or_Res72; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start or_code Or_Pos72 := No_Token_Index; Or_Res72 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags147 := Parser.Diagnostics.Length; -- Start row_code Row_Pos209 := Pos; -- Start tok_code Token_Res337 := Row_Pos209; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res337)); begin if T.Kind /= From_Token_Kind (Ada_Type) then Token_Pos337 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos209 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos209, Expected_Token_Id => Ada_Type, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos337 := Row_Pos209 + 1; end if; end; -- End tok_code if Token_Pos337 /= No_Token_Index then Row_Pos209 := Token_Pos337; else Row_Pos209 := No_Token_Index; goto Exit_Row209_0; end if; Defer_Res326 := Defining_Id_Transform_Parse0 (Parser, Row_Pos209); Defer_Pos326 := Parser.Current_Pos; if Defer_Pos326 /= No_Token_Index then Row_Pos209 := Defer_Pos326; else Row_Pos209 := No_Token_Index; goto Exit_Row209_0; end if; -- Start opt_code Defer_Res327 := Discriminant_Part_Or_Parse0 (Parser, Row_Pos209); Defer_Pos327 := Parser.Current_Pos; if Defer_Pos327 = No_Token_Index then Defer_Res327 := No_Bare_Ada_Node; Defer_Pos327 := Row_Pos209; end if; -- End opt_code if Defer_Pos327 /= No_Token_Index then Row_Pos209 := Defer_Pos327; else Row_Pos209 := No_Token_Index; goto Exit_Row209_0; end if; -- Start tok_code Token_Res338 := Row_Pos209; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res338)); begin if T.Kind /= From_Token_Kind (Ada_Is) then Token_Pos338 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos209 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos209, Expected_Token_Id => Ada_Is, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos338 := Row_Pos209 + 1; end if; end; -- End tok_code if Token_Pos338 /= No_Token_Index then Row_Pos209 := Token_Pos338; else Row_Pos209 := No_Token_Index; goto Exit_Row209_0; end if; -- Start opt_code -- Start tok_code Token_Res339 := Row_Pos209; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res339)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Abstract) then Token_Pos339 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos209 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos209, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos339 := Row_Pos209 + 1; end if; end; -- End tok_code if Token_Pos339 = No_Token_Index then Opt_Res21 := Allocate_Abstract_Absent (Parser.Mem_Pool); Initialize (Self => Opt_Res21, Kind => Ada_Abstract_Absent, Unit => Parser.Unit, Token_Start_Index => Row_Pos209, Token_End_Index => No_Token_Index); Token_Pos339 := Row_Pos209; else Opt_Res21 := Allocate_Abstract_Present (Parser.Mem_Pool); Initialize (Self => Opt_Res21, Kind => Ada_Abstract_Present, Unit => Parser.Unit, Token_Start_Index => Row_Pos209, Token_End_Index => Token_Pos339 - 1); end if; -- End opt_code if Token_Pos339 /= No_Token_Index then Row_Pos209 := Token_Pos339; else Row_Pos209 := No_Token_Index; goto Exit_Row209_0; end if; -- Start tok_code Token_Res340 := Row_Pos209; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res340)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Tagged) then Token_Pos340 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos209 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos209, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos340 := Row_Pos209 + 1; end if; end; -- End tok_code if Token_Pos340 /= No_Token_Index then Row_Pos209 := Token_Pos340; else Row_Pos209 := No_Token_Index; goto Exit_Row209_0; end if; -- Start tok_code Token_Res341 := Row_Pos209; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res341)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos341 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos209 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos209, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos341 := Row_Pos209 + 1; end if; end; -- End tok_code if Token_Pos341 /= No_Token_Index then Row_Pos209 := Token_Pos341; else Row_Pos209 := No_Token_Index; goto Exit_Row209_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos209 /= No_Token_Index then Transform_Res147 := Allocate_Incomplete_Tagged_Type_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res147, Kind => Ada_Incomplete_Tagged_Type_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos209 = Pos then No_Token_Index else Row_Pos209 - 1)); Initialize_Fields_For_Incomplete_Tagged_Type_Decl (Self => Transform_Res147, Base_Type_Decl_F_Name => Defer_Res326, Incomplete_Type_Decl_F_Discriminants => Defer_Res327, Incomplete_Tagged_Type_Decl_F_Has_Abstract => Opt_Res21); if Defer_Res326 /= null and then Is_Incomplete (Defer_Res326) then Transform_Res147.Last_Attempted_Child := 0; elsif Defer_Res326 /= null and then not Is_Ghost (Defer_Res326) then Transform_Res147.Last_Attempted_Child := -1; end if; if Defer_Res327 /= null and then Is_Incomplete (Defer_Res327) then Transform_Res147.Last_Attempted_Child := 0; elsif Defer_Res327 /= null and then not Is_Ghost (Defer_Res327) then Transform_Res147.Last_Attempted_Child := -1; end if; if Opt_Res21 /= null and then Is_Incomplete (Opt_Res21) then Transform_Res147.Last_Attempted_Child := 0; elsif Opt_Res21 /= null and then not Is_Ghost (Opt_Res21) then Transform_Res147.Last_Attempted_Child := -1; end if; elsif Row_Pos209 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags147); end if; -- End transform_code if Row_Pos209 /= No_Token_Index then Or_Pos72 := Row_Pos209; Or_Res72 := Transform_Res147; goto Exit_Or73; end if; -- Start transform_code Transform_Diags148 := Parser.Diagnostics.Length; -- Start row_code Row_Pos210 := Pos; -- Start tok_code Token_Res342 := Row_Pos210; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res342)); begin if T.Kind /= From_Token_Kind (Ada_Type) then Token_Pos342 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos210 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos210, Expected_Token_Id => Ada_Type, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos342 := Row_Pos210 + 1; end if; end; -- End tok_code if Token_Pos342 /= No_Token_Index then Row_Pos210 := Token_Pos342; else Row_Pos210 := No_Token_Index; goto Exit_Row210_0; end if; Defer_Res328 := Defining_Id_Transform_Parse0 (Parser, Row_Pos210); Defer_Pos328 := Parser.Current_Pos; if Defer_Pos328 /= No_Token_Index then Row_Pos210 := Defer_Pos328; else Row_Pos210 := No_Token_Index; goto Exit_Row210_0; end if; -- Start opt_code Defer_Res329 := Discriminant_Part_Or_Parse0 (Parser, Row_Pos210); Defer_Pos329 := Parser.Current_Pos; if Defer_Pos329 = No_Token_Index then Defer_Res329 := No_Bare_Ada_Node; Defer_Pos329 := Row_Pos210; end if; -- End opt_code if Defer_Pos329 /= No_Token_Index then Row_Pos210 := Defer_Pos329; else Row_Pos210 := No_Token_Index; goto Exit_Row210_0; end if; -- Start tok_code Token_Res343 := Row_Pos210; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res343)); begin if T.Kind /= From_Token_Kind (Ada_Semicolon) then Token_Pos343 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos210 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos210, Expected_Token_Id => Ada_Semicolon, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos343 := Row_Pos210 + 1; end if; end; -- End tok_code if Token_Pos343 /= No_Token_Index then Row_Pos210 := Token_Pos343; else Row_Pos210 := No_Token_Index; goto Exit_Row210_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos210 /= No_Token_Index then Transform_Res148 := Allocate_Incomplete_Type_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res148, Kind => Ada_Incomplete_Type_Decl, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos210 = Pos then No_Token_Index else Row_Pos210 - 1)); Initialize_Fields_For_Incomplete_Type_Decl (Self => Transform_Res148, Base_Type_Decl_F_Name => Defer_Res328, Incomplete_Type_Decl_F_Discriminants => Defer_Res329); if Defer_Res328 /= null and then Is_Incomplete (Defer_Res328) then Transform_Res148.Last_Attempted_Child := 0; elsif Defer_Res328 /= null and then not Is_Ghost (Defer_Res328) then Transform_Res148.Last_Attempted_Child := -1; end if; if Defer_Res329 /= null and then Is_Incomplete (Defer_Res329) then Transform_Res148.Last_Attempted_Child := 0; elsif Defer_Res329 /= null and then not Is_Ghost (Defer_Res329) then Transform_Res148.Last_Attempted_Child := -1; end if; elsif Row_Pos210 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags148); end if; -- End transform_code if Row_Pos210 /= No_Token_Index then Or_Pos72 := Row_Pos210; Or_Res72 := Transform_Res148; goto Exit_Or73; end if; <> -- End or_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Incomplete_Type_Decl_Or_Parse0_Memo, Or_Pos72 /= No_Token_Index, Or_Res72, Pos, Or_Pos72); Parser.Current_Pos := Or_Pos72; return Or_Res72; end Incomplete_Type_Decl_Or_Parse0; function Int_Literal_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Int_Literal is use Bare_Int_Literal_Memos; Row_Pos211 : Token_Index := No_Token_Index; Token_Pos344 : Token_Index := No_Token_Index; Token_Res344 : Token_Index := No_Token_Index; Transform_Res149 : Bare_Int_Literal := No_Bare_Ada_Node; Transform_Diags149 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Int_Literal_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res149 := M.Instance; return Transform_Res149; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res149; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags149 := Parser.Diagnostics.Length; -- Start row_code Row_Pos211 := Pos; -- Start tok_code Token_Res344 := Row_Pos211; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res344)); begin if T.Kind /= From_Token_Kind (Ada_Integer) then Token_Pos344 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos211 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos211, Expected_Token_Id => Ada_Integer, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos344 := Row_Pos211 + 1; end if; end; -- End tok_code if Token_Pos344 /= No_Token_Index then Row_Pos211 := Token_Pos344; else Row_Pos211 := No_Token_Index; goto Exit_Row211_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos211 /= No_Token_Index then Transform_Res149 := Allocate_Int_Literal (Parser.Mem_Pool); Initialize (Self => Transform_Res149, Kind => Ada_Int_Literal, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos211 = Pos then No_Token_Index else Row_Pos211 - 1)); Initialize_Fields_For_Int_Literal (Self => Transform_Res149); elsif Row_Pos211 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags149); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Int_Literal_Transform_Parse0_Memo, Row_Pos211 /= No_Token_Index, Transform_Res149, Pos, Row_Pos211); Parser.Current_Pos := Row_Pos211; return Transform_Res149; end Int_Literal_Transform_Parse0; function Interface_Type_Def_Transform_Parse4 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Interface_Type_Def is use Bare_Interface_Type_Def_Memos; Row_Pos212 : Token_Index := No_Token_Index; Row_Pos213 : Token_Index := No_Token_Index; Token_Pos345 : Token_Index := No_Token_Index; Token_Res345 : Token_Index := No_Token_Index; Transform_Res150 : Bare_Interface_Kind_Limited := No_Bare_Ada_Node; Transform_Diags150 : Ada.Containers.Count_Type; Row_Pos214 : Token_Index := No_Token_Index; Token_Pos346 : Token_Index := No_Token_Index; Token_Res346 : Token_Index := No_Token_Index; Transform_Res151 : Bare_Interface_Kind_Task := No_Bare_Ada_Node; Transform_Diags151 : Ada.Containers.Count_Type; Row_Pos215 : Token_Index := No_Token_Index; Token_Pos347 : Token_Index := No_Token_Index; Token_Res347 : Token_Index := No_Token_Index; Transform_Res152 : Bare_Interface_Kind_Protected := No_Bare_Ada_Node; Transform_Diags152 : Ada.Containers.Count_Type; Row_Pos216 : Token_Index := No_Token_Index; Token_Pos348 : Token_Index := No_Token_Index; Token_Res348 : Token_Index := No_Token_Index; Transform_Res153 : Bare_Interface_Kind_Synchronized := No_Bare_Ada_Node; Transform_Diags153 : Ada.Containers.Count_Type; Or_Pos73 : Token_Index := No_Token_Index; Or_Res73 : Bare_Interface_Kind := No_Bare_Ada_Node; Token_Pos349 : Token_Index := No_Token_Index; Token_Res349 : Token_Index := No_Token_Index; Row_Pos217 : Token_Index := No_Token_Index; Token_Pos350 : Token_Index := No_Token_Index; Token_Res350 : Token_Index := No_Token_Index; Defer_Pos330 : Token_Index := No_Token_Index; Defer_Res330 : Bare_Parent_List := No_Bare_Ada_Node; Transform_Res154 : Bare_Interface_Type_Def := No_Bare_Ada_Node; Transform_Diags154 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Interface_Type_Def_Transform_Parse4_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res154 := M.Instance; return Transform_Res154; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res154; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags154 := Parser.Diagnostics.Length; -- Start row_code Row_Pos212 := Pos; -- Start opt_code -- Start or_code Or_Pos73 := No_Token_Index; Or_Res73 := No_Bare_Ada_Node; -- Start transform_code Transform_Diags150 := Parser.Diagnostics.Length; -- Start row_code Row_Pos213 := Row_Pos212; -- Start tok_code Token_Res345 := Row_Pos213; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res345)); begin if T.Kind /= From_Token_Kind (Ada_Limited) then Token_Pos345 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos213 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos213, Expected_Token_Id => Ada_Limited, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos345 := Row_Pos213 + 1; end if; end; -- End tok_code if Token_Pos345 /= No_Token_Index then Row_Pos213 := Token_Pos345; else Row_Pos213 := No_Token_Index; goto Exit_Row213_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos213 /= No_Token_Index then Transform_Res150 := Allocate_Interface_Kind_Limited (Parser.Mem_Pool); Initialize (Self => Transform_Res150, Kind => Ada_Interface_Kind_Limited, Unit => Parser.Unit, Token_Start_Index => Row_Pos212, Token_End_Index => (if Row_Pos213 = Row_Pos212 then No_Token_Index else Row_Pos213 - 1)); elsif Row_Pos213 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags150); end if; -- End transform_code if Row_Pos213 /= No_Token_Index then Or_Pos73 := Row_Pos213; Or_Res73 := Transform_Res150; goto Exit_Or74; end if; -- Start transform_code Transform_Diags151 := Parser.Diagnostics.Length; -- Start row_code Row_Pos214 := Row_Pos212; -- Start tok_code Token_Res346 := Row_Pos214; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res346)); begin if T.Kind /= From_Token_Kind (Ada_Task) then Token_Pos346 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos214 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos214, Expected_Token_Id => Ada_Task, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos346 := Row_Pos214 + 1; end if; end; -- End tok_code if Token_Pos346 /= No_Token_Index then Row_Pos214 := Token_Pos346; else Row_Pos214 := No_Token_Index; goto Exit_Row214_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos214 /= No_Token_Index then Transform_Res151 := Allocate_Interface_Kind_Task (Parser.Mem_Pool); Initialize (Self => Transform_Res151, Kind => Ada_Interface_Kind_Task, Unit => Parser.Unit, Token_Start_Index => Row_Pos212, Token_End_Index => (if Row_Pos214 = Row_Pos212 then No_Token_Index else Row_Pos214 - 1)); elsif Row_Pos214 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags151); end if; -- End transform_code if Row_Pos214 /= No_Token_Index then Or_Pos73 := Row_Pos214; Or_Res73 := Transform_Res151; goto Exit_Or74; end if; -- Start transform_code Transform_Diags152 := Parser.Diagnostics.Length; -- Start row_code Row_Pos215 := Row_Pos212; -- Start tok_code Token_Res347 := Row_Pos215; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res347)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Protected) then Token_Pos347 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos215 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos215, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos347 := Row_Pos215 + 1; end if; end; -- End tok_code if Token_Pos347 /= No_Token_Index then Row_Pos215 := Token_Pos347; else Row_Pos215 := No_Token_Index; goto Exit_Row215_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos215 /= No_Token_Index then Transform_Res152 := Allocate_Interface_Kind_Protected (Parser.Mem_Pool); Initialize (Self => Transform_Res152, Kind => Ada_Interface_Kind_Protected, Unit => Parser.Unit, Token_Start_Index => Row_Pos212, Token_End_Index => (if Row_Pos215 = Row_Pos212 then No_Token_Index else Row_Pos215 - 1)); elsif Row_Pos215 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags152); end if; -- End transform_code if Row_Pos215 /= No_Token_Index then Or_Pos73 := Row_Pos215; Or_Res73 := Transform_Res152; goto Exit_Or74; end if; -- Start transform_code Transform_Diags153 := Parser.Diagnostics.Length; -- Start row_code Row_Pos216 := Row_Pos212; -- Start tok_code Token_Res348 := Row_Pos216; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res348)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Synchronized) then Token_Pos348 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos216 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos216, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos348 := Row_Pos216 + 1; end if; end; -- End tok_code if Token_Pos348 /= No_Token_Index then Row_Pos216 := Token_Pos348; else Row_Pos216 := No_Token_Index; goto Exit_Row216_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos216 /= No_Token_Index then Transform_Res153 := Allocate_Interface_Kind_Synchronized (Parser.Mem_Pool); Initialize (Self => Transform_Res153, Kind => Ada_Interface_Kind_Synchronized, Unit => Parser.Unit, Token_Start_Index => Row_Pos212, Token_End_Index => (if Row_Pos216 = Row_Pos212 then No_Token_Index else Row_Pos216 - 1)); elsif Row_Pos216 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags153); end if; -- End transform_code if Row_Pos216 /= No_Token_Index then Or_Pos73 := Row_Pos216; Or_Res73 := Transform_Res153; goto Exit_Or74; end if; <> -- End or_code if Or_Pos73 = No_Token_Index then Or_Res73 := No_Bare_Ada_Node; Or_Pos73 := Row_Pos212; end if; -- End opt_code if Or_Pos73 /= No_Token_Index then Row_Pos212 := Or_Pos73; else Row_Pos212 := No_Token_Index; goto Exit_Row212_0; end if; -- Start tok_code Token_Res349 := Row_Pos212; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res349)); begin if T.Kind /= From_Token_Kind (Ada_Identifier) or else T.Symbol /= Precomputed_Symbol (Precomputed_Symbol_Table (Parser.TDH.Symbols), Precomputed_Sym_Interface_333) then Token_Pos349 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos212 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos212, Expected_Token_Id => Ada_Identifier, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos349 := Row_Pos212 + 1; end if; end; -- End tok_code if Token_Pos349 /= No_Token_Index then Row_Pos212 := Token_Pos349; else Row_Pos212 := No_Token_Index; goto Exit_Row212_0; end if; -- Start opt_code -- Start row_code Row_Pos217 := Row_Pos212; -- Start tok_code Token_Res350 := Row_Pos217; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res350)); begin if T.Kind /= From_Token_Kind (Ada_And) then Token_Pos350 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos217 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos217, Expected_Token_Id => Ada_And, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos350 := Row_Pos217 + 1; end if; end; -- End tok_code if Token_Pos350 /= No_Token_Index then Row_Pos217 := Token_Pos350; else Row_Pos217 := No_Token_Index; goto Exit_Row217_0; end if; Defer_Res330 := Parent_List_List_Parse0 (Parser, Row_Pos217); Defer_Pos330 := Parser.Current_Pos; if Defer_Pos330 /= No_Token_Index then Row_Pos217 := Defer_Pos330; else Row_Pos217 := No_Token_Index; goto Exit_Row217_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos217 = No_Token_Index then Defer_Res330 := Allocate_Parent_List (Parser.Mem_Pool); Initialize (Self => Defer_Res330, Kind => Ada_Parent_List, Unit => Parser.Unit, Token_Start_Index => Row_Pos212 - 1, Token_End_Index => No_Token_Index); Initialize_List (Self => Defer_Res330, Parser => Parser, Count => 0); Row_Pos217 := Row_Pos212; end if; -- End opt_code if Row_Pos217 /= No_Token_Index then Row_Pos212 := Row_Pos217; else Row_Pos212 := No_Token_Index; goto Exit_Row212_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos212 /= No_Token_Index then Transform_Res154 := Allocate_Interface_Type_Def (Parser.Mem_Pool); Initialize (Self => Transform_Res154, Kind => Ada_Interface_Type_Def, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos212 = Pos then No_Token_Index else Row_Pos212 - 1)); Initialize_Fields_For_Interface_Type_Def (Self => Transform_Res154, Interface_Type_Def_F_Interface_Kind => Or_Res73, Interface_Type_Def_F_Interfaces => Defer_Res330); if Or_Res73 /= null and then Is_Incomplete (Or_Res73) then Transform_Res154.Last_Attempted_Child := 0; elsif Or_Res73 /= null and then not Is_Ghost (Or_Res73) then Transform_Res154.Last_Attempted_Child := -1; end if; if Defer_Res330 /= null and then Is_Incomplete (Defer_Res330) then Transform_Res154.Last_Attempted_Child := 0; elsif Defer_Res330 /= null and then not Is_Ghost (Defer_Res330) then Transform_Res154.Last_Attempted_Child := -1; end if; elsif Row_Pos212 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags154); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Interface_Type_Def_Transform_Parse4_Memo, Row_Pos212 /= No_Token_Index, Transform_Res154, Pos, Row_Pos212); Parser.Current_Pos := Row_Pos212; return Transform_Res154; end Interface_Type_Def_Transform_Parse4; function Iterated_Assoc_Transform_Parse0 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Iterated_Assoc is use Bare_Iterated_Assoc_Memos; Nobt28 : Boolean := False; Row_Pos218 : Token_Index := No_Token_Index; Token_Pos351 : Token_Index := No_Token_Index; Token_Res351 : Token_Index := No_Token_Index; Defer_Pos331 : Token_Index := No_Token_Index; Defer_Res331 : Bare_For_Loop_Spec := No_Bare_Ada_Node; Token_Pos352 : Token_Index := No_Token_Index; Token_Res352 : Token_Index := No_Token_Index; Defer_Pos332 : Token_Index := No_Token_Index; Defer_Res332 : Bare_Expr := No_Bare_Ada_Node; Row_Progress25 : Integer := 0; Transform_Res155 : Bare_Iterated_Assoc := No_Bare_Ada_Node; Transform_Has_Failed25 : Boolean := False; Transform_Diags155 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Iterated_Assoc_Transform_Parse0_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res155 := M.Instance; return Transform_Res155; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res155; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags155 := Parser.Diagnostics.Length; -- Start row_code Row_Pos218 := Pos; -- Start tok_code Token_Res351 := Row_Pos218; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res351)); begin if T.Kind /= From_Token_Kind (Ada_For) then Token_Pos351 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos218 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos218, Expected_Token_Id => Ada_For, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos351 := Row_Pos218 + 1; end if; end; -- End tok_code Row_Progress25 := 1; if Token_Pos351 /= No_Token_Index then Row_Pos218 := Token_Pos351; else Row_Pos218 := No_Token_Index; goto Exit_Row218_0; end if; Nobt28 := True; Nobt28 := Nobt28; Row_Progress25 := 2; if Row_Pos218 /= No_Token_Index then Row_Pos218 := Row_Pos218; else Row_Pos218 := No_Token_Index; goto Exit_Row218_0; end if; Defer_Res331 := For_Loop_Param_Spec_Transform_Parse3 (Parser, Row_Pos218); Defer_Pos331 := Parser.Current_Pos; Row_Progress25 := 3; if Defer_Pos331 /= No_Token_Index then Row_Pos218 := Defer_Pos331; else Row_Pos218 := No_Token_Index; goto Exit_Row218_0; end if; -- Start tok_code Token_Res352 := Row_Pos218; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res352)); begin if T.Kind /= From_Token_Kind (Ada_Arrow) then Token_Pos352 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos218 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos218, Expected_Token_Id => Ada_Arrow, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos352 := Row_Pos218 + 1; end if; end; -- End tok_code Row_Progress25 := 4; if Token_Pos352 /= No_Token_Index then Row_Pos218 := Token_Pos352; else Row_Pos218 := No_Token_Index; goto Exit_Row218_0; end if; Defer_Res332 := Expr_Or_Parse0 (Parser, Row_Pos218); Defer_Pos332 := Parser.Current_Pos; Row_Progress25 := 5; if Defer_Pos332 /= No_Token_Index then Row_Pos218 := Defer_Pos332; else Row_Pos218 := No_Token_Index; goto Exit_Row218_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos218 = No_Token_Index and then Nobt28 then Row_Pos218 := Parser.Last_Fail.Pos; Transform_Has_Failed25 := True; end if; if Row_Pos218 /= No_Token_Index then Transform_Res155 := Allocate_Iterated_Assoc (Parser.Mem_Pool); Initialize (Self => Transform_Res155, Kind => Ada_Iterated_Assoc, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos218 = Pos then No_Token_Index else Row_Pos218 - 1)); Initialize_Fields_For_Iterated_Assoc (Self => Transform_Res155, Iterated_Assoc_F_Spec => Defer_Res331, Iterated_Assoc_F_R_Expr => Defer_Res332); if Defer_Res331 /= null and then Is_Incomplete (Defer_Res331) then Transform_Res155.Last_Attempted_Child := 0; elsif Defer_Res331 /= null and then not Is_Ghost (Defer_Res331) then Transform_Res155.Last_Attempted_Child := -1; end if; if Defer_Res332 /= null and then Is_Incomplete (Defer_Res332) then Transform_Res155.Last_Attempted_Child := 0; elsif Defer_Res332 /= null and then not Is_Ghost (Defer_Res332) then Transform_Res155.Last_Attempted_Child := -1; end if; if Transform_Has_Failed25 then Transform_Res155.Last_Attempted_Child := Row_Progress25; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse ")); Add_Last_Fail_Diagnostic (Parser); end if; elsif Row_Pos218 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags155); end if; -- End transform_code ------------------------------- -- END MAIN COMBINATORS CODE -- ------------------------------- Set (Parser.Private_Part.Iterated_Assoc_Transform_Parse0_Memo, Row_Pos218 /= No_Token_Index, Transform_Res155, Pos, Row_Pos218); Parser.Current_Pos := Row_Pos218; return Transform_Res155; end Iterated_Assoc_Transform_Parse0; function Label_Transform_Parse1 (Parser : in out Parser_Type; Pos : Token_Index) return Bare_Label is use Bare_Label_Memos; Nobt29 : Boolean := False; Row_Pos219 : Token_Index := No_Token_Index; Token_Pos353 : Token_Index := No_Token_Index; Token_Res353 : Token_Index := No_Token_Index; Row_Pos220 : Token_Index := No_Token_Index; Defer_Pos333 : Token_Index := No_Token_Index; Defer_Res333 : Bare_Defining_Name := No_Bare_Ada_Node; Transform_Res156 : Bare_Label_Decl := No_Bare_Ada_Node; Transform_Diags156 : Ada.Containers.Count_Type; Token_Pos354 : Token_Index := No_Token_Index; Token_Res354 : Token_Index := No_Token_Index; Row_Progress26 : Integer := 0; Transform_Res157 : Bare_Label := No_Bare_Ada_Node; Transform_Has_Failed26 : Boolean := False; Transform_Diags157 : Ada.Containers.Count_Type; M : Memo_Entry := Get (Parser.Private_Part.Label_Transform_Parse1_Memo, Pos); begin if M.State = Success then Parser.Current_Pos := M.Final_Pos; Transform_Res157 := M.Instance; return Transform_Res157; elsif M.State = Failure then Parser.Current_Pos := No_Token_Index; return Transform_Res157; end if; --------------------------- -- MAIN COMBINATORS CODE -- --------------------------- -- Start transform_code Transform_Diags157 := Parser.Diagnostics.Length; -- Start row_code Row_Pos219 := Pos; -- Start tok_code Token_Res353 := Row_Pos219; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res353)); begin if T.Kind /= From_Token_Kind (Ada_Label_Start) then Token_Pos353 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos219 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos219, Expected_Token_Id => Ada_Label_Start, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos353 := Row_Pos219 + 1; end if; end; -- End tok_code Row_Progress26 := 1; if Token_Pos353 /= No_Token_Index then Row_Pos219 := Token_Pos353; else Row_Pos219 := No_Token_Index; goto Exit_Row219_0; end if; Nobt29 := True; Nobt29 := Nobt29; Row_Progress26 := 2; if Row_Pos219 /= No_Token_Index then Row_Pos219 := Row_Pos219; else Row_Pos219 := No_Token_Index; goto Exit_Row219_0; end if; -- Start transform_code Transform_Diags156 := Parser.Diagnostics.Length; -- Start row_code Row_Pos220 := Row_Pos219; Defer_Res333 := Defining_Id_Transform_Parse0 (Parser, Row_Pos220); Defer_Pos333 := Parser.Current_Pos; if Defer_Pos333 /= No_Token_Index then Row_Pos220 := Defer_Pos333; else Row_Pos220 := No_Token_Index; goto Exit_Row220_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos220 /= No_Token_Index then Transform_Res156 := Allocate_Label_Decl (Parser.Mem_Pool); Initialize (Self => Transform_Res156, Kind => Ada_Label_Decl, Unit => Parser.Unit, Token_Start_Index => Row_Pos219, Token_End_Index => (if Row_Pos220 = Row_Pos219 then No_Token_Index else Row_Pos220 - 1)); Initialize_Fields_For_Label_Decl (Self => Transform_Res156, Label_Decl_F_Name => Defer_Res333); if Defer_Res333 /= null and then Is_Incomplete (Defer_Res333) then Transform_Res156.Last_Attempted_Child := 0; elsif Defer_Res333 /= null and then not Is_Ghost (Defer_Res333) then Transform_Res156.Last_Attempted_Child := -1; end if; elsif Row_Pos220 = No_Token_Index then Parser.Diagnostics.Set_Length (Transform_Diags156); end if; -- End transform_code Row_Progress26 := 3; if Row_Pos220 /= No_Token_Index then Row_Pos219 := Row_Pos220; else Row_Pos219 := No_Token_Index; goto Exit_Row219_0; end if; -- Start tok_code Token_Res354 := Row_Pos219; declare T : constant Stored_Token_Data := Token_Vectors.Get (Parser.TDH.Tokens, Natural (Token_Res354)); begin if T.Kind /= From_Token_Kind (Ada_Label_End) then Token_Pos354 := No_Token_Index; if Parser.Last_Fail.Pos <= Row_Pos219 then Parser.Last_Fail := (Kind => Token_Fail, Pos => Row_Pos219, Expected_Token_Id => Ada_Label_End, Found_Token_Id => To_Token_Kind (T.Kind)); end if; else Token_Pos354 := Row_Pos219 + 1; end if; end; -- End tok_code Row_Progress26 := 4; if Token_Pos354 /= No_Token_Index then Row_Pos219 := Token_Pos354; else Row_Pos219 := No_Token_Index; goto Exit_Row219_0; end if; pragma Warnings (Off, "referenced"); <> pragma Warnings (On, "referenced"); -- End row_code if Row_Pos219 = No_Token_Index and then Nobt29 then Row_Pos219 := Parser.Last_Fail.Pos; Transform_Has_Failed26 := True; end if; if Row_Pos219 /= No_Token_Index then Transform_Res157 := Allocate_Label (Parser.Mem_Pool); Initialize (Self => Transform_Res157, Kind => Ada_Label, Unit => Parser.Unit, Token_Start_Index => Pos, Token_End_Index => (if Row_Pos219 = Pos then No_Token_Index else Row_Pos219 - 1)); Initialize_Fields_For_Label (Self => Transform_Res157, Label_F_Decl => Transform_Res156); if Transform_Res156 /= null and then Is_Incomplete (Transform_Res156) then Transform_Res157.Last_Attempted_Child := 0; elsif Transform_Res156 /= null and then not Is_Ghost (Transform_Res156) then Transform_Res157.Last_Attempted_Child := -1; end if; if Transform_Has_Failed26 then Transform_Res157.Last_Attempted_Child := Row_Progress26; Append (Parser.Diagnostics, Sloc_Range (Parser.TDH.all, Get_Token (Parser.TDH.all, Pos)), To_Text ("Cannot parse