問題タブ [compiler-compiler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1228 参照

regex - TinyPG で BNF の既存の言語を使用しますか?

GOLD メタ構文(RegExp + BNF) にあるこれらの BNF 文法をTinyPG で使用するにはどうすればよいですか? 私は BNF を初めて使用するので、BNF を EBNF に変換するには、どのような種類の変換を行う必要がありますか?

RegExp + BNFである GOLD 文法と比較して、TinyPG は RegExp + EBNFを必要とするため、かなり単純なはずだと思います。

また、利用可能な言語の TinyPG ソース コードはありますか?

0 投票する
1 に答える
2386 参照

c# - TinyPG とは何ですか? また、どのように機能しますか?

TinyPG とは何ですか? また、どのように機能しますか? 「コンパイラ-コンパイラ」であることは知っていますが、C# で独自のコンパイラを作成するにはどうすればよいですか?

0 投票する
1 に答える
741 参照

php - この文法はLR(1)ではありませんか?

私はPHP用のパーサジェネレータに取り組んでいます。現在、正規LR(1)パーサーを実装しようとしていますが、次の文法でreduce-reduce競合が出力されます。この文法はLR(1)ではありませんか?または、アルゴリズムを再確認する必要がありますか?

バイソン(のような)表記の文法:

編集:

計算されたテーブル:

と競合:

0 投票する
5 に答える
2333 参照

c# - What is the fastest parser generator tool for C# output?

I am looking for a parser generator tool which gives C# output and fairly fast. My objective is to parse JSON like text and create CLR object out of it. I used GOLD Parser engine for this but it turned out to be slow for my need. Can anyone please suggest me a good and fast parser generator tool which emits C# code? I heard about Irony and ANTLR but don't have experience with them. Do they generate considerably faster parser or is there any better options?

0 投票する
1 に答える
343 参照

javascript - 1 つの LALR(1) 解析に関するヘルプが必要

Context Free Artと呼ばれる文脈自由言語を解析しようとしています。YACC のような JS LALR(1) パーサー ジェネレーターJSCCを使用して、Javascript でパーサーを作成しました。

次の CFA (Context Free Art) コードの例を見てみましょう。このコードは有効な CFA です。

A上記のとに注意してくださいssをスケーリングするコマンドですがCIRCLEAこのルールの名前にすぎません。言語の文法では、トークンとして設定sし、トークンの下にSCALEあります(文字列に一致する正規表現があり、すべてのトークンの一番下にあります)。ASTRING

これは問題なく動作しますが、以下の場合は壊れます。

これも完全に有効なコードですが、私のパーサーはs後にruleas SCALEtoken をマークするため、期待していたと言ってエラーになりますSTRING

私の質問は、これを説明するためにパーサーのプロダクション ルールを書き直す方法があるかどうかです。関連する生産規則は次のとおりです。

私が考えることができる簡単な解決策の 1 つは、上記のルールのコピーを でSTRING置き換えて作成することSCALEですが、これは、そのような修正が必要な多くの同様のルールの 1 つにすぎません。さらに他にもマッチング可能な端末はたくさんありますSTRING。つまり、ルールが多すぎるということです。

0 投票する
0 に答える
126 参照

java - Java の変数キーワードと演算子をサポートするパーサー ジェネレーター (コンパイラー コンパイラー)?

さまざまなキーワードと演算子をサポートするパーサー ジェネレーター (コンパイラー コンパイラー) はありますか?

私の言語には、カスタマイズ可能なキーワードと演算子があります (複数の記号と文字を含めることができます)。以前は、特殊記号を演算子とキーワードにマッピングしてから JFlex を使用することで、この問題を回避していました。現在、構文の強調表示の問題が発生したため (そのために RSyntaxPane を使用しています)、これは単純に機能しません。

編集:ところで、レクサー部分だけが必要です。

また、いくつかの例:

ロシア語のレイアウトでは、中かっこがありません。ロシア語訳では:

キーワードはローカライズすることもできます。たとえば、"function" はロシア語訳では "функция" です。

0 投票する
3 に答える
815 参照

java - 文法コンパイラ Java 用コンパイラ

私の会社は、Android 用のソフトウェアを作成しようとしています。私たちは Java を使用したいと考えており、会社のソフトウェアには C++ のコンポーネントがあり、移植する必要があります (または、少なくとも NDK を試す前に移植を試みる必要があります)。このコードはAccentを使用して作成され、文法文法を定義します。私が知る限り、元の作家 (現在は亡くなっています) は、文法を指定する方法を指定する文法を書き、その文法とアクセントを使用してコンパイラー コンパイラーをコンパイルしました。コンパイラ-コンパイラは、指定された形式の文法を取得し、バイナリ コードを生成して、その文法に準拠した文字列を解析します。文法のスニペットの例を次に示します。

私の質問は、Antlr またはその他のツールを使用して、Java でこれを行う方法です。コンパイラ-コンパイラ-コンパイラは、私にはかなり複雑に思えます。または、文法的およびセマンティックな XML 情報を含むこのタイプの文法を簡単にコンパイル/解析する方法を知りたいです。

0 投票する
1 に答える
744 参照

parser-generator - どのパーサジェネレータソフトウェアがC#で実行され、左再帰で言語を解析し、抽象構文木を生成できますか?

私は午前中、ANTLRの基本を理解して、それがLLだけであることを確認しました。構文木が左から右への結合性を持つように、文法で左再帰を維持する必要があります。

編集2: 最近、私は別のパーサジェネレータを必要としていました。MPLexとMPPGは機能していましたが、構成に多少時間がかかったので、もう一度見てみようと思いました。今回、Hime Parser Generatorに出くわしました。1、2時間で、基本的な式をコンパイルして呼び出すことができるLINQ式に変換するパーサーができました。それはばかげたシンプルで、MPLexやMPPGよりもお勧めします。

編集1: GOLDパーサーは必要なことを実行しますが、そのソースが利用できないため、使用できません。

MPLexとMPPGは、それぞれLex/FlexとBison/YaccであるMicrosoftの公式製品です。それらに関するドキュメントはあまりなく、それらは前述のオープンソースプロジェクトの完全なクローンではありませんが、私がそれらを使って必要なことを行うことは可能でした。現実の政治に対処する必要がない場合は、GOLDをお勧めします。GOLDには優れたデバッグGUIとすべてが備わっていますが、オープンソースまたはMicrosoftの公式プロジェクト、MPLexおよびMPPGのいずれかを強制される場合は行く方法かもしれません。上記の2つのアプリケーションは、実際にはGPLEXとGPPGの派生物にすぎないことに注意してください。後者の2つは、Microsoftがプロジェクトを放棄したと思うので、Microsoftの派生物よりも最新のものである可能性があります。Microsoftの派生物について私が見つけた唯一のドキュメントは、VS2008SDKの2つのPDFに含まれています。マイクロソフトはPDFを取りました」VS 2010 SDKでexeを出荷しているにもかかわらず、それらの使用法を説明します。ただし、PDFもexeも2012年に出荷される予定はないようです。

0 投票する
1 に答える
1696 参照

antlr - DSL 文法ファイルから Java クラスを生成する

AST を設定する文法ファイル (BNF/BNF のようなもの) からパーサーを生成する方法を探しています。ただし、開発者が読み取り可能な方法でさまざまな AST クラスを自動的に生成することも検討しています。

例: 次の文法ファイルの場合

次のJavaクラスを生成したいと思います(フィールドの例を示します):

そして、実行時に、AST を表す次のオブジェクト グラフを生成する式「1+1-2」が必要です。

(演算子の優先順位は気にしないでください)。

私は DSL パーサー ジェネレーター (JavaCC/ANTLR とその仲間) を調べてきましたが、見つけた最も近いものは、ANTLR を使用して "enterExpression" と "leaveExpression" スタイルのメソッドでリスナー クラスを生成することでした。"multi" を使用して JavaCC と jjtree を使用して生成されたやや似たコードを見つけましたが、非常に扱いにくく、使いにくいものです。

私の文法ニーズはいくぶん単純なものであり、AST オブジェクト グラフの作成を可能な限り自動化したいと考えています。

ヒントはありますか?

0 投票する
3 に答える
668 参照

parsing - バイソンを使用してトップダウンの「ツリー」構造を作成する方法は?

この例を見つけましたが、ツリーのボトムアップが作成されます。バイソン、フレックスを使用してツリーのトップダウンを作成することは可能ですか?

擬似コード: