मैं एक ऐसा एप्लीकेशन लिख रहा हूं जो विभिन्न "कमांड" तारों में लगेगा। मैं आदेशों को टोकन करने के लिए स्कैला संयोजक पुस्तकालय को देख रहा हूं। मुझे कई मामलों में लगता है कि मैं कहना चाहता हूं: "ये टोकन एक ऑर्डरलेस सेट हैं, और इसलिए वे किसी भी क्रम में दिखाई दे सकते हैं, और कुछ दिखाई नहीं दे सकते हैं"।ग्रामर, स्कैला पार्सिंग कॉम्बिनेटर्स और ऑर्डरलेस सेट
व्याकरण के अपने मौजूदा ज्ञान के साथमैं ऐसे (छद्म व्याकरण) के रूप में दृश्यों के सभी संयोजनों को परिभाषित करने के लिए होगा:
command = action~content
action = alphanum
content = (tokenA~tokenB~tokenC | tokenB~tokenC~tokenA | tokenC~tokenB~tokenA .......)
तो मेरे सवाल है, पर विचार tokenA-सी अद्वितीय हैं, वहाँ एक छोटा रास्ता है एक व्याकरण का उपयोग कर किसी भी आदेश के एक सेट को परिभाषित करने के लिए?
इस मामले में प्रत्येक टोकन एक जेसन शैली वस्तु संपत्ति है। तो एक आदेश "टोडो संदेश: लिंक टोडो क्लास को डेटाबेस" जैसा दिख सकता है: देय: अगले tuesday "। तो स्कैला शैली में परिभाषित सामान्य नियम" टोकन = अल्फानम ~ ':' ~ repsep (अल्फानम, '') जैसा कुछ है। लेकिन मुझे विशिष्ट गुणों को अलग-अलग संभालने की आवश्यकता है। –
और आपको यह सुनिश्चित करना होगा कि वही एक से अधिक बार नहीं होता है? – ziggystar
हाँ यह योजना है, कुछ गुण वैकल्पिक हैं, और उन्हें केवल एक बार होना चाहिए। –