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 WORDS_MODULE TRUE

§2. Like all modules, this one must define a start and end function:

enumerate LEXER_TEXT_MREASON 
enumerate LEXER_WORDS_MREASON 
enumerate LEXICAL_OUTPUT_DA 
enumerate VOCABULARY_DA 
void WordsModule::start(void) {
    Memory::reason_name(LEXER_TEXT_MREASON, "source text");
    Memory::reason_name(LEXER_WORDS_MREASON, "source text details");

    Writers::register_writer('A', &WordAssemblages::writer); /* %A = write word assemblage */
    Writers::register_writer_I('N', &Lexer::writer);         /* %N = write word with this number */
    Writers::register_writer('V', &Vocabulary::writer);      /* %V = write vocabulary entry */
    Writers::register_writer_W('W', &Wordings::writer);      /* %W = write wording */

    Log::declare_aspect(LEXICAL_OUTPUT_DA, U"lexical output", FALSE, FALSE);
    Log::declare_aspect(VOCABULARY_DA, U"vocabulary", FALSE, FALSE);

    Writers::register_logger('f', WordAssemblages::log); /* $f = log word assemblage */
    Writers::register_logger('v', Vocabulary::log);      /* $v = log vocabulary entry */

    Lexer::start();
    Vocabulary::create_punctuation();
    LoadPreform::create_punctuation();
    Nonterminals::register();
}

void WordsModule::end(void) {
}