9

自分の言語を作成しようとしている場合、私を助けるツールはありますか?yaccのことを聞いたことがありますが、必要な機能をその言語でどのように実装するのか疑問に思っています。

4

5 に答える 5

11

密接に関連する質問(すべて[compiler]stackoverflowで検索して取得):

同様のトピック (同じ検索から):


編集: stackoverflow 関連の質問検索は、私たちが望んでいたものではないことはわかっていますが、このトピックの n 回目の繰り返しが本当に必要でしたか? うーん!

于 2008-12-13T20:02:09.093 に答える
10

最初にお勧めするツールは Dragon Book です。これは、コンパイラをビルドするためのリファレンスです。言語の設計は簡単な作業ではなく、実装はさらに困難です。そこで役立つのがドラゴンブック。この本は、標準的な UNIX ツールである lex と yacc についても言及しています。gnu に相当するツールは、flex および bison と呼ばれます。どちらもレクサーとパーサーを生成します。lexer と parser を生成するための最新のツールもあります。たとえば、Java には ANTLR があります (javacc と CUP も覚えていますが、私は ANTLR しか使用しませんでした)。ANTLR はパーサーとレクサーを組み合わせており、Eclipse プラグインが利用できるため、非常に快適に使用できます。しかし、それらを比較して、必要なパーサーのタイプを知り、必要なものを知るには、Dragon book を読む必要があります。ランタイム環境、プログラミング パラダイムなど、他にも考慮しなければならないことがあります。

すでに特定の設計アイデアがあり、特定のステップまたは詳細についてサポートが必要な場合は、アンサーがより役立つ可能性があります.

于 2008-12-13T19:49:36.230 に答える
4

ANTLR は、Java で書かれた非常に優れたパーサー ジェネレーターです。素晴らしい本もあります。

于 2008-12-13T19:40:03.880 に答える
2

Flex (Fast Lex) [字句スキャナ]
と Bison (A Hairy Yacc) [さらに別のコンパイラ コンパイラ]が好きです。

どちらも無料で、すべての *NIX インストールで利用できます。Windows の場合は、cygwin をインストールするだけです。
しかし、私は古い学校です。

これらのツールを使用することで、インターネット上の多くの一般的な言語の lex ルールと yacc gramer を見つけることもできます。このように、起動して実行するための迅速な方法を提供し、その後、グラマーをカスタマイズできます。

例: 算術式の処理 [優先順位などは致命的な問題です] Web からこの文法をすばやく取得できます。

考えるべき代替案は、GCC のフロントエンド拡張を作成することです。
些細なことではありませんが、コンパイルされた言語が必要な場合は、コード生成セクションで多くの作業を節約できます (それでも、愛を知り、flex/bison を理解する必要があります)。

于 2008-12-13T20:02:43.037 に答える