12

私は EBNF で文法を書こうとしています (本当に正当な理由がなければ、EBNF でなければなりません)。そのためのユーティリティをいくつか探しています。私が最も探しているのは、文法をチェックできるものです。たとえば、それが LALR( n ) であるかどうか、そうである場合はnの値は何かを確認できます。そのようなユーティリティは存在しますか? 他に知っておくべき便利な文法作成ツールはありますか (パーサー ジェネレーターは探していません)。

4

5 に答える 5

9

TinyPGを使用してください!RegExEBNFでパーサーを構築し、 C#/VBコードを記述して解析ツリーで何かを行う、軽量 GUI を備えた驚くべきオールインワンコンパイラ コンパイラです。

これは、私が以前に行った短い有益な要約であり、ダウンロードへのリンクも示しています。


TinyPG についての私の理解:

TinyPGを使用すると、以下を記述および開発できます。

組み込みの IDE、Windows のみ(C#.NET で作成、オープン ソース) があります。

組み込みのRegEx ツールを使用して、正規表現を試してプレビューすることができます。RegEx 構文は .NET でサポートされています。これは、出力されたパーサー コードでさえ.NET の正規表現を使用することを意味します。

EBNF を記述して、選択した言語を記述します(最新のプログラミング言語 (C、Java、JavaScript、C#、VB.NET、SQL-89)を記述した無料で入手できる BNF Grammer をいくつか紹介します)。

TinyPG を使用すると、RegExEBNFが解析ツリー を出力します(この図を参照)

解析木をどうするか?コンパイラ/インタプリタ/トランスレータ用にC#/VB コード を (TinyPG 内で、BNF 文法規則に従って) 記述します。(TinyPG 内で、提供されたサンプル内の「単純な式 2.tpg」ファイルを開いて、電卓「コンパイラ」のデモを表示します)

TinyPG を使用すると、TinyPG IDE 内でトークナイザー+ パーサー + コンパイラーをコンパイルおよびテストできます。最終的に、すぐに使用できるクラスを使用して C#.NET または VB.NET (任意)のパーサー ソース コードを出力します。

大衆向けの優れたオールインワン コンパイラ コンパイラ。楽しみ!

PS:これについて間違っている場合は修正してください。

于 2008-11-26T16:33:10.453 に答える
3

Steven Dee の提案をさらに一歩進めて、ANTLR 文法用の対話型 GUI 開発ツールであるANTLRWorksをチェックしてみてください。

于 2008-11-07T04:09:16.537 に答える
1

文法が特定のパーサーアルゴリズムを許可するかどうかを確認するには、それをパーサージェネレーターに入れるだけです。LALR(1)の場合、文法をYACCに渡して、競合が検出されるかどうかを確認します。

于 2008-11-05T08:04:34.347 に答える
1

CoCo/R C# がリストにありません。使い方は簡単で、非常に用途が広く、特に便利です。多種多様な言語用のコード ジェネレーターがあります。

C#、Java、C++、F#、VB.Net、Oberon、その他の言語用の Coco/R

[1] http://www.ssw.uni-linz.ac.at/Coco/

于 2011-04-01T19:02:57.227 に答える
0

ANTLRは、Java の GUI パーサー ジェネレーターであり、文法分析と因数分解のための広範な機能を備えています。FAQ を確認してください。あなたの求めるものをサポートしてくれるかもしれません。

于 2008-11-05T09:07:14.673 に答える