% HPSG System

:- eccs_major_module('hpsg', "HPSG -- Wed Mar  3 14:27:23 1993",
	'../HPSG-PL', 'hpsg.pl', 
    [types, lexicon, abbreviations]).

:- eccs_new_file_type(types, ".typ",
	hpsg_read, 
	hpsg_compile, 
	[has, domain, type, rule, ideal],
	true,
	true,
	local,
	unique). 


:- eccs_new_file_type(lexicon, ".lex",
	hpsg_read, 
	hpsg_compile, 
	[entry, unknown_word, ideal],
	true, true, local,
	many). 


:- eccs_new_file_type(abbreviations, ".abs",
	hpsg_read_abbrev,
	hpsg_compile_abbrev,
	[abbrev_def, abbrev_table],
	hpsg_abbrev_prehook, make_abbreviation_table, local,
	many).


/*

We have to declare type as multiple because of the possible existence
of multiple type statements in the body of (_, _) constructs.  See
hpsg.pl for more details.  

*/

:- eccs_new_object_type(type, multiple, hpsg_print).

:- eccs_new_object_type(has, single, hpsg_print).
:- eccs_new_object_type(domain, single, hpsg_print).

:- eccs_new_object_type(rule, single, hpsg_print).
:- eccs_new_object_type(ideal, single, hpsg_print).

:- eccs_new_object_type(entry, single, hpsg_print).
:- eccs_new_object_type(unknown_word, single, hpsg_print).


:- eccs_new_object_type(abbrev_def, single, hpsg_print).
/*
No object declaration is necessary for abbrev_table as clauses go
directly into the database. 
*/



:- eccs_hidden_types([abbrev_table, abbrev_def]).


:- eccs_module_dependency(types < lexicon).
:- eccs_module_dependency(lexicon < abbreviations).

/* this is ugly too */

:- dynamic eccs_submenu_type/1.

