問題タブ [parser-generator]
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.
c - バイソンプッシュピュアパーサーでのヒープ処理
バイソンの純粋なプッシュパーサーにmalloc()/ free()の代わりに、ヒープ管理用に独自のアロケーター/デアロケーター関数を指定する方法はありますか?
parser-generator - ParserGenerator の例
のサンプルコードを投稿できますBumble Bee Parser Generator
か?
一部を解析するパーサーを作成したいと思いますBSDl Files
。
lex
書いてyacc
使用するサンプルコードを投稿してくださいbumble bee parser generator
android - Androidの見積もりが解析されない
RSSフィードを解析するために次のコードを使用しています。引用符が表示されている場合は機能しません。助けてください。
programming-languages - LLパーサーとLRパーサーの制限はありますか?
LLパーサーとLRパーサーの基本的な違いを知っています。また、GLR、SLR、およびLALRはすべてLRパーサーの拡張機能であることも知っています。だから私の質問はもっと詳しく...
LL(*)パーサーとLRパーサーのバリエーションを考えると、一方で記述でき、他方で記述できない言語はありますか?それとももっと簡単に言えば、どちらでも表現できない特徴や特性はありますか?
具体的な例として。LL(*)パーサーを使用して言語を作成する場合、LRパーサーでのみ可能になる(またはその逆の)言語に追加したい機能/プロパティに遭遇することはありますか?
scala - Haskell や Scala などの関数型言語用の LL パーサー ジェネレーターはありますか?
関数型言語でパーサーを作成する LL パーサーが明らかに不足していることに気付きました。成功せずに探していたものの理想的な発見は、ANTLR スタイルの LL(*) 文法 (文法のモジュロ マイナーな再フォーマット) 用の Haskell パーサーを生成するものであり、最後のすべてのパーサー ジェネレーターが関数型であることに驚きました。私が見つけた言語ターゲットはある種の LR パーサーでした。
私が取り組んでいるこの言語のパーサーを、ANTLR から言語自体の自己ホストへの関数機能を備えているものに移行したいと考えています。別の関数型言語でほぼ確実に正しいものを自分の言語に移植できれば、大いに役立ちます。 (できれば私がよく知っているもの、Haskell と Scala) をゼロから完全に書き直す必要はありませんが、コア言語は小さいため、最終的にはこれを行う可能性があります。
この時点で、これに対する解決策以上のものは、なぜそのような LL(*) や LL(k) パーサー ジェネレーターさえないのに、多くの LR ジェネレーターがあるのかについて非常に興味があります。
java - パーサーを理解しようとしています
JavaCCを使用して、さまざまな式を処理できる単純なコマンドライン計算機を構築しようとしています。文法の書き方についてはたくさんのチュートリアルがありますが、これまでに見たもののどれも、その後に何が起こるかを説明していません。
私が今理解しているのは、文字列がパーサーに渡された後、それはトークンに分割され、解析ツリーに変換されるということです。次は何が起こる?各ノードのコンテンツに対して一連のif-else文字列比較を実行して解析ツリーをトラバースし、適切な機能を実行しますか?
c - バイソン-プッシュおよび純粋なパーサーへの追加パラメーター
1つの追加パラメーター(タイプのトークンマイナーではないYYSTYPE
)をyypush_parse()
関数に渡すにはどうすればよいですか?
パーサーは確かに再入可能ですが、この1つの追加変数は、パーサーを統合する必要があるアプリケーションのスレッドセーフにとって重要です(これはPHP拡張であるため、TSRMについて話します)。
アクションコード内で、ユーザーランドにアクセス可能な形式でASTを生成する関数を呼び出すため、このパラメーターを削除することはできません。
私はハックしようとしましYYPUSH_DECLS
たが、関数の宣言に関する限り機能しますが、数千のLOCがの実装にyypush_parse
なり、実装が開始される関数シグネチャを上書きする方法がわかりませんyypush_parse
。
YYPARSE_PARAM
パーサーがプッシュ型ではない場合にのみ使用されます(私が知る限り)が、私の場合は、処理ループで、字句解析後、新しいものを追加する前に行う必要があるため、プッシュする必要があります解析スタックへのトークン。
だから私は%directive
何か助けになるかもしれないかどうか疑問に思っています。
YYPARSE_PARAM
反対に、パーサーの種類に関係なく、定義されている範囲で使用する必要があると思います。そうではないのは残念です。
antlr - デフォルトと非表示の両方のチャネルから読み取る Antlr パーサー ルールを取得するにはどうすればよいですか
私は隠しチャネルへの通常の空白分離を使用していますが、後で処理するために空白を含めたいルールが 1 つありますが、見つかった例には非常に奇妙な手動コーディングが必要です。
最初から空白を配置するオプションのように、複数のチャネルから読み取る簡単なオプションはありませんか。
元。これは WhiteSpace lexer ルールです
そして、これは空白を含めたい私のルールです
基本的に、他のルールに一致しないコンテンツをキャプチャして別のパターンで処理するのは、キャッチ オール ルールであるため、元のストリームが必要です。
構文の例を期待していました{$channel==DEFAULT || $channel==HIDDEN}
が、見つかりません。
私のターゲットは C# ですが、必要に応じて Java の例を書き直すこともできます。
parser-generator - コード分離と言語拡張性を備えたどのパーサージェネレーターをお勧めしますか?
文法/コードの分離と、新しいターゲット言語のサポートを追加する可能性を備えた、文脈に依存しない文法パーサー ジェネレーターを探しています。たとえば、Pascal でパーサーが必要な場合は、すべてを再実装することなく、独自の Pascal コード ジェネレーターを作成できます。
ほとんどのオープンソース パーサー ジェネレーターは理論的には拡張可能であることは理解していますが、拡張性が計画され、文書化されているものを好むと思います。
機能的には、パーサーが少なくとも Python スタイルのインデントをサポートする必要がありますが、おそらく追加の作業が必要です。生成されるパーサーのタイプに関する要件はありませんが、高速なものが望ましいです。
最もよく知られている/維持されているオプションはどれですか?
人気のあるパーサージェネレーターは、ほとんどの場合、私が本当に好きではない混合文法/コードアプローチを使用しているようです. ウィキペディアの比較リストにはいくつかのリストがありますが、私はこれが初心者で、どれを試したらよいかわかりません。
文法とコードを混在させたくない理由: このアプローチはごちゃごちゃしているように見えるからです。文法は文法であり、実装の詳細は実装の詳細です。それらは異なる言語で書かれた異なるものであり、それらを別々の場所に保管するのは直感的です。
実装の詳細が異なる別のプロジェクトで文法の一部を再利用したい場合はどうすればよいですか? 別の言語でパーサーをコンパイルしたい場合はどうすればよいですか? これらはすべて、文法を分離しておく必要があります。