मेरे पास एक सिंटैक्स परिभाषा है जो इस तरह दिखती है
keyword LegendOperation = 'or' | 'and';
syntax LegendData
= legend_data: LegendKey '=' {ID LegendOperation}+ Newlines
;
मुझे इसे इस तरह से फंसाने की ज़रूरत है जो मुझे इस जानकारी को बनाए रखने की अनुमति देता है कि आईडी के लिए विभाजक 'या' या 'और' है, लेकिन मुझे दस्तावेज़ों में कुछ भी नहीं मिला कि क्या विभाजक को बरकरार रखा गया है और यदि यह कर सकता है इंपोड द्वारा उपयोग किया जा सकता है। प्रारंभ में, मैंने उस जानकारी को रखने की कोशिश करने के लिए नीचे जैसा कुछ किया।
syntax LegendData
= legend_data_or: LegendKey '=' {ID 'or'}+ Newlines
> legend_data_and: LegendKey '=' {ID 'and'}+ Newlines
;
जिस मुद्दे में मैं भाग लेता हूं वह यह है कि पाठ के तीन रूप हैं जिन्हें इसे पार्स करने में सक्षम होना चाहिए
. = Background
@ = Crate and Target
# = Crate or Wall
और जब यह पहली पंक्ति को पार्स करने का प्रयास करता है तो यह एक अस्पष्टता त्रुटि हिट करता है, जब इसे एक तत्व के साथ legend_data_or के रूप में पार्स करना चाहिए (शायद मैंने प्राथमिकताओं का उपयोग करने का तरीका गलत समझा)। ईमानदारी से, मैं उस दूसरे प्रारूप का उपयोग करने में सक्षम होना पसंद करूंगा, लेकिन क्या इसे स्पष्ट करने का कोई तरीका है?
या तो विभाजक को बनाए रखते हुए पहले सिंटैक्स को फंसाने का एक तरीका या दूसरे प्रारूप को असंबद्ध करने का एक तरीका मुझे इस मुद्दे पर मदद करेगा।
1 उत्तर
मैं अंत में एक सुरुचिपूर्ण समाधान के साथ आने का प्रबंधन नहीं कर सका। दूसरों के साथ चर्चा करने से हम सबसे अच्छे तरीके से आ सकते थे
syntax LegendOperation
= legend_or: 'or' ID
| legend_and: 'and' ID
;
syntax LegendData
= legend_data: LegendKey '=' ID LegendOperation* Newlines
;
जो काम करता है और हमें विभाजक पर जानकारी को बनाए रखने की अनुमति देता है लेकिन उपयोग करने योग्य डेटाटाइप में बदलने के लिए पोस्ट-प्रोसेसिंग की आवश्यकता होती है।
संबंधित सवाल
नए सवाल
rascal
रास्कल मेटाप्रोग्रामिंग के लिए एक प्रायोगिक डोमेन विशिष्ट भाषा है, जैसे स्थैतिक कोड विश्लेषण, कार्यक्रम परिवर्तन और डोमेन विशिष्ट भाषाओं के कार्यान्वयन। इसमें रिलेशनल कैलकुलस और टर्म पुनर्लेखन से प्राप्तियां शामिल हैं। इसका सिंटैक्स और शब्दार्थ प्रक्रियात्मक (अनिवार्य) और कार्यात्मक प्रोग्रामिंग पर आधारित हैं।