字句解析#1

文字列に番号を振って、番号と文字列の対のデータ構造をトークンとする。

(defun getToken-lexer (f)
  (cons (getOrder f) (seq-read f)))

(defun getOrder (f)
  (save-excursion
    (set-buffer f)
    (1+ (/ (point) 251))))

(defun tk_to_s (tk)
  (format "#%5s %s" (car tk) (to_s (cdr tk))))

(defun new-lexer (f)
  (find-file-noselect f))

(defun rewind-lexer (f)
  (seq-rewind f))


(setq l (new-lexer "~/test.cii"))
#<buffer test.cii>

(tk_to_s (getToken-lexer l))
"#    1 MGH_flt   : 333333333333->666666666666 EIAJ0502 8888 999"

(tk_to_s (getToken-lexer l))
"#    2 MGD_monoTR: 00001"

(rewind-lexer l)
1

(tk_to_s (getToken-lexer l))
"#    1 MGH_flt   : 333333333333->666666666666 EIAJ0502 8888 999"