2013-10-27 23 views
7

क्या कोई व्याकरण मेल नहीं खाता है तो त्रुटि संदेश उत्पन्न करने के लिए perl6 प्राप्त करने का कोई तरीका है? या कम से कम संसाधित अंतिम डेटा की स्थिति वापस लौटते हैं? सिंटैक्स त्रुटियों को ठीक करना मुश्किल है यदि मुझे पार्सर से मिलता है तो 'कोई मिलान नहीं' होता है।perl6 व्याकरण, त्रुटि रिपोर्टिंग

उत्तर

11

यदि आपका ध्यान आपके व्याकरण के उपयोगकर्ताओं के लिए संदेश उत्पन्न कर रहा है, तो Generating Good Parse Errors from a Parser और Grammar::ErrorReporting देखें।

बाकी का उत्तर डिबगिंग के बारे में है।

सबसे पहले, आप पर्ल 6 रेगेक्स में मनमाने ढंग से बंद (कोड) एम्बेड कर सकते हैं। (बस रेगेक्स के बीच में { your code goes here } टाइप करें।) तो आप डिबगिंग के लिए उपयोगी जहां { say ... } कथन छिड़का सकते हैं।

लेकिन बेहतर विकल्प हैं।

क्या आप "बैटरी शामिल" राकुडो स्टार वितरण का उपयोग कर रहे हैं? (आपको तब तक होना चाहिए जब तक आपके पास अच्छा कारण न हो।) यदि ऐसा है, तो आप एक पार्स का पूरा पता लगाने के लिए use Grammar::Tracer; (जैसा कि http://www.jnthn.net/papers/2011-yapceu-grammars.pdf पर स्लाइड में वर्णित है) को जोड़ सकते हैं।

मेरी व्यक्तिगत प्राथमिकता राकुडो डीबगर का उपयोग करना है जो सब कुछ प्रदान करता है व्याकरण :: ट्रैसर प्लस एक और बहुत कुछ करता है (सभी पर्ल 6 कोड के एकल चरण, ब्रेकपॉइंट्स, इत्यादि सहित रेगेक्स और व्याकरण)। डीबगर इस video में पेश किया गया है।

यदि आपके कोई और प्रश्न हैं, तो मैं आपको हमेशा मित्रवत IRC channel #perl6 पर जाने की सलाह देता हूं।

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