2009-01-01から1年間の記事一覧

字句解析#2

字句解析を続ける。ファイルから読み出した文字列に順番を加えてトークンとする。 (defvar MGH_vlt "^0C.\\\(............\\\)\\\(............\\\)\\\(............\\\)\\\(............\\\)\\\(............\\\)\\\(............\\\)\\\(........\\\).....…

整数ジェネレータ

さて、前回の字句解析#1では、与えられたファイルを字句解析して、トークンを切り出した。ここでいうトークンとは、文字列とファイルを読み出した順番の対である。今回は、後者の"ファイルを読み出した順序"を掘り下げてみよう。前回、このファイルを読み出…

字句解析#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…

パターンマッチ#1

文字列から正規表現を使ってパターンマッチをするには、string-matchを使う。 バッファを対象にパターンマッチは、re-search-forwardのようね。CIIフォーマットでは、データレコードで類似のパターンがあるので、 パターンマッチの照合順序を気をつけないと…

パターンマッチ#2

つづき。正規表現からパターンマッチした文字列を抜き出す時は、 substring とmatch-beginning とmatch-end を使う。 (defun to_s (o) (if (eq o EOF) "" (cond ((string-match MGH_vlt o) (symbol-name 'MGH_vlt)) ((string-match MGH_flt o) (format "%-10…

ファイル入出力

Emacs LispでCIIフォーマットをテキスト処理してみよう。以下、*scratch*バッファでC-j。EmacsはOSの提供するファイルに対してバッファを割り当てており、 実際にはバッファに対して操作することになる。 ファイルを開く=バッファを割り当てる (find-file "…

Emacs Lisp 事始め

会社支給の計算機は、当然Windowsで、業務に必要なソフトウェア以外インストールしてはいけない縛りがある。Windows+サイボウズ+Microsoft Officeという環境を強制されていると思いない。この環境は、ちょっとしたプログラムを書くには非常に貧弱でフラスト…

Hello, world!!

主にシステムエンジニアリングとプログラミングに関する内容の日記を書いていきたいと思っております。どうぞよろしく。