5

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

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

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

identifier := ('null' asParser not,  #word asParser plus)

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

identifier end parse: 'nullable'

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

4

1 に答える 1

6
identifier := ('null' asParser, #word asParser plus) /
    ('null' asParser not, #word asParser plus).

identifier end parse: 'nullable'. "=> #('null' #($a $b $l $e))"
identifier end parse: 'null'. "=>  'at 0'"
identifier end parse: 'foo' "=> #(nil #($f $o $o))"

これat 0は、PetitParserのデフォルトの「解析に失敗しました」エラーであり、パーサーが「null」ではなく「nullable」の通常の単語を受け入れることを示しています。

于 2012-12-20T14:21:39.680 に答える