aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2011-06-06 16:14:45 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2011-06-06 16:18:34 +0300
commit8a7e9b26e073731c82c02594d081c57aa474eade (patch)
tree8aba21e17f5518dc52fb407ba4759ee499a33e34
parent00131c263a9cb0ff8501bc1c4dc1e38b84af1a88 (diff)
downloadellinika-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.struct263
-rw-r--r--data/dbverb.struct323
-rw-r--r--scm/conjugator.scm289
-rw-r--r--src/ellinika/elmorph.c51
-rw-r--r--xml/pl/rhmata.xml254
-rw-r--r--xml/ru/rhmata.xml254
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
163set names utf8; 163source dbverb.struct;
164DROP TABLE IF EXISTS verbflect; 164 \ No newline at end of file
165CREATE 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
176DROP TABLE IF EXISTS conjugation;
177CREATE 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
194DROP TABLE IF EXISTS participle;
195CREATE 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
205INSERT 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
235INSERT 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 </