2009-06-23 10 views
5

क्या कोई जावास्क्रिप्ट ढांचा है जो जावास्क्रिप्ट सिंटैक्स का उपयोग करके एक पार्सिंग व्याकरण को परिभाषित करने की अनुमति देता है, जिस तरह से Irony सी # के लिए करता है?क्या जावास्क्रिप्ट में पार्सर्स को परिभाषित करने के लिए कोई ढांचा है?

उत्तर

3

मुझे आयरनी काम करने के बारे में बहुत कुछ पता नहीं है, लेकिन क्रिस डबल की एक लाइब्रेरी है जो आपको जावास्क्रिप्ट में व्याकरण को परिभाषित करने देती है: http://www.bluishcoder.co.nz/2007/10/javascript-parser-combinators.html। कोड available on GitHub है।

यह एक "पार्सर संयोजक" लाइब्रेरी है जिसका अर्थ है कि आप अपने व्याकरण में प्रत्येक उत्पादन के लिए पार्सर्स को एक बड़े पार्सर में जोड़ते हैं जो पूरी चीज को पार करता है। प्रत्येक "सब-व्याकरण" एक ऐसा फ़ंक्शन है जिसे आप लाइब्रेरी फ़ंक्शंस को कॉल करके बनाते हैं।

+0

धन्यवाद, कि बात मैं के लिए देख रहा था, मैं करीब से देख लूँगा हो रहा है। –

0

यह वही नहीं है जो आपको चाहिए लेकिन this article जावास्क्रिप्ट में जावास्क्रिप्ट में एक रिकर्सिव वंश पार्सर बनाने के माध्यम से चला जाता है।

+1

यह वास्तव में शीर्ष ऑपरेटर प्राथमिकता है। मुझे लगता है कि यह पुस्तक के एक अध्याय में भी मिलता है, "सुंदर कोड।" – Nosredna

+1

रिकर्सिव वंश शीर्ष पर है - "वंश" का अर्थ नीचे नीचे है और "रिकर्सिव" का अर्थ है कि प्रोडक्शंस नियम फ़ंक्शन के रूप में स्वयं को कॉल करते हैं। ऑपरेटर प्राथमिकता यह दर्शाती है कि आगे कैसे दिखना है। – eulerfx

3

मैं एक जावास्क्रिप्ट पार्सिंग डीएसएलChevrotain कहा जाता है का निर्माण किया है।

स्रोत:https://github.com/SAP/chevrotain

ऑनलाइन खेल का मैदान:http://sap.github.io/chevrotain/playground/

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

इसका इस्तेमाल करते हुए इसी तरह की है "हाथ इमारत" एक पुनरावर्ती सभ्य पार्सर, केवल इस तरह के रूप सिरदर्द का सबसे बिना करने के लिए:

  • अग्रावलोकन समारोह सृजन (निर्णय लेने से जो विकल्प लेने के लिए)
  • स्वत: त्रुटि वसूली ।
  • बाएं रिकर्सन डिटेक्शन
  • अस्पष्टता जांच।
  • स्थिति जानकारी।
  • ...

Chevrotain कि स्वचालित रूप से संभालती है।

0

PEG.js एक समाधान हो सकता है।

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

विशेषताएं

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

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

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