import from .zip file
This commit is contained in:
729
inflections_package.ads
Normal file
729
inflections_package.ads
Normal file
@@ -0,0 +1,729 @@
|
||||
with TEXT_IO;
|
||||
with DIRECT_IO;
|
||||
package INFLECTIONS_PACKAGE is
|
||||
package INTEGER_IO is new TEXT_IO.INTEGER_IO(INTEGER);
|
||||
use TEXT_IO;
|
||||
|
||||
-- Generally simple/enumeration types have names ending in _TYPE
|
||||
-- complex/record types have names ending in _RECORD
|
||||
-- array types have names ending in _ARRAY
|
||||
|
||||
MAX_STEM_SIZE : constant := 18;
|
||||
MAX_MEANING_SIZE : constant := 80;
|
||||
|
||||
subtype STEM_TYPE is STRING(1..MAX_STEM_SIZE);
|
||||
NULL_STEM_TYPE : constant STEM_TYPE := (others => ' ');
|
||||
|
||||
package STEM_TYPE_IO is
|
||||
DEFAULT_WIDTH : NATURAL := MAX_STEM_SIZE;
|
||||
procedure GET(F : in FILE_TYPE; D : out STEM_TYPE);
|
||||
procedure GET(D : out STEM_TYPE);
|
||||
procedure PUT(F : in FILE_TYPE; D : in STEM_TYPE);
|
||||
procedure PUT(D : in STEM_TYPE);
|
||||
procedure GET(S : in STRING; D : out STEM_TYPE;
|
||||
LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; D : in STEM_TYPE);
|
||||
end STEM_TYPE_IO;
|
||||
|
||||
|
||||
subtype MEANING_TYPE is STRING(1..MAX_MEANING_SIZE);
|
||||
NULL_MEANING_TYPE : constant MEANING_TYPE := (others => ' ');
|
||||
|
||||
type PART_OF_SPEECH_TYPE is (
|
||||
X, -- all, none, or unknown
|
||||
N, -- Noun
|
||||
PRON, -- PRONoun
|
||||
PACK, -- PACKON -- artificial for code
|
||||
ADJ, -- ADJective
|
||||
NUM, -- NUMeral
|
||||
ADV, -- ADVerb
|
||||
V, -- Verb
|
||||
VPAR, -- Verb PARticiple
|
||||
SUPINE, -- SUPINE
|
||||
PREP, -- PREPosition
|
||||
CONJ, -- CONJunction
|
||||
INTERJ, -- INTERJection
|
||||
TACKON, -- TACKON -- artificial for code
|
||||
PREFIX, -- PREFIX -- here artificial for code
|
||||
SUFFIX -- SUFFIX -- here artificial for code
|
||||
);
|
||||
|
||||
package PART_OF_SPEECH_TYPE_IO is
|
||||
new TEXT_IO.ENUMERATION_IO(PART_OF_SPEECH_TYPE);
|
||||
|
||||
|
||||
subtype WHICH_TYPE is NATURAL range 0..9;
|
||||
|
||||
subtype VARIANT_TYPE is NATURAL range 0..9;
|
||||
|
||||
WHICH_TYPE_IO_DEFAULT_WIDTH : INTEGER := 1;
|
||||
VARIANT_TYPE_IO_DEFAULT_WIDTH : INTEGER := 1;
|
||||
|
||||
type DECN_RECORD is
|
||||
record
|
||||
WHICH : WHICH_TYPE := 0;
|
||||
VAR : VARIANT_TYPE := 0;
|
||||
end record;
|
||||
|
||||
function "<" (LEFT, RIGHT : DECN_RECORD) return BOOLEAN;
|
||||
|
||||
package DECN_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; D : out DECN_RECORD);
|
||||
procedure GET(D : out DECN_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; D : in DECN_RECORD);
|
||||
procedure PUT(D : in DECN_RECORD);
|
||||
procedure GET(S : in STRING; D : out DECN_RECORD;
|
||||
LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; D : in DECN_RECORD);
|
||||
end DECN_RECORD_IO;
|
||||
|
||||
|
||||
type GENDER_TYPE is (
|
||||
X, -- all, none, or unknown
|
||||
M, -- Masculine
|
||||
F, -- Feminine
|
||||
N, -- Neuter
|
||||
C -- Common (masculine and/or feminine)
|
||||
);
|
||||
|
||||
package GENDER_TYPE_IO is new TEXT_IO.ENUMERATION_IO(GENDER_TYPE);
|
||||
|
||||
type CASE_TYPE is (
|
||||
X, -- all, none, or unknown
|
||||
NOM, -- NOMinative
|
||||
VOC, -- VOCative
|
||||
GEN, -- GENitive
|
||||
LOC, -- LOCative
|
||||
DAT, -- DATive
|
||||
ABL, -- ABLative
|
||||
ACC -- ACCusitive
|
||||
);
|
||||
|
||||
package CASE_TYPE_IO is new TEXT_IO.ENUMERATION_IO(CASE_TYPE);
|
||||
|
||||
type NUMBER_TYPE is (
|
||||
X, -- all, none, or unknown
|
||||
S, -- Singular
|
||||
P -- Plural
|
||||
);
|
||||
|
||||
package NUMBER_TYPE_IO is new TEXT_IO.ENUMERATION_IO(NUMBER_TYPE);
|
||||
|
||||
type PERSON_TYPE is range 0..3;
|
||||
package PERSON_TYPE_IO is new TEXT_IO.INTEGER_IO(PERSON_TYPE);
|
||||
|
||||
type COMPARISON_TYPE is (
|
||||
X, -- all, none, or unknown
|
||||
POS, -- POSitive
|
||||
COMP, -- COMParative
|
||||
SUPER -- SUPERlative
|
||||
);
|
||||
|
||||
package COMPARISON_TYPE_IO is new TEXT_IO.ENUMERATION_IO(COMPARISON_TYPE);
|
||||
|
||||
type STEM_KEY_TYPE is new NATURAL range 0..9;
|
||||
|
||||
package STEM_KEY_TYPE_IO is new TEXT_IO.INTEGER_IO(STEM_KEY_TYPE);
|
||||
STEM_KEY_TYPE_IO_DEFAULT_WIDTH : INTEGER := 1;
|
||||
|
||||
|
||||
|
||||
type NUMERAL_SORT_TYPE is (
|
||||
X, -- all, none, or unknown
|
||||
CARD, -- CARDinal
|
||||
ORD, -- ORDinal
|
||||
DIST, -- DISTributive
|
||||
ADVERB -- numeral ADVERB
|
||||
);
|
||||
|
||||
|
||||
package NUMERAL_SORT_TYPE_IO is
|
||||
new TEXT_IO.ENUMERATION_IO(NUMERAL_SORT_TYPE);
|
||||
|
||||
|
||||
|
||||
type TENSE_TYPE is (
|
||||
X, -- all, none, or unknown
|
||||
PRES, -- PRESent
|
||||
IMPF, -- IMPerFect
|
||||
FUT, -- FUTure
|
||||
PERF, -- PERFect
|
||||
PLUP, -- PLUPerfect
|
||||
FUTP -- FUTure Perfect
|
||||
);
|
||||
|
||||
package TENSE_TYPE_IO is new TEXT_IO.ENUMERATION_IO(TENSE_TYPE);
|
||||
|
||||
type VOICE_TYPE is (
|
||||
X, -- all, none, or unknown
|
||||
ACTIVE, -- ACTIVE
|
||||
PASSIVE -- PASSIVE
|
||||
);
|
||||
|
||||
package VOICE_TYPE_IO is new TEXT_IO.ENUMERATION_IO(VOICE_TYPE);
|
||||
|
||||
type MOOD_TYPE is (
|
||||
X, -- all, none, or unknown
|
||||
IND, -- INDicative
|
||||
SUB, -- SUBjunctive
|
||||
IMP, -- IMPerative
|
||||
INF, -- INFinative
|
||||
PPL -- ParticiPLe
|
||||
);
|
||||
|
||||
package MOOD_TYPE_IO is new TEXT_IO.ENUMERATION_IO(MOOD_TYPE);
|
||||
|
||||
type TENSE_VOICE_MOOD_RECORD is
|
||||
record
|
||||
TENSE : TENSE_TYPE := X;
|
||||
VOICE : VOICE_TYPE := X;
|
||||
MOOD : MOOD_TYPE := X;
|
||||
end record;
|
||||
|
||||
package TENSE_VOICE_MOOD_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; T : out TENSE_VOICE_MOOD_RECORD);
|
||||
procedure GET(T : out TENSE_VOICE_MOOD_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; T : in TENSE_VOICE_MOOD_RECORD);
|
||||
procedure PUT(T : in TENSE_VOICE_MOOD_RECORD);
|
||||
procedure GET(S : in STRING; T : out TENSE_VOICE_MOOD_RECORD;
|
||||
LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; T : in TENSE_VOICE_MOOD_RECORD);
|
||||
end TENSE_VOICE_MOOD_RECORD_IO;
|
||||
|
||||
|
||||
type NOUN_KIND_TYPE is (
|
||||
X, -- unknown, nondescript
|
||||
S, -- Singular "only" -- not really used
|
||||
M, -- plural or Multiple "only" -- not really used
|
||||
A, -- Abstract idea
|
||||
G, -- Group/collective Name -- Roman(s)
|
||||
N, -- proper Name
|
||||
P, -- a Person
|
||||
T, -- a Thing
|
||||
L, -- Locale, name of country/city
|
||||
W -- a place Where
|
||||
);
|
||||
|
||||
package NOUN_KIND_TYPE_IO is new TEXT_IO.ENUMERATION_IO(NOUN_KIND_TYPE);
|
||||
|
||||
type PRONOUN_KIND_TYPE is (
|
||||
X, -- unknown, nondescript
|
||||
PERS, -- PERSonal
|
||||
REL, -- RELative
|
||||
REFLEX, -- REFLEXive
|
||||
DEMONS, -- DEMONStrative
|
||||
INTERR, -- INTERRogative
|
||||
INDEF, -- INDEFinite
|
||||
ADJECT -- ADJECTival
|
||||
);
|
||||
|
||||
package PRONOUN_KIND_TYPE_IO is
|
||||
new TEXT_IO.ENUMERATION_IO(PRONOUN_KIND_TYPE);
|
||||
|
||||
subtype NUMERAL_VALUE_TYPE is NATURAL range 0..1000;
|
||||
|
||||
NUMERAL_VALUE_TYPE_IO_DEFAULT_WIDTH : INTEGER := 5;
|
||||
|
||||
|
||||
type VERB_KIND_TYPE is (
|
||||
X, -- all, none, or unknown
|
||||
TO_BE, -- only the verb TO BE (esse)
|
||||
TO_BEING, -- compounds of the verb to be (esse)
|
||||
GEN, -- verb taking the GENitive
|
||||
DAT, -- verb taking the DATive
|
||||
ABL, -- verb taking the ABLative
|
||||
TRANS, -- TRANSitive verb
|
||||
INTRANS, -- INTRANSitive verb
|
||||
IMPERS, -- IMPERSonal verb (implied subject 'it', 'they', 'God')
|
||||
-- agent implied in action, subject in predicate
|
||||
DEP, -- DEPonent verb
|
||||
-- only passive form but with active meaning
|
||||
SEMIDEP, -- SEMIDEPonent verb (forms perfect as deponent)
|
||||
-- (perfect passive has active force)
|
||||
PERFDEF -- PERFect DEFinite verb
|
||||
-- having only perfect stem, but with present force
|
||||
);
|
||||
|
||||
package VERB_KIND_TYPE_IO is
|
||||
new TEXT_IO.ENUMERATION_IO(VERB_KIND_TYPE);
|
||||
|
||||
|
||||
type NOUN_RECORD is
|
||||
record
|
||||
DECL : DECN_RECORD;
|
||||
CS : CASE_TYPE := X;
|
||||
NUMBER : NUMBER_TYPE := X;
|
||||
GENDER : GENDER_TYPE := X;
|
||||
end record;
|
||||
|
||||
package NOUN_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; N : out NOUN_RECORD);
|
||||
procedure GET(N : out NOUN_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; N : in NOUN_RECORD);
|
||||
procedure PUT(N : in NOUN_RECORD);
|
||||
procedure GET(S : in STRING; N : out NOUN_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; N : in NOUN_RECORD);
|
||||
end NOUN_RECORD_IO;
|
||||
|
||||
|
||||
type PRONOUN_RECORD is
|
||||
record
|
||||
DECL : DECN_RECORD;
|
||||
CS : CASE_TYPE := X;
|
||||
NUMBER : NUMBER_TYPE := X;
|
||||
GENDER : GENDER_TYPE := X;
|
||||
end record;
|
||||
|
||||
package PRONOUN_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; P : out PRONOUN_RECORD);
|
||||
procedure GET(P : out PRONOUN_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; P : in PRONOUN_RECORD);
|
||||
procedure PUT(P : in PRONOUN_RECORD);
|
||||
procedure GET(S : in STRING; P : out PRONOUN_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; P : in PRONOUN_RECORD);
|
||||
end PRONOUN_RECORD_IO;
|
||||
|
||||
|
||||
type PROPACK_RECORD is
|
||||
record
|
||||
DECL : DECN_RECORD;
|
||||
CS : CASE_TYPE := X;
|
||||
NUMBER : NUMBER_TYPE := X;
|
||||
GENDER : GENDER_TYPE := X;
|
||||
end record;
|
||||
|
||||
package PROPACK_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; P : out PROPACK_RECORD);
|
||||
procedure GET(P : out PROPACK_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; P : in PROPACK_RECORD);
|
||||
procedure PUT(P : in PROPACK_RECORD);
|
||||
procedure GET(S : in STRING; P : out PROPACK_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; P : in PROPACK_RECORD);
|
||||
end PROPACK_RECORD_IO;
|
||||
|
||||
|
||||
type ADJECTIVE_RECORD is
|
||||
record
|
||||
DECL : DECN_RECORD;
|
||||
CS : CASE_TYPE := X;
|
||||
NUMBER : NUMBER_TYPE := X;
|
||||
GENDER : GENDER_TYPE := X;
|
||||
CO : COMPARISON_TYPE := X;
|
||||
end record;
|
||||
|
||||
package ADJECTIVE_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; A : out ADJECTIVE_RECORD);
|
||||
procedure GET(A : out ADJECTIVE_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; A : in ADJECTIVE_RECORD);
|
||||
procedure PUT(A : in ADJECTIVE_RECORD);
|
||||
procedure GET(S : in STRING; A : out ADJECTIVE_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; A : in ADJECTIVE_RECORD);
|
||||
end ADJECTIVE_RECORD_IO;
|
||||
|
||||
|
||||
type NUMERAL_RECORD is
|
||||
record
|
||||
DECL : DECN_RECORD;
|
||||
CS : CASE_TYPE := X;
|
||||
NUMBER : NUMBER_TYPE := X;
|
||||
GENDER : GENDER_TYPE := X;
|
||||
SORT : NUMERAL_SORT_TYPE := X;
|
||||
end record;
|
||||
|
||||
|
||||
package NUMERAL_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; NUM : out NUMERAL_RECORD);
|
||||
procedure GET(NUM : out NUMERAL_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; NUM : in NUMERAL_RECORD);
|
||||
procedure PUT(NUM : in NUMERAL_RECORD);
|
||||
procedure GET(S : in STRING; NUM : out NUMERAL_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; NUM : in NUMERAL_RECORD);
|
||||
end NUMERAL_RECORD_IO;
|
||||
|
||||
type ADVERB_RECORD is
|
||||
record
|
||||
CO : COMPARISON_TYPE := X;
|
||||
end record;
|
||||
|
||||
package ADVERB_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; A : out ADVERB_RECORD);
|
||||
procedure GET(A : out ADVERB_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; A : in ADVERB_RECORD);
|
||||
procedure PUT(A : in ADVERB_RECORD);
|
||||
procedure GET(S : in STRING; A : out ADVERB_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; A : in ADVERB_RECORD);
|
||||
end ADVERB_RECORD_IO;
|
||||
|
||||
|
||||
type VERB_RECORD is
|
||||
record
|
||||
CON : DECN_RECORD;
|
||||
TENSE_VOICE_MOOD : TENSE_VOICE_MOOD_RECORD;
|
||||
PERSON : PERSON_TYPE := 0;
|
||||
NUMBER : NUMBER_TYPE := X;
|
||||
end record;
|
||||
|
||||
package VERB_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; V : out VERB_RECORD);
|
||||
procedure GET(V : out VERB_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; V : in VERB_RECORD);
|
||||
procedure PUT(V : in VERB_RECORD);
|
||||
procedure GET(S : in STRING; V : out VERB_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; V : in VERB_RECORD);
|
||||
end VERB_RECORD_IO;
|
||||
|
||||
|
||||
type VPAR_RECORD is
|
||||
record
|
||||
CON : DECN_RECORD;
|
||||
CS : CASE_TYPE := X;
|
||||
NUMBER : NUMBER_TYPE := X;
|
||||
GENDER : GENDER_TYPE := X;
|
||||
TENSE_VOICE_MOOD : TENSE_VOICE_MOOD_RECORD;
|
||||
end record;
|
||||
|
||||
package VPAR_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; VP : out VPAR_RECORD);
|
||||
procedure GET(VP : out VPAR_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; VP : in VPAR_RECORD);
|
||||
procedure PUT(VP : in VPAR_RECORD);
|
||||
procedure GET(S : in STRING; VP : out VPAR_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; VP : in VPAR_RECORD);
|
||||
end VPAR_RECORD_IO;
|
||||
|
||||
|
||||
type SUPINE_RECORD is
|
||||
record
|
||||
CON : DECN_RECORD;
|
||||
CS : CASE_TYPE := X;
|
||||
NUMBER : NUMBER_TYPE := X;
|
||||
GENDER : GENDER_TYPE := X;
|
||||
end record;
|
||||
|
||||
package SUPINE_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; VP : out SUPINE_RECORD);
|
||||
procedure GET(VP : out SUPINE_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; VP : in SUPINE_RECORD);
|
||||
procedure PUT(VP : in SUPINE_RECORD);
|
||||
procedure GET(S : in STRING; VP : out SUPINE_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; VP : in SUPINE_RECORD);
|
||||
end SUPINE_RECORD_IO;
|
||||
|
||||
|
||||
type PREPOSITION_RECORD is
|
||||
record
|
||||
OBJ : CASE_TYPE := X;
|
||||
end record;
|
||||
|
||||
package PREPOSITION_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; P : out PREPOSITION_RECORD);
|
||||
procedure GET(P : out PREPOSITION_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; P : in PREPOSITION_RECORD);
|
||||
procedure PUT(P : in PREPOSITION_RECORD);
|
||||
procedure GET(S : in STRING; P : out PREPOSITION_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; P : in PREPOSITION_RECORD);
|
||||
end PREPOSITION_RECORD_IO;
|
||||
|
||||
|
||||
type CONJUNCTION_RECORD is
|
||||
record
|
||||
null;
|
||||
end record;
|
||||
|
||||
package CONJUNCTION_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; C : out CONJUNCTION_RECORD);
|
||||
procedure GET(C : out CONJUNCTION_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; C : in CONJUNCTION_RECORD);
|
||||
procedure PUT(C : in CONJUNCTION_RECORD);
|
||||
procedure GET(S : in STRING; C : out CONJUNCTION_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; C : in CONJUNCTION_RECORD);
|
||||
end CONJUNCTION_RECORD_IO;
|
||||
|
||||
|
||||
type INTERJECTION_RECORD is
|
||||
record
|
||||
null;
|
||||
end record;
|
||||
|
||||
package INTERJECTION_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; I : out INTERJECTION_RECORD);
|
||||
procedure GET(I : out INTERJECTION_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; I : in INTERJECTION_RECORD);
|
||||
procedure PUT(I : in INTERJECTION_RECORD);
|
||||
procedure GET(S : in STRING; I : out INTERJECTION_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; I : in INTERJECTION_RECORD);
|
||||
end INTERJECTION_RECORD_IO;
|
||||
|
||||
|
||||
-- TACKON, PREFIX, SUFFIX are nulls put in to allow easy printing later
|
||||
|
||||
type TACKON_RECORD is
|
||||
record
|
||||
null;
|
||||
end record;
|
||||
|
||||
NULL_TACKON_RECORD : TACKON_RECORD;
|
||||
|
||||
package TACKON_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; I : out TACKON_RECORD);
|
||||
procedure GET(I : out TACKON_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; I : in TACKON_RECORD);
|
||||
procedure PUT(I : in TACKON_RECORD);
|
||||
procedure GET(S : in STRING; I : out TACKON_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; I : in TACKON_RECORD);
|
||||
end TACKON_RECORD_IO;
|
||||
|
||||
|
||||
type PREFIX_RECORD is
|
||||
record
|
||||
null;
|
||||
end record;
|
||||
|
||||
NULL_PREFIX_RECORD : PREFIX_RECORD;
|
||||
|
||||
package PREFIX_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; P : out PREFIX_RECORD);
|
||||
procedure GET(P : out PREFIX_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; P : in PREFIX_RECORD);
|
||||
procedure PUT(P : in PREFIX_RECORD);
|
||||
procedure GET(S : in STRING; P : out PREFIX_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; P : in PREFIX_RECORD);
|
||||
end PREFIX_RECORD_IO;
|
||||
|
||||
type SUFFIX_RECORD is
|
||||
record
|
||||
null;
|
||||
end record;
|
||||
|
||||
NULL_SUFFIX_RECORD : SUFFIX_RECORD;
|
||||
|
||||
package SUFFIX_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; P : out SUFFIX_RECORD);
|
||||
procedure GET(P : out SUFFIX_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; P : in SUFFIX_RECORD);
|
||||
procedure PUT(P : in SUFFIX_RECORD);
|
||||
procedure GET(S : in STRING; P : out SUFFIX_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; P : in SUFFIX_RECORD);
|
||||
end SUFFIX_RECORD_IO;
|
||||
|
||||
|
||||
type QUALITY_RECORD(POFS : PART_OF_SPEECH_TYPE := X) is
|
||||
record
|
||||
case POFS is
|
||||
when N =>
|
||||
N : NOUN_RECORD;
|
||||
when PRON =>
|
||||
PRON : PRONOUN_RECORD;
|
||||
when PACK =>
|
||||
PACK : PROPACK_RECORD;
|
||||
when ADJ =>
|
||||
ADJ : ADJECTIVE_RECORD;
|
||||
when NUM =>
|
||||
NUM : NUMERAL_RECORD;
|
||||
when ADV =>
|
||||
ADV : ADVERB_RECORD;
|
||||
when V =>
|
||||
V : VERB_RECORD;
|
||||
when VPAR =>
|
||||
VPAR : VPAR_RECORD;
|
||||
when SUPINE =>
|
||||
SUPINE : SUPINE_RECORD;
|
||||
when PREP =>
|
||||
PREP : PREPOSITION_RECORD;
|
||||
when CONJ =>
|
||||
CONJ : CONJUNCTION_RECORD;
|
||||
when INTERJ =>
|
||||
INTERJ : INTERJECTION_RECORD;
|
||||
when TACKON =>
|
||||
TACKON : TACKON_RECORD;
|
||||
when PREFIX =>
|
||||
PREFIX : PREFIX_RECORD;
|
||||
when SUFFIX =>
|
||||
SUFFIX : SUFFIX_RECORD;
|
||||
when others =>
|
||||
null;
|
||||
end case;
|
||||
end record;
|
||||
|
||||
NULL_QUALITY_RECORD : QUALITY_RECORD;
|
||||
|
||||
function "<" (LEFT, RIGHT : QUALITY_RECORD) return BOOLEAN;
|
||||
|
||||
package QUALITY_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; P : out QUALITY_RECORD);
|
||||
procedure GET(P : out QUALITY_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; P : in QUALITY_RECORD);
|
||||
procedure PUT(P : in QUALITY_RECORD);
|
||||
procedure GET(S : in STRING; P : out QUALITY_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; P : in QUALITY_RECORD);
|
||||
end QUALITY_RECORD_IO;
|
||||
|
||||
type QUALITY_ARRAY is array (INTEGER range <>) of QUALITY_RECORD;
|
||||
|
||||
MAX_ENDING_SIZE : constant := 7;
|
||||
subtype ENDING_SIZE_TYPE is INTEGER range 0..MAX_ENDING_SIZE;
|
||||
|
||||
ENDING_SIZE_TYPE_IO_DEFAULT_WIDTH : INTEGER := 3;
|
||||
|
||||
subtype ENDING is STRING(1..MAX_ENDING_SIZE);
|
||||
|
||||
type ENDING_RECORD is
|
||||
record
|
||||
SIZE : ENDING_SIZE_TYPE := 0;
|
||||
SUF : ENDING := (others => ' ');
|
||||
end record;
|
||||
|
||||
package ENDING_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; X : out ENDING_RECORD);
|
||||
procedure GET(X : out ENDING_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; X : in ENDING_RECORD);
|
||||
procedure PUT(X : in ENDING_RECORD);
|
||||
procedure GET(S : in STRING; X : out ENDING_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; X : in ENDING_RECORD);
|
||||
end ENDING_RECORD_IO;
|
||||
|
||||
NULL_ENDING_RECORD : ENDING_RECORD;
|
||||
|
||||
|
||||
type AGE_TYPE is (
|
||||
X, -- -- In use throughout the ages/unknown -- the default
|
||||
A, -- archaic -- Very early forms, obsolete by classical times
|
||||
B, -- early -- Early Latin, pre-classical, used for effect/poetry
|
||||
C, -- classical -- Limited to classical (~150 BC - 200 AD)
|
||||
D, -- late -- Late, post-classical (3rd-5th centuries)
|
||||
E, -- later -- Latin not in use in Classical times (6-10), Christian
|
||||
F, -- medieval -- Medieval (11th-15th centuries)
|
||||
G, -- scholar -- Latin post 15th - Scholarly/Scientific (16-18)
|
||||
H -- modern -- Coined recently, words for new things (19-20)
|
||||
);
|
||||
package AGE_TYPE_IO is new TEXT_IO.ENUMERATION_IO(AGE_TYPE);
|
||||
|
||||
|
||||
type FREQUENCY_TYPE is ( -- For dictionary entries
|
||||
X, -- -- Unknown or unspecified
|
||||
A, -- very freq -- Very frequent, in all Elementry Latin books
|
||||
B, -- frequent -- Frequent, in top 10 percent
|
||||
C, -- common -- For Dictionary, in top 10,000 words
|
||||
D, -- lesser -- For Dictionary, in top 20,000 words
|
||||
E, -- uncommon -- 2 or 3 citations
|
||||
F, -- very rare -- Having only single citation in OLD or L+S
|
||||
I, -- inscription -- Only citation is inscription
|
||||
M, -- graffiti -- Presently not much used
|
||||
N -- Pliny -- Things that appear (almost) only in Pliny Natural History
|
||||
);
|
||||
|
||||
-- For inflections, the same type is used with different weights
|
||||
-- X, -- -- Unknown or unspecified
|
||||
-- A, -- most freq -- Very frequent, the most common
|
||||
-- B, -- sometimes -- sometimes, a not unusual VARIANT
|
||||
-- C, -- uncommon -- occasionally seen
|
||||
-- D, -- infrequent -- recognizable variant, but unlikely
|
||||
-- E, -- rare -- for a few cases, very unlikely
|
||||
-- F, -- very rare -- singular examples,
|
||||
-- I, -- inscription -- Only citation is inscription
|
||||
-- M, -- -- Presently not used
|
||||
-- N -- -- Presently not used
|
||||
|
||||
|
||||
package FREQUENCY_TYPE_IO is new TEXT_IO.ENUMERATION_IO(FREQUENCY_TYPE);
|
||||
|
||||
|
||||
|
||||
type INFLECTION_RECORD is
|
||||
record
|
||||
QUAL : QUALITY_RECORD := NULL_QUALITY_RECORD;
|
||||
KEY : STEM_KEY_TYPE := 0;
|
||||
ENDING : ENDING_RECORD := NULL_ENDING_RECORD;
|
||||
AGE : AGE_TYPE := X;
|
||||
FREQ : FREQUENCY_TYPE := X;
|
||||
end record;
|
||||
|
||||
NULL_INFLECTION_RECORD : INFLECTION_RECORD;
|
||||
|
||||
package INFLECTION_RECORD_IO is
|
||||
DEFAULT_WIDTH : NATURAL;
|
||||
procedure GET(F : in FILE_TYPE; P : out INFLECTION_RECORD);
|
||||
procedure GET(P : out INFLECTION_RECORD);
|
||||
procedure PUT(F : in FILE_TYPE; P : in INFLECTION_RECORD);
|
||||
procedure PUT(P : in INFLECTION_RECORD);
|
||||
procedure GET(S : in STRING; P : out INFLECTION_RECORD; LAST : out INTEGER);
|
||||
procedure PUT(S : out STRING; P : in INFLECTION_RECORD);
|
||||
end INFLECTION_RECORD_IO;
|
||||
|
||||
-- This implies a knowledge of the inflections last character
|
||||
subtype INFLECTIONS_SECTION_1 is CHARACTER range 'a'..'i';
|
||||
subtype INFLECTIONS_SECTION_2 is CHARACTER range 'm'..'r';
|
||||
subtype INFLECTIONS_SECTION_3 is CHARACTER range 's'..'s';
|
||||
subtype INFLECTIONS_SECTION_4 is CHARACTER range 't'..'u';
|
||||
|
||||
SIZE_OF_BLANK_INFLECTIONS : constant INTEGER := 80; -- ############
|
||||
SIZE_OF_INFLECTIONS_SECTION : constant INTEGER := 570; -- ############
|
||||
|
||||
type INFLECTION_ARRAY is array (POSITIVE range <>) of INFLECTION_RECORD;
|
||||
subtype LEL_SECTION is INFLECTION_ARRAY(1..SIZE_OF_INFLECTIONS_SECTION);
|
||||
package LEL_SECTION_IO is new DIRECT_IO(LEL_SECTION);
|
||||
|
||||
BEL : INFLECTION_ARRAY(1..SIZE_OF_BLANK_INFLECTIONS);
|
||||
|
||||
LEL : LEL_SECTION;
|
||||
|
||||
type INFLECTION_ARRAY_INDEX is array (INTEGER range <>,
|
||||
CHARACTER range <>) of INTEGER;
|
||||
|
||||
BELF, BELL : INFLECTION_ARRAY_INDEX(0..0, ' '..' ') := (0 => (others => 0));
|
||||
LELF, LELL : INFLECTION_ARRAY_INDEX(1..MAX_ENDING_SIZE,
|
||||
'a'..'z') := (others => (others => 0));
|
||||
PELF, PELL : INFLECTION_ARRAY_INDEX(1..MAX_ENDING_SIZE,
|
||||
'a'..'z') := (others => (others => 0));
|
||||
|
||||
NUMBER_OF_INFLECTIONS : INTEGER := 0;
|
||||
|
||||
|
||||
procedure ESTABLISH_INFLECTIONS_SECTION;
|
||||
|
||||
|
||||
|
||||
|
||||
-- <= means for this purpose "contained in"
|
||||
|
||||
function "<=" (LEFT, RIGHT : PART_OF_SPEECH_TYPE) return BOOLEAN;
|
||||
function "<=" (LEFT, RIGHT : DECN_RECORD) return BOOLEAN;
|
||||
function "<=" (LEFT, RIGHT : GENDER_TYPE) return BOOLEAN;
|
||||
function "<=" (LEFT, RIGHT : CASE_TYPE) return BOOLEAN;
|
||||
function "<=" (LEFT, RIGHT : NUMBER_TYPE) return BOOLEAN;
|
||||
function "<=" (LEFT, RIGHT : PERSON_TYPE) return BOOLEAN;
|
||||
function "<=" (LEFT, RIGHT : COMPARISON_TYPE) return BOOLEAN;
|
||||
function "<=" (LEFT, RIGHT : TENSE_VOICE_MOOD_RECORD) return BOOLEAN;
|
||||
function "<=" (LEFT, RIGHT : NOUN_KIND_TYPE) return BOOLEAN;
|
||||
function "<=" (LEFT, RIGHT : PRONOUN_KIND_TYPE) return BOOLEAN;
|
||||
function "<=" (LEFT, RIGHT : STEM_KEY_TYPE) return BOOLEAN; -- not verbs
|
||||
function "<=" (LEFT, RIGHT : AGE_TYPE) return BOOLEAN;
|
||||
function "<=" (LEFT, RIGHT : FREQUENCY_TYPE) return BOOLEAN;
|
||||
|
||||
|
||||
GIVE_UP : exception;
|
||||
|
||||
|
||||
end INFLECTIONS_PACKAGE;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user