/*

rcsid('$Author: pleuk $',
	'$Date: 1993/05/04 09:59:44 $',
	'$Revision: 1.0 $',
	'$Source: /usr/export/home/projects/ltg2/Pleuk/Distribution/Pleuk/Term/RCS/configure,v $',
	'$State: Exp $').

$Log: configure,v $
# Revision 1.0  1993/05/04  09:59:44  pleuk
# Version 1.00beta from Jo
#
# Revision 0.11  1992/04/16  13:55:12  pleuk
# revisions from SLE - April 1992
#
# Revision 0.6  1991/09/02  13:28:35  pleuk
# revisions up to SLE visit 20 August 1991
#
# Revision 0.1  1991/03/06  13:14:49  pleuk
# *** empty log message ***
#

*/



/*

Definitions for the term-based system

*/

:- eccs_major_module(termunif, 
		    "term representations for grammar objects; version 0, May 15 1990", 
		    '../Term', 'termunif.pl', 
		    [dictionary, lexical_rules, grammar_rules, path_abbreviations, 
		     templates, term_structures]).

:- eccs_new_file_type(dictionary, ".lex", eccs_term_unif_reader, eccs_generic_term_compiler, [lexical_entry], 
				true, true, local, many).
:- eccs_new_file_type(lexical_rules, ".lr", eccs_term_unif_reader, eccs_generic_term_compiler, [lexical_rule], 
				true, true, local, many).
:- eccs_new_file_type(grammar_rules, ".gram", eccs_term_unif_reader, eccs_grammar_rule, [grammar_rule], 
				true, eccs_compile_rules, local, many).
:- eccs_new_file_type(path_abbreviations, ".abb", eccs_term_unif_reader, eccs_path_abbreviation, [path_abbreviation], 
				true, true, global, many).
:- eccs_new_file_type(templates, ".tem", eccs_term_unif_reader, eccs_generic_term_compiler, [template], 
				true, true, local, many).
:- eccs_new_file_type(term_structures, ".term", eccs_term_unif_reader, eccs_term_structure, [term_structure], 
				true, true, global, many).


:- eccs_new_object_type(path_abbreviation, single).
:- eccs_new_object_type(term_structure, single).
:- eccs_new_object_type(lexical_entry, multiple, eccs_print_lexical_entry).
:- eccs_new_object_type(template,  multiple, eccs_print_template).
:- eccs_new_object_type(lexical_rule,  multiple, eccs_print_lexical_rule).
:- eccs_new_object_type(grammar_rule,  multiple, eccs_print_grammar_rule).

:- eccs_profuse_definition([lexical_entry, template]).

/*

The sort module

*/


:- eccs_new_module(sort, "Bit representations for sorts; version 0, May 15 1990",
    			 '../Sort', 'sortmodule.pl',
			 [axioms, sorts]).

:- eccs_new_file_type(axioms, ".axiom", eccs_axiom_file_reader, eccs_axiom, [properties, axiom], 
				true, true, global, unique).

:- eccs_new_file_type(sorts, ".sort", eccs_sort_definition_reader, eccs_sort, [sort_definition, dm_test, model],
				true, (eccs_encode_sort_system, eccs_compile_sorts, eccs_compile_dm_test), global, unique).

:- eccs_new_object_type(axiom, single).
:- eccs_new_object_type(sort_definition, single).
:- eccs_new_object_type(dm_test, single).
:- eccs_new_object_type(properties, single).

/*

Those things we don't want to see

*/

:- eccs_hidden_types([model]).


/*

The Protolexicon

*/

:- eccs_new_module(protolexicon, 
		"High level lexical representation; version 0, Mon May 28 10:19:39 1990", 
		'../Protolexicon', 'protolexicon.pl',
		[morph_tables, network, protolexical_rules, protolexical_entries]).

:- eccs_new_file_type(morph_tables, ".mt", eccs_read_morph_tables, eccs_compile_tables, 
			[table, top_table, table_ids, subsumes, subs, suc, pre, equiv, ctable, cclass], true, eccs_q_compile_tables, global, unique).
:- eccs_new_file_type(network, ".net", eccs_read_network, eccs_compile_network, 
			[requires, fulfils, default], true, eccs_q_check_net, global, unique).
:- eccs_new_file_type(protolexical_entries, ".plex", eccs_read_plex, eccs_compile_plex_entry, 
			[plexical_entry, pderived_entry], true, eccs_close_lexicons, local, many).
:- eccs_new_file_type(protolexical_rules, ".plr", eccs_read_plexrules, eccs_compile_plex_rule, 
			[plexical_rule], true, true, local, many).


:- eccs_new_object_type(table, many).	% ?
:- eccs_new_object_type(cclass, single). % ??
:- eccs_new_object_type(requires, single).
:- eccs_new_object_type(fulfils, single).
:- eccs_new_object_type(default, single).
:- eccs_new_object_type(plexical_entry, single, eccs_print_plexical_entry).
:- eccs_new_object_type(pderived_entry, many, eccs_print_plexical_entry).
:- eccs_new_object_type(plexical_rule, many).

:- eccs_profuse_definition([plexical_entry, pderived_entry]).
/*

Those things we don't want to see

*/

:- eccs_hidden_types([top_table, ctable, subs, suc, pre, equiv]).


/*

Dependencies between objects and modules

*/

:- eccs_module_dependency(sort < termunif).

:- eccs_module_dependency(axioms < sorts).

:- eccs_module_dependency(termunif < protolexicon).

:- eccs_module_dependency(term_structures < path_abbreviations).
:- eccs_module_dependency(path_abbreviations < templates).
:- eccs_module_dependency(templates < grammar_rules).
:- eccs_module_dependency(templates < lexical_rules).
:- eccs_module_dependency(lexical_rules < dictionary).


:- eccs_module_dependency(protolexical_rules < morph_tables).
:- eccs_module_dependency(morph_tables < protolexical_entries).



