मैं जंग में एक पार्सर लागू कर रहा हूं और व्हाइटस्पेस एक आम पैटर्न है जिसे मैं match
पैटर्न में पुन: उपयोग करना चाहता हूं।मैं जंग में एक चर में एक पैटर्न कैसे स्टोर कर सकते हैं?
इस कोड काम करता है:
let ch = ' ';
match ch {
' ' | '\n' | '\t' | '\r' => println!("whitespace"),
_ => println!("token"),
}
यह वास्तव में दोहराव मिलेगा अगर मैं खाली स्थान के पैटर्न हर बार निर्दिष्ट करने पर रखने की जरूरत है। मैं इसे एक बार परिभाषित करना चाहता हूं और इसका पुन: उपयोग करना चाहता हूं।
let whitespace = ' ' | '\n' | '\t' | '\r';
let ch = ' ';
match ch {
whitespace => println!("whitespace"),
_ => println!("token"),
}
संकलक ws
काम पसंद नहीं है: मैं की तरह कुछ करना चाहते हैं। यह |
को वैकल्पिकता के बजाय बाइनरी ऑपरेशन के रूप में व्याख्या करता है।
पैटर्न किसी भी तरह चर में संग्रहीत किया जा सकता है? क्या ऐसा करने के लिए कोई बेहतर या अधिक मूर्ख तरीका है?
सी में यह एक मैक्रो के लिए एक अच्छा उम्मीदवार की तरह दिखेगा, आश्चर्य है कि मैक्रो जंग में जाने का तरीका भी है ... – turbulencetoo
@ टर्बुलेंसेतु एक दिलचस्प विचार है। सी में, एक मैक्रो निम्न-स्तरीय टेक्स्ट मैनिपुलेशन होता है, जिसके परिणामस्वरूप अमान्य स्रोत कोड हो सकता है। जंग में, आप मैक्रो का आह्वान कर सकते हैं स्थानों की संख्या सीमित है और विस्तार वाक्य रचनात्मक रूप से मान्य होना चाहिए। मुझे नहीं लगता कि पैटर्न मान्य स्थानों के सेट में हैं। हालांकि, आप पाठ फ़ाइलों को उत्पन्न करने के लिए हमेशा कुछ प्रकार की बिल्ड स्क्रिप्ट कर सकते हैं जो परिणामस्वरूप वैध जंग कोड में होते हैं। – Shepmaster