問題タブ [ebnf]

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

python - Python: 正規表現を BNF または pyparsing に置き換える

各行がゲーム ユニットを説明する、比較的単純なテキストを解析しています。解析手法についての知識がほとんどないため、次のアドホック ソリューションを使用しました。

正常に動作しますが、正規表現の力の限界に達したと感じています。具体的には、Traits の場合、値は、後で分割してリストに変換する必要がある文字列になります。たとえば、obj.Traits は、このコードでは「Motorized Armored」に設定されますが、後の機能は ('Motorized', 'Armored') に変更されました。

このコードを変換して、EBNF または pyparsing 文法などを使用することを考えています。私の目標は次のとおりです。

  • このコードをより簡潔にし、エラーを起こしにくくする
  • 値のリストを使用したケースの醜い扱いを回避します(最初に正規表現内で置換を行い、後で結果を後処理して文字列をリストに変換する必要があります)

何を使用し、コードをどのように書き直すかについて、あなたの提案は何ですか?

PS 混乱を避けるために、コードの一部をスキップしました。プロセスにエラーが発生した場合は、申し訳ありません-元のコードは機能します:)

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

java - EBNF 式を使用したコード ブロックの解析

CocoR を使用して Java のようなスキャナー/パーサーを生成しています。コード
ブロックに一致する EBNF 式を作成する際に問題が発生しています。

コード ブロックが 2 つのよく知られたトークン <& と &> で囲まれていると想定しています。例:

非終端記号を定義すると

2 つのシンボル内のコードに「<」文字が含まれている場合、生成されたコンパイラはそれを処理しないため、構文エラーが発生します。

ヒントはありますか?

編集:

簡単にするために、いくつかの演出を省略しました。
これは文法の私の実際の実装です。主なバグは、ブロック内のコードに記号 '>' または '&' のいずれかが含まれている場合に失敗することです。

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

ebnf - EBNF 文に 2 つのオペランドがあるのはなぜですか?

この EBNF 文法を持っている

4*+3.5= にこのようなものを入力するオプションがあるのはなぜですか? この文はこの文法にさえありますか? だとしたらどうやって見分けますか?

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

json - EBNF表記とJSONに関する質問

最近、私はパーサーと文法、そしてそれらがどのように機能するかを研究しています。http://www.ietf.org/rfc/rfc4627.txtEBNFを使用するJSONの形式文法を読んでいました。私はBNFとEBNFの理解にかなり自信を持っていましたが、どうやらまだ完全には理解していません。RFCは、次のようなJSONオブジェクトを定義しています。

ここでの目的は、任意のJSONオブジェクトが(オプションで)メンバーを持つことができ、その後に0個以上の(値-区切り文字、メンバー)ペアが続くことを表現することであることを理解しています。私が理解していないのは、アスタリスクがのに表示される理由(value-separator member)です。アスタリスクは正規表現を模倣するものではないので、アイテムのに0回以上繰り返されるように表示されますか?JSONオブジェクトの文法は次のように書くべきではありません:

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

presentation - EBNF プレゼンテーションの例?

電子メディア (つまり HTML)の拡張バッカスナウア形式のプレゼンテーションの良い例を知っている人はいますか?

内容ではなく形式に関する提案を探しています。ルール、端末、および EBNF シンボルを簡単に区別できるように、できるだけ読みやすくすることを目指しています。

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

java - EBNF/パーボイルド:正規表現をPE​​Gに変換する方法は?

これは、パーボイルド パーサー フレームワークと一般的な BNF/PEG の両方に固有の問題です。

かなり単純な正規表現があるとしましょう

の擬似EBNFを表します

EBNF で非空白 (空白ではない 1 つ以上の文字) をどのように定義しますか?

Java のパーボイルド ライブラリーに精通している人にとって、非空白を定義するルールをどのように実装できるでしょうか?

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

java - EBNF文法を文脈自由文法に変換する

JavaCUP仕様を作成する必要があり、EBNF文法が与えられました。しかし、私は2つの間で変換する方法がわかりません。基本的な考え方は聞いたことがありますが、何を変える必要があるのか​​、「ターミナル」とは何かなど、よくわかりません。

誰かが別のものに変換する方法を説明できますか、または私がそれについて読むことができる場所があるかどうか?

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

context-free-grammar - JavaCUP - EBNF のこの行を CFG 文法に変換するには?

数日前に、EBNF 文法を CFG に変換する方法について投稿しました。さて、私は今それの要点を持っていると思いますが、私はこの特定のものに少し行き詰まっています:

どのように変換しますか:

CFGに?

ここでの私の試みは、末尾の * (0 以上を意味する) を取り除き、それを再帰的な書き方に置き換えることです。

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

antlr - ステートメントまたはexitステートメントのANTLR文法

私はANTLR文法で次のステートメントを書き留めました:

私が正しく理解している場合、それは私がまたは(statement|exit)*を持つことができることを意味します。つまり、、または、、または、そうですか? ステートメントがない場合を除いて、私のパーサーは機能します。 例えば:statementexit statementstatement_1 exit_1statement_1statement_1 statement_2, exit_1

これは機能します:

これも機能します(いいえexit):

しかし、これは機能しません(いいえstatement):

私の文法に何か問題がありますか?

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

c# - 「else」ブロックを定義するにはどうすればよいですか?

これが私が試していることです:

しかし、私はshift-reduce conflict. 理由はよくわかりません...可能であれば、貪欲に「else」を取得しないでください。「if」ブロックのみが続くようにelseブロックを定義する方法がよくわかりません。

ノードとif_elseノードを持つブロック ノードが最適だと思います。なぜなら、AST をトラバースしようとするときに、戻って前の兄弟をチェックする必要がないからです。ifelse

文法の詳細を確認する必要がある場合は、お知らせください。「ブロック」は基本的に{ blah }(間の一連のステートメント{}) として定義されます。


オプションのブロックとして試してみてください:

それも好きじゃない。それでも警告をスローします。