2008-09-09 16 views

उत्तर

1

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

इसके साथ समस्या यह है कि यह केवल व्याकरण में तार उत्पन्न कर सकता है, और जब तक आपका व्याकरण बहुत आसान न हो, परीक्षण स्थान असीम रूप से बड़ा होता है।

1

मैंने बिल्कुल वैज़ेन टिप्पणी की है (एक स्क्रिप्टिंग भाषा में एम्बेडेड डीएसएल का उपयोग करके)। यह एक हल्का दिलचस्प अभ्यास था, लेकिन उदाहरण के सबसे बुनियादी परीक्षणों को छोड़कर पार्सिंग, यह बहुत उपयोगी नहीं था। मेरे सबसे दिलचस्प परीक्षणों में से अधिकांश को अधिक परिष्कृत संबंधों के साथ करना है, जो कि बीएनएफ (या किसी अन्य संदर्भ मुक्त व्याकरण) में आसानी से व्यक्त कर सकते हैं।

0

यदि, कहें, तो आप एक कंपाइलर विकसित कर रहे हैं, तो आपके पास एक सार वाक्यविन्यास पेड़ डेटाटाइप हो सकता है। यदि ऐसा है, तो आप एक यादृच्छिक एएसटी उत्पन्न करने के लिए एक फ़ंक्शन लिख सकते हैं - इसके साथ, आप इसे एक स्ट्रिंग पर प्रिंट कर सकते हैं और अपने यूनिट परीक्षण में फ़ीड कर सकते हैं। यह इस तरह एक वैध कार्यक्रम होने की गारंटी है, क्योंकि ने आपके एएसटी के साथ शुरू किया था।

यदि मैं हास्केल या एमएल में एक कंपाइलर लिख रहा था, तो मैं QuickCheck का उपयोग करके ऐसा करता हूं।

0

Gramtest ऐसा एक ऐसा उपकरण है जो मनमाने ढंग से उपयोगकर्ता परिभाषित बीएनएफ व्याकरण से स्ट्रिंग उत्पन्न कर सकता है। आप ग्रैमेस्ट here के पीछे एल्गोरिदम के बारे में अधिक जानकारी पढ़ सकते हैं और टूल पर कुछ व्यावहारिक सुझाव here उपलब्ध हैं।

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