चर द्वारा संदर्भित टोकन टोकन को कैसे पास करें?


10

मैं सीधे टोकन नाम का उपयोग करके आसानी से टोकन हस्ताक्षर का उपयोग कर सकता हूं:

my token t ( $x ) { $x };

'axb' ~~ / 'a' <t: 'x'> 'b' /;      # match
'axb' ~~ / 'a' <t( 'x' )> 'b' /;    # match

हालाँकि मुझे ऐसा करने का कोई तरीका नहीं मिला है, जब टोकन को चर में संग्रहीत किया जाता है:

my $t = token ( $x ) { $x };

'axb' ~~ / 'a' <$t: 'x'> 'b' /;
'axb' ~~ / 'a' <$t( 'x' )> 'b' /;

दोनों देते हैं:

===SORRY!=== Error while compiling ...
Unable to parse expression in metachar:sym<assert>; couldn't find final '>'

जादू वाक्यविन्यास क्या है?

BTW: मैं भी Raku परीक्षण सूट ब्राउज किया है और यह इस तरह के मामले में शामिल नहीं है roast/S05-grammar/signatures.t

जवाबों:


8

कोई एक:

  • रत्नु के जवाब में समाधान का उपयोग करें ताकि राकु स्पष्ट रूप से जान सके कि आप अपने $sigil'd टोकन चर का उपयोग करना चाहते हैं Callable

  • स्पष्ट रूप से चर को Callableपहले स्थान पर घोषित करें और कॉल में संबंधित परिवर्तन करें:

my &t = token ( $x ) { $x };

say 'axb' ~~ / 'a' <&t: 'x'> 'b' /;   # 「axb」
say 'axb' ~~ / 'a' <&t( 'x' )> 'b' /; # 「axb」

2
यह इंगित करने के लिए उपयोग हो सकता है कि टोकन केवल कुछ विशेषताओं के साथ regexen हैं, और regexen, बदले में, Callables हैं, इसलिए वे &चर में जा सकते हैं ।
user0721090601

1
धन्यवाद! जबकि jnthn ने मेरे सवाल का बहुत सीधे जवाब दिया मैं इसे एक उत्तर के रूप में चिह्नित कर रहा हूं, क्योंकि यह मेरी समस्या के वास्तविक कारण पर जोर देता है - गलत सतर्क। शुरू से ही कॉल करने योग्य के रूप में टोकन का इलाज करना बहुत क्लीनर समाधान है।
पावेल पाबियन बीबक्र

11

जगह ए &चर से पहले :

my $t = token ( $x ) { $x };
say 'axb' ~~ / 'a' <&$t: 'x'> 'b' /;
say 'axb' ~~ / 'a' <&$t( 'x' )> 'b' /;

पार्सर के लिए लग रहा है &, और फिर Raku चर पार्स नियम है, जो खुशी से इस तरह एक संदर्भ के लिए पार्स होगा प्रतिनिधि।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.