PreviousUpNext

14.5.22  Module_Level_Declarations

The compiler Module_Level_Declarations api defines access to functionlity tracking modules in the compilation process. (In this context, a “module” is essentially what you get from compiling one sourcefile.)

The Module_Level_Declarations api is implemented by the module_level_declarations package.

The Module_Level_Declarations api source code is in src/lib/compiler/front/typer-stuff/modules/module.api.

See also: Module_Junk.

The above information is manually maintained and may contain errors.

api {    Share_Spec  = List(symbol_path::Symbol_Path );
    Api  = API Api_Record | ERRONEOUS_API;
    Api_Element 
      = GENERIC_IN_API {a_generic_api:Generic_Api,  module_stamp:stamp::Stamp, 
                        slot:Int}
      | PACKAGE_IN_API {an_api:Api, 
                        definition:Null_Or(((Package_Definition , Int)) ), 
                        module_stamp:stamp::Stamp,  slot:Int}
      | TYP_IN_API {is_a_replica:Bool,  module_stamp:stamp::Stamp, 
                    scope:Int,  typ:types::Typ}
      | VALCON_IN_API {datatype:types::Valcon,  slot:Null_Or(Int )}
      | VALUE_IN_API {slot:Int,  type:types::Type};
    Generic_Api 
      = ERRONEOUS_GENERIC_API
      | GENERIC_API {body_api:Api,  kind:Null_Or(symbol::Symbol ), 
                     parameter_api:Api, 
                     parameter_symbol:Null_Or(symbol::Symbol ), 
                     parameter_variable:stamp::Stamp};
    External_Definition 
      = EXTERNAL_DEFINITION_OF_PACKAGE (symbol_path::Symbol_Path , Package_Definition)
      | EXTERNAL_DEFINITION_OF_TYP {extdef_is_relative:Bool, 
                                    extdef_path:symbol_path::Symbol_Path, 
                                    extdef_typ:types::Typ};
    Package_Definition 
      = CONSTANT_PACKAGE_DEFINITION Package
      | VARIABLE_PACKAGE_DEFINITION (Api , ?.stamppath::Stamppath);
    Package 
      = A_PACKAGE Package_Record
      | ERRONEOUS_PACKAGE
      | PACKAGE_API {an_api:Api,  stamppath:?.stamppath::Stamppath};
    Generic  = ERRONEOUS_GENERIC | GENERIC Generic_Record;
    Typerstore_Entry 
      = ERRONEOUS_ENTRY
      | GENERIC_ENTRY Typechecked_Generic
      | PACKAGE_ENTRY Typechecked_Package
      | TYP_ENTRY Typechecked_Typ;
    Generic_Closure 
      = GENERIC_CLOSURE {body_package_expression:Package_Expression, 
                         parameter_module_stamp:stamp::Stamp, 
                         typerstore:Typerstore};
    Stamp_Expression 
      = GET_STAMP Package_Expression | MAKE_STAMP;
    Typechecked_Typ_Expression 
      = CONSTANT_TYP types::Typ
      | FORMAL_TYP types::Typ
      | TYPE_VARIABLE_TYP ?.stamppath::Stamppath;
    Package_Expression 
      = ABSTRACT_PACKAGE (Api , Package_Expression)
      | APPLY (Generic_Expression , Package_Expression)
      | COERCED_PACKAGE {boundvar:stamp::Stamp,  coercion:Package_Expression, 
                         raw:Package_Expression}
      | CONSTANT_PACKAGE Typechecked_Package
      | FORMAL_PACKAGE Generic_Api
      | PACKAGE {module_declaration:Module_Declaration, 
                 stamp:Stamp_Expression}
      | PACKAGE_LET {declaration:Module_Declaration, 
                     expression:Package_Expression}
      | VARIABLE_PACKAGE ?.stamppath::Stamppath;
    Generic_Expression 
      = CONSTANT_GENERIC Typechecked_Generic
      | LAMBDA {body:Package_Expression,  parameter:stamp::Stamp}
      | LAMBDA_TP {an_api:Generic_Api,  body:Package_Expression, 
                   parameter:stamp::Stamp}
      | LET_GENERIC (Module_Declaration , Generic_Expression)
      | VARIABLE_GENERIC ?.stamppath::Stamppath;
    Module_Expression 
      = DUMMY_GENERIC_EVALUATION_EXPRESSION
      | ERRONEOUS_ENTRY_EXPRESSION
      | GENERIC_EXPRESSION Generic_Expression
      | PACKAGE_EXPRESSION Package_Expression
      | TYP_EXPRESSION Typechecked_Typ_Expression;
    Module_Declaration 
      = EMPTY_GENERIC_EVALUATION_DECLARATION
      | ERRONEOUS_ENTRY_DECLARATION
      | GENERIC_DECLARATION (stamp::Stamp , Generic_Expression)
      | LOCAL_DECLARATION (Module_Declaration , Module_Declaration)
      | PACKAGE_DECLARATION (stamp::Stamp , Package_Expression , symbol::Symbol)
      | SEQUENTIAL_DECLARATIONS List(Module_Declaration )
      | TYP_DECLARATION (stamp::Stamp , Typechecked_Typ_Expression);
    Typerstore 
      = ERRONEOUS_ENTRY_DICTIONARY
      | MARKED_TYPERSTORE Typerstore_Record
      | NAMED_TYPERSTORE (?.stamppath::Map(Typerstore_Entry ) , Typerstore)
      | NULL_TYPERSTORE;
    Modtree 
      = API_MODTREE_NODE Api_Record
      | GENERIC_MODTREE_NODE Generic_Record
      | MODTREE_BRANCH List(Modtree )
      | PACKAGE_MODTREE_NODE Package_Record
      | PLAIN_TYP_MODTREE_NODE types::Plain_Typ_Record
      | TYPERSTORE_MODTREE_NODE Typerstore_Record;
    Stub_Info  = {is_lib:Bool,  modtree:Modtree, 
                  owner:picklehash::Picklehash};
    Api_Record  = {api_elements:List(((symbol::Symbol , Api_Element)) ), 
                   closed:Bool,  contains_generic:Bool, 
                   name:Null_Or(symbol::Symbol ), 
                   package_sharing:List(Share_Spec ), 
                   property_list:property_list::Property_List, 
                   stamp:stamp::Stamp,  stub:Null_Or(Stub_Info ), 
                   symbols:List(symbol::Symbol ), 
                   type_sharing:List(Share_Spec )};
    Typerstore_Record  = {stamp:stamp::Stamp,  stub:Null_Or(Stub_Info ), 
                          typerstore:Typerstore};
    Typechecked_Package  = {inverse_path:?.inverse_path::Inverse_Path, 
                            property_list:property_list::Property_List, 
                            stamp:stamp::Stamp,  stub:Null_Or(Stub_Info ), 
                            typerstore:Typerstore};
    Package_Record  = {an_api:Api, 
                       inlining_info:inlining_information::Inlining_Information, 
                       typechecked_package:Typechecked_Package, 
                       varhome:varhome::Varhome};
    Typechecked_Generic  =
      {generic_closure:Generic_Closure, 
       inverse_path:?.inverse_path::Inverse_Path, 
       property_list:property_list::Property_List, 
       stamp:stamp::Stamp,  stub:Null_Or(Stub_Info ), 
       typ_path:Null_Or(types::Typ_Path )};
    Generic_Record  = {a_generic_api:Generic_Api, 
                       inlining_info:inlining_information::Inlining_Information, 
                       typechecked_generic:Typechecked_Generic, 
                       varhome:varhome::Varhome};
    Typechecked_Typ  = types::Typ;
    Api_Elements  =
      List(((symbol::Symbol , Api_Element)) );
    bogus_typechecked_package : Typechecked_Package;
    bogus_typechecked_generic : Typechecked_Generic;
};


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext