hokuishi.be

2023/03/11

数値型はややこゎしい

やったこと

  • でかけた
  • タイガーブック 5 章の実装を始めた

タイガーブックの 5 章を読み終わって、実装に取りかかった。 昨日、一昨日で読んでいたハッシュ表と記号表を合わせた方法の意味がようやく分かった。 そもそも AST の生成の段階で、変数やユーザ定義型、関数は文字列から symbol=string*int へ変換されてるから意味解析でハッシュ表は考えなくていい。 同じファイルにハッシュ表と記号表が書いてあり、意味解析の章でハッシュ表の説明があったから勘違いしてた。 記号表は型と変数&関数で別のものがあるから名前は衝突せず文字列と整数などの型の違いも Types.ty 型で丸めて吸収する。 また、それぞれの記号表は破壊的な変更をせず値として新しい表を返すだけだから、こちらが正しい場所で正しい表を渡すだけ。 例えば関数の仮引数の変数を追加した記号表は関数のボディの処理の時に使って、関数の処理が終わったところでは、それ以前の記号表を渡す。 今のところ、こんな感じの理解でいる。 実装していきながら、理解を確かめて深めていけると良い。
タイガーブックで実装する tiger 言語だと標準の型は int と string だから実数などを無視できて、加算演算子のオーバーロードや暗黙の型変換をしなくていいらしい。 ただ実用的な言語を作るならここがだいぶ面倒そう。
(参考:https://zenn.dev/mod_poppo/articles/numerics-for-new-language)

思ったこと

誕生日に dai-chan からもらったスタバのチケットの期限が近かったので使った。 700 円分のチケットだったから一番大きいサイズを注文したが、ベンティ (Venti) というらしい。 なんだそれ、調べたらイタリア語で「20」という意味らしい。 なんだそれ。

今日の英会話

https://eikaiwa.dmm.com/app/daily-news/article/european-space-agency-pushes-for-moon-time-zone/H6--7LxDEe23rZcVv6442A

月でのタイムゾーンを設定するアイデアがある話。 最後の一文を理解するのが時間かかった。