技術

2.8. 結論

LLVMによるプログラミング言語の実装チュートリアル日本語訳
第2章 万華鏡: 構文解析器とASTの実装
第8節 結論

コメント付きで400行弱のコード(コメント、空行無しだと240行程度)によって、字句解析器、構文解析器、AST構築のためのコードを含む、我々の小さな言語を完全に定義することが出来た。
これによって完成した実行ファイルによって、万華鏡のコードは検証され、もし文法的な間違いがあればその旨表示されるだろう。
以下は、操作のサンプルである。

$ ./a.out
ready> def foo(x y) x+foo(y, 4.0);
Parsed a function definition.
ready> def foo(x y) x+y y;
Parsed a function definition.
Parsed a top-level expr
ready> def foo(x y) x+y );
Parsed a function definition.
Error: unknown token when expecting an expression
ready> extern sin(a);
ready> Parsed an extern
ready> ^D
$

これには改良の余地がまだまだある。
新たなASTノードを定義したりして、いろんな方法で言語を拡張することが出来る。
次の章では、ASTからLLVM中間表現(LLVM IR)を生成する方法について説明する。

訳注: まだこの時点では一般的な意味におけるコンパイラになってない点に注意。
現時点では万華鏡のコードを解析し、ASTを構築するところまでである。

コメントを残す

メールアドレスが公開されることはありません。



※画像をクリックして別の画像を表示

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください