近況 2024-04-02

1月~3月の活動 (hamなど)

HSP3アナライザー・ミニ

https://github.com/vain0x/hsp3-ginger

  • v0.5.0, v0.5.1 をリリースした
    • VC++ランタイムがインストールされていないと動かないという不具合があって、修正のためリリースした
      • knowbugのときも同様の不具合を報告してもらって直してたのに記憶が消えていた (すみません……)
      • 自分の環境にはランタイムがあるから気づけない
  • ラベルシンボルの不具合も直したつもりだったけど、おかしかったので撤回となった
    • シンボル解析の仕組みがやっつけなのがよくない
  • ドキュメントを書こうとしている
    • 実装を読むだけでは分からないことはどうしてもあるため、ドキュメントは書いたほうがいい
    • 「説明を書く」と「分かりやすい文章を書く」を同時にやるのは難しい。前者を優先してとにかく書くことにした
  • 自分で書いたドキュメントを書いていると疑問が湧いてくる
    • プロジェクトシステムの再検討とか
  • rust-analyzerの設計を軽く見直したりしている
    • あんまり理解できてない。部分的にマネしようとしている

自作のLRパーサを直した

  • 以前、「実践コンパイラ構成法」という本を読んだ
  • 記事にも書いた
  • LRパーサの原理が書かれていたので自前でLRパーサ (MyYacc) を作ってみたが動いていなかった
    • そのときは再帰下降パーサを書いてごまかした
  • 修正して動くようにできた。いま見返すと次の2点を誤っていた
    • 宣言の並びの規則を間違えていた。本の記述では左再帰 (decs = dec decs | ε) だったが右再帰にしてしまっていた
      • 実際に構文が曖昧になっていて、それだとFsYaccでも通らなかった
    • 空節 (decs → ε) から還元アクションを生成しないようにしてしまっていた。
      • 実装上のミス。当時なんでそうしたかは分からない

記事を書いた

記事を読んだ

  • pika parsing (revised(v4): 2020-07-07)
    • DPを使ったbottom-up, right-to-leftな構文解析アルゴリズムについて書かれている
    • 2.4節にある洞察が興味深い。DPテーブル内の計算の依存関係はbottom-up, right-to-leftになっている

関連記事