1バイトずつ読み書きする cat コマンドを書くところまでやっと辿りついた。#forth
stdin の場合は fd-in を用意しなくてもbuf 1 stdin read-file でよさそう。これで2行減る。
Hello, world!
コメント残しておかないと何やってるか分からなくなって厳しい……慣れるのかなこれ。
ワードで細かく抽象化せよ、ワードの中はがんばって読め、という感じなのかな。
がんばるの大変そうなので(慣れるまでは?)コメント残す方向で進めた方がいいのかな。
次はデータ構造(リスト)
[] と [1] が作れるようになった
コメント書かないと何もわからない
["fdsa"] が作れるようになった
[123, "fdsa"] が作れるようになった
[[]] が作れるようになった。
作れるようになったというか、作って JSON にシリアライズするところまで。入れ子なので再帰が必要で、ワードの定義に recursive を追加するだけで OK。
https://gforth.org/manual/Recursion-Tutorial.html
[1,"a",[2,"b"],3,"c"] が作れるようになった
["漢字"] もテスト通った。これでデータ構造整備+JSONシリアライズ編が終わり。次はJSONパース編。
前に書いた cat コマンドを流用して標準入力から1文字ずつ読む。
読んだ文字を1文字ずつメモリに書き込み
[] がパースできるようになった
あ、dup が1個余計になってますわ
[1] がパースできるようになった
整数を表示するときに余計なスペースが付かないようにするためにこれを使う必要がある……?
Formatted numeric output (Gforth Manual)https://gforth.org/manual/Formatted-numeric-output.html
[-123] がパースできるようになった
https://github.com/sonota88/mini-ruccola-forth/commit/e8543e545de293a923b06a8300befd965e8d334e
様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。
stdin の場合は fd-in を用意しなくても
buf 1 stdin read-file
でよさそう。これで2行減る。