問題タブ [peg]
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.
ruby - gem に依存しないパーサーを生成できる Ruby 用のパーサー ジェネレーターはありますか?
私が作成した DSL をruby 1.8との下位互換性を持つようにするために、ソース文字列に対して (比較的単純な) 解析を行う必要があります。おそらく文字列変更を直接行うこともできますが、将来の保守性のために、最初に調査して、適切なパーサー ジェネレーターを使用するには何が必要かを調べたいと思いました。
ただし、この DSL の役割により、使用できるruby gem に異常な制約が課されます。DSL はCocoaPodsと共に配布されるXcodeプロジェクトの一部であり、CocoaPodsはビルド環境でRubyの依存関係を管理するためのものではありません。
これが意味することは、私のruby DSL は、 Mac OS X 10.8にプリインストールされて出荷される gem に効果的に制限されているということです。
SO、私の質問:最終出力として「スタンドアロン」のRubyコードを生成するRubyパーサー ジェネレーターはありますか? コアruby の一部ではないものを何もしないruby コードを意味しますか?require
ANTLR for Rubyの(まばらな)ドキュメントを見てきましたが、(当然のことながら)私の質問には対応していません。また、treetopをざっと見たところ、gem としてバンドルされたサポート パッケージを使用しているようです。
python - 構文解析式文法におけるエスケープ文字列
Python ライブラリparsimoniousを使用して小さな言語ユーティリティの文法を書こうとしていますが、文字列、特にエスケープされた引用符やその他の特殊文字を含む文字列をカバーする部分を書くのに苦労しています。
私は次のものを持っています:
escapedString
まだ定義されていないかのようですが、プログラミング言語の文字列が受け入れると合理的に期待されるものは何でも受け入れる必要があります。どこから始めればよいか考えられません。誰か提案はありますか?
parsing - PegJS: 周囲のテキストのフレーズを一致させる方法
PegJSでパーサーを作ろうとしています
私はこのようなものを解析しようとしています..
I would like to email john@gmail.com today or tomorrow.
特定のフレーズに一致するパーサーをどのように作成しemail john@gmail.com
、周囲の文字とスペース (存在する場合) を破棄しますか。
私が常に抱えている問題は、より詳細なマッチャーが行く前に、マッチャーが行全体、フレーズ、およびすべてを消費することです。
また、誰かが壊れることはありnegative look aheads
ますか?(仕組みとそこの構文)
それらが答えのようですが、それらに関する情報を見つけるのに苦労しています。
ありがとう、
ゲオ。
parsing - Rebol Parse での一致失敗時のエラー メッセージ
PEG ベースのパーサー ジェネレーターは、通常、無効な入力に関する限定的なエラー レポートを提供します。私が読んだところによると、rebol の解析方言は、正規表現で拡張された PEG 文法に触発されています。
たとえば、JavaScript で次のように入力します。
グローバル関数の宣言で識別子が指定されていないため、次のエラーが発生します。
パーサーは、解析中に予想されるトークンが欠落している位置を正確に特定できます。予想されるトークンの文字位置は、エラー メッセージ内の矢印の位置に使用されます。
rebol の解析方言は、無効な入力の行と列のエラーを報告する組み込み機能を提供しますか?
それ以外の場合、そのようなエラー レポートを提供するカスタム展開された解析ルールの例はありますか?
javascript - coffeescript のようにオブジェクト定義を解析するにはどうすればよいですか
これがcofeescriptにあるとしましょう
そしてそれはにコンパイルされます
この PEG.js 文法があるとしましょう
オンライン PEG パーサーでテストしたい場合、その文法は半分のことを行い、two
変数は最初の変数の下ではなく同じスコープで 2 回定義されone
ます。2行の左側に同じスペースがあるかどうかを確認するにはどうすればよいので、それらを同じスコープに追加しますか?
lua - lpeg parse 一次論理項
タイトルが示すように、たとえば解析しようとしています
のようなLuaテーブルで
これは私が構築した文法です:
次の問題があります。
- ネストされた用語を解析できません。上記の例では、 のみを返します
{term, {} }
(ただし、 で問題ありませんterm(A, b, c)
)。 - 使用した文字列から引用符を取り除く
{~ ~}
ために、そのため、すべてのキャプチャを下の行から移動する必要がargument
ありました。term
これを回避する方法はありますか? A
たとえば、のようなものの代わりに、各要素にキーを関連付けてそのタイプを指定したいと思います{value = "A", type = "variable"}
。これを行う方法を見つけました{:name: :}
が、テーブル内の要素の順序が失われます (新しいテーブルを作成するのではなく、単にキーを追加するためです。この場合variable="A"
、この要素の順序は固定されていません)。注文を維持するアイテムにタグを付けるにはどうすればよいですか?
javascript - pegjs が空白ルール " " の処理に失敗するのはなぜですか*
次の単純な pegjs 文法は正常に機能します。
http://jsfiddle.net/4V3Zt/で入手できます 。文法はhttp://pegjs.majda.cz/onlineに貼り付けることもできます。
空白に任意のスペースを許可するように ws ルールを変更すると、次のようになります。
最大呼び出しスタック例外がスローされ、解析が失敗します。(jsfiddle を使用している場合、ブラウザー ツールで例外が表示されます。例外は node.js 環境でも発生するため、これは pegjs に関連していることは確かです)。
この ws ルールの * の何が問題になっていますか?