180 lines
5.6 KiB
Ada
180 lines
5.6 KiB
Ada
with TEXT_IO;
|
|
with INFLECTIONS_PACKAGE; use INFLECTIONS_PACKAGE;
|
|
with DICTIONARY_PACKAGE; use DICTIONARY_PACKAGE;
|
|
package ADDONS_PACKAGE is
|
|
use TEXT_IO;
|
|
|
|
subtype FIX_TYPE is STEM_TYPE;
|
|
NULL_FIX_TYPE : constant FIX_TYPE := NULL_STEM_TYPE;
|
|
MAX_FIX_SIZE : constant := MAX_STEM_SIZE;
|
|
|
|
subtype TARGET_POFS_TYPE is PART_OF_SPEECH_TYPE range X..V;
|
|
|
|
|
|
type TARGET_ENTRY(POFS: TARGET_POFS_TYPE := X) is
|
|
record
|
|
case POFS is
|
|
when N =>
|
|
N : NOUN_ENTRY;
|
|
--NOUN_KIND : NOUN_KIND_TYPE;
|
|
when PRON =>
|
|
PRON : PRONOUN_ENTRY;
|
|
--PRONOUN_KIND : PRONOUN_KIND_TYPE;
|
|
when PACK =>
|
|
PACK : PROPACK_ENTRY;
|
|
--PROPACK_KIND : PRONOUN_KIND_TYPE;
|
|
when ADJ =>
|
|
ADJ : ADJECTIVE_ENTRY;
|
|
when NUM =>
|
|
NUM : NUMERAL_ENTRY;
|
|
--NUMERAL_VALUE : NUMERAL_VALUE_TYPE;
|
|
when ADV =>
|
|
ADV : ADVERB_ENTRY;
|
|
when V =>
|
|
V : VERB_ENTRY;
|
|
--VERB_KIND : VERB_KIND_TYPE;
|
|
when others =>
|
|
null;
|
|
end case;
|
|
end record;
|
|
|
|
NULL_TARGET_ENTRY : TARGET_ENTRY;
|
|
|
|
package TARGET_ENTRY_IO is
|
|
DEFAULT_WIDTH : NATURAL;
|
|
procedure GET(F : in FILE_TYPE; P : out TARGET_ENTRY);
|
|
procedure GET(P : out TARGET_ENTRY);
|
|
procedure PUT(F : in FILE_TYPE; P : in TARGET_ENTRY);
|
|
procedure PUT(P : in TARGET_ENTRY);
|
|
procedure GET(S : in STRING; P : out TARGET_ENTRY; LAST : out INTEGER);
|
|
procedure PUT(S : out STRING; P : in TARGET_ENTRY);
|
|
end TARGET_ENTRY_IO;
|
|
|
|
type TACKON_ENTRY is
|
|
record
|
|
BASE : TARGET_ENTRY;
|
|
end record;
|
|
|
|
NULL_TACKON_ENTRY : TACKON_ENTRY;
|
|
|
|
package TACKON_ENTRY_IO is
|
|
DEFAULT_WIDTH : NATURAL;
|
|
procedure GET(F : in FILE_TYPE; I : out TACKON_ENTRY);
|
|
procedure GET(I : out TACKON_ENTRY);
|
|
procedure PUT(F : in FILE_TYPE; I : in TACKON_ENTRY);
|
|
procedure PUT(I : in TACKON_ENTRY);
|
|
procedure GET(S : in STRING; I : out TACKON_ENTRY; LAST : out INTEGER);
|
|
procedure PUT(S : out STRING; I : in TACKON_ENTRY);
|
|
end TACKON_ENTRY_IO;
|
|
|
|
|
|
type PREFIX_ENTRY is
|
|
record
|
|
ROOT : PART_OF_SPEECH_TYPE := X;
|
|
TARGET : PART_OF_SPEECH_TYPE := X;
|
|
end record;
|
|
|
|
NULL_PREFIX_ENTRY : PREFIX_ENTRY;
|
|
|
|
package PREFIX_ENTRY_IO is
|
|
DEFAULT_WIDTH : NATURAL;
|
|
procedure GET(F : in FILE_TYPE; P : out PREFIX_ENTRY);
|
|
procedure GET(P : out PREFIX_ENTRY);
|
|
procedure PUT(F : in FILE_TYPE; P : in PREFIX_ENTRY);
|
|
procedure PUT(P : in PREFIX_ENTRY);
|
|
procedure GET(S : in STRING; P : out PREFIX_ENTRY; LAST : out INTEGER);
|
|
procedure PUT(S : out STRING; P : in PREFIX_ENTRY);
|
|
end PREFIX_ENTRY_IO;
|
|
|
|
|
|
type SUFFIX_ENTRY is
|
|
record
|
|
ROOT : PART_OF_SPEECH_TYPE := X;
|
|
ROOT_KEY : STEM_KEY_TYPE := 0;
|
|
TARGET : TARGET_ENTRY := NULL_TARGET_ENTRY;
|
|
TARGET_KEY : STEM_KEY_TYPE := 0;
|
|
end record;
|
|
|
|
NULL_SUFFIX_ENTRY : SUFFIX_ENTRY;
|
|
|
|
package SUFFIX_ENTRY_IO is
|
|
DEFAULT_WIDTH : NATURAL;
|
|
procedure GET(F : in FILE_TYPE; P : out SUFFIX_ENTRY);
|
|
procedure GET(P : out SUFFIX_ENTRY);
|
|
procedure PUT(F : in FILE_TYPE; P : in SUFFIX_ENTRY);
|
|
procedure PUT(P : in SUFFIX_ENTRY);
|
|
procedure GET(S : in STRING; P : out SUFFIX_ENTRY; LAST : out INTEGER);
|
|
procedure PUT(S : out STRING; P : in SUFFIX_ENTRY);
|
|
end SUFFIX_ENTRY_IO;
|
|
|
|
type TACKON_ITEM is
|
|
record
|
|
POFS: PART_OF_SPEECH_TYPE := TACKON;
|
|
TACK : STEM_TYPE := NULL_STEM_TYPE;
|
|
ENTR : TACKON_ENTRY := NULL_TACKON_ENTRY;
|
|
MNPC : INTEGER := 0;
|
|
end record;
|
|
|
|
NULL_TACKON_ITEM : TACKON_ITEM;
|
|
|
|
|
|
type PREFIX_ITEM is
|
|
record
|
|
POFS: PART_OF_SPEECH_TYPE := PREFIX;
|
|
FIX : FIX_TYPE := NULL_FIX_TYPE;
|
|
CONNECT : CHARACTER := ' ';
|
|
ENTR : PREFIX_ENTRY := NULL_PREFIX_ENTRY;
|
|
MNPC : INTEGER := 0;
|
|
end record;
|
|
|
|
NULL_PREFIX_ITEM : PREFIX_ITEM;
|
|
|
|
|
|
type SUFFIX_ITEM is
|
|
record
|
|
POFS: PART_OF_SPEECH_TYPE := SUFFIX;
|
|
FIX : FIX_TYPE := NULL_FIX_TYPE;
|
|
CONNECT : CHARACTER := ' ';
|
|
ENTR : SUFFIX_ENTRY := NULL_SUFFIX_ENTRY;
|
|
MNPC : INTEGER := 0;
|
|
end record;
|
|
|
|
NULL_SUFFIX_ITEM : SUFFIX_ITEM;
|
|
|
|
|
|
type PREFIX_ARRAY is array (INTEGER range <>) of PREFIX_ITEM;
|
|
type TICKON_ARRAY is array (INTEGER range <>) of PREFIX_ITEM;
|
|
type SUFFIX_ARRAY is array (INTEGER range <>) of SUFFIX_ITEM;
|
|
type TACKON_ARRAY is array (INTEGER range <>) of TACKON_ITEM;
|
|
type MEANS_ARRAY is array (INTEGER range <>) of MEANING_TYPE;
|
|
-- To simulate a DICT_IO file, as used previously
|
|
|
|
TACKONS : TACKON_ARRAY(1..20);
|
|
PACKONS : TACKON_ARRAY(1..25);
|
|
TICKONS : PREFIX_ARRAY(1..10);
|
|
PREFIXES : PREFIX_ARRAY(1..130);
|
|
SUFFIXES : SUFFIX_ARRAY(1..185);
|
|
MEANS : MEANS_ARRAY(1..370);
|
|
|
|
NUMBER_OF_TICKONS : INTEGER := 0;
|
|
NUMBER_OF_TACKONS : INTEGER := 0;
|
|
NUMBER_OF_PACKONS : INTEGER := 0;
|
|
NUMBER_OF_PREFIXES : INTEGER := 0;
|
|
NUMBER_OF_SUFFIXES : INTEGER := 0;
|
|
|
|
procedure LOAD_ADDONS (FILE_NAME : in STRING);
|
|
|
|
function SUBTRACT_TACKON(W : STRING; X : TACKON_ITEM) return STRING;
|
|
function SUBTRACT_PREFIX(W : STRING; X : PREFIX_ITEM) return STEM_TYPE;
|
|
function SUBTRACT_TICKON(W : STRING; X : PREFIX_ITEM) return STEM_TYPE
|
|
renames SUBTRACT_PREFIX;
|
|
function SUBTRACT_SUFFIX(W : STRING; X : SUFFIX_ITEM) return STEM_TYPE;
|
|
|
|
function ADD_PREFIX(STEM : STEM_TYPE;
|
|
PREFIX : PREFIX_ITEM) return STEM_TYPE;
|
|
function ADD_SUFFIX(STEM : STEM_TYPE;
|
|
SUFFIX : SUFFIX_ITEM) return STEM_TYPE;
|
|
|
|
|
|
end ADDONS_PACKAGE;
|