問題タブ [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.
php - この文法はLR(1)ではありませんか?
私はPHP用のパーサジェネレータに取り組んでいます。現在、正規LR(1)パーサーを実装しようとしていますが、次の文法でreduce-reduce競合が出力されます。この文法はLR(1)ではありませんか?または、アルゴリズムを再確認する必要がありますか?
バイソン(のような)表記の文法:
編集:
計算されたテーブル:
と競合:
.net - テスト機能を備えた任意の BNF IDE
私は新しい言語に取り組んでおり、文法を書いている間に、完全性、競合などについて文法をテストできるようにしたいと考えています。基礎となるパーサージェネレーターについてはあまり心配していません (ただし、.NET 用のジェネレーターが望ましいでしょう)。
つまり、機能リストは次のようになります。
- テキスト エディターのビルド機能
- 構文/セマティクス エラー レポート
- 競合の報告
- 文法テスト機能 (つまり、意図した文法でコードを記述して、文法定義の正確性を検証するためのウィンドウ)
Irony と呼ばれる CodePlex プロジェクトには、私が求めているものと似たようなものがありますが、必要な BNF としての文法の記述はサポートされていません。
php - PHPのLexとYacc
PHPにLexとYaccの実装はありますか?
そうでない場合は、PHPコードを作成する字句アナライザーとパーサージェネレーター(つまり、LexやYaccなど)を提案できますか?結果として得られるパーサーのパフォーマンスについてはあまり心配していません。
正規表現で解析すべきではないものを正規表現で解析することにうんざりしています...
compiler-construction - GLR解析アルゴリズムリソース
私はGLRパーサジェネレーターを書いていますが、インターネットと枯れ木の種類(オタクの話に慣れていない人のための本)の両方で、このアルゴリズムに関連するリソースについてアドバイスを求めています。
BisonがGLRパーサーを生成できることは知っています。また、GPLの下にある場合は、そのコードを調べることができますが、アルゴリズムの完全な説明があると便利です。
それで、誰かが私が利用できる良いリソースを知っていますか?ありがとう。
language-agnostic - スキャナーレスパーサージェネレーター
プロローグ:パーサー(文脈自由文法)によって認識される言語のセットは、スキャナー(正規文法)の言語よりも厳密に大きいですが、ほとんどのパーサージェネレーターにはスキャナーが必要です。
(その背後にある理由を説明しようとしないでください、私はそれらをよく知っています)。
私はパーサーを見てきました、それはのようなスキャナーを必要としません
スキャナーを使用しないことには、いくつかの利点があります。
- 2つではなく1つの概念(文脈自由文法)
- 1つのファイルで複数の言語を解析する(HTML / Javascriptなど)
- 予約キーワードのない言語の解析(PL / 1など)
多くの場合、「回避策」は、パーサーの要求に応じてスキャナーを切り替えるようなものです。
質問:他のスキャナーレスパーサジェネレーター(任意の言語)を知っていますか?これらは実用的ですか(または純粋に学術的ですか)?富田/GLR以外のアプローチはありますか?
回答:
- Boost :: spirit :: qi by AraK
- Norman Ramseyによる式文法の解析( LuaのLPEG )
- ノーマン・ラムゼーのヤッカー
- SK-logicによるMBase
- トレバーロビンソンによるワックスアイ
language-agnostic - ファイルを変更するためのパーサー ジェネレーター
パーサーを生成したパーサー ジェネレーターで次のことができるものはありますか? パーサーが完全なファイルを再解析する必要がないように。
はじめまして、
マティアス
http - HTTP / 1.1用のオープンソースの機械可読文法?
HTTP / 1.1の要求と応答のためのオープンソースの機械可読文法はありますか?具体的には、人気のあるパーサジェネレーター(ANTLR、CUP、BNFCなど)の1つで受け入れられる文法を探しています。
parsing - プログラミング言語のパーサーのソース?
私は、大規模なソフトウェア プロジェクトに関するいくつかの単純なメトリックを計算する、私の古いプロジェクトのほこりを払っています。メトリックの 1 つは、ファイル/クラス/メソッドの長さです。現在、私のコードは、クラス/メソッドの境界が非常に粗いアルゴリズムに基づいている場所を「推測」しています (ファイルをトラバースし、「現在の深さ」を維持し、引用符で囲まれていない括弧に遭遇するたびにそれを調整します。クラスまたはメソッドが開始されたレベルに戻ると、 、終了したと見なします)。ただし、この手順には多くの問題があり、深度がいつ変化したかを検出する「単純な」方法が常に有効であるとは限りません。
これで正確な結果が得られるようにするには、関数定義、クラス定義、深さの変化を検出する正規の方法を (各言語で) 使用する必要があります。これは、プロジェクトを適用したいすべての言語に対して、少なくともこれらの要素を含む解析ツリーを生成する単純なパーサーを作成することになります。
明らかに、パーサーはこれらすべての言語に対して以前に作成されているため、その作業を繰り返す必要はないように思われます (パーサーを作成するのは楽しいものですが)。 多数のソース言語用にすぐに使用できるパーサー ライブラリを収集するオープンソース プロジェクトはありますか? それとも、ANTLR を使用してゼロから独自のものを作成する必要がありますか? (注: プロジェクトを別の言語に移植して、優れた既存のリソースを利用できることを嬉しく思います。そのため、そのリソースを知っていれば、それがどの言語で書かれているかは問題ではありません。)
parsing - インラインドキュメント用のパーサジェネレータ
複数の言語のインラインドキュメンテーションを抽出できる汎用ドキュメンテーションシステムを使用するには、各言語のパーサーが必要です。したがって、パーサジェネレータ(実際にはそれほど完全または効率的である必要はありません)が必要です。
http://antlr.org/は、人気のある言語用の多数の文法をすでに備えている優れたパーサジェネレータです。より良い代替案、つまり、すぐに使用できるさらに多くの言語のパーサーの生成をサポートする単純な代替案はありますか?
.net - .NET の JavaCC?
私は大学での課題のために JavaCC パーサーの生成に時間を費やしていましたが、.NET 用の同様の単純なパーサー ジェネレーター フレームワークが利用可能かどうか疑問に思っていました。
ANTLR があることは知っていますが、私の好みには少し大きすぎることがわかり、JavaCC がもたらすシンプルさが本当に好きになりました..
挨拶ダニエル