構文木を作成する最良の方法を知りたいのですが。
4 に答える
LLVMプロジェクトの抽象構文木(AST)について説明します。
ティーザー:
プログラムのASTは、コンパイラの後の段階(コード生成など)で簡単に解釈できるように、その動作をキャプチャします。基本的に、言語の構成ごとに1つのオブジェクトが必要であり、ASTは言語を厳密にモデル化する必要があります。
コンパイラとインタプリタの記述を学習するための標準のStackOverflowリソースは、コンパイラの記述を学習することです。
本当に他の言語と何ら変わりはありません。インタプリタ言語とコンパイル言語の違いは、フロントエンドではなく、主にバックエンドにあります。特定の言語には特定の構文解析要件がある場合がありますが、2つのクラスの言語間で構文解析テクノロジを有意義に比較することはできません。
パーサーの言語要件をリストしていないため、CまたはC ++の可能性がある場合は、まずyaccを確認する必要があります:http://en.wikipedia.org/wiki/Yacc
Yaccは、特定の構文のCパーサーを生成します。それを始めるのは少し余分な作業かもしれませんが、物事を立ち上げて転がすと、保守が簡単になるはずです。
免責事項:私は1つのプロジェクトでyaccを使用しただけで、それは10年以上前だったので、マイレージは異なる場合があります。