vm2gol-v3
Conversation
Notices
-
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:08 JST sonota88 -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:49 JST sonota88 (なお C言語的に正しいかはよく分かってない)
-
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:49 JST sonota88 職人が真心込めてスクリプトで自動生成したダミー出力
-
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:49 JST sonota88 ☑ 空の main 関数のコード生成
-
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:49 JST sonota88 きりが良いところまで来たのでリファクタリング+クリンナップ
-
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:49 JST sonota88 v2 のC言語版を step 50 まで進めた
-
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:49 JST sonota88 -
nukosu@pao.moe's status on Wednesday, 03-Feb-2021 08:17:49 JST nukosu @sonota88 ????♂️ 「Copyright警察の者ですが...」
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:50 JST sonota88 コード生成の前にポインタまわり整理しといた方がいいかな……
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:50 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:50 JST sonota88 アドレスの演算も要するにただの数の計算で、その結果を使ってデリファレンスすればよい。……ということにすると例外ルールが減って分かりやすくなった気がする。
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:51 JST sonota88 5行追加して if文が書けるようになった。これはお買い得。
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:51 JST sonota88 空の main 関数 func main(){} の字句解析ができるようになったので次は空の main 関数の構文解析へ#進捗 #自作言語
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:51 JST sonota88 とりあえずダミー出力でテストを通す
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:51 JST sonota88 (1) 構文木のデータを組み立てて to json(2) 組み立てる処理を関数化
データはまだダミー
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:51 JST sonota88 assert 関数作って assert できるようにした。べんり。
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:51 JST sonota88 グローバル変数操作用の関数
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:51 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:52 JST sonota88 if文を使えるようにするには if を case when に変換するだけでよさそうと思いついた。どこでやるか → レキサでやるのが一番簡単そう。
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:52 JST sonota88 関数の途中での return ができないのと break がないのがちょっと辛い。途中 return があれば break の代用はできそうで、コールスタックを用意すれば途中 return できそうだけど、セルフホストの対象が増えてしまうのでちょっと悩みどころ。
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:53 JST sonota88 ????
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:53 JST sonota88 malloc という名前だと普通の立派な malloc を想起しそうので allocate という名前に変更
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:53 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:53 JST sonota88 関数の存在チェックに加えて引数の数が間違ってないか調べるくんになった
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:54 JST sonota88 JSON(のサブセット)のパース編完了
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:54 JST sonota88 -, &&, || の代わり ????
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:55 JST sonota88 ☑ 組み込み関数追加: get_spが抜けてた
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:55 JST sonota88 ☑ [[]], [1,"a",[2,"b"],3,"c"] をアンパースして JSON にするテストが通るようになった
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:55 JST sonota88 うーむ、ちゃんと動いててえらい
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:55 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:55 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:55 JST sonota88 ☑ 標準入力を全部読んで配列に詰める read_stdin_all☑ strlen, substring, parse_int, その他下請けの関数いろりろ☑ デバッグ用: panic, p_char, p_int☑ [1,"a",[2,"b"],3,"c"] をパースするテストが通った#進捗 #自作言語
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:56 JST sonota88 グローバルな定数はプリプロセッサ作って置換したりしないとだめかなあと考えてたけど、関数にしてしまえばよいと思いついた。関数はどこからでも使える。
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:56 JST sonota88 グローバル定数はこれでよいので、プリプロセッサでは #include 相当の処理だけやれば良さそう
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:56 JST sonota88 print 関数作った
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:56 JST sonota88 strcpy も作った
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:56 JST sonota88 ☑ グローバル定数を関数として書くようにした☑ _debug(); の箇所からステップ実行開始☑ print 関数作った☑ strcpy 関数作った☑ ["fdsa"] をアンパースして JSON にするテストが通るようになった#進捗 #自作言語
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:56 JST sonota88 ☑ レジスタ追加: sf☑ VM命令追加: jump_g, div_ab☑ 二項演算子追加: <, /, %☑ 組み込み関数追加: _panic☑ ヒープとスタックの衝突検出☑ 整数を文字にして出力する print_int 関数☑ [-123, "fdsa"] をアンパースして JSON にするテストが通るようになった#進捗 #自作言語
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:57 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:57 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:57 JST sonota88 &a や 1 + 2 のような式を関数呼び出しの引数として書けるようにした。これでいちいち var g_ = &g; call f(g_); みたいに分けて書かなくてよくなった。
f(g()) みたいな入れ子の関数呼び出しはまだダメ。
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:57 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:58 JST sonota88 心の目で見ると構造体に見えるかもしれない何か
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:58 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:59 JST sonota88 あー、そっか、デリファレンスも二項演算子扱いにすればよい、なるほど(cbc を参考にしながら)
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:17:59 JST sonota88 ひいこら言いながらポインタまわりリファクタリングしてとりあえずテストはまた全部通るようになった
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:00 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:00 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:00 JST sonota88 最適化なしでどうなるか見たいので gcc じゃなくて cbc を使ってみる?
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:01 JST sonota88 cat コマンドのテストも書いた
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:01 JST sonota88 あー……配列とポインタを統一的に扱えるかと思ったけどダメ ???? C だと暗黙的になってるとこをどう処理するか
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:01 JST sonota88 (A) 型を導入(B) ^(a) じゃなくて明示的に ^(&a) と書く
なるべく見えにくいルールを減らしたい(冗長でもよい)ので (B) かなー?
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:01 JST sonota88 (C) 変数名を見て型を判断(D) 配列の場合は宣言時に自動的にポインタを生成
とかも思いついたけど最初はC言語から離れすぎない方が無難そうなのでいったんボツ。(C) は要するに型だから (A) のバリエーションかな。
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:01 JST sonota88 ☑ 関数にポインタを渡せるようになった
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:02 JST sonota88 ^r, ^dr にすると…… ref, deref の場合と同様に統一感・対称性は出るけど視認性が微妙かなあ
var a = 11;var b_;set b_ = ^r(a);set ^dr(b_) = 22;
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:02 JST sonota88 とりあえず括弧は必須にしとこ
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:02 JST sonota88 putc があれば出力を検証するテストも書けるじゃんね
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:02 JST sonota88 ☑ ポインタ演算で配列に代入(C の *(xs + ...) = ... と同じ)
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:02 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:04 JST sonota88 ☑ アドレス演算子 &☑ デリファレンス演算子 ^
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:04 JST sonota88 演算子じゃなくて関数っぽくするのもあり……?(当然書きにくいけど)
var a = 11;var b_;set b_ = ref(a);set deref(b_) = 22;
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:04 JST sonota88 記号+括弧必須。これでもいいかも(今回はパースはがんばらないことにする)
var a = 11;var b_;set b_ = &(a);set ^(b_) = 22;
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:05 JST sonota88 標準入力から1文字ずつ読んで配列に詰められるようになった
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:05 JST sonota88 あ、そうか、 putc 作ったから printデバッグできるやん
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:06 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:06 JST sonota88 先にポインタやった方が良かったかも
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:18:06 JST sonota88 In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:25:37 JST sonota88 @nukosu 何でしょうか
In conversation permalink -
nukosu@pao.moe's status on Wednesday, 03-Feb-2021 08:25:37 JST nukosu @sonota88 SIer Copyrightネタの取っ掛かりでマジレスが返ってくるとは思いませんで(´・ω・) スタ...(´・ω・) スミマセン
In conversation permalink -
nukosu@pao.moe's status on Wednesday, 03-Feb-2021 08:39:12 JST nukosu @sonota88 (*´・ω・) 人(・ω・`*)
In conversation permalink -
sonota88@qiitadon.com's status on Wednesday, 03-Feb-2021 08:39:13 JST sonota88 @nukosu あっ・・・スミマセン????ひょっとしてまずいことしてたかなと思ってマジレスしてしまいした(私が悪い)
In conversation permalink
-