2015-12-13 30 views
5

मैं इस Config::INI Perl 6 Grammar एक टिल्ड ~ पाया:~ व्याकरण के अंदर क्या मतलब है (पर्ल 6 में)?

token header { ^^ \h* '[' ~ ']' $<text>=<-[ \] \n ]>+ \h* <.eol>+ } 

कोई टाइल्ड हैं पाठ मैं प्रसंस्करण कर रहा हूँ में ~। मुझे पता है कि '[' ~ ']' महत्वपूर्ण है क्योंकि किसी भी या सभी '[', ~, और ']' को छोड़कर व्याकरण अब मेरे पाठ से मेल नहीं खाता है।

के बाद से मुझे पता था कि क्या पैटर्न है कि मैं मिलान किया गया था, मैं इसे बदल ताकि वर्ग कोष्ठक पाठ अभिव्यक्ति के आसपास थे, इस प्रकार:

token header { ^^ \h* '[' $<text>=<-[ \] \n ]>+ ']' \h* <.eol>+ } 

तो मुझे लगता है कि वास्तव में '[' ~ ']' मैच कह रहा है यहाँ एक वर्ग ब्रैकेट और बाद में बंद ब्रैकेट की उम्मीद है।

वैसे भी, मुझे पता है कि सामान्य पर्ल 6 सिंटैक्स में, tilde ~ स्ट्रिंग्स को संयोजित करने के लिए उपयोग किया जाता है। लेकिन यह स्पष्ट रूप से this Grammar के अंदर कुछ अलग है। (पर्ल 6 में, आप टेक्स्ट से जटिल डेटा संरचनाओं को निकालने के लिए ग्रामर का उपयोग कर सकते हैं। वे अगले स्तर पर नियमित अभिव्यक्तियों की तरह हैं।)।

वैसे भी, मैं Grammars के लिए और एक ही ~ के लिए Regular Expressions के लिए documentation खोज की है, लेकिन मैं एक व्याकरण के अंदर है और न ही किसी रेगुलर एक्सप्रेशन के अंदर किसी भी नहीं मिला।


cross posted on StackOverflow en español

+1

मैं उस सुविधा को भूल रहा हूं। –

+2

http://design.perl6.org/S05.html#line_876 – Christoph

उत्तर

6

आप डिजाइन दस्तावेजों में एक स्पष्टीकरण यहाँ पा सकते हैं: https://github.com/perl6/roast/blob/master/S05-metachars/tilde.t#L6-L81

यह ज्यादातर तुम क्या खोज की है: अभिव्यक्ति है कि सही ब्रैकेट इस प्रकार के साथ टिल्ड, और के लिए खोजों की जगह यह ब्रैकेट पात्रों के बीच है। हालांकि, यह अभिव्यक्ति को ब्रैकेट को पहचानने में मदद करने के लिए कुछ अतिरिक्त जादू जोड़ता है और अंतिम ब्रैकेट नहीं मिलने पर अधिक उपयोगी त्रुटि संदेश प्रदान करता है। तो आप आमतौर पर वही परिणाम प्राप्त कर सकते हैं, लेकिन हमेशा नहीं।

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