問題タブ [parsimonious]

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

python - 構文解析式文法におけるエスケープ文字列

Python ライブラリparsimoniousを使用して小さな言語ユーティリティの文法を書こうとしていますが、文字列、特にエスケープされた引用符やその他の特殊文字を含む文字列をカバーする部分を書くのに苦労しています。

私は次のものを持っています:

escapedStringまだ定義されていないかのようですが、プログラミング言語の文字列が受け入れると合理的に期待されるものは何でも受け入れる必要があります。どこから始めればよいか考えられません。誰か提案はありますか?

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

python - 倹約パーサー - 代入文法の解析中にエラーが発生しました

Python Parsimonious Parserを使用して、設計中の単純な言語のインタープリターを構築しようとしています。このチュートリアル ビデオは非常に役に立ちましたが、今は自分のルールに合わせてコードをゆっくりと修正しています。もともと次のように定義されていた割り当てルールに固執しています。

次の文法でルールを少し変更しました。

SET a, 7たとえば、パーサーが同じように評価し、値を name にa = 7バインドしたいと思います。ただし、解析しようとすると、Parsimonious ライブラリから次のエラーが発生します。7a

私は解析/字句解析にかなり慣れていないため、ルールを正しく定義したかどうか完全にはわかりません。解析/字句解析の経験が豊富な人が、ルールを適切に定義し、どこが間違っているかを説明するのを手伝ってくれることを望んでいました. また、倹約的な誤りを私に説明してくれませんか?

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

python - 節約のための OrderedDict

私はparsimoniousいくつかを解析するために使用していcsvます。私の問題は、生成された出力が期待どおりに出力されないことです。たとえば、入力文字列が

それから私は得ることを期待します:

代わりに得られるものは次のとおりです。

これは、試行するすべての入力で一貫した問題です。最初のトークンはエントリ OrderedDict の最後の項目ですが、その理由がわかりません。

これが私のコードです:

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

python - Parsimonious が IncompleteParseError で入力を拒否するのはなぜですか?

私は自分が設計している言語の基本的な骨組みを作ろうとしており、 Parsimoniousを使用して構文解析を実行しようとしています。現時点では、次の文法を宣言しています。

次のような単純な入力文字列の結果の AST を出力しようとすると"{ do-something some-argument }":

倹約家はそれを完全に拒否することを決定し、次のやや不可解なエラーを表示します。

最初は、これは空白ルールに関連する問題かもしれないと思っていまし_たが、特定の場所で空白ルールを削除しようとして何度か失敗した後も、同じエラーが発生していました。

オンラインで検索してみましたが、関連性が低いと思われるのはこの質問だけで、何の役にも立ちませんでした。

文法に何か問題がありますか? 入力を正しい方法で解析していませんか? 誰かがこれに対する可能な解決策を持っているなら、それは大歓迎です。

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

python - カスタム文法内で変数を変更する最も効率的な方法は?

Scilabのカスタマイズされたバージョンで「シナリオ」ファイルを生成する適切な運転シミュレーターを使用しています。11,000 行の長さの「マスター」ファイルが 1 つ提供されます。このファイルから特定の値を置き換えて、シナリオのnバージョンを生成する必要があります。

単一の親の構文の最小限の例は、次のTASKようになります。

このスクリプトの特定の値を標準入力に置き換える必要があります。たとえばLABEL、親 level の下の値を置き換える名前のリストを用意しますTASKVALUE最初の親VARIABLEを 6 ~ 16 の乱数に置き換える必要があります。

私の最初の解決策は Python REGEX ベースで、次のようなものでした (ただし、変更しようとしているすべての値に対して):

私は、Parsimonious のようなものでカスタム文法を書き、Mustache で出力を再生成することができると提案されました。

ご覧のとおり、これも問題に対する効率的な解決策ではありません。皆さんは、より良い解決策は何だと思いますか?

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

python - pysd ライブラリの ParseError

pysdファイルを Pythonに変換するために呼び出されたライブラリを使用していvensimますが、それを実行しようとすると (ライブラリ関数)、解析エラーが発生しますが、その意味がわかりません。

これは私のログです。


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

python - 同じ文字で始まる節約で代替を解析する方法

私は節約を使用していくつかの解析を行っていますが、最初の文字を順序付けられていない離れた場所で共有する代替を適切に解析する方法を理解するのに苦労しています:

例えば:

文章:

文法:

テキストの 1 行目は正しく解析されますが、2 行目は正しく解析されません。">" に一致するように見えますが、"=" が表示されるためスタックします。全体として ">=" に一致することはありません。これらを慎重な順序で指定することなく、どうすればそれを行うことができますか? 先読みマッチングに「&」を使用してみましたが、うまくいかないようです。