diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-06-06 16:14:45 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-06-06 16:18:34 +0300 |
commit | 8a7e9b26e073731c82c02594d081c57aa474eade (patch) | |
tree | 8aba21e17f5518dc52fb407ba4759ee499a33e34 | |
parent | 00131c263a9cb0ff8501bc1c4dc1e38b84af1a88 (diff) | |
download | ellinika-8a7e9b26e073731c82c02594d081c57aa474eade.tar.gz ellinika-8a7e9b26e073731c82c02594d081c57aa474eade.tar.bz2 |
Improve conjugator
* data/db.struct: Update.
* data/dbverb.struct: New file.
* scm/conjugator.scm: Conjugate passive voice.
* src/ellinika/elmorph.c (elstr-char-prop-bitmask): Accept
negative positions.
* xml/pl/rhmata.xml: Make verb suffixes prominent.
* xml/ru/rhmata.xml: Likewise.
-rw-r--r-- | data/db.struct | 263 | ||||
-rw-r--r-- | data/dbverb.struct | 323 | ||||
-rw-r--r-- | scm/conjugator.scm | 289 | ||||
-rw-r--r-- | src/ellinika/elmorph.c | 51 | ||||
-rw-r--r-- | xml/pl/rhmata.xml | 254 | ||||
-rw-r--r-- | xml/ru/rhmata.xml | 254 |
6 files changed, 867 insertions, 567 deletions
diff --git a/data/db.struct b/data/db.struct index 616d2c5..1b2f160 100644 --- a/data/db.struct +++ b/data/db.struct | |||
@@ -162,262 +162,3 @@ CREATE TABLE newsart( | |||
162 | 162 | ||
163 | set names utf8; | 163 | source dbverb.struct; |
164 | DROP TABLE IF EXISTS verbflect; | 164 | \ No newline at end of file |
165 | CREATE TABLE verbflect( | ||
166 | ident int(32) not null, -- REL 8 | ||
167 | sing1 varchar(32), | ||
168 | sing2 varchar(32), | ||
169 | sing3 varchar(32), | ||
170 | plur1 varchar(32), | ||
171 | plur2 varchar(32), | ||
172 | plur3 varchar(32), | ||
173 | UNIQUE(ident) | ||
174 | ); | ||
175 | |||
176 | DROP TABLE IF EXISTS conjugation; | ||
177 | CREATE TABLE conjugation( | ||
178 | conj char(2), -- REL 9 | ||
179 | voice enum('act','pas'), -- Ενεργητηκή/Μεσοπαθητική | ||
180 | mode enum('ind','sub','imp'), | ||
181 | tense varchar(128), | ||
182 | thema enum('pres','aor','sub','synt'), -- Ενεστώτα, Αόριστου, υποτακτικής, syntethic | ||
183 | suffix char(32), | ||
184 | flect int(32), -- REL 8 | ||
185 | accmap char(7), -- accent map | ||
186 | particle char(2), -- NULL/θα/να | ||
187 | aux varchar(128), -- REL 10 | ||
188 | auxtense char(32), | ||
189 | KEY (conj), | ||
190 | KEY (voice), | ||
191 | KEY (mode) | ||
192 | ); | ||
193 | |||
194 | DROP TABLE IF EXISTS participle; | ||
195 | CREATE TABLE participle ( | ||
196 | conj char(2), -- REL 9 | ||
197 | voice enum('act','pas'), -- Ενεργητηκή/Μεσοπαθητική | ||
198 | tense char(32), | ||
199 | thema enum('pres','aor','sub'), -- Ενεστώτα, Αόριστου, υποτακτικής | ||
200 | suffix char(32), | ||
201 | flect char(32), | ||
202 | aux varchar(128) | ||
203 | ); | ||
204 | |||
205 | INSERT INTO verbflect VALUES | ||
206 | (0, NULL, NULL, NULL, NULL, NULL, NULL), | ||
207 | -- Συζυγία Α' | ||
208 | (1, "ω", "εις", "ει", "ουμε", "ετε", "ουν(ε)"), | ||
209 | (2, "α", "ες", "ε", "αμε", "ατε", "αν"), | ||
210 | (8, NULL, "ε", NULL, NULL, "ετε", NULL), | ||
211 | (9, NULL, "ε", NULL, NULL, "τε", NULL), | ||
212 | (11, "ομαι", "εσαι", "εται", "όμαστε", "εστε", "ονται"), | ||
213 | (12, "όμουν", "όσουν", "όταν", "όμαστε", "όμαστε", "ονταν"), | ||
214 | (15, "ώ", "είς", "εί", "ούμε", "είτε", "ούν(ε)"), | ||
215 | (17, NULL, "ου", NULL, NULL, NULL, NULL), | ||
216 | (18, NULL, NULL, NULL, NULL, "είτε", NULL), | ||
217 | -- Συζυγία Β΄ - α΄ τάξη | ||
218 | (20, "ώ,άω", "άς", "ά,άει","άμε,ούμε","άτε","ούν(ε)"), | ||
219 | (25, NULL, "α", NULL, NULL, "άτε", NULL), | ||
220 | (28, "ιέμαι", "ιέσαι", "ιέται", "ιόμαστε", "ιέστε", "ιούνται"), | ||
221 | (29, "ιόμουν", "ιόσουν", "ιόταν", "ιόμαστε", "ιόσαστε", "ιόνταν"), | ||
222 | (30, NULL, "ιέσαι", NULL, NULL, "ιέσται", NULL), | ||
223 | (31, NULL, "ου", NULL, NULL, NULL, NULL), | ||
224 | (32, NULL, NULL, NULL, NULL, "είτε", NULL), | ||
225 | -- Συζυγία Β΄ - β΄ τάξη | ||
226 | (33, NULL, "είς", NULL, NULL, "είτε", NULL), | ||
227 | (34, "ούμαι", "είσαι", "είται", "ούμαστε", "είστε", "ούνται"), | ||
228 | (35, "ούμουν", "ούσουν", "ούvταν", "ούμαστε", "ούσαστε", "ούνταν"), | ||
229 | (36, NULL, "είσαι", NULL, NULL, "είστε", NULL), | ||
230 | (100, "είμαι", "είσαι", "είναι", "είμαστε", "είστε,είσαστε", "είναι"), | ||
231 | (101, "ήμουν(α)", "ήσουν(α)", "ήταν(ε)", "ήμαστε,ήμασταν", "ήσαστε,ήσασταν", "ήταν(ε)") | ||
232 | ; | ||
233 | |||
234 | |||
235 | INSERT INTO conjugation VALUES | ||
236 | -- Συζυγία Α' | ||
237 | -- Ενεργητηκή φωνή | ||
238 | -- Οριστική | ||
239 | ("A", "act", "ind", "Ενεστώτας", 'pres', NULL, 1, "000000", NULL, NULL, NULL), | ||
240 | ("A", "act", "ind", "Παρατατικός", 'pres', NULL, 2, "333333+", NULL, NULL, NULL), | ||
241 | ("A", "act", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 1, "000000", "θα", NULL, NULL), | ||
242 | ("A", "act", "ind", "Αόριστος", 'aor', NULL, 2, "333333+", NULL, NULL, NULL), | ||
243 | ("A", "act", "ind", "Παρακείμενος", 'synt', NULL, 0, NULL, NULL, "έχω", "Ενεστώτας"), | ||
244 | ("A", "act", "ind", "Υπερσυντέλικος", 'synt', NULL, 0, NULL, NULL, "έχω", "Παρατατικός"), | ||
245 | ("A", "act", "ind", "Συντελεσμένος μέλλοντας", 'synt', NULL, 0, NULL, "θα", "έχω", "Ενεστώτας"), | ||
246 | ("A", "act", "ind", "Μέλλοντας στιγμιαίος", 'sub', NULL, 1, "000000", "θα", NULL, NULL), | ||
247 | -- Υποτακτική | ||
248 | ("A", "act", "sub", "Ενεστώτας", 'pres', NULL, 1, "000000", "να", NULL, NULL), | ||
249 | ("A", "act", "sub", "Αόριστος", 'sub', NULL, 1, "000000", "να", NULL, NULL), | ||
250 | ("A", "act", "sub", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Ενεστώτας"), | ||
251 | -- Προστακτική | ||
252 | ("A", "act", "imp", "Ενεστώτας", 'pres', NULL, 8, "-3--3-", NULL, NULL, NULL), | ||
253 | ("A", "act", "imp", "Αόριστος", 'sub', NULL, 9, "-0--0-", NULL, NULL, NULL), | ||
254 | ("A", "act", "imp", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Ενεστώτας"), | ||
255 | -- Μεσοπαθητική φωνή | ||
256 | -- Οριστική | ||
257 | ("A", "pas", "ind", "Ενεστώτας", 'pres', NULL, 11, "000300", NULL, NULL, NULL), | ||
258 | ("A", "pas", "ind", "Παρατατικός", 'pres', NULL, 12, "222333", NULL, NULL, NULL), | ||
259 | ("A", "pas", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 11, "333333", "θα", NULL, NULL), | ||
260 | ("A", "pas", "ind", "Αόριστος", 'aor', "ηκ", 2, "333333", NULL, NULL, NULL), | ||
261 | ("A", "pas", "ind", "Παρακείμενος", 'synt', NULL, 0, NULL, NULL, "έχω", "Ενεστώτας"), | ||
262 | ("A", "pas", "ind", "Υπερσυντέλικος", 'synt', NULL, 0, NULL, NULL, "έχω", "Παρατατικός"), | ||
263 | ("A", "pas", "ind", "Συντελεσμένος μέλλοντας", 'synt', NULL, 0, NULL, "θα", "έχω", "Ενεστώτας"), | ||
264 | ("A", "pas", "ind", "Μέλλοντας στιγμιαίος", 'aor', NULL, 15, "111111", "θα", NULL, NULL), | ||
265 | -- Υποτακτική | ||
266 | ("A", "pas", "sub", "Ενεστώτας", 'pres', NULL, 11, "333333", "να", NULL, NULL), | ||
267 | ("A", "pas", "sub", "Αόριστος", 'aor', NULL, 15, "111221", "να", NULL, NULL), | ||
268 | ("A", "pas", "sub", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Παρατατικός"), | ||
269 | -- Προστακτική | ||
270 | ("A", "pas", "imp", "Ενεστώτας", 'pres', NULL, 11, "-3--3-", "να", NULL, NULL), | ||
271 | ("A", "pas", "imp", "Αόριστος", 'aor', NULL, 17, "-0----", NULL, NULL, NULL), | ||
272 | ("A", "pas", "imp", "Αόριστος", 'aor', NULL, 18, "----2-", NULL, NULL, NULL), | ||
273 | ("A", "pas", "imp", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Παρατατικός"), | ||
274 | -- Συζυγία Β΄ - α΄ τάξη | ||
275 | -- Ενεργητηκή φωνή | ||
276 | -- Οριστική | ||
277 | ("B1", "act", "ind", "Ενεστώτας", 'pres', NULL, 20, "ffffff", NULL, NULL, NULL), | ||
278 | ("B1", "act", "ind", "Παρατατικός", 'pres', "ούς", 2, "ssssss", NULL, NULL, NULL), | ||
279 | ("B1", "act", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 20, "ffffff", "θα", NULL, NULL), | ||
280 | ("B1", "act", "ind", "Αόριστος", 'aor', "ησ", 2, "333333", NULL, NULL, NULL), | ||
281 | ("B1", "act", "ind", "Παρακείμενος", 'synt', NULL, 0, NULL, NULL, "έχω", "Ενεστώτας"), | ||
282 | ("B1", "act", "ind", "Υπερσυντέλικος", 'synt', NULL, 0, NULL, NULL, "έχω", "Παρατατικός"), | ||
283 | ("B1", "act", "ind", "Συντελεσμένος μέλλοντας", 'synt', NULL, 0, NULL, "θα", "έχω", "Ενεστώτας"), | ||
284 | ("B1", "act", "ind", "Μέλλοντας στιγμιαίος", 'aor', "ήσ", 1, "ssssss", "θα", NULL, NULL), | ||
285 | -- Υποτακτική | ||
286 | ("B1", "act", "sub", "Ενεστώτας", 'pres', NULL, 20, "ffffff", "να", NULL, NULL), | ||
287 | ("B1", "act", "sub", "Αόριστος", 'aor', "ήσ", 1, "ssssss", "να", NULL, NULL), | ||
288 | ("B1", "act", "sub", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Ενεστώτας"), | ||
289 | -- Προστακτική | ||
290 | ("B1", "act", "imp", "Ενεστώτας", 'pres', NULL, 25, "-0--2-", NULL, NULL, NULL), | ||
291 | ("B1", "act", "imp", "Αόριστος", 'aor', "ησ", 9, "-3--3-", NULL, NULL, NULL), | ||
292 | ("B1", "act", "imp", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Ενεστώτας"), | ||
293 | -- Μεσοπαθητική φωνή | ||
294 | -- Οριστική | ||
295 | ("B1", "pas", "ind", "Ενεστώτας", 'pres', NULL, 28, "ffffff", NULL, NULL, NULL), | ||
296 | ("B1", "pas", "ind", "Παρατατικός", 'pres', NULL, 29, "ffffff", NULL, NULL, NULL), | ||
297 | ("B1", "pas", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 28, "ffffff", "θα", NULL, NULL), | ||
298 | ("B1", "pas", "ind", "Αόριστος", 'aor', "ηκ", 2, "333333", NULL, NULL, NULL), | ||
299 | ("B1", "pas", "ind", "Παρακείμενος", 'synt', NULL, 0, NULL, NULL, "έχω", "Ενεστώτας"), | ||
300 | ("B1", "pas", "ind", "Υπερσυντέλικος", 'synt', NULL, 0, NULL, NULL, "έχω", "Παρατατικός"), | ||
301 | ("B1", "pas", "ind", "Συντελεσμένος μέλλοντας", 'synt', NULL, 0, NULL, "θα", "έχω", "Ενεστώτας"), | ||
302 | ("B1", "pas", "ind", "Μέλλοντας στιγμιαίος", 'aor', NULL, 15, "ffffff", "θα", NULL, NULL), | ||
303 | -- Υποτακτική | ||
304 | ("B1", "pas", "sub", "Ενεστώτας", 'pres', NULL, 28, "ffffff", "να", NULL, NULL), | ||
305 | ("B1", "pas", "sub", "Αόριστος", 'aor', NULL, 15, "ffffff", "να", NULL, NULL), | ||
306 | ("B1", "pas", "sub", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Παρατατικός"), | ||
307 | -- Προστακτική | ||
308 | ("B1", "pas", "imp", "Ενεστώτας", 'pres', NULL, 30, "-f--f-", "να", NULL, NULL), | ||
309 | |||
310 | ("B1", "pas", "imp", "Αόριστος", 'aor', NULL, 31, "-2----", NULL, NULL, NULL), | ||
311 | ("B1", "pas", "imp", "Αόριστος", 'aor', NULL, 32, "----2-", NULL, NULL, NULL), | ||
312 | |||
313 | ("B1", "pas", "imp", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Παρατατικός"), | ||
314 | -- Συζυγία Β΄ - β΄ τάξη | ||
315 | -- Ενεργητηκή φωνή | ||
316 | -- Οριστική | ||
317 | ("B2", "act", "ind", "Ενεστώτας", 'pres', NULL, 15, "ffffff", NULL, NULL, NULL), | ||
318 | ("B2", "act", "ind", "Παρατατικός", 'pres', "ούσ", 2, "ssssss", NULL, NULL, NULL), | ||
319 | ("B2", "act", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 15, "ffffff", "θα", NULL, NULL), | ||
320 | ("B2", "act", "ind", "Αόριστος", 'aor', "ησ", 2, "333333", NULL, NULL, NULL), | ||
321 | ("B2", "act", "ind", "Παρακείμενος", 'synt', NULL, 0, NULL, NULL, "έχω", "Ενεστώτας"), | ||
322 | ("B2", "act", "ind", "Υπερσυντέλικος", 'synt', NULL, 0, NULL, NULL, "έχω", "Παρατατικός"), | ||
323 | ("B2", "act", "ind", "Συντελεσμένος μέλλοντας", 'synt', NULL, 0, NULL, "θα", "έχω", "Ενεστώτας"), | ||
324 | ("B2", "act", "ind", "Μέλλοντας στιγμιαίος", 'aor', "ήσ", 1, "ssssss", "θα", NULL, NULL), | ||
325 | -- Υποτακτική | ||
326 | ("B2", "act", "sub", "Ενεστώτας", 'pres', NULL, 15, "ffffff", "να", NULL, NULL), | ||
327 | ("B2", "act", "sub", "Αόριστος", 'aor', "ήσ", 1, "ssssss", "να", NULL, NULL), | ||
328 | ("B2", "act", "sub", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Ενεστώτας"), | ||
329 | -- Προστακτική | ||
330 | ("B2", "act", "imp", "Ενεστώτας", 'pres', NULL, 15, "-f----", "να", NULL, NULL), | ||
331 | ("B2", "act", "imp", "Ενεστώτας", 'pres', NULL, 15, "----f-", NULL, NULL, NULL), | ||
332 | |||
333 | ("B2", "act", "imp", "Αόριστος", 'aor', "ησ", 9, "-3--3-", NULL, NULL, NULL), | ||
334 | ("B2", "act", "imp", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Ενεστώτας"), | ||
335 | -- Μεσοπαθητική φωνή | ||
336 | -- Οριστική | ||
337 | ("B2", "pas", "ind", "Ενεστώτας", 'pres', NULL, 34, "ffffff", NULL, NULL, NULL), | ||
338 | ("B2", "pas", "ind", "Παρατατικός", 'pres', NULL, 35, "ffffff", NULL, NULL, NULL), | ||
339 | ("B2", "pas", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 34, "ffffff", "θα", NULL, NULL), | ||
340 | ("B2", "pas", "ind", "Αόριστος", 'aor', "ηκ", 2, "333333", NULL, NULL, NULL), | ||
341 | ("B2", "pas", "ind", "Παρακείμενος", 'synt', NULL, 0, NULL, NULL, "έχω", "Ενεστώτας"), | ||
342 | ("B2", "pas", "ind", "Υπερσυντέλικος", 'synt', NULL, 0, NULL, NULL, "έχω", "Παρατατικός"), | ||
343 | ("B2", "pas", "ind", "Συντελεσμένος μέλλοντας", 'synt', NULL, 0, NULL, "θα", "έχω", "Ενεστώτας"), | ||
344 | ("B2", "pas", "ind", "Μέλλοντας στιγμιαίος", 'aor', NULL, 15, "ffffff", "θα", NULL, NULL), | ||
345 | -- Υποτακτική | ||
346 | ("B2", "pas", "sub", "Ενεστώτας", 'pres', NULL, 34, "ffffff", "να", NULL, NULL), | ||
347 | ("B2", "pas", "sub", "Αόριστος", 'aor', NULL, 15, "ffffff", "να", NULL, NULL), | ||
348 | ("B2", "pas", "sub", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Παρατατικός"), | ||
349 | -- Προστακτική | ||
350 | ("B2", "pas", "imp", "Ενεστώτας", 'pres', NULL, 36, "-f--f-", "να", NULL, NULL), | ||
351 | |||
352 | ("B2", "pas", "imp", "Αόριστος", 'aor', NULL, 31, "-2----", NULL, NULL, NULL), | ||
353 | ("B2", "pas", "imp", "Αόριστος", 'aor', NULL, 32, "----2-", NULL, NULL, NULL), | ||
354 |