問題タブ [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 に答える
889 参照

python - ebnf と空白を使用した pyparse

http://pyparsing.wikispaces.com/file/view/ebnf.pyを使用して、ebnf 定義を変換しています。

ebnf def は次のようになります。

ファイルをロードして、次のような文字列を解析しようとすると:

私は得る:

アイデア/解決策はありますか?

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

coding-style - 良い EBNF 文法を書くためのヒント

ドキュメント解析用の拡張 Backus–Naur Form 文法を書いています。これらの定義の構文については優れたガイドがたくさんありますが、それらを設計および構造化する方法についてはオンラインではほとんどありません。

最終的な解析ツリーが同等である場合でも、スタイルの要素があるように見えるため、これらの作成にどのようにアプローチするかについて、良い記事 (または一般的なヒント) を提案できますか?

例:

  • 改行を明示的にタグ付けするか、単に空白として扱うかを決定しますか?
  • 非端末の命名スキーム
  • 長い定義でオプションの空白を処理する
  • 不適切な構文チェックを使用する場合と一致しないようにする場合

ありがとう、

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

parsing - EBNF 文法でコメントを解析する方法

言語パーサーの文法を定義するとき、テキストの任意の場所で発生する可能性があるコメント (例: /* .... */) などをどのように処理しますか?

タグ内のタグから文法を構築することは、物事が構造化されている場合にうまく機能するように見えますが、コメントはすべてをスローするようです.

テキストを 2 つのステップで解析する必要があるだけですか? 最初にこれらの項目を削除してから、コードの実際の構造を分解するには?

ありがとう

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

cobol - このCOBOL文法は--9画像を処理しません

このサイトの文法をjavaccで使用しています。いくつかの画像ステートメントを除けば、正常に機能します。たとえば、----、---、---。99または--9。

http://mapage.noos.fr/~bpinon/cobol.jj

それは複数のダッシュが好きではないようです。

私の写真の例をサポートするために、これを何を変更する必要がありますか。

私はめちゃくちゃだ

しかし、何も機能していないようです。どんな助けでも大歓迎です

編集:

これは、この行全体の正規表現ですか?

受け入れたい場合は05 TEST3 REDEFINES TEST2 PIC X(10).、正規表現を次のように変更します。

これまでの助けに感謝します

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

grammar - PL/0での「奇数」式

次のEBNF文法(PL / 0のウィキペディアにあります)を考えると、「ODD」キーワードの前にある式は何ですか?簡単な言語を小さなプロジェクトとして実装したいのですが、これが何を意味するのか理解できないようです。私がその言語のコンパイラを正しく書くことができるように、誰かが以前にこれの頭を持っているか、奇妙な表現が何であるかを解釈することができますか?

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

scala - Antlr は再帰を残しました

postfix、infix、および prefix ルールを EBNF 形式の scala から ANTLR に変換しようとしていますが、infixExpression ルールの左再帰に関連するエラーが表示されます。

問題のルールは次のとおりです。

infixExpression ルールを次のように変更すると:

次に、代わりに不平を言います:

最後に、条件付きで AST にノードを作成して、ルールの左側の部分だけが true の場合にそのレベルを追加しないようにする方法はありますか? 例えば:

のように、次のような階層に従う文法を作成するとしましょう。

解析される式が である場合a || b、現在作成される AST はこの式に対して

部品だけを取得するにはどうすればよいconditional_or_expressionですか?

JavaCC では、次のようにノード アリティを設定できます。#ConditionalOrExpression(>1)

編集: 昨夜は少し遅くなりましたが、中置式が適切に変更されました!

最終編集:最終的に機能させる方法は、次のルールでした。

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

grammar - BNFからEBNFへの変換

次のBNFをEBNFに変換する方法を知る必要があるので、それらがどのように機能するかを理解するのに役立ちます

注:イプシロンは空のセットを意味します

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

javascript - EBNF 構文パーサー モジュール

トークンのリストとEBNFのような文法 (単純な文字列として渡される) を指定すると、解析されたツリーを返す構文パーサー モジュール (Ruby、Python、Javascript で作成されたもの) を知っていますか? これに最も近いのはSimpleParseです。これは優れたライブラリですが、残念ながら、単一ステップの解析 (トークン化なし) を使用しています。可能であれば、実装が言語自体と絡み合っているライブラリ ( pyparsingtreetop、...) は使用したくありません。

利用可能なライブラリがたくさんあるため (そして、独自のライブラリを作成することも非常に簡単です)、字句解析/トークン化については心配していませんが、ENBF パーサーの実装は簡単な作業ではありません。私はPython wiki LanguageParsingをチェックし、それらのいくつかを無駄にテストしました(探しているものを見落としている可能性があります。たくさんあります...)

0 投票する
4 に答える
10020 参照

php - PHP の EBNF 文法定義?

誰かが PHP 用の EBNF をどこかでコンパイルしたのではないかと思っています。この サイトこの サイトの両方を見つけました。ただし、どちらも不完全なようです。この質問は非常に似ていますが、1 年前のものです。何か進展があったかどうか知りたいです。

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

parsing - LALR パーサー用に EBNF を BNF に変換する

似たようなタイトルの投稿がいくつかあることは知っています。ほとんどが死んだサイトへのリンクです - とにかく、もっと具体的な質問があります。

Bison 互換の文法ファイルを簡単に作成できるように、XPath 仕様の EBNFをストレート BNFに変換しようとしています。

これを行ってからしばらく経ちましたが、再帰がプロダクションのどちら側に属しているか覚えていません。私はそれが左だと思っていました - しかし、私の「単純な」翻訳は、Bison が生成したパーサーを実行すると、単純なジェーン XPath 式で構文エラーを引き起こします。

だから誰かが私をユーモアを交えて考えてくれるなら - だから私は幽霊を追いかけていない.

以下のExprルールでは:

これは正しい翻訳ですか?(再帰を左に置く):