2013-07-08 1 views
7

में केस-असंवेदनशील मिलान नियमित अभिव्यक्तियों का उपयोग करके केस-असंवेदनशील कीवर्ड मिलान के बारे में my earlier question से संबंधित है।मार्पा

क्या Marpa में तारों के मामले को असंवेदनशील रूप से मिलान करना संभव है? यदि हां, तो कैसे?

मान लीजिए मैं व्याकरण

:start ::= script 
identifier ~ [\w]+ 
script ::= 'script' identifier code 
code ::= command* 
command ::= 'run' | 'walk' | 'stop' 

मैं इसे कैसे script, Script, SCRIPT या कम और बड़े अक्षरों का कोई अन्य संयोजन से किसी से मेल कर सकते हैं?

+0

बस 7-बिट ASCII, आपके पसंदीदा ओएस पर विस्तारित 8-बिट ASCII एन्कोडिंग, या पूर्ण यूनिकोड? – hippietrail

+0

जैसा कि प्रश्न में प्रोजेक्ट पर्ल में लिखा गया था, मुझे लगता है: जो भी पर्ल डेटा के लिए सही एन्कोडिंग सोचता है। हालांकि, चूंकि व्याकरण प्रोग्रामिंग भाषा के लिए है, 7-बिट ASCII पहचानकर्ताओं के लिए पर्याप्त होगा। – onitake

+0

पर्ल शायद किसी भी प्रोग्रामिंग भाषा के विभिन्न एन्कोडिंग के लिए सबसे व्यापक समर्थन है। मुझे नहीं पता कि क्या मार्पा सिर्फ पर्ल के रेगेक्स का उपयोग करता है या सीमित सबसेट को फिर से लागू करता है। लेकिन सामान्य रूप से किसी भी भाषा में मैंने हमेशा [एसएस] [सीसी] [आरआर] [iI] [पीपी] [टीटी] 'जैसे रेगेक्स का उपयोग किया है। – hippietrail

उत्तर

3

केस-असंवेदनशीलता निर्दिष्ट करने का एक सीधा तरीका नहीं है। बेशक, आप चरित्र वर्गों को एक साथ जोड़ सकते हैं: [एसएस] [सीसी] [आरआर] [iI] [पीपी] [टीटी], लेकिन यह बहुत अजीब है।

क्षमा करें। केस-असंवेदनशील तार जोड़ने के लिए एक अच्छी सुविधा होगी।

अद्यतन: 2.076000 के रूप में, नवीनतम अनुक्रमित रिलीज, मार्पा :: आर 2 में अब एक स्ट्रिंग और चरित्र वर्गों के लिए आईसी संशोधक है, जिससे उन्हें केस-असंवेदनशील बना दिया गया है। दस्तावेज़ों में, https://metacpan.org/pod/Marpa::R2::Scanless::DSL#Single-quoted-strings और https://metacpan.org/pod/Marpa::R2::Scanless::DSL#Character-classes देखें।

+0

मैं देखता हूं। क्या G0 पार्सर को प्रभावित करने का कोई अन्य तरीका है, जैसे कोड डालने से तुलना करने से पहले तारों को कम मामले में परिवर्तित कर दिया जाता है? एक और समाधान जो मैं सोच सकता हूं वह इनपुट तैयार करना और किसी भी शब्द को कम मामले में पहले से मेल खाने वाली चीज़ों को परिवर्तित करना है। यह संभवतः सामान्य 's ///' का उपयोग करके किया जा सकता है। – onitake

+1

जी 0 पार्सर को बाईपास करना और अपने स्कैनर का उपयोग करना संभव है: https://metacpan.org/module/JKEGL/Marpa-R2-2.062000/pod/Scanless/R.pod#Internal-and-external- स्कैनिंग। मुझे नई सुविधाओं के लिए अपनी प्राथमिकताओं के लिए केस-असंवेदनशीलता जोड़नी होगी। –

+0

धन्यवाद, मैं एक नज़र रखूंगा। – onitake