summaryrefslogtreecommitdiffabout
authorSergey Poznyakoff <gray@gnu.org.ua>2011-06-19 04:15:04 (GMT)
committer Sergey Poznyakoff <gray@gnu.org.ua>2011-06-19 04:16:30 (GMT)
commitb56552e3260023593a3bf80315edf0f069eebac1 (patch) (side-by-side diff)
tree729ba1bd4eb4d80c69bfa4ea65a50a69daae1e4e
parent3b0729ca8599173a61b97d59513c32b8b8eb1ea4 (diff)
downloadellinika-b56552e3260023593a3bf80315edf0f069eebac1.tar.gz
ellinika-b56552e3260023593a3bf80315edf0f069eebac1.tar.bz2
Conjugator: bugfix
* data/irregular-verbs.xml: Update. * src/ellinika/conjugator.scm (conjugate): Create a copy of vinfo prior to complementing it to avoid side effects on subsequent iterations.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--data/irregular-verbs.xml27
-rw-r--r--src/ellinika/conjugator.scm32
-rw-r--r--src/ellinika/tests/conj/blepv.scm2
3 files changed, 44 insertions, 17 deletions
diff --git a/data/irregular-verbs.xml b/data/irregular-verbs.xml
index 5253187..2e604e3 100644
--- a/data/irregular-verbs.xml
+++ b/data/irregular-verbs.xml
@@ -225,7 +225,6 @@
<v>
<a>βλέπω</a>
<c>A</c>
-<!-- <accmap>000000</accmap> -->
<act>
<root theme="aor">είδ</root>
<root theme="sub">δ</root>
@@ -233,7 +232,15 @@
<t name="Αόριστος">
<accmap>000000</accmap>
</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="Αόριστος">
<p n="s" p="2">δες</p>
@@ -244,6 +251,11 @@
<pas>
<root theme="aor">ειδώθ</root>
<root theme="sub">ιδωθ</root>
+ <ind>
+ <t name="Μέλλοντας στιγμιαίος">
+ <prop name="root">ιδωθ</prop>
+ </t>
+ </ind>
</pas>
</v>
@@ -252,7 +264,20 @@
<c>A</c>
<act>
<root theme="aor">βρήκ</root>
+ <ind>
+ <t name="Αόριστος">
+ <accmap>000000</accmap>
+ </t>
+ <t name="Μέλλοντας στιγμιαίος">
+ <p n="p" p="2" prop="true">βρείτε</p>
+ </t>
+ </ind>
<root theme="sub">βρ</root>
+ <sub>
+ <t name="Αόριστος">
+ <p n="p" p="2" prop="true">βρείτε</p>
+ </t>
+ </sub>
<imp>
<t name="Αόριστος">
<p n="s" p="2">βρες</p>
diff --git a/src/ellinika/conjugator.scm b/src/ellinika/conjugator.scm
index 2a6425c..0abec8d 100644
--- a/src/ellinika/conjugator.scm
+++ b/src/ellinika/conjugator.scm
@@ -541,22 +541,24 @@ AND i.tense=\"~A\" AND i.ident=f.ident"
(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))))
+ (let ((vinfo (copy-tree vinfo)))
+ (if (verb-get vinfo #:root)
+ (verb-set! vinfo #:attested '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)
- (cons
- (cons
- (append (apply-flect conj vinfo verb)
- (list (verb-get vinfo #:conj)
- (verb-get vinfo #:attested)))
- (conj-info #:fold conj))
- prev))))
+ (cons
+ (cons
+ (append (apply-flect conj vinfo verb)
+ (list (verb-get vinfo #:conj)
+ (verb-get vinfo #:attested)))
+ (conj-info #:fold conj))
+ prev)))))
'()
conj-list))))))))
diff --git a/src/ellinika/tests/conj/blepv.scm b/src/ellinika/tests/conj/blepv.scm
index 7e54734..6c0ac99 100644
--- a/src/ellinika/tests/conj/blepv.scm
+++ b/src/ellinika/tests/conj/blepv.scm
@@ -1,4 +1,4 @@
(use-modules ((ellinika test-conjugation)))
(test-conjugation:verb "βλέπω")
-;(test-conjugation:tense "βλέπω" "pas" "sub" "Αόριστος")
+;(test-conjugation:tense "βλέπω" "pas" "imp" "Αόριστος")

Return to:

Send suggestions and report system problems to the System administrator.