2017-07-27 25 views
4

How can I pass arguments to a Perl 6 grammar?私は潜水艦の一部としてルールに引数を渡しました。私は文法の中でそれをどうやってやるのだろうと思っていました。私はstuffTOPから引数を渡すにはどうすればよいPerl 6ルールはどのようにして別のルールに引数を渡すことができますか?

grammar TryIt { 
    rule TOP   { \d+ <stuff> } 
    rule stuff ($count) { <[ \S A..Z ]>{$count} } 
    } 

my $match = TryIt.parse: "123 ABCD"; 
say $match; 

:私はのようなものを持っていたと仮定?私は例を見つけられず、材料の近くの括約物についての様々な推測がうまくいかなかった。

答えて

4

これらの形態の両方の仕事:

<stuff(...)> 
<stuff: ...> 
それらがユーザーのドキュメントに記載されている

わからないが、S05:正規表現とルール設計ドキュメントhas a section on them


ルール内部、$0$/等後方参照のみ、シーケンスポイントの後ブロックの例えば開口ブレース使用可能であることが保証されることに留意されたいです。空のブロック{}が機能します。

例:

grammar TryIt { 
    token TOP   { (\d+) \s {} <stuff($0)> .* } 
    token stuff ($count) { <[ A..Z ]> ** {$count} } 
} 

say TryIt.subparse: "3 ABCDEFG"; 

出力:

「3 ABCDEFG」 
0 => 「3」 
stuff => 「ABC」 
関連する問題