2011-05-21 16 views
5

मैं language बनाने की कोशिश कर रहा हूं, और इसके कुछ हिस्सों में मैं असंवेदनशील होना चाहता हूं। मुझे यकीन है कि यह कुछ आसान है, लेकिन मैं इसे खोजने में सक्षम नहीं हूं।केस असंवेदनशील स्कैला पार्सर-संयोजक

संपादित करें: पुन: पढ़ने से मुझे इस प्रश्न से शर्म आती है। Here एक असफल परीक्षण है जो बताता है कि मेरा क्या मतलब है।

उत्तर

14

एक शाब्दिक के बजाय नियमित अभिव्यक्ति का उपयोग करें।

lazy val caseSensitiveKeyword: Parser[String] = "casesensitive" 
lazy val caseInsensitiveKeyWord: Parser[String] = """(?i)\Qcaseinsensitive\E""".r 

(regex इस्तेमाल किया वाक्य रचना पर जानकारी के लिए java.util.Pattern के लिये दस्तावेज देखें।)

आप इस कर रहे हैं अक्सर आप स्ट्रिंग दलाल सकता है वाक्य रचना सरल करने के लिए:

class MyRichString(str: String) { 
    def ignoreCase: Parser[String] = ("""(?i)\Q""" + str + """\E""").r 
} 

implicit def pimpString(str: String): MyRichString = new MyRichString(str) 

lazy val caseInsensitiveKeyword = "caseinsensitive".ignoreCase 
+0

धन्यवाद ! बहुत अच्छी तरह से काम करता है। – Andres

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