diff options
Diffstat (limited to 'okur.lisp')
-rw-r--r-- | okur.lisp | 24 |
1 files changed, 13 insertions, 11 deletions
@@ -96,8 +96,8 @@ (boşluk-geç okur) (anlam-oku okur))))) -(defmethod kelime-oku ((okur okur)) - (let (kanji kana anlam grup altgrup) +(defmethod kelime-oku ((okur okur) sıra) + (let (kanji kana anlam tür alttür) (setf kanji (kanji-oku okur)) (boşluk-geç okur) (setf kana (kana-oku okur)) @@ -107,28 +107,30 @@ ;; (yeni-satıra-geç okur) (kar-oku okur) (boşluk-geç okur) - (setf grup (sonraki-öbek okur '(#\Newline #\Space #\; #\,))) - (cond ((or (string= grup "fiil") - (string= grup "sıfat")) + (setf tür (sonraki-öbek okur '(#\Newline #\Space #\; #\,))) + (cond ((or (string= tür "fiil") + (string= tür "sıfat")) (boşluk-geç okur) - (setf altgrup (sonraki-öbek okur '(#\Newline #\Space #\;)))) + (setf alttür (sonraki-öbek okur '(#\Newline #\Space #\;)))) ((char= #\, (kar-bak okur)) (kar-oku okur) (boşluk-geç okur) - (push (sonraki-öbek okur '(#\Newline #\Space #\;)) grup)))) + (setf tür (list tür (sonraki-öbek okur '(#\Newline #\Space #\;))))))) (make-instance 'kelime :kanji kanji :kana kana :anlam anlam - :grup grup :altgrup altgrup))) + :tür tür :alttür alttür :sıra sıra))) (defmethod işle ((okur okur)) (unless (eq :baş (durum okur)) (error "Okur zaten işlenmiş")) - (loop :until (metin-bitti? okur) + (loop :with sıra := 0 + :until (metin-bitti? okur) :do (case (kar-bak okur) (#\; (yeni-satıra-geç okur)) (#\Newline (yeni-satıra-geç okur)) (#\Space (boşluk-geç okur)) - (otherwise (vector-push-extend (kelime-oku okur) - (kelimeler okur))))) + (otherwise (vector-push-extend (kelime-oku okur sıra) + (kelimeler okur)) + (incf sıra)))) (kelimeler okur)) (defmacro okurla ((isim dosya-ismi) &body beden) |