diff options
-rw-r--r-- | data/irregular-verbs.xml | 3 | ||||
-rw-r--r-- | src/ellinika/conjugator.scm | 73 | ||||
-rw-r--r-- | src/ellinika/tests/conj/erxomai.scm | 1 |
3 files changed, 47 insertions, 30 deletions
diff --git a/data/irregular-verbs.xml b/data/irregular-verbs.xml index a350935..67d4126 100644 --- a/data/irregular-verbs.xml +++ b/data/irregular-verbs.xml @@ -348,16 +348,19 @@ <v> <a>έρχομαι</a> <c>A-depon</c> <act> <stem theme="aor">έρθ</stem> + <stem theme="aor">έλθ</stem> </act> <pas> <stem theme="aor">ήρθ</stem> + <stem theme="aor">ήλθ</stem> <stem theme="sub">ερθ</stem> + <stem theme="sub">ελθ</stem> <imp> <t name="Ενεστώτας"> <p n="p" p="2">έρχεστε</p> </t> <t name="Αόριστος"> <p n="s" p="2">έλα</p> diff --git a/src/ellinika/conjugator.scm b/src/ellinika/conjugator.scm index 001a882..536b48e 100644 --- a/src/ellinika/conjugator.scm +++ b/src/ellinika/conjugator.scm @@ -502,43 +502,56 @@ AND i.tense=\"~A\" AND i.ident=f.ident" ; (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 - (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 + (let ((aparemfato-list (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)) + (lambda (x) + (let ((t (conjugation:table x))) + (if t + (cons + (list-ref t 2) + (conjugation:attested x)) + #f))) + (conjugate verb voice "sub" "Αόριστος" + #:nopart))) + (part (conj-info #:particle conj)) + (fold-id (conj-info #:fold conj))) + (fold + (lambda (param prev) + (if (not param) + prev + (let ((aparemfato (car param)) + (attested (cdr param))) + (cons + (cons + (append + (map + (lambda (aux flag) + (if (char=? flag #\-) + #f + (elstr->string + (if part + (elstr-append part " " aux " " + aparemfato) + (elstr-append aux " " aparemfato))))) + (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) + attested)) + fold-id) + prev)))) + prev + aparemfato-list))) ((and (string=? (conj-info #:thema conj) "synt") (conj-info #:auxtense conj)) (let ((part (conj-info #:particle conj))) (fold-right (lambda (tenses prev) (cons diff --git a/src/ellinika/tests/conj/erxomai.scm b/src/ellinika/tests/conj/erxomai.scm index aaca526..ce6d5ba 100644 --- a/src/ellinika/tests/conj/erxomai.scm +++ b/src/ellinika/tests/conj/erxomai.scm @@ -1,3 +1,4 @@ (use-modules ((ellinika test-conjugation))) (test-conjugation:verb "έρχομαι") +;(test-conjugation:tense "έρχομαι" "pas" "ind" "Παρακείμενος") |