diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-06-07 22:15:26 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-06-07 22:19:26 +0300 |
commit | 2bae7da012e2125762855ce014e63345ecbbbb18 (patch) | |
tree | 61faec7672937f8fc420310da0ff531ce9c6a6bb | |
parent | 79447034e393dc5c7f01f3ec0ca1de7ded4f15e6 (diff) | |
download | ellinika-2bae7da012e2125762855ce014e63345ecbbbb18.tar.gz ellinika-2bae7da012e2125762855ce014e63345ecbbbb18.tar.bz2 |
Improve conjugator
* data/dbverb.struct: Remove individual verb definitions.
* data/irregular-verbs.xml: New file.
* scm/verbop.scm: New file.
* scm/Makefile.am: Add rules for verbop.
* scm/conjugator.scm: Various fixes.
* src/ellinika/elmorph.c (elstr-accent-position): Fix handling
of string arguments.
(_elstr_set_accent): Fix error message.
(elstr-set-accent-character)
(elstr-set-accent-character!): New functions.
-rw-r--r-- | data/dbverb.struct | 101 | ||||
-rw-r--r-- | data/irregular-verbs.xml | 641 | ||||
-rw-r--r-- | scm/.gitignore | 2 | ||||
-rw-r--r-- | scm/Makefile.am | 7 | ||||
-rw-r--r-- | scm/conjugator.scm | 189 | ||||
-rw-r--r-- | scm/verbop.scm | 676 | ||||
-rw-r--r-- | src/ellinika/elmorph.c | 66 |
7 files changed, 1516 insertions, 166 deletions
diff --git a/data/dbverb.struct b/data/dbverb.struct index af9d236..06745c8 100644 --- a/data/dbverb.struct +++ b/data/dbverb.struct | |||
@@ -32,7 +32,7 @@ DROP TABLE IF EXISTS conjugation; | |||
32 | CREATE TABLE conjugation( | 32 | CREATE TABLE conjugation( |
33 | conj char(2), -- REL 9 | 33 | conj char(2), -- REL 9 |
34 | voice enum('act','pas'), -- Ενεργητηκή/Μεσοπαθητική | 34 | voice enum('act','pas'), -- Ενεργητηκή/Μεσοπαθητική |
35 | mode enum('ind','sub','imp'), | 35 | mood enum('ind','sub','imp'), |
36 | tense varchar(128), | 36 | tense varchar(128), |
37 | thema enum('pres','aor','sub','synt'), -- Ενεστώτα, Αόριστου, υποτακτικής, syntethic | 37 | thema enum('pres','aor','sub','synt'), -- Ενεστώτα, Αόριστου, υποτακτικής, syntethic |
38 | suffix char(32), | 38 | suffix char(32), |
@@ -43,7 +43,7 @@ CREATE TABLE conjugation( | |||
43 | auxtense char(32), | 43 | auxtense char(32), |
44 | KEY (conj), | 44 | KEY (conj), |
45 | KEY (voice), | 45 | KEY (voice), |
46 | KEY (mode) | 46 | KEY (mood) |
47 | ); | 47 | ); |
48 | 48 | ||
49 | DROP TABLE IF EXISTS participle; | 49 | DROP TABLE IF EXISTS participle; |
@@ -243,98 +243,21 @@ CREATE TABLE verb( | |||
243 | INDEX(verb) | 243 | INDEX(verb) |
244 | ); | 244 | ); |
245 | 245 | ||
246 | DROP TABLE IF EXISTS irregular_root; | ||
247 | CREATE TABLE irregular_root( | ||
248 | verb varchar(128), | ||
249 | voice enum('act','pas'), -- Ενεργητηκή/Μεσοπαθητική | ||
250 | thema enum('pres','aor','sub'), -- Αόριστος/Υποτακτική | ||
251 | root varchar(128) | ||
252 | ); | ||
253 | |||
254 | INSERT INTO verb VALUES | ||
255 | ('βρίσκω', 'A', NULL, '000000', NULL), | ||
256 | ('θέλω','A','η',NULL, NULL), | ||
257 | ('έχω','A',NULL,'000000', NULL), | ||
258 | ('ξέρω','A','η',NULL, NULL), | ||
259 | ('κρεμάω','B1',NULL,NULL,"ασ"), | ||
260 | ('κρεμώ','B1',NULL,NULL,"ασ"), | ||
261 | ('κιτάω','B1',NULL,NULL,"αξ"), | ||
262 | ('κιτώ','B1',NULL,NULL,"αξ"), | ||
263 | ('τραβάω','B1',NULL,NULL,"ηξ"), | ||
264 | ('τραβώ','B1',NULL,NULL,"ηξ"), | ||
265 | ('νικώ','B1',NULL,NULL,NULL) | ||
266 | ; | ||
267 | |||
268 | INSERT INTO irregular_root VALUES | ||
269 | ('βρίσκω','act','aor','βρήκ'), | ||
270 | ('βρίσκω','act','sub','βρ'), | ||
271 | ('βρίσκω','pas','aor','βρέθ'), | ||
272 | ('βρίσκω','pas','sub','βρέθ'), | ||
273 | ('θέλω','act','aor','θέλησ') | ||
274 | ; | ||
275 | |||
276 | DROP TABLE IF EXISTS individual_verb; | 246 | DROP TABLE IF EXISTS individual_verb; |
277 | CREATE TABLE individual_verb( | 247 | CREATE TABLE individual_verb( |
278 | verb varchar(128), | 248 | verb varchar(128), |
279 | voice enum('act','pas'), -- Ενεργητηκή/Μεσοπαθητική | 249 | voice enum('act','pas'), |
280 | mode enum('ind','sub','imp'), | 250 | mood enum('ind','sub','imp'), |
281 | tense varchar(128), | 251 | tense varchar(128), |
282 | ident int(32), | 252 | ident int(32), |
283 | INDEX(verb,voice,mode,tense) | 253 | INDEX(verb,voice,mood,tense) |
284 | ); | 254 | ); |
285 | 255 | ||
286 | INSERT INTO individual_verb VALUES | 256 | DROP TABLE IF EXISTS irregular_root; |
287 | ("είμαι", "act", "ind", "Ενεστώτας", 100), | 257 | CREATE TABLE irregular_root( |
288 | ("είμαι", "act", "ind", "Παρατατικός", 101), | 258 | verb varchar(128), |
289 | ("είμαι", "act", "ind", "Μέλλοντας διαρκείας", 102), | 259 | voice enum('act','pas'), -- Ενεργητηκή/Μεσοπαθητική |
290 | ("είμαι", "act", "ind", "Αόριστος", 0), | 260 | thema enum('pres','aor','sub'), -- Αόριστος/Υποτακτική |
291 | ("είμαι", "act", "ind", "Παρακείμενος", 0), | 261 | root varchar(128) |
292 | ("είμαι", "act", "ind", "Υπερσυντέλικος", 0), | 262 | ); |
293 | ("είμαι", "act", "ind", "Συντελεσμένος μέλλοντας", 0), | ||
294 | ("είμαι", "act", "ind", "Μέλλοντας στιγμιαίος", 0), | ||
295 | ("είμαι", "act", "sub", "Ενεστώτας", 103), | ||
296 | ("είμαι", "act", "sub", "Αόριστος", 0), | ||
297 | ("είμαι", "act", "sub", "Παρακείμενος", 0), | ||
298 | ("είμαι", "act", "imp", "Ενεστώτας", 104), | ||
299 | ("είμαι", "act", "imp", "Αόριστος", 0), | ||
300 | ("είμαι", "act", "imp", "Παρακείμενος", 0), | ||
301 | ("είμαι", "pas", "ind", "Ενεστώτας", 0), | ||
302 | ("είμαι", "pas", "ind", "Παρατατικός", 0), | ||
303 | ("είμαι", "pas", "ind", "Μέλλοντας διαρκείας", 0), | ||
304 | ("είμαι", "pas", "ind", "Αόριστος", 0), | ||
305 | ("είμαι", "pas", "ind", "Παρακείμενος", 0), | ||
306 | ("είμαι", "pas", "ind", "Υπερσυντέλικος", 0), | ||
307 | ("είμαι", "pas", "ind", "Συντελεσμένος μέλλοντας", 0), | ||
308 | ("είμαι", "pas", "ind", "Μέλλοντας στιγμιαίος", 0), | ||
309 | ("είμαι", "pas", "sub", "Ενεστώτας", 0), | ||
310 | ("είμαι", "pas", "sub", "Αόριστος", 0), | ||
311 | ("είμαι", "pas", "sub", "Παρακείμενος", 0), | ||
312 | ("είμαι", "pas", "imp", "Ενεστώτας", 0), | ||
313 | ("είμαι", "pas", "imp", "Αόριστος", 0), | ||
314 | ("είμαι", "pas", "imp", "Παρακείμενος", 0), | ||
315 | 263 | ||
316 | ("έχω", "act", "ind", "Παρατατικός", 105), | ||
317 | ("έχω", "act", "ind", "Αόριστος", 0), | ||
318 | ("έχω", "act", "ind", "Παρακείμενος", 0), | ||
319 | ("έχω", "act", "ind", "Υπερσυντέλικος", 0), | ||
320 | ("έχω", "act", "ind", "Συντελεσμένος μέλλοντας", 0), | ||
321 | ("έχω", "act", "ind", "Μέλλοντας στιγμιαίος", 0), | ||
322 | ("έχω", "act", "sub", "Αόριστος", 0), | ||
323 | ("έχω", "act", "sub", "Παρακείμενος", 0), | ||
324 | ("έχω", "act", "imp", "Αόριστος", 0), | ||
325 | ("έχω", "act", "imp", "Παρακείμενος", 0), | ||
326 | ("έχω", "pas", "ind", "Παρατατικός", 0), | ||
327 | ("έχω", "pas", "ind", "Μέλλοντας διαρκείας", 0), | ||
328 | ("έχω", "pas", "ind", "Αόριστος", 0), | ||
329 | ("έχω", "pas", "ind", "Παρακείμενος", 0), | ||
330 | ("έχω", "pas", "ind", "Υπερσυντέλικος", 0), | ||
331 | ("έχω", "pas", "ind", "Συντελεσμένος μέλλοντας", 0), | ||
332 | ("έχω", "pas", "ind", "Μέλλοντας στιγμιαίος", 0), | ||
333 | ("έχω", "pas", "sub", "Ενεστώτας", 0), | ||
334 | ("έχω", "pas", "sub", "Αόριστος", 0), | ||
335 | ("έχω", "pas", "sub", "Παρακείμενος", 0), | ||
336 | ("έχω", "pas", "imp", "Ενεστώτας", 0), | ||
337 | ("έχω", "pas", "imp", "Αόριστος", 0), | ||
338 | ("έχω", "pas", "imp", "Παρακείμενος", 0), | ||
339 | ("βρίσκω", "act", "imp", "Αόριστος", 106) | ||
340 | ; | ||
diff --git a/data/irregular-verbs.xml b/data/irregular-verbs.xml new file mode 100644 index 0000000..ca2c7d1 --- /dev/null +++ b/data/irregular-verbs.xml | |||
@@ -0,0 +1,641 @@ | |||
1 | <i> | ||
2 | <v> | ||
3 | <a>είμαι</a> | ||
4 | <c>I</c> | ||
5 | <act> | ||
6 | <ind> | ||
7 | <t name="Ενεστώτας"> | ||
8 | <p n="s" p="1">είμαι</p> | ||
9 | <p n="s" p="2">είσαι</p> | ||
10 | <p n="s" p="3">είναι</p> | ||
11 | <p n="p" p="1">είμαστε</p> | ||
12 | <p n="p" p="2">είστε,είσαστε</p> | ||
13 | <p n="p" p="3">είναι</p> | ||
14 | </t> | ||
15 | <t name="Παρατατικός"> | ||
16 | <p n="s" p="1">ήμουν(α)</p> | ||
17 | <p n="s" p="2">ήσουν(α)</p> | ||
18 | <p n="s" p="3">ήταν(ε)</p> | ||
19 | <p n="p" p="1">ήμαστε,ήμασταν</p> | ||
20 | <p n="p" p="2">ήσαστε,ήσασταν</p> | ||
21 | <p n="p" p="3">ήταν(ε)</p> | ||
22 | </t> | ||
23 | <t name="Μέλλοντας διαρκείας"> | ||
24 | <p n="s" p="1">θα είμαι</p> | ||
25 | <p n="s" p="2">θα είσαι</p> | ||
26 | <p n="s" p="3">θα είναι</p> | ||
27 | <p n="p" p="1">θα είμαστε</p> | ||
28 | <p n="p" p="2">θα είστε,θα είσαστε</p> | ||
29 | <p n="p" p="3">θα είναι</p> | ||
30 | </t> | ||
31 | <t name="Αόριστος" /> | ||
32 | <t name="Παρακείμενος"/> | ||
33 | <t name="Υπερσυντέλικος"/> | ||
34 | <t name="Συντελεσμένος μέλλοντας"/> | ||
35 | <t name="Μέλλοντας στιγμιαίος"/> | ||
36 | </ind> | ||
37 | <sub> | ||
38 | <t name="Ενεστώτας"> | ||
39 | <p n="s" p="1">να είμαι</p> | ||
40 | <p n="s" p="2">να είσαι</p> | ||
41 | <p n="s" p="3">να είναι</p> | ||
42 | <p n="p" p="1">να είμαστε</p> | ||
43 | <p n="p" p="2">να είστε,θα είσαστε</p> | ||
44 | <p n="p" p="3">να είναι</p> | ||
45 | </t> | ||
46 | <t name="Αόριστος" /> | ||
47 | <t name="Παρακείμενος"/> | ||
48 | </sub> | ||
49 | <imp> | ||
50 | <t name="Ενεστώτας"> | ||
51 | <p n="s" p="2">να είσαι</p> | ||
52 | <p n="p" p="2">να είστε</p> | ||
53 | </t> | ||
54 | <t name="Αόριστος" /> | ||
55 | <t name="Παρακείμενος"/> | ||
56 | </imp> | ||
57 | </act> | ||
58 | |||
59 | <pas> | ||
60 | <ind> | ||
61 | <t name="Ενεστώτας"/> | ||
62 | <t name="Παρατατικός"/> | ||
63 | <t name="Μέλλοντας διαρκείας"/> | ||
64 | <t name="Αόριστος" /> | ||
65 | <t name="Παρακείμενος"/> | ||
66 | <t name="Υπερσυντέλικος"/> | ||
67 | <t name="Συντελεσμένος μέλλοντας"/> | ||
68 | <t name="Μέλλοντας στιγμιαίος"/> | ||
69 | </ind> | ||
70 | <sub> | ||
71 | <t name="Ενεστώτας"/> | ||
72 | <t name="Αόριστος" /> | ||
73 | <t name="Παρακείμενος"/> | ||
74 | </sub> | ||
75 | <imp> | ||
76 | <t name="Ενεστώτας"/> | ||
77 | <t name="Αόριστος" /> | ||