問題タブ [pegjs]

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 に答える
1060 参照

parsing - 左手再帰なしのブール式の解析

これに合わせようとしている

  • f(some_thing)は式である関数呼び出しです
  • ==はブール演算子です
  • 'something else'は文字列であり、式でもあります

したがって、ブール式は

問題は、左再帰なしでそれを行う方法を理解できないことです これらは私のルールです

文法表記法を使用して、私は持っています

私の文法はEOEなので、左手アルゴリズムの使い方がわかりません。

ここで、e は空で、b は端末です

0 投票する
2 に答える
489 参照

node.js - PEGjs: 浮動小数点ルールが失敗した場合の文字列へのフォールバック (バックトラック?)

atom最初にすべてを数値または引用符で囲まれた文字列として解析しようとするルールがあります。それが失敗した場合は、文字列として扱います。

この非常に特定の文字列である特定のケースを除いて、すべてが正常に解析されます。

DUD 123abc

エラーで解析に失敗しExpected " ", "." or [0-9] but "a" found.ます。

私が期待すること: 正常に解析され、文字列 "123abc" が文字列アトムとして返されるはずです。以下の文法コンテンツで、私の失敗した試みのいくつかがコメントアウトされているのを見ることができます。

ヘルプ/ヒント/ポインター/提案​​は大歓迎です!


オンライン PEG.js バージョンで文法を試すことができます。ノード v0.8.23 と pegjs 0.7.0 を使用しています

正しく解析される数値:

  • `123
  • `0
  • `0.
  • 1.
  • `.23
  • `0.23
  • `1.23
  • `0.000
  • . <--- 数値ではなく、エラーでもない文字列として

123abc文字列として解析したいのですが、可能ですか?


これは私の文法ファイル全体です:

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

parsing - PegJS: 周囲のテキストのフレーズを一致させる方法

PegJSでパーサーを作ろうとしています

私はこのようなものを解析しようとしています..

I would like to email john@gmail.com today or tomorrow.

特定のフレーズに一致するパーサーをどのように作成しemail john@gmail.com、周囲の文字とスペース (存在する場合) を破棄しますか。

私が常に抱えている問題は、より詳細なマッチャーが行く前に、マッチャーが行全体、フレーズ、およびすべてを消費することです。

また、誰かが壊れることはありnegative look aheadsますか?(仕組みとそこの構文)
それらが答えのようですが、それらに関する情報を見つけるのに苦労しています。

ありがとう、
ゲオ。

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

javascript - coffeescript のようにオブジェクト定義を解析するにはどうすればよいですか

これがcofeescriptにあるとしましょう

そしてそれはにコンパイルされます

この PEG.js 文法があるとしましょう

オンライン PEG パーサーでテストしたい場合、その文法は半分のことを行い、two変数は最初の変数の下ではなく同じスコープで 2 回定義されoneます。2行の左側に同じスペースがあるかどうかを確認するにはどうすればよいので、それらを同じスコープに追加しますか?

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

javascript - pegjs が空白ルール " " の処理に失敗するのはなぜですか*

次の単純な pegjs 文法は正常に機能します。

http://jsfiddle.net/4V3Zt/で入手できます 。文法はhttp://pegjs.majda.cz/onlineに貼り付けることもできます。

空白に任意のスペースを許可するように ws ルールを変更すると、次のようになります。

最大呼び出しスタック例外がスローされ、解析が失敗します。(jsfiddle を使用している場合、ブラウザー ツールで例外が表示されます。例外は node.js 環境でも発生するため、これは pegjs に関連していることは確かです)。

この ws ルールの * の何が問題になっていますか?

0 投票する
2 に答える
3292 参照

javascript - PEG.js による完全な数式の解析

オンライン BASIC インタープリター実験用に、4 つの演算子すべてを使用して数式を解析するために、 PEG.jsの文法例を拡張しようとしています。

http://www.dantonag.it/basicjs/basicjs.html

しかし、すべての式が正しく解析されるわけではありません。

これは私のPEG文法です:

2*3+1 (7 を与える) のような式は正しく解析しますが、0 ではなく 2 を与える 2-1-1 のような式は解析しません。

これを改善してデバッグするのを手伝ってもらえますか?

前もって感謝します。

編集:文法に「数」ルールを追加しました。はい、私の文法は出力として解析木に類似した再帰構造を与えます。

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

javascript - 動的キー名を持つキー、値オブジェクトを返す

PEG.jsには次のルールがあります

解析[hello] worldすると、次のようになります。

{"key": "world"}.

返してほしい

{"hello": "world"}.

これは可能ですか?オブジェクト キーが動的な値を受け入れるようにするにはどうすればよいですか。