summaryrefslogtreecommitdiffabout
authorSergey Poznyakoff <gray@gnu.org.ua>2011-06-19 03:31:26 (GMT)
committer Sergey Poznyakoff <gray@gnu.org.ua>2011-06-19 03:31:26 (GMT)
commit3b0729ca8599173a61b97d59513c32b8b8eb1ea4 (patch) (side-by-side diff)
treefdd8c21bcc770b4b761205c3b5bdbb058228b3da
parentb8f74f94f21826901ff303095c2b88caad4a695e (diff)
downloadellinika-3b0729ca8599173a61b97d59513c32b8b8eb1ea4.tar.gz
ellinika-3b0729ca8599173a61b97d59513c32b8b8eb1ea4.tar.bz2
Conjugator: revamp handling of simple synthetic tenses (e.g. mellontas diarkeias).
* data/dbverb.struct: Rewrite definitions of simple compound tenses. * data/irregular-verbs.xml: Update. * scm/verbop.scm (prop): New tag. (p): New attribute "prop". * src/ellinika/conjugator.scm (apply-flect): Use "flection" property, if defined. (conjugate): Handle simple synthetic tenses.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--data/dbverb.struct32
-rw-r--r--data/irregular-verbs.xml47
-rw-r--r--scm/verbop.scm27
-rw-r--r--src/ellinika/conjugator.scm126
4 files changed, 166 insertions, 66 deletions
diff --git a/data/dbverb.struct b/data/dbverb.struct
index 399d685..d4bdfea 100644
--- a/data/dbverb.struct
+++ b/data/dbverb.struct
@@ -92,14 +92,14 @@ INSERT INTO conjugation VALUES
-- Οριστική
("A", "act", "ind", "Ενεστώτας", 'pres', NULL, 1, "000000", NULL, NULL, NULL, NULL),
("A", "act", "ind", "Παρατατικός", 'pres', NULL, 2, "333333+", NULL, NULL, NULL, NULL),
-("A", "act", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 1, "000000", "θα", NULL, NULL, NULL),
+("A", "act", "ind", "Μέλλοντας διαρκείας", 'synt', NULL, 1, "000000", "θα", NULL, "Ενεστώτας", NULL),
("A", "act", "ind", "Αόριστος", 'aor', NULL, 2, "333333+", NULL, NULL, NULL, NULL),
("A", "act", "ind", "Παρακείμενος", 'synt', NULL, 0, NULL, NULL, "έχω", "Ενεστώτας", NULL),
("A", "act", "ind", "Υπερσυντέλικος", 'synt', NULL, 0, NULL, NULL, "έχω", "Παρατατικός", NULL),
("A", "act", "ind", "Συντελεσμένος μέλλοντας", 'synt', NULL, 0, NULL, "θα", "έχω", "Ενεστώτας", NULL),
("A", "act", "ind", "Μέλλοντας στιγμιαίος", 'sub', NULL, 1, "000000", "θα", NULL, NULL, NULL),
-- Υποτακτική
-("A", "act", "sub", "Ενεστώτας", 'pres', NULL, 1, "000000", "να", NULL, NULL, NULL),
+("A", "act", "sub", "Ενεστώτας", 'synt', NULL, 1, "000000", "να", NULL, "Ενεστώτας", NULL),
("A", "act", "sub", "Αόριστος", 'sub', NULL, 1, "000000", "να", NULL, NULL, NULL),
("A", "act", "sub", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Ενεστώτας", NULL),
-- Προστακτική
@@ -110,17 +110,18 @@ INSERT INTO conjugation VALUES
-- Οριστική
("A", "pas", "ind", "Ενεστώτας", 'pres', NULL, 11, "000300", NULL, NULL, NULL, NULL),
("A", "pas", "ind", "Παρατατικός", 'pres', NULL, 12, "222333", NULL, NULL, NULL, NULL),
-("A", "pas", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 11, "333333", "θα", NULL, NULL, NULL),
+("A", "pas", "ind", "Μέλλοντας διαρκείας", 'synt', NULL, 11, NULL, "θα", NULL, "Ενεστώτας", NULL),
("A", "pas", "ind", "Αόριστος", 'aor', "ηκ", 2, "333333", NULL, NULL, NULL, NULL),
("A", "pas", "ind", "Παρακείμενος", 'synt', NULL, 0, NULL, NULL, "έχω", "Ενεστώτας", NULL),
("A", "pas", "ind", "Υπερσυντέλικος", 'synt', NULL, 0, NULL, NULL, "έχω", "Παρατατικός", NULL),
("A", "pas", "ind", "Συντελεσμένος μέλλοντας", 'synt', NULL, 0, NULL, "θα", "έχω", "Ενεστώτας", NULL),
("A", "pas", "ind", "Μέλλοντας στιγμιαίος", 'aor', NULL, 15, "ffffff", "θα", NULL, NULL, NULL),
-- Υποτακτική
-("A", "pas", "sub", "Ενεστώτας", 'pres', NULL, 11, "333333", "να", NULL, NULL, NULL),
+("A", "pas", "sub", "Ενεστώτας", 'synt', NULL, 11, NULL, "να", NULL, "Ενεστώτας", NULL),
("A", "pas", "sub", "Αόριστος", 'sub', NULL, 15, "ffffff", "να", NULL, NULL, NULL),
("A", "pas", "sub", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Ενεστώτας", NULL),
-- Προστακτική
+-- ?synt??
("A", "pas", "imp", "Ενεστώτας", 'pres', NULL, 11, "-3--3-", "να", NULL, NULL, NULL),
("A", "pas", "imp", "Αόριστος", 'aor:act', NULL, 17, "-0----", NULL, NULL, NULL, "imp-aor"),
("A", "pas", "imp", "Αόριστος", 'aor', NULL, 18, "----2-", NULL, NULL, NULL, "imp-aor"),
@@ -132,16 +133,15 @@ INSERT INTO conjugation VALUES
("B1", "act", "ind", "Ενεστώτας", 'pres', NULL, 21, "ffffff", NULL, NULL, NULL, NULL),
("B1", "act", "ind", "Παρατατικός", 'pres', "ούσ", 2, "ssssss", NULL, NULL, NULL, NULL),
("B1", "act", "ind", "Παρατατικός", 'pres', "αγ", 2, "333333", NULL, NULL, NULL, NULL),
-("B1", "act", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 20, "ffffff", "θα", NULL, NULL, NULL),
-("B1", "act", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 21, "ffffff", "θα", NULL, NULL, NULL),
+("B1", "act", "ind", "Μέλλοντας διαρκείας", 'synt', NULL, 0, NULL, "θα", NULL, "Ενεστώτας", NULL),
+-- ("B1", "act", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 21, "ffffff", "θα", NULL, NULL, NULL),
("B1", "act", "ind", "Αόριστος", 'aor', "ησ", 2, "333333", NULL, NULL, NULL, NULL),
("B1", "act", "ind", "Παρακείμενος", 'synt', NULL, 0, NULL, NULL, "έχω", "Ενεστώτας", NULL),
("B1", "act", "ind", "Υπερσυντέλικος", 'synt', NULL, 0, NULL, NULL, "έχω", "Παρατατικός", NULL),
("B1", "act", "ind", "Συντελεσμένος μέλλοντας", 'synt', NULL, 0, NULL, "θα", "έχω", "Ενεστώτας", NULL),
("B1", "act", "ind", "Μέλλοντας στιγμιαίος", 'aor', "ήσ", 1, "ssssss", "θα", NULL, NULL, NULL),
-- Υποτακτική
-("B1", "act", "sub", "Ενεστώτας", 'pres', NULL, 20, "ffffff", "να", NULL, NULL, NULL),
-("B1", "act", "sub", "Ενεστώτας", 'pres', NULL, 21, "ffffff", "να", NULL, NULL, NULL),
+("B1", "act", "sub", "Ενεστώτας", 'synt', NULL, 0, NULL, "να", NULL, "Ενεστώτας", NULL),
("B1", "act", "sub", "Αόριστος", 'aor', "ήσ", 1, "ssssss", "να", NULL, NULL, NULL),
("B1", "act", "sub", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Ενεστώτας", NULL),
-- Προστακτική
@@ -152,14 +152,14 @@ INSERT INTO conjugation VALUES
-- Οριστική
("B1", "pas", "ind", "Ενεστώτας", 'pres', NULL, 28, "ffffff", NULL, NULL, NULL, NULL),
("B1", "pas", "ind", "Παρατατικός", 'pres', NULL, 29, "ffffff", NULL, NULL, NULL, NULL),
-("B1", "pas", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 28, "ffffff", "θα", NULL, NULL, NULL),
+("B1", "pas", "ind", "Μέλλοντας διαρκείας", 'synt', NULL, 0, NULL, "θα", NULL, "Ενεστώτας", NULL),
("B1", "pas", "ind", "Αόριστος", 'aor', "ηκ", 2, "333333", NULL, NULL, NULL, NULL),
("B1", "pas", "ind", "Παρακείμενος", 'synt', NULL, 0, NULL, NULL, "έχω", "Ενεστώτας", NULL),
("B1", "pas", "ind", "Υπερσυντέλικος", 'synt', NULL, 0, NULL, NULL, "έχω", "Παρατατικός", NULL),
("B1", "pas", "ind", "Συντελεσμένος μέλλοντας", 'synt', NULL, 0, NULL, "θα", "έχω", "Ενεστώτας", NULL),
("B1", "pas", "ind", "Μέλλοντας στιγμιαίος", 'aor', NULL, 15, "ffffff", "θα", NULL, NULL, NULL),
-- Υποτακτική
-("B1", "pas", "sub", "Ενεστώτας", 'pres', NULL, 28, "ffffff", "να", NULL, NULL, NULL),
+("B1", "pas", "sub", "Ενεστώτας", 'synt', NULL, 0, NULL, "να", NULL, "Ενεστώτας", NULL),
("B1", "pas", "sub", "Αόριστος", 'aor', NULL, 15, "ffffff", "να", NULL, NULL, NULL),
("B1", "pas", "sub", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Παρατατικός", NULL),
-- Προστακτική
@@ -174,14 +174,14 @@ INSERT INTO conjugation VALUES
-- Οριστική
("B2", "act", "ind", "Ενεστώτας", 'pres', NULL, 15, "ffffff", NULL, NULL, NULL, NULL),
("B2", "act", "ind", "Παρατατικός", 'pres', "ούσ", 2, "ssssss", NULL, NULL, NULL, NULL),
-("B2", "act", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 15, "ffffff", "θα", NULL, NULL, NULL),
+("B2", "act", "ind", "Μέλλοντας διαρκείας", 'synt', NULL, 0, NULL, "θα", NULL, "Ενεστώτας", NULL),
("B2", "act", "ind", "Αόριστος", 'aor', "ησ", 2, "333333", NULL, NULL, NULL, NULL),
("B2", "act", "ind", "Παρακείμενος", 'synt', NULL, 0, NULL, NULL, "έχω", "Ενεστώτας", NULL),
("B2", "act", "ind", "Υπερσυντέλικος", 'synt', NULL, 0, NULL, NULL, "έχω", "Παρατατικός", NULL),
("B2", "act", "ind", "Συντελεσμένος μέλλοντας", 'synt', NULL, 0, NULL, "θα", "έχω", "Ενεστώτας", NULL),
("B2", "act", "ind", "Μέλλοντας στιγμιαίος", 'aor', "ήσ", 1, "ssssss", "θα", NULL, NULL, NULL),
-- Υποτακτική
-("B2", "act", "sub", "Ενεστώτας", 'pres', NULL, 15, "ffffff", "να", NULL, NULL, NULL),
+("B2", "act", "sub", "Ενεστώτας", 'synt', NULL, 0, NULL, "να", NULL, "Ενεστώτας", NULL),
("B2", "act", "sub", "Αόριστος", 'aor', "ήσ", 1, "ssssss", "να", NULL, NULL, NULL),
("B2", "act", "sub", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Ενεστώτας", NULL),
-- Προστακτική
@@ -194,14 +194,14 @@ INSERT INTO conjugation VALUES
-- Οριστική
("B2", "pas", "ind", "Ενεστώτας", 'pres', NULL, 34, "ffffff", NULL, NULL, NULL, NULL),
("B2", "pas", "ind", "Παρατατικός", 'pres', NULL, 35, "ffffff", NULL, NULL, NULL, NULL),
-("B2", "pas", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 34, "ffffff", "θα", NULL, NULL, NULL),
+("B2", "pas", "ind", "Μέλλοντας διαρκείας", 'synt', NULL, 0, NULL, "θα", NULL, "Ενεστώτας", NULL),
("B2", "pas", "ind", "Αόριστος", 'aor', "ηκ", 2, "333333", NULL, NULL, NULL, NULL),
("B2", "pas", "ind", "Παρακείμενος", 'synt', NULL, 0, NULL, NULL, "έχω", "Ενεστώτας", NULL),
("B2", "pas", "ind", "Υπερσυντέλικος", 'synt', NULL, 0, NULL, NULL, "έχω", "Παρατατικός", NULL),
("B2", "pas", "ind", "Συντελεσμένος μέλλοντας", 'synt', NULL, 0, NULL, "θα", "έχω", "Ενεστώτας", NULL),
("B2", "pas", "ind", "Μέλλοντας στιγμιαίος", 'aor', NULL, 15, "ffffff", "θα", NULL, NULL, NULL),
-- Υποτακτική
-("B2", "pas", "sub", "Ενεστώτας", 'pres', NULL, 34, "ffffff", "να", NULL, NULL, NULL),
+("B2", "pas", "sub", "Ενεστώτας", 'synt', NULL, 0, NULL, "να", NULL, "Ενεστώτας", NULL),
("B2", "pas", "sub", "Αόριστος", 'aor', NULL, 15, "ffffff", "να", NULL, NULL, NULL),
("B2", "pas", "sub", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Παρατατικός", NULL),
-- Προστακτική
@@ -217,14 +217,14 @@ INSERT INTO conjugation VALUES
-- Οριστική
("A-depon", "pas", "ind", "Ενεστώτας", 'pres', NULL, 11, "000300", NULL, NULL, NULL, NULL),
("A-depon", "pas", "ind", "Παρατατικός", 'pres', NULL, 12, "222333", NULL, NULL, NULL, NULL),
-("A-depon", "pas", "ind", "Μέλλοντας διαρκείας", 'pres', NULL, 11, "333333", "θα", NULL, NULL, NULL),
+("A-depon", "pas", "ind", "Μέλλοντας διαρκείας", 'synt', NULL, 0, NULL, "θα", NULL, "Ενεστώτας", NULL),
("A-depon", "pas", "ind", "Αόριστος", 'aor', NULL, 2, "000000", NULL, NULL, NULL, NULL),
("A-depon", "pas", "ind", "Παρακείμενος", 'synt', NULL, 0, NULL, NULL, "έχω", "Ενεστώτας", NULL),
("A-depon", "pas", "ind", "Υπερσυντέλικος", 'synt', NULL, 0, NULL, NULL, "έχω", "Παρατατικός", NULL),
("A-depon", "pas", "ind", "Συντελεσμένος μέλλοντας", 'synt', NULL, 0, NULL, "θα", "έχω", "Ενεστώτας", NULL),
("A-depon", "pas", "ind", "Μέλλοντας στιγμιαίος", 'sub', NULL, 15, "000000", "θα", NULL, NULL, NULL),
-- Υποτακτική
-("A-depon", "pas", "sub", "Ενεστώτας", 'pres', NULL, 11, "333333", "να", NULL, NULL, NULL),
+("A-depon", "pas", "sub", "Ενεστώτας", 'synt', NULL, 0, NULL, "να", NULL, "Ενεστώτας", NULL),
("A-depon", "pas", "sub", "Αόριστος", 'sub', NULL, 1, "000000", "να", NULL, NULL, NULL),
("A-depon", "pas", "sub", "Παρακείμενος", 'synt', NULL, 0, NULL, "να", "έχω", "Ενεστώτας", NULL),
-- Προστακτική -- FIXME
diff --git a/data/irregular-verbs.xml b/data/irregular-verbs.xml
index e69f97c..5253187 100644
--- a/data/irregular-verbs.xml
+++ b/data/irregular-verbs.xml
@@ -400,17 +400,62 @@
<v>
<a>λέω</a>
<c>A</c>
- <accmap>000000</accmap>
<act>
<root theme="aor">είπ</root>
<root theme="sub">π</root>
+ <ind>
+ <t name="Ενεστώτας">
+ <p n="s" p="1">λέω</p>
+ <p n="s" p="2">λες</p>
+ <p n="s" p="3">λέει</p>
+ <p n="p" p="1">λέμε</p>
+ <p n="p" p="2">λέτε</p>
+ <p n="p" p="3">λέν(ε)</p>
+ </t>
+ <t name="Παρατατικός">
+ <prop name="root">λέγ</prop>
+ </t>
+ <t name="Αόριστος">
+ <prop name="accmap">000000</prop>
+ </t>
+ <t name="Μέλλοντας στιγμιαίος">
+ <p n="p" p="2" prop="true">πείτε</p>
+ </t>
+ </ind>
+ <sub>
+ <t name="Αόριστος">
+ <p n="p" p="2" prop="true">πείτε</p>
+ </t>
+ </sub>
<imp>
+ <t name="Ενεστώτας">
+ <prop name="root">λέγ</prop>
+ </t>
<t name="Αόριστος">
<p n="s" p="2">πες</p>
<p n="p" p="2">πείτε,πέστε</p>
</t>
</imp>
</act>
+ <pas>
+ <root theme="aor">ειπώθ</root>
+ <ind>
+ <t name="Ενεστώτας">
+ <prop name="root">λέγ</prop>
+ </t>
+ <t name="Παρατατικός">
+ <prop name="root">λέγ</prop>
+ </t>
+ </ind>
+ <imp>
+ <t name="Ενεστώτας">
+ <prop name="root">λέγ</prop>
+ </t>
+ <t name="Αόριστος">
+ <p n="p" p="2">ειπωθείτε,λεχθείτε</p>
+ </t>
+ </imp>
+ </pas>
</v>
<!-- FIXME: λέγω -> λέω -->
diff --git a/scm/verbop.scm b/scm/verbop.scm
index ee86035..0fff38f 100644
--- a/scm/verbop.scm
+++ b/scm/verbop.scm
@@ -545,7 +545,7 @@ VALUES (~Q,~Q,~Q,~Q)"
((xmltrans:parent? "t")
(set! tense-prop (cons (cons "accmap" text) tense-prop)))
(else
- (xmltrans:parse-error #f elt " not a child of v or t")))
+ (xmltrans:parse-error #f "accmap not a child of v or t")))
#f)
;;; <act>...</act> - Define conjugation in active voice
@@ -646,6 +646,23 @@ VALUES (~Q,~Q,~Q,~Q)"
(mood-set name (get-tense)))
#f)
+(xmltrans:end-tag
+ "prop"
+ (tag attr text)
+ (check-parent tag "t")
+ (let ((name (xmltrans:attr attr "name")))
+ (cond
+ ((not name)
+ (begin
+ (xmltrans:parse-error #f "Required attribute `name' not specified")
+ (mark-invalid)))
+ ((xmltrans:parent? "t")
+ (set! tense-prop (cons (cons name text) tense-prop)))
+ (else
+ (xmltrans:parse-error #f "prop not a child of t"))))
+ #f)
+
+
;;; <p n="[sp]" n="[123]">...</p> - Define a (grammatical) person
(xmltrans:end-tag
"p"
@@ -679,7 +696,13 @@ VALUES (~Q,~Q,~Q,~Q)"
(else
(xmltrans:parse-error #f "Invalid value for `n'")
(return)))
- (tense-set elt text))))
+ (cond
+ ((xmltrans:attr attr "prop")
+ (set! tense-prop (cons (cons (number->string (1+ elt)) text) tense-prop))
+ (if (not (member "default" tense-prop))
+ (set! tense-prop (cons (cons "default" #t) tense-prop))))
+ (else
+ (tense-set elt text))))))
#f)
diff --git a/src/ellinika/conjugator.scm b/src/ellinika/conjugator.scm
index e73a1cc..2a6425c 100644
--- a/src/ellinika/conjugator.scm
+++ b/src/ellinika/conjugator.scm
@@ -371,8 +371,12 @@ AND c.tense=\"~A\" AND c.flect = f.ident ORDER by fold"
; (format #t "AUGMENT ~A ~A~%" vinfo (verb-get vinfo #:augment))
(let ((forms
(map
- (lambda (flect acc)
+ (lambda (flect acc person)
(cond
+ ((verb-get vinfo (symbol->keyword
+ (string->symbol (number->string person)))) =>
+ (lambda (personal-form)
+ personal-form))
((not flect) #f)
((char=? acc #\0)
(let* ((rs (force-elstr root))
@@ -421,7 +425,8 @@ AND c.tense=\"~A\" AND c.flect = f.ident ORDER by fold"
(throw 'conjugator-error 'conjugator-error-db
"invalid accent character ~A" (list acc)))))
(conj-info #:flect conj)
- accmap)))
+ accmap
+ '(1 2 3 4 5 6))))
(if (conj-info #:particle conj)
(map
(lambda (w)
@@ -463,7 +468,7 @@ AND i.tense=\"~A\" AND i.ident=f.ident"
(if (not conj-list)
(list (list #f #f #f #f #f #f #f #f))
(map car
- (fold-right
+ (fold
(lambda (elt prev)
; (format #t "ELT ~A~%" elt)
(if (null? prev)
@@ -478,55 +483,82 @@ AND i.tense=\"~A\" AND i.ident=f.ident"
(cdr prev))
(cons elt prev)))))
'()
- (map
- (lambda (conj)
-; (format #t "CONJ ~S~%" conj)
- (if (member #:nopart rest)
- (conj-info-set! #:particle conj #f))
+ (fold
+ (lambda (conj prev)
+; (format #t "CONJ ~A~%" conj)
+ (if (member #:nopart rest)
+ (conj-info-set! #:particle conj #f))
+ (cond
+ ((and (string=? (conj-info #:thema conj) "synt")
+ (conj-info #:aux conj))
(cons
- (cond
- ((string=? (conj-info #:thema conj) "synt")
- (let* ((verb-conj
- (car (conjugate verb voice "sub" "Αόριστος"
- #:nopart)))
- (form (list-ref verb-conj 2))
- (part (conj-info #:particle conj)))
- (cond
- (form
+ (cons
+ (let* ((verb-conj
+ (car (conjugate verb voice "sub" "Αόριστος"
+ #:nopart)))
+ (form (list-ref verb-conj 2))
+ (part (conj-info #:particle conj)))
+ (cond
+ (form
; (format #t "FORM ~A FROM ~A~%" form verb-conj);;FIXME
+ (append
+ (map
+ (lambda (aux flag)
+ (if (char=? flag #\-)
+ #f
+ (elstr->string
+ (if part
+ (elstr-append part " " aux " " form)
+ (elstr-append aux " " form)))))
+ (conjugation:table
+ (car (conjugate (conj-info #:aux conj) "act" "ind"
+ (conj-info #:auxtense conj))))
+ (string->list (or (verb-get vinfo #:accmap)
+ (conj-info #:accmap conj)
+ "000000")))
+ (list (verb-get vinfo #:conj)
+ (conjugation:attested verb-conj))))
+ (else
+ #f)))
+ (conj-info #:fold conj))
+ prev))
+ ((and (string=? (conj-info #:thema conj) "synt")
+ (conj-info #:auxtense conj))
+ (let ((part (conj-info #:particle conj)))
+ (fold-right
+ (lambda (tenses prev)
+ (cons
+ (cons
(append
(map
- (lambda (aux flag)
- (if (char=? flag #\-)
- #f
- (elstr->string
- (if part
- (elstr-append part " " aux " " form)
- (elstr-append aux " " form)))))
- (conjugation:table
- (car (conjugate (conj-info #:aux conj) "act" "ind"
- (conj-info #:auxtense conj))))
- (string->list (or (verb-get vinfo #:accmap)
- (conj-info #:accmap conj)
- "000000")))
- (list (verb-get vinfo #:conj)
- (conjugation:attested verb-conj))))
- (else
- #f))))
- (else
- (let ((thema (string-split (conj-info #:thema conj) #\:)))
-; (format #t "THEMA ~A~%" thema)
- (complement-verb-info vinfo verb
- (if (null? (cdr thema))
- voice
- (car (cdr thema)))
- (car thema))
+ (lambda (t)
+ (elstr->string (elstr-append part " " t)))
+ (list-head tenses 6))
+ (list-tail tenses 6))
+ (conj-info #:fold conj))
+ prev))
+ prev
+ (conjugate verb voice "ind"
+ (conj-info #:auxtense conj)))))
+ (else
+ (if (not (verb-get vinfo #:root))
+ (let ((thema (string-split (conj-info #:thema conj) #\:)))
+; (format #t "THEMA ~A~%" thema)
+ (complement-verb-info vinfo verb
+ (if (null? (cdr thema))
+ voice
+ (car (cdr thema)))
+ (car thema))))
; (format #t "VINFO ~A~%" vinfo)
- (append (apply-flect conj vinfo verb)
- (list (verb-get vinfo #:conj)
- (verb-get vinfo #:attested))))))
- (conj-info #:fold conj)))
- conj-list))))))))
+ (cons
+ (cons
+ (append (apply-flect conj vinfo verb)
+ (list (verb-get vinfo #:conj)
+ (verb-get vinfo #:attested)))
+ (conj-info #:fold conj))
+ prev))))
+ '()
+ conj-list))))))))
(define-public (conjugator verb voice mood tense)
(conjugate verb voice mood tense))

Return to:

Send suggestions and report system problems to the System administrator.