問題タブ [grako]

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 投票する
2 に答える
734 参照

python - グラコでのルールの優先順位の問題

私は元々 Perl で構築したミニ言語をやり直しています ( github の Chessa# を参照) が、セマンティクスを適用するときに多くの問題に直面しています。

文法は次のとおりです。

私が直面している問題はd、演算子と後続の英数字文字列の間に空白が存在しない場合、演算子が識別子ルールに引き込まれていることです。文法自体はLL(2)なのですが、どこが問題なのかわかりません。

たとえば、は識別子4d6として解釈されているため、パーサーを停止します。起こるべきことは、 が演算子であると解釈されることです。LL パーサーでは、これが実際に当てはまります。4 d6d64 d 6d

考えられる解決策はd、識別子の開始を禁止することですが、これにより、関数などのdrop名前をそのように指定することが許可されなくなります。

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

python - リスト内の浮動小数点は、「利用可能なオプションがありません」というエラーでパーサーを停止させます

この文法を考えると:

およびこのセマンティクス オブジェクト:

...パーサーは、no available options非整数要素 (フロートまたはリスト; 変数は問題ありません) を含むリストに遭遇すると、エラーで停止します。

例:

  • drop(4d6, 1)
  • [1.5, 2, 3]

興味深いことに、drop([1, 2, 4, 2], 1)正しく動作し、 を出力します[2, 4, 2]

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

grako - 字句要素をバラバラにする

私の文法ファイルtest.ebnfは次のようになります。

入力「test1234」でこの文法を実行すると、単一の語彙素として「test1234」が生成されますが、AST は次のようになります。

nameguard機能をfalseに設定して実行しようとしましたが、うまくいきませんでした。のようなルールを書かずにこの動作を得るにはどうすればよいidentifier = /[a-z]*[0-9]*/ですか?

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

python - Pythonで構造化言語ファイルを処理する方法

次のような大きな構造化言語ファイルがあります。

私はPythonとスクリプト作成に本当に慣れていません。Python を使用してこのテキスト ファイルを AST に解析する方法。Web での検索で、python の grako がオプションであることがわかりました。グラコがどのように機能するかをサンプルコードで説明していただけますか。ありがとうございます。

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

python - ソースコード生成

Python の grako ユーティリティを使用して OIL ファイルを AST に解析しています。しかし、AST を変更した後、AST からソース コードを再生成したいと考えています。グラコにはこれを行う機能がありますか、それともPythonの他のユーティリティがこのソースコードの再生成に利用できますか?