星にゃーんのブログ

ほとんど無害。

コンパイラ

プログラミング言語の日記01:関数適用の構文解析

日記をつけてみようと思います。今日は一回目。続くかな?続かない気がする。 一発書きです。技術的な正確性は大目に見てください。間違いを見つけたらコメントで補足などしてもらえると助かります。 再帰下降構文解析で、以下のような関数適用をうまくパー…

地味なバグと誰かの囁き声

最近(ここ数年?)malgoというプログラミング言語を作ってる。 今日、地味なバグを見つけた。厳密にはバグじゃない気もするんだけど、ユーザーの直感に反するような挙動をする。 例えば、Eitherを定義するとする。 data Either a b = Left a | Right b; す…

自作プログラミング言語Malgoがかなりそれっぽくなってきた

プログラミング言語Malgo 2017ごろから、自作のプログラミング言語Malgoとそのコンパイラを作っている。 2018年の2月に、このことをブログに書いた。 あれから三年経ち、色々とできることが増えた…かというと、そうでもない。 しかし、言語設計はかなり変わ…

世の中間言語を集める

個人的なプロジェクトとして、コンパイラの中間言語の設計に取り組んでいる。 今できてるのはラムダ計算に毛が生えてコード生成に向いてるセマンティクスを持つみたいなやつで、『星を継ぐもの』に登場するコリエルというキャラクターから名前をもらってkori…

セキュリティ・キャンプ全国大会2019でCコンパイラ書きました

はじめに 2019年8月13日から5日間開催されたセキュリティ・キャンプ全国大会2019のCコンパイラ自作ゼミに参加しました。 この記事は、応募から修了までのレポートです。 ほとんど下書き状態ですが、ここから文章が改善される気がしないのでこのまま公開しま…

プログラミング言語をつくっている

去年の夏頃からプログラミング言語を作っています。 こんな感じのソースコードから let extern print_int : Int -> Unit = "print_int" extern newline : Unit -> Unit = "newline" fun fib(n : Int) : Int = if n <= 1 then 1 else fib(n - 1) + fib(n - 2)…

「最新コンパイラ構成技法」でハマったところのツイまとめ 5/3

SML/NJで最新コンパイラ構成技法のソース読み込んだら(CMで)、"unbound structure: TextIO in path TextIO.instrem"とか言われて詰んだ— こうの (@takoeight0821) 2017年5月3日 sources.cmに$/basis.cmを追加したらうまくいった(あと、smlnj-lib.cmも$/smlnj…