近況 2018-12-31

今月の進捗など

hsp3-debug-ginger

https://github.com/vain0x/hsp3-ginger/tree/main/hsp3-debug-ginger

  • 前月からやっている、VSCode 対応の HSP デバッガーを作るプロジェクト
  • 前回の近況では進捗を書き忘れていた
  • 最小限の機能が揃った
    • グローバル変数を基本型の1次元配列まで表示できる
    • assert とかで止まったときに実行中の行がエディター上で強調表示される
    • VSCode の一時停止ボタンやステップインボタンで実行の制御ができる
  • アルファ版のプレリリースを出した
  • 課題はたくさんある
    • インストール手順が煩雑すぎる
    • 挙動がおかしい
      • 実行中の行にスクロールしてくれない
    • 基本的な機能の不足
      • logmes
      • 2次元以上の配列の表示

milone-lang

https://github.com/vain0x/milone-lang

  • セルフホストを目指している F# サブセットのコンパイラ
  • リファクタリング、エラーハンドリングの強化、パーサーの微修正などの細かい作業をした
  • README にプロジェクトの進捗状況やコンパイル手順などを書いた
  • パターンマッチを強化した
  • when パターンは、パターンに合致した後に追加の if 文を足せばいい
  • as パターンは、パターンに合致するかの判定の前に変数への代入を行えばいい
  • or パターンの一部
    • パターンを選言標準形的なものにするとやりやすい
    • 例えばパターン Foo (A | B) :: _Foo A :: _ | Foo B :: _ にする
    • つまり | が一番外側に来るようにする
    • | の左右のパターンについてそれぞれ合致するか試して、どっちかに合致したら -> の内側に goto する
    • いまのところ or を含むパターンでは変数を束縛できない

curage-lang

https://github.com/vain0x/curage-lang

  • Language Server Protocol (LSP) の練習用のプロジェクトを始めた
  • LSP は Debugger Adapter Protocol と似てるけど、より複雑で難しい
  • 既存のパーサーを使うのはめんどくさいので処理系を一から書いていて、いちおう自作言語という扱い
  • クラゲ言語
  • Rust 風の構文 (予定)
  • 単純な型システム (予定)
  • インタプリタ上での実行 (予定)
  • いまのところ構文エラーを VSCode 上に警告として表示するやつ (textDocument/publishDiagnostics) だけできている
  • Node (TypeScript) 用に LSP の実装の基盤となるフレームワーク的なものがある
    • vscode-languageserver
    • 何をやっているのかよく分からないので使っていない

競技プログラミング

ウェブアプリ開発

  • UI を作り込んだ
  • on-the-fly で描画するには複雑なグラフを SVG 画像として生成するスクリプトを書いた
    • Fabric.js でラップされた Canvas API を使って図形を描画して、SVG にエクスポートして、ローカルサーバーに送信して、ファイルに保存する、という遠回り。1回動いたら十分なのでよし

Qiita

Trickle

ガルパ (リズムゲーム)

  • 難度26の精度は確実に上がってきている
  • 難度27以上については、マジックアワーをフルコンボした以外に進歩がない
  • アニメの 1st season 良かった

関連記事