/* Copyright (C) 1995 Bjoern Beutel. */

/* Description. =============================================================*/

/* This module contains data structures and functions related to the generation
 * of the allomorph lexicon. */

/* Variables. ===============================================================*/

extern int_t lex_entry_line_number; 
/* Line number of lexical entry just parsed. Read only! */

extern string_t lex_entry_file_name;
/* Name of lexicon file just parsed. Read only! */

extern rule_sys_t *allo_rule_sys; /* Read only! */

/* Functions. ===============================================================*/

extern void generate_allos_for_file( string_t source_name,
				     string_t prelex_name,
				     bool_t use_filter );
/* Parse a lexicon file SOURCE_NAME and a precompiled lexicon file PRELEX_NAME.
 * Generate allomorphs. Write allomorphs into lexicon buffer.
 * Don't use the output filter if USE_FILTER == FALSE. */

extern void generate_allos_for_line( string_t lexicon_name, int_t line );
/* Read line LINE in lexicon file LEXICON_NAME and generate allomorphs.
 * Write allomorphs into lexicon buffer. */

extern void generate_allos_for_string( string_t feat_string );
/* Generate allomorphs from FEAT_STRING, which should contain a readable
 * feature structure.  Write allomorphs into lexicon buffer. */

extern void write_lex_buffer( string_t file_name );
/* Write lexicon buffer to file FILE_NAME as a run time lexicon. */

extern void write_prelex_file( string_t file_name );
/* Write lexicon buffer to prelex file FILE_NAME. */

extern void print_lex_buffer( FILE *stream, string_t allo_format );
/* Print all lexicon entries in the buffer to STREAM using format ALLO_FORMAT.
 * If ALLO_FORMAT == NULL, do line breaking. */

extern void print_lex_statistics( FILE *stream );
/* Print statistics about lexicon buffer into STREAM. */

extern void read_lex_constants( string_t lexicon_name );
/* Read all constants in file LEXICON_NAME. */

extern void init_lex_compiler( string_t allo_rule_file );
/* Initialise the lex_compiler module.
 * Use allomorph rules from ALLO_RULE_FILE. */

extern void terminate_lex_compiler( void );
/* Free the lex_compiler module. */

/* End of file. =============================================================*/
