問題タブ [petitparser]

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

parsing - PetitParser の使用例はどこにありますか?

テスト パッケージで提供されている PPArithmeticParser と PPLambdaParser を超えて PetitParser を使用する追加の例と、Lukas によるいくつかのブログ投稿を探していますか? 誰かが喜んで共有してくれるなら、それは大歓迎です。

更新: https://github.com/NicolasPetton/jtalk/blob/master/st/parser.st
更新: https://github.com/dmatveev/waste/blob/master/wastex.st

来てください!

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

parsing - PetitParser を使用して Smalltalk 文字列内のトークンを検索する

解析したい

findTokens のように

しかし、PetitParser、delimitedBy:、separatedBy: でそれを行う方法がわかりません。

しかし、明らかに機能していません

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

parsing - PetitParserでキーワードで始まる識別子を解析するにはどうすればよいですか?

PetitParserを使用して、プログラミング言語で識別子を解析したいと思います。

要件の1つは、識別子の名前がキーワード(などnull)でnullはないため、有効な識別子ではないことです。

この場合に考えられる最小のパーサーは次のとおりです。

ただし、入力がキーワードで始まる場合は失敗します。

これを解決するための提案はありますか?ありがとうございました!

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

smalltalk - PetitParser で左連想パーサーを定義する

http://pharobooks.gforge.inria.fr/PharoByExampleTwo-Eng/latest/では、ExpressionGrammar が定義されています。ただし、右結合です

どうすれば左連想にできますか

結果は

?

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

smalltalk - PharoのPetitParserでコメントを解析する

これよりも1行のコメントを解析する簡単な方法はありますか?

(#newline asParser)と#copyWithout:の繰り返しについては特にわかりません。

Lukasの答えの後、私はもっと簡単な次の解決策を思いつきました。

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

smalltalk - PetitParser解析ルールはどのようにエラーを通知できますか?

0から32767までの数値のみを認識する解析ルールが必要です。次のようなものを試しました。

しかし、私は???のために何を書くべきかわかりません。PPFailureを返すことを考えましたが、これにはストリームの位置を知る必要があります。

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

smalltalk - PetitParser の PPCompositeParsers の自己参照

PPCompositeParser のいくつかのサブクラスで拡張したいプログラミング言語の文法があります (たとえば、あるクラスは命令を処理し、別のクラスは式を処理し、別のクラスはプログラム構造を処理します)。数十のインスタンス変数を持つ大きなクラスを取得しないようにするために、これを行いたいと考えています。

私の問題は、これらのサブ文法には循環的な依存関係があることです: 構造文法は、構造文法の「サブルーチン名」を参照する式文法の「式」規則を参照するステートメント文法の「ステートメント」規則を参照します (依存関係サイクルを閉じます)。たとえば、次のような式文法で #subroutineName メソッドを使用する簡単な方法を試しました。

しかし、それは無限再帰のために初期化に失敗します (明らかに)。

この問題を解決するために、PPDeferedParser を作成しました。

前の #subroutineName は次のようになります。

これはうまくいくようですが、他の解決策があるのではないかと思います。

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

pharo - トークンが余分な空白を解析することを禁止する

今のアイデアは次のようなものです。JavaではoctalIntegerLiteralルールがあります

しかし、トークンとして数字を取得したいので、次を使用しました。

問題は、次のような文字列の解析を開始することです0777 L。これは簡単に解決できますか、それともサブクラスであることに対処する必要がありますか?

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

pharo - PetitParser は分配的ではありませんか?

PetitParser のルールは分散型ですか?

次のルールがありました。

それらを次のように変更した場合:

その後0777Lは解析されません。一致octalNumeral , (integerTypeSuffix optional)するか、新しいバージョンである必要octalIntegerLiteral , (integerTypeSuffix optional)がありますが、それは起こっていません。

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

initialization - カスタムインスタンス変数とPetitParserによる初期化

私の知る限り、PetitParserは各インスタンス変数を同じ名前の本番メソッドで初期化します。initializeたとえば、カスタムインスタンス変数を追加してメソッドで初期化するにはどうすればよいですか?