summaryrefslogtreecommitdiffabout
path: root/src
authorSergey Poznyakoff <gray@gnu.org.ua>2011-06-20 15:09:42 (GMT)
committer Sergey Poznyakoff <gray@gnu.org.ua>2011-06-20 15:09:42 (GMT)
commitcc53aa452ef0caca75931a126860500d3bd67f04 (patch) (side-by-side diff)
treecc936bae115bd3d461c6b7ab0ed9c6dcd86fa0e3 /src
parent338097b8af7c7095db714782ac864ad9f0584b0f (diff)
downloadellinika-cc53aa452ef0caca75931a126860500d3bd67f04.tar.gz
ellinika-cc53aa452ef0caca75931a126860500d3bd67f04.tar.bz2
Improvements in conjugator.
* src/ellinika/conjugator.scm: Correctly handle alternative stems * data/irregular-verbs.xml: Add alternative stems for erxomai. in perfective compound tenses.
Diffstat (limited to 'src') (more/less context) (ignore whitespace changes)
-rw-r--r--src/ellinika/conjugator.scm73
-rw-r--r--src/ellinika/tests/conj/erxomai.scm1
2 files changed, 44 insertions, 30 deletions
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
@@ -505,37 +505,50 @@ AND i.tense=\"~A\" AND i.ident=f.ident"
(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)))
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" "Παρακείμενος")

Return to:

Send suggestions and report system problems to the System administrator.