-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathaddons_package.ads
179 lines (145 loc) · 5.63 KB
/
addons_package.ads
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
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;