Setting up the use of this module.


§1. This section simoly sets up the module in ways expected by foundation, and contains no code of interest. The following constant exists only in tools which use this module:

define IF_MODULE TRUE

§2. To begin with, this module needs to allocate memory:

enum action_name_MT
enum auxiliary_file_MT
enum backdrop_found_in_notice_MT
enum cached_understanding_MT
enum command_index_entry_MT
enum connected_submap_MT
enum door_dir_notice_MT
enum door_to_notice_MT
enum EPS_map_level_MT
enum grammar_line_MT
enum grammar_verb_MT
enum loop_over_scope_MT
enum map_data_MT
enum named_action_pattern_MT
enum noun_filter_token_MT
enum parse_name_notice_MT
enum parsing_data_MT
enum parsing_pp_data_MT
enum regions_data_MT
enum reserved_command_verb_MT
enum rubric_holder_MT
enum scene_MT
enum short_name_notice_MT
enum slash_gpr_MT
enum spatial_data_MT
enum action_name_list_array_MT
enum action_pattern_array_MT
enum ap_optional_clause_array_MT
enum scene_connector_array_MT
enum understanding_item_array_MT
enum understanding_reference_array_MT
ALLOCATE_INDIVIDUALLY(action_name)
ALLOCATE_INDIVIDUALLY(auxiliary_file)
ALLOCATE_INDIVIDUALLY(backdrop_found_in_notice)
ALLOCATE_INDIVIDUALLY(cached_understanding)
ALLOCATE_INDIVIDUALLY(command_index_entry)
ALLOCATE_INDIVIDUALLY(connected_submap)
ALLOCATE_INDIVIDUALLY(door_dir_notice)
ALLOCATE_INDIVIDUALLY(door_to_notice)
ALLOCATE_INDIVIDUALLY(EPS_map_level)
ALLOCATE_INDIVIDUALLY(grammar_line)
ALLOCATE_INDIVIDUALLY(grammar_verb)
ALLOCATE_INDIVIDUALLY(loop_over_scope)
ALLOCATE_INDIVIDUALLY(map_data)
ALLOCATE_INDIVIDUALLY(named_action_pattern)
ALLOCATE_INDIVIDUALLY(noun_filter_token)
ALLOCATE_INDIVIDUALLY(parse_name_notice)
ALLOCATE_INDIVIDUALLY(parsing_data)
ALLOCATE_INDIVIDUALLY(parsing_pp_data)
ALLOCATE_INDIVIDUALLY(regions_data)
ALLOCATE_INDIVIDUALLY(reserved_command_verb)
ALLOCATE_INDIVIDUALLY(rubric_holder)
ALLOCATE_INDIVIDUALLY(scene)
ALLOCATE_INDIVIDUALLY(short_name_notice)
ALLOCATE_INDIVIDUALLY(slash_gpr)
ALLOCATE_INDIVIDUALLY(spatial_data)

ALLOCATE_IN_ARRAYS(action_name_list, 1000)
ALLOCATE_IN_ARRAYS(action_pattern, 100)
ALLOCATE_IN_ARRAYS(ap_optional_clause, 400)
ALLOCATE_IN_ARRAYS(scene_connector, 1000)
ALLOCATE_IN_ARRAYS(understanding_item, 100)
ALLOCATE_IN_ARRAYS(understanding_reference, 100)

MAKE_ANNOTATION_FUNCTIONS(action_meaning, action_pattern)
MAKE_ANNOTATION_FUNCTIONS(constant_action_name, action_name)
MAKE_ANNOTATION_FUNCTIONS(constant_action_pattern, action_pattern)
MAKE_ANNOTATION_FUNCTIONS(constant_grammar_verb, grammar_verb)
MAKE_ANNOTATION_FUNCTIONS(constant_named_action_pattern, named_action_pattern)
MAKE_ANNOTATION_FUNCTIONS(constant_scene, scene)

§3. The beginning. (The client doesn't need to call the start and end routines, because the foundation module does that automatically.)

COMPILE_WRITER(action_pattern *, PL::Actions::Patterns::log)
COMPILE_WRITER(grammar_verb *, PL::Parsing::Verbs::log)
COMPILE_WRITER(grammar_line *, PL::Parsing::Lines::log)
COMPILE_WRITER(action_name_list *, PL::Actions::Lists::log)
COMPILE_WRITER(action_name *, PL::Actions::log)

void IFModule::start(void) {
    Register this module's memory allocation reasons3.1;
    Register this module's stream writers3.2;
    Register this module's debugging log aspects3.4;
    Register this module's debugging log writers3.5;
}
void IFModule::end(void) {
}

§3.1. Register this module's memory allocation reasons3.1 =

    ;

§3.2. Register this module's stream writers3.2 =

    ;

§3.3.

enum GRAMMAR_DA
enum GRAMMAR_CONSTRUCTION_DA

§3.4. Register this module's debugging log aspects3.4 =

    Log::declare_aspect(GRAMMAR_DA, L"grammar", FALSE, FALSE);
    Log::declare_aspect(GRAMMAR_CONSTRUCTION_DA, L"grammar construction", FALSE, FALSE);

§3.5. Register this module's debugging log writers3.5 =

    REGISTER_WRITER('A', PL::Actions::Patterns::log);
    REGISTER_WRITER('G', PL::Parsing::Verbs::log);
    REGISTER_WRITER('g', PL::Parsing::Lines::log);
    REGISTER_WRITER('L', PL::Actions::Lists::log);
    REGISTER_WRITER('l', PL::Actions::log);

§4. This module uses syntax, and adds the following annotations to the syntax tree.

DECLARE_ANNOTATION_FUNCTIONS(action_meaning, action_pattern)
DECLARE_ANNOTATION_FUNCTIONS(constant_action_name, action_name)
DECLARE_ANNOTATION_FUNCTIONS(constant_action_pattern, action_pattern)
DECLARE_ANNOTATION_FUNCTIONS(constant_grammar_verb, grammar_verb)
DECLARE_ANNOTATION_FUNCTIONS(constant_named_action_pattern, named_action_pattern)
DECLARE_ANNOTATION_FUNCTIONS(constant_scene, scene)