2012-05-31 25 views
6

तो मैं एटीएलआर वी 3.4 के साथ एक्लिप्स में व्याकरण कर रहा हूं और मैंने एक ऐसा काम किया है जो काम करता है और मैं यह सुनिश्चित करना चाहता हूं कि जब मैं इसे संपादित करता हूं तब भी सबकुछ काम करता है। मैं हर बार व्याख्याता में जा सकता हूं लेकिन यह समय की एक बड़ी बर्बादी की तरह लगता है।परीक्षण एएनटीएलआर व्याकरण

सवाल: मैं Gunit बारे में पढ़ा है, लेकिन लिंक यह डाउनलोड करने के लिए Gunit देता है: ($ http://antlr.org/hudson/job/gUnit/org.antlr Gunit/lastSuccessfulBuild /) काम नहीं करता। मैं गुनिट कैसे प्राप्त कर सकता हूं। व्याकरण का परीक्षण करने का सबसे अच्छा तरीका क्या है? क्या यह वास्तव में gnnit है या मैं सिर्फ junit परीक्षण की तरह जावा परीक्षण करना चाहिए?

+1

gUnit को कुछ संस्करणों के लिए एंटरलर टूल में शामिल किया गया है, नहीं? –

+0

एक बार जब मैंने एएनटीएलआर-पूर्ण-3.4.jar डाउनलोड किया है तो मैं gUnit तक कैसे पहुंच सकता हूं? – jQwierdy

उत्तर

5

मैंने हाल ही में एक्लिप्स का उपयोग करके दो एएनटीएलआर 3 असाइनमेंट (मैं अपने मास्टर इन कंप्यूटर साइंस पर काम कर रहा हूं) पूरा कर लिया है। मुझे कोई भी दस्तावेज़ नहीं मिला जिसमें ग्रहण में व्याकरण स्थापित करने, कॉन्फ़िगर करने, लिखने और डिबग करने की प्रक्रिया थी। इसलिए, विभिन्न मुद्दों के माध्यम से काम करने के बाद, मुझे परीक्षण करने के लिए एक्लिप्स में रहने के लिए सबसे आसान काम मिला।

प्रक्रिया का उपयोग करने के लिए मैंने उपयोग किया है (नीचे उल्लिखित) आपके पास पहले एएनटीएलआर आईडीई v2.1.2 स्थापित होना चाहिए। इसे सीधे ग्रहण इंडिगो से जोड़ें: http://antlrv3ide.sourceforge.net/updates। इस साइट पर एएनटीएलआर आईडीई का उपयोग करने पर कुछ उपयोगी दस्तावेज़ भी हैं। एक बार स्थापित हो जाने पर, आईडीई को कॉन्फ़िगर किया जाना चाहिए। वीडियो ट्यूटोरियल थोड़ी देर पुरानी हैं लेकिन सहायक हैं। configuring ANTLR IDE in Eclipse पर मार्गदर्शन करने के लिए विस्तृत विवरण देखें। मुख्य विन्यास आइटम जावा आउटपुट फ़ोल्डर है। ग्रहण में विंडोज, प्राथमिकताएं, ANTLR, कोड जेनरेटर को जाकर इसे करें, परियोजना रिश्तेदार फ़ोल्डर चेक करें और आउटपुट फ़ोल्डर नाम बॉक्स में कोई फ़ोल्डर नाम (मेरा "antlr-जावा" कहा जाता है, दूसरों "उत्पन्न" का उपयोग करें) टाइप करें।

टेस्ट/डीबग ANTLR के लिए ग्रहण इंडिगो में ANTLR IDE के साथ प्रक्रिया

  1. के बाद एक नई परियोजना बनाई गई है, राइट क्लिक करें, तो कॉन्फ़िगर का चयन करें, ANTLR परियोजना में कनवर्ट ...
  2. .g फ़ाइल में व्याकरण बनाएं और इसे सहेजें। नोट: फ़ाइल नाम को व्याकरण नाम से मेल खाना है।
  3. यदि महत्वपूर्ण त्रुटियां हैं, तो व्याकरण को डीबग करें। ग्रहण एएनटीएलआर त्रुटि दिखाता है और कौन सी रेखाएं प्रभावित होती हैं।सबसे पहले, इन त्रुटियों को समझना मुश्किल लगता है लेकिन उन्हें विभिन्न संसाधनों का उपयोग करके काम किया जा सकता है: - टेरेंस पार द्वारा परिभाषित एएनटीएलआर संदर्भ जिसने एएनटीएलआर लिखा - एएनटीएलआर संदर्भ मैनुअल - त्रुटि को Google; कई बार आप यहां स्टैक ओवरफ्लो पर समाप्त हो जाएंगे; विशेष रूप से , बार्ट Kiers दोनों जानकार और मददगार है (बार्ट: के लिए THX मदद आप नहीं पता था कि आप मुझे दिया)
  4. पहले गंभीर ANTLR त्रुटियों के बाद सहेजें पर हल कर रहे हैं, जावा आउटपुट फ़ोल्डर आप कॉन्फ़िगर किया गया ग्रहण में बनाया जाएगा और उस फ़ोल्डर में एक जावा फ़ाइल भी बनाई जाएगी।
  5. जावा आउटपुट फ़ोल्डर पर राइट-क्लिक करें, बिल्ड पथ का चयन करें, स्रोत फ़ोल्डर के रूप में उपयोग करें। यह एक्लिप्स को बताता है कि परियोजना के जावा स्रोत को कहां देखना है।
  6. नई जावा फ़ाइल में त्रुटियों की संभावना है। इसे चुनें, फिर जावा त्रुटियों के लिए देखकर खोजें। अपने व्याकरण या जावा फ़ाइल पर वापस जाएं, त्रुटियों को सही करें, और व्याकरण को फिर से सहेजें जब तक कि व्याकरण और जावा दोनों फाइलें त्रुटि मुक्त न हों, फिर इसे चलाएं।
  7. इस बिंदु से, यह सामान्य संशोधित-रन-डीबग चक्र है।
  8. मुझे केवल एक अन्य ग्रहण परिवर्तन की आवश्यकता है जो कमांड लाइन पैरामीटर का परीक्षण करने के लिए कुछ रन कॉन्फ़िगरेशन बनाने के लिए था।
+0

एम्बेडेड लिंक के साथ संपादित उत्तर। – cb4

1

आप Gunit there डाउनलोड कर सकते हैं लेकिन मुझे लगता है कोई नवीनतम संस्करण है ...

प्रयास करें Jarvana ... नवीनतम संस्करण है 3.4: http://repo1.maven.org/maven2/org/antlr/gunit/3.4/gunit-3.4.jar

@Dave न्यूटन सही है। एएनटीएलआर v3.1 के रूप में, gUnit को मुख्य एएनटीएलआर टूल जार में शामिल किया गया है जैसा कि there कहा गया है।


मुझे अब तक गुनिट के बारे में पता नहीं था। यह व्याकरण परीक्षण के लिए बहुत अच्छा लग रहा है, लेकिन मुझे लगता है कि जुनीट परीक्षण उनके काम करेंगे ...

0

यह पहली बार मैंने गिनिट के बारे में सुना और इसे पढ़ा। (मैं एएनटीएलआर का अधिक उपयोग नहीं करता हूं।) यह दिलचस्प लगता है, लेकिन आधा बेकार है।

व्याकरण को मान्य करने के लिए मेरा दृष्टिकोण वास्तव में पूरे पार्सर को "सामान्य" इकाई परीक्षणों के साथ मान्य करना है। बात यह है कि, आपके पास वैसे भी यूनिट परीक्षण होना चाहिए और व्याकरण प्रतिगमन की जांच करने वाले परीक्षणों में आप इसे वहां जोड़ सकते हैं। यह बात मेरे अनुभव में है कि ज्यादातर त्रुटियां अर्थपूर्ण विश्लेषण और कमी में आती हैं, न कि व्याकरण।

+0

क्या आप मुझे उस बारे में और बता सकते हैं कि आप अपनी जानकारी ढूंढने के लिए गए थे? – jQwierdy

+0

ग्निट पर जानकारी ज्यादातर इस शब्द पर एक त्वरित Google थी। दूसरा 10 साल की भाषा भाषा पार्स और कंपाइलर्स का पेशेवर अनुभव है। बात यह है कि व्याकरण एक आवेदन में रहेंगे; जब तक आप केवल अकादमिक उदाहरण नहीं बनाते। एप्लिकेशन में पहले से ही यूनिट परीक्षण हैं, क्यों न केवल इसका उपयोग करें। खासकर जब से उपयोग किया जाता है कि व्याकरण वैध है लेकिन शेष कोड बकवास करता है। – rioki

+0

बड़ा कारण यह है कि यह निर्धारित करने के लिए एक बड़ी असुविधा है कि यह चल रहा है (स्क्रैच से व्याकरण का निर्माण करते समय) और आपको यह सुनिश्चित करने के लिए व्याकरण हवाओं में जाना होगा कि आपने जो कुछ भी किया है वह काम कर रहा है। कुछ स्वचालित परीक्षण कोड स्वचालित रूप से आपको बताएंगे कि प्रत्येक संकलन को किसने तोड़ दिया है। हमारे पास कोई आवेदन नहीं है क्योंकि हम इसे स्वयं डिजाइन कर रहे हैं, इसलिए हमें यह सुनिश्चित करना होगा कि यह काम कर रहा है, कोई अतिव्यापी परियोजना नहीं है जो हमें बताएगी कि यह काम कर रहा है या नहीं। मुझे नहीं पता कि क्या यह बहुत समझाता है, बस मुझे बताएं :) – jQwierdy

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