パーサーをつくること(2)

http://www.oki-osk.jp/esc/go3.html
http://www.prefield.com/algorithm/string/parser.html

再帰下降型構文解析が簡単らしいという情報を手に入れた。

ここで、LL(1)とか文脈自由文法とかがキーワードとして出てきて、あぁ、オートマトンの教科書を読まなければならない、と感じる。今晩は明日に差し迫った課題があるので深追いはしないことにした。

ロジックの例はここにあった。
http://www.cs.info.mie-u.ac.jp/~toshi/lectures/compiler/parsing.html

作りたいものの仕様を振り返る

さて、今回作りたいものはどの程度、"プログラミング言語"っぽいのだろう?おそらくそこまで本格的な知識は必要ないはずだ。

  • Apple-I Operation Manualによると、モニタプログラムには15種類のコマンドがある。
  • メモリは0024~002B, 0200~027F, FF00~FFFFが予約されていて、それ以外には自由に読み書きできるようだ(多分)。
  • 各番地にはHex2桁=8bitの値が保持される。
  • 次のトークンの先読みは必要ない。コマンドの最初に来るのは, {前回のポインタのupdateを意味するHex || . || : }のみ。
  • トークンにあたるものは、
    • 00~FFのHex2桁の値 (これ単体だとアドレスを表示, :の右に使われると値として見られる)
    • . (範囲指定, A0.A3 でA0,A1,A2,A3を表示)
    • : (データ保存 A0:FF でA0番地にFFを保存)
    • b (マニュアル上表記はbだが実際は空白文字を意味する。連続表示したり、連続配置したりする)

.と:は左のオペランド省略で前回指示したポインタの一つ次を指して処理を行う。

これ、手元にマニュアル無いと全然意味不明ですね。ちなみに手元のスキャンには、誤植が残ってたりする。

とりあえずそんなことをアタマに入れて、明日の合宿を受けて、また報告します。