問題タブ [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.
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
来てください!
parsing - PetitParser を使用して Smalltalk 文字列内のトークンを検索する
解析したい
findTokens のように
しかし、PetitParser、delimitedBy:、separatedBy: でそれを行う方法がわかりません。
しかし、明らかに機能していません
parsing - PetitParserでキーワードで始まる識別子を解析するにはどうすればよいですか?
PetitParserを使用して、プログラミング言語で識別子を解析したいと思います。
要件の1つは、識別子の名前がキーワード(などnull
)でnull
はないため、有効な識別子ではないことです。
この場合に考えられる最小のパーサーは次のとおりです。
ただし、入力がキーワードで始まる場合は失敗します。
これを解決するための提案はありますか?ありがとうございました!
smalltalk - PetitParser で左連想パーサーを定義する
http://pharobooks.gforge.inria.fr/PharoByExampleTwo-Eng/latest/では、ExpressionGrammar が定義されています。ただし、右結合です
どうすれば左連想にできますか
結果は
?
smalltalk - PharoのPetitParserでコメントを解析する
これよりも1行のコメントを解析する簡単な方法はありますか?
(#newline asParser)と#copyWithout:の繰り返しについては特にわかりません。
Lukasの答えの後、私はもっと簡単な次の解決策を思いつきました。
smalltalk - PetitParser解析ルールはどのようにエラーを通知できますか?
0から32767までの数値のみを認識する解析ルールが必要です。次のようなものを試しました。
しかし、私は???のために何を書くべきかわかりません。PPFailureを返すことを考えましたが、これにはストリームの位置を知る必要があります。
smalltalk - PetitParser の PPCompositeParsers の自己参照
PPCompositeParser のいくつかのサブクラスで拡張したいプログラミング言語の文法があります (たとえば、あるクラスは命令を処理し、別のクラスは式を処理し、別のクラスはプログラム構造を処理します)。数十のインスタンス変数を持つ大きなクラスを取得しないようにするために、これを行いたいと考えています。
私の問題は、これらのサブ文法には循環的な依存関係があることです: 構造文法は、構造文法の「サブルーチン名」を参照する式文法の「式」規則を参照するステートメント文法の「ステートメント」規則を参照します (依存関係サイクルを閉じます)。たとえば、次のような式文法で #subroutineName メソッドを使用する簡単な方法を試しました。
しかし、それは無限再帰のために初期化に失敗します (明らかに)。
この問題を解決するために、PPDeferedParser を作成しました。
前の #subroutineName は次のようになります。
これはうまくいくようですが、他の解決策があるのではないかと思います。
pharo - トークンが余分な空白を解析することを禁止する
今のアイデアは次のようなものです。JavaではoctalIntegerLiteral
ルールがあります
しかし、トークンとして数字を取得したいので、次を使用しました。
問題は、次のような文字列の解析を開始することです0777 L
。これは簡単に解決できますか、それともサブクラスであることに対処する必要がありますか?
pharo - PetitParser は分配的ではありませんか?
PetitParser のルールは分散型ですか?
次のルールがありました。
それらを次のように変更した場合:
その後0777L
は解析されません。一致octalNumeral , (integerTypeSuffix optional)
するか、新しいバージョンである必要octalIntegerLiteral , (integerTypeSuffix optional)
がありますが、それは起こっていません。
initialization - カスタムインスタンス変数とPetitParserによる初期化
私の知る限り、PetitParserは各インスタンス変数を同じ名前の本番メソッドで初期化します。initialize
たとえば、カスタムインスタンス変数を追加してメソッドで初期化するにはどうすればよいですか?