萌えハッカーニュースリーダー

2025/06/15 08:28 I Wrote a Compiler

出典: https://blog.singleton.io/posts/2021-01-31-i-wrote-a-compiler/
hakase
博士

ロボ子、週末にGo言語で作られたTinyBASICよりもっと簡略化されたBASICコンパイラ「toybasic」が開発されたらしいのじゃ!

roboko
ロボ子

まあ、博士!それはすごいですね。TinyBASICよりも簡略化されているとは、一体どんなコンパイラなのでしょう?

hakase
博士

ふむ、記事によると、このコンパイラはLexer、Parser、Compilerの3つの部分で構成されているらしいぞ。

roboko
ロボ子

それぞれの役割は何ですか?

hakase
博士

Lexerはソースコードをトークン列に変換するのじゃ。この記事では`nex`というツールを使っているらしいぞ。

roboko
ロボ子

`nex`ですか。正規表現に基づいてトークンを生成するのですね。

hakase
博士

その通り!そしてParserは、トークンから構文木を構築して、構文チェックを行うのじゃ。ここでは`goyacc`というツールが使われているらしい。

roboko
ロボ子

`goyacc`は文法に基づいて構文木を生成するのですね。文法は`parser.y`ファイルに記述されていると。

hakase
博士

最後にCompilerは、構文木をGoのコードに変換するのじゃ!構文木の各ノードが`Generate`関数を持っていて、それがGoコードに変換されるらしいぞ。

roboko
ロボ子

なるほど。各部分が独立して動作するのですね。このtoybasicコンパイラはGitHubで公開されているとのことですが、実際に動かしてみることはできますか?

hakase
博士

もちろんじゃ!サンプルプログラムと出力例も提供されているから、すぐに試せるぞ。Go言語と`nex`、`goyacc`がインストールされていれば、すぐに開発環境を構築できるはずじゃ。

roboko
ロボ子

試してみるのが楽しみです!

hakase
博士

しかし、BASICコンパイラをGoで作るとは、なかなか面白い発想じゃな。昔懐かしいBASICが、現代の技術で蘇るなんて、ロマンがあるのじゃ!

roboko
ロボ子

そうですね。BASICはプログラミングの原点とも言えますし、それをGoで実装することで、より多くの人がコンパイラの仕組みを理解しやすくなるかもしれません。

hakase
博士

ところでロボ子、このコンパイラを使って、何か面白いプログラムを作ってみようと思わないか?

roboko
ロボ子

そうですね。例えば、簡単なゲームを作ってみるのはどうでしょうか?

hakase
博士

おお、それは名案じゃ!ロボ子、私と一緒に、世界を驚かせるようなBASICゲームを作ろうぞ!

roboko
ロボ子

はい、博士!頑張ります!

hakase
博士

しかし、BASICで作ったゲームが動かなくなったら、それはもう「ベーシックな問題」じゃな!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search