2026年の目標

2025年は2024年からあまり生活状況が変わらなかったので、特に目標も変わらず書くこともなく、目標を記事にはしませんでした。しかし今年2026年は大きく生活状況が変わるため、頭の整理も兼ねて目標記事を書くことにします。

Ajisai コンパイラ育成日誌 第4日 構文解析

(今回のコード: day001-010/day004

前回は字句解析器(の原型)を作りました。今回は構文解析以降のステップを作っていこうと思います。

その前に、コードの見通しが悪くなっていきそうなので、ファイル分割をすることにします。分割後のディレクトリ構成は以下の通りです(parser ディレクトリ以下の定義は parser/mod.ts で export しています):

Ajisai コンパイラ育成日誌 第3日 字句解析

(今回のコード: day001-010/day003

前回はファイルからソースコードを読めるようにしたのでした。ただ、普通のコンパイラがやるような解析や変換はまだ何も行なっていません。そこで、今回は字句解析器を作っていきます。

とりあえず字句(トークン)の型を考えてみます:

type Span = {
  srcPath: string;
  srcContent: string;
  start: number;
  end: number;
};

type OpToken = {
  tag: "+" | "-" | "*" | "/" | "%";
};
type ParenToken = {
  tag: "(" | ")";
};
type IntToken = {
  tag: "integer";
  value: string;
};
type Token = (IntToken | OpToken | ParenToken) & { span: Span };

Span 型は、後でエラー表示をするときに、エラーが起きた箇所のソースコード中の位置を表示できるように、関係する情報をまとめた型です。各種トークンが共通して持っているフィールド span に格納されます。

Ajisai コンパイラ育成日誌 第2日

前回は、以下のC言語のソースコードをファイルに書き出して、それをコンパイルするだけのプログラムを書きました:

// C 言語のソースコード
const cSource = `#include <stdio.h>

int main() {
  printf("%d\\n", 42);
  return 0;
}
`;

まだ Ajisai 言語がどんな言語仕様なのかといった議論は何もしておらず、無から定型の実行ファイルが生成されるだけの、全く自由のないコンパイラ(?)です。ここで、とりあえず整数値の 42 の部分だけを抜き出して、Ajisai 言語のソースコードと言い張ってみましょう:

Ajisai コンパイラ育成日誌 第1日

ご無沙汰しておりました。気づけば 2025 年も半分以上が過ぎてしまいました。2025 年の目標記事は出さずじまいになってしまいましたが、2024 年の目標をそのまま引き継いでいる感じなので、結局のところ特に書くべきことはなかったと思います……。

Trickle を使い始めてから4年が経過しました

2026/03/19更新: Trickleは2026年2月末にサービスを終了しました。一利用者として長い間お世話になりました。ありがとうございました。


Trickle」というサービスを使い始めてから4年が過ぎました。このサービスは、自分の理解では以下の2つの機能を併せ持つサービスに見えます: