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 =
;
- This code is used in §3.
§3.2. Register this module's stream writers3.2 =
;
- This code is used in §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);
- This code is used in §3.
§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);
- This code is used in §3.
§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)