2017-07-24 16 views
5

Edit distance: Ignore start/end में, मैंने एक अस्पष्ट अस्पष्ट मिलान समस्या के लिए एक पर्ल 6 समाधान की पेशकश की। मैं इस तरह के व्याकरण था (हालांकि शायद मैं यह बाद में सुधार किया है 3 # संपादित करें):मैं पर्ल 6 व्याकरण के लिए तर्क कैसे पारित कर सकता हूं?

grammar NString { 
    regex n-chars { [<.ignore>* \w]**4 } 
    regex ignore { \s } 
    } 

शाब्दिक 4 ही उदाहरण में लक्ष्य स्ट्रिंग की लंबाई था। लेकिन अगली समस्या कुछ और लंबाई हो सकती है। तो मैं व्याकरण कैसे कह सकता हूं कि मैं उस मैच को कब तक चाहता हूं?

उत्तर

4

हालांकि दस्तावेज़ कोई उदाहरण नहीं दिखाते हैं या $args पैरामीटर का उपयोग करते हुए, मुझे S05-grammar/example.t in roast में एक मिला।

:args में तर्क निर्दिष्ट करें और रेगेक्स को उचित हस्ताक्षर दें। regex के अंदर, एक कोड ब्लॉक में तर्क का उपयोग:

grammar NString { 
    regex n-chars ($length) { [<.ignore>* \w]**{ $length } } 
    regex ignore { \s } 
    } 

class NString::Actions { 
    method n-chars ($/) { 
     put "Found $/"; 
     } 
    } 

my $string = 'The quick, brown butterfly'; 

loop { 
    state $from = 0; 
    my $match = NString.subparse(
     $string, 
     :rule('n-chars'), 
     :actions(NString::Actions), 
     :c($from++), 
     :args(\(5)) 
     ); 

    last unless ?$match; 
    } 

मैं अभी भी हालांकि तर्क पारित करने के लिए नियमों के बारे में यकीन नहीं है। यह काम नहीं करता:

 :args(5) 

मैं:

बहुत कम positionals पारित; 2 तर्कों की उम्मीद है, लेकिन मिल गया 1

यह काम करता है:

 :args(5,) 

लेकिन उस एक रात के लिए इस बारे में काफी सोच है।

+2

यह 'कैप्चर' पारित होने की उम्मीद है, और यदि उसे कोई नहीं मिलता है तो उसे 'कैप्चर' कोसर कहते हैं। एक 'सूची' सूची तत्वों के साथ स्थिति कैप्चर के रूप में 'कैप्चर' को सहारा देगा। एक 'Int' कुछ भी उपयोगी नहीं होता है (यह' Mu.Capture' पर वापस आता है, जो सार्वजनिक गुण लेता है और नामित पैरामीटर के रूप में उपयोग करता है; 'Int' में कोई सार्वजनिक विशेषता नहीं है)। –

+0

उनमें से कोई भी दो तर्कों में कैसे बदलता है? –

+0

मैं उम्मीद करता हूं कि हमलावर को संदर्भित किया जाए, यानी "स्वयं" तर्क, क्योंकि कक्षा में regexes विधियां हैं। – timotimo

संबंधित मुद्दे

 संबंधित मुद्दे