kenju's blog

About Programming, Mathematics, Security and Blockchain

TypeScriptでNumbers->SVGのコンパイラを書いた

少し前の話だけど、@kosamariさんのコンパイラになる※方法 — JavaScriptでコンパイラを作る - Qiitaという記事を読んでインスピレーションを受けたので、全く同じ仕様をTypeScriptで書き換えてみた。

github.com

本家との違いは、

  • TDDで開発した
    • 入力値/出力値が明確だったので、テストコードを先に書いたほうが開発しやすいと判断
  • TypeScriptで開発した
    • 本家のコードは軽く読んだけど、実際書く時はあまり参考にせず、フルスクラッチで書いた

ファイル構成は本家と全く同じ。

src
├── __tests__
│   ├── compiler.test.ts
│   ├── generator.test.ts
│   ├── lexer.test.ts
│   ├── parser.test.ts
│   └── transformer.test.ts
├── compiler.ts
├── generator.ts
├── lexer.ts
├── parser.ts
└── transformer.ts

1 directory, 10 files

NumbersとSVG自体の仕様は非常にシンプルなので、コンパイラの材料として適していると感じた。

コンパイラについて本を読んだけどいまいち分かっていない、そんな人は@kosamariさんの記事を参考に自分の好きな言語で実装してみるといいと思う。すごくオススメ。