04 REPLを作成し字句解析を行う [オリジナル言語インタプリタを作る]
REPLを作成し字句解析を行う 前回までで字句解析器の実装はひとまず完了となりました。ただ、ここまではエントリポイントとなる main() の実装を行っていません。 字句解析器を作成し、その動作をテストコードで確認しただけでした。なのでデフォルトのメイン関数の実装が残ったままで、おそらく実行すると “Hello World” が出力されるだけです。 今回は REPL を作成 […]
Web備忘録 プログラミングを中心に技術的な事柄を忘れないように書き残します。
REPLを作成し字句解析を行う 前回までで字句解析器の実装はひとまず完了となりました。ただ、ここまではエントリポイントとなる main() の実装を行っていません。 字句解析器を作成し、その動作をテストコードで確認しただけでした。なのでデフォルトのメイン関数の実装が残ったままで、おそらく実行すると “Hello World” が出力されるだけです。 今回は REPL を作成 […]
字句解析器の実装続き 続けて新たなテストを作成し、プログラムのソースコードに似た入力からトークン列を得られるようにしていきましょう。テストする入力データは以下の通り。 let five = 5; let ten = 10; let add = fn(x, y) { x + y; }; let result = add(five, ten); 早速テストコードを書きます。 LexerTest.cs […]
トークンと字句解析器の役割と実装 ここではトークンと字句解析器の実装を行います。 インタプリタがソースコードを実行するまでの流れ インタプリタはソースコードを入力として受け取り、それを実行します。コンパイラと違い実行形式のファイルを生成したりはせず、すぐにコードを実行します。 入力から実行までの大まかな流れは以下の通りです。 ソースコード(文字列)を入力として受け取る 字句解析によりトークン列を取 […]
オリジナルのプログラミング言語を開発してみる プログラミング言語を自分で開発するということは、プログラマなら一度は興味を持つことではないでしょうか。 興味を持ったが吉日ということで、よさげな書籍を参考にして、自分で1からプログラミング言語を開発してみます。 Go言語でつくるインタプリタ | Thorsten Ball, 設樂 洋爾 |本 | 通販 | Amazon 参考にするのは上記の書籍です。タ […]
Rust で Brainfuck Brainfuck – Wikipedia Brainfuck は、インタプリタのサイズが小さくなるように設計されたプログラミング言語です。実装するのがとてもお手軽な一方、Brainfuckで書かれたコードは非常に読みにくくなります。 Rust で Brainfuck のインタプリタを実装してみます。以前、C# で実装してみたことがあるのでそれをRus […]
Brainfuck とは Brainfuck – Wikipedia Brainfuck とは、難解プログラミング言語のひとつで、Brainfuckで書かれたソースコードは可読性が低く難解なものになります。 例えば "HelloWorld" と出力するためのソースコードは次のようになります。可読性・記述性が低く何をやっているのかわかりません。 ++++++++[&g […]