Setting up the use of this module.
§1. This section simply 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 LINGUISTICS_MODULE TRUE
enumerate adjective_CLASS
enumerate article_CLASS
enumerate article_usage_CLASS
enumerate quantifier_CLASS
enumerate determiner_CLASS
enumerate grammatical_category_CLASS
enumerate linguistic_stock_item_CLASS
enumerate grammatical_usage_CLASS
enumerate verb_CLASS
enumerate verb_form_CLASS
enumerate verb_meaning_CLASS
enumerate verb_sense_CLASS
enumerate verb_usage_CLASS
enumerate verb_usage_tier_CLASS
enumerate preposition_CLASS
enumerate noun_CLASS
enumerate noun_usage_CLASS
enumerate pronoun_CLASS
enumerate pronoun_usage_CLASS
enumerate small_word_set_CLASS
enumerate special_meaning_holder_CLASS
enumerate time_period_CLASS
DECLARE_CLASS(adjective) DECLARE_CLASS(article) DECLARE_CLASS(article_usage) DECLARE_CLASS(quantifier) DECLARE_CLASS(determiner) DECLARE_CLASS(grammatical_category) DECLARE_CLASS(linguistic_stock_item) DECLARE_CLASS(grammatical_usage) DECLARE_CLASS(verb) DECLARE_CLASS(verb_form) DECLARE_CLASS_ALLOCATED_IN_ARRAYS(verb_meaning, 100) DECLARE_CLASS(verb_sense) DECLARE_CLASS(verb_usage) DECLARE_CLASS(verb_usage_tier) DECLARE_CLASS(preposition) DECLARE_CLASS(time_period) DECLARE_CLASS(noun) DECLARE_CLASS(noun_usage) DECLARE_CLASS(pronoun) DECLARE_CLASS(pronoun_usage) DECLARE_CLASS(special_meaning_holder) DECLARE_CLASS(small_word_set)
enumerate LINGUISTIC_STOCK_DA
enumerate TIME_PERIODS_DA
enumerate VERB_USAGES_DA
enumerate VERB_FORMS_DA
COMPILE_WRITER(noun *, Nouns::log) void LinguisticsModule::start(void) { Register this module's debugging log aspects3.1; Register this module's debugging log writers3.2; Declare new memory allocation reasons3.3; Stock::create_categories(); Cardinals::enable_in_word_form(); Articles::mark_for_preform(); Prepositions::mark_for_preform(); Diagrams::declare_annotations(); } void LinguisticsModule::end(void) { }
§3.1. Register this module's debugging log aspects3.1 =
Log::declare_aspect(LINGUISTIC_STOCK_DA, U"linguistic stock", FALSE, FALSE); Log::declare_aspect(TIME_PERIODS_DA, U"time periods", FALSE, FALSE); Log::declare_aspect(VERB_USAGES_DA, U"verb usages", FALSE, TRUE); Log::declare_aspect(VERB_FORMS_DA, U"verb forms", FALSE, TRUE);
- This code is used in §3.
§3.2. Register this module's debugging log writers3.2 =
Writers::register_logger('t', Occurrence::log); Writers::register_logger('p', Prepositions::log); Writers::register_logger('w', Verbs::log_verb); Writers::register_logger('y', VerbMeanings::log); REGISTER_WRITER('z', Nouns::log);
- This code is used in §3.
§3.3. Not all of our memory will be claimed in the form of structures: now and then
we need to use the equivalent of traditional malloc and calloc routines.
enumerate STOCK_MREASON
enumerate SWS_MREASON
Declare new memory allocation reasons3.3 =
Memory::reason_name(STOCK_MREASON, "linguistic stock array"); Memory::reason_name(SWS_MREASON, "small word set array");
- This code is used in §3.
§4. This module requires words, which contains the Preform parser. When that initialises, it calls the following routine to improve its performance.
define PREFORM_OPTIMISER_WORDS_CALLBACK LinguisticsModule::preform_optimiser
int first_round_of_nt_optimisation_made = FALSE; void LinguisticsModule::preform_optimiser(void) { Cardinals::preform_optimiser(); VerbUsages::preform_optimiser(); Prepositions::preform_optimiser(); if (first_round_of_nt_optimisation_made == FALSE) { first_round_of_nt_optimisation_made = TRUE; Quantifiers::make_built_in(); } }