2011-02-24 8 views
15

मेरे पास डोमेन विशिष्ट भाषा के लिए व्याकरण है, और मुझे उस भाषा के लिए जावास्क्रिप्ट कोड संपादक बनाना होगा। क्या कोई उपकरण है जो मुझे ए उत्पन्न करने की अनुमति देगा) एक जावास्क्रिप्ट वृद्धिशील पार्सर बी) जावास्क्रिप्ट ऑटो-पूर्ण/ऑटो-सुझाव इंजन?क्या कोई डोमेन विशिष्ट भाषा पार्सिंग/स्वत: पूर्ण करने के लिए कोई जावास्क्रिप्ट ढांचायां हैं?

धन्यवाद!

उत्तर

3

आप jison, एक जेएस पार्सर जनरेटर चाहते हैं। ऑटो-पूर्ण/ऑटो-सुझाव के संदर्भ में ... वहां से अधिकांश सामान मुझे पता है कि कोड पूर्ण होने के बजाए शब्द पूर्ण होने पर अधिक जानकारी है। लेकिन एक बार जब आपके पास पार्सर चल रहा है तो मुझे नहीं लगता कि भाग बहुत मुश्किल है ..

+0

क्या आप कृपया कुछ संकेत प्रदान कर सकते हैं कि जेसन का उपयोग करके संदर्भ संवेदनशील शब्द पूर्णता कैसे प्रदान की जा सकती है? एसक्यूएल का उदाहरण लेने की तरह: CREATE (ctrl + space) * टेबल * और इसी तरह दिखाना चाहिए। –

1

यह मुश्किल है। मैं खुद एक ही तरह की चीज कर रहा हूं।

एक दृष्टिकोण है:

आप की जरूरत है एक पार्सर जो आप वर्तमान कर्सर स्थिति से पहले टोकन जब तक पाठ के लिए वर्तमान में संभव ASTs की एक सरणी दे देंगे।

वहां से आप अगले टोकन को कई प्रकार के (आमतौर पर केवल एक) देख सकते हैं, और आंशिक पाठ के आधार पर पूरा कर सकते हैं।

यदि मुझे कभी भी मेरा वृद्धिशील पार्सर काम मिल रहा है, तो मैं एक लिंक भेजूंगा।

शुभकामनाएं, और मुझे बताएं कि क्या आपको ऐसा पैकेज मिलता है जो यह करता है।

क्रिस।

+3

क्या आपने कभी ऐसा वृद्धिशील पार्सर बनाने में कामयाब रहे? – Shlomi

2

एक को लागू सामग्री का उदाहरण सहायता (स्वत: पूर्ण) Chevrotain जावास्क्रिप्ट पार्सिंग डीएसएल का उपयोग कर:

https://github.com/SAP/chevrotain/tree/master/examples/parser/content_assist

Chevrotain विशेष रूप से डिजाइन किया गया था इस्तेमाल किया पारसर्स निर्माण करने के लिए ( की भाग के रूप में) संपादकों/आईडीई में भाषा सेवाएं उपकरण। प्रासंगिक सुविधाओं में से कुछ हैं:

  • स्वत: त्रुटि वसूली/दोष सहिष्णुता क्योंकि संपादकों और IDEs 'ज्यादातर वैध' आदानों को संभालने में सक्षम होने की जरूरत है।
  • प्रत्येक ग्रामर नियम का प्रारंभिक नियम के रूप में उपयोग किया जा सकता है क्योंकि एक संपादक/आईडीई केवल प्रदर्शन कारणों से वृद्धिशील पार्सिंग लागू करना चाहता है।
+0

पार्सिंग (त्रुटि वसूली के साथ भी) आवश्यक है लेकिन शायद ही पर्याप्त है। पार्सिंग फ्रेमवर्क परिणामस्वरूप समस्या को हल करने के लिए वास्तव में पर्याप्त नहीं हैं। पार्सिंग के बाद लाइफ देखें: http://www.semanticdesigns.com/Products/DMS/LifeAfterParsing.html –

+0

प्रदान किए गए उदाहरण में पार्सर ** अलग चरण ** में आगे की प्रक्रिया के लिए सिंटैक्टिक जानकारी और संदर्भ एकत्र करता है। अर्थपूर्ण सामग्री सहायता पार्सिंग से अलग से की जाती है। पार्सिंग पुस्तकालय/ढांचे वास्तव में संपादकों/आईडीई के लिए भाषा सेवाओं का निर्माण करने के लिए पर्याप्त नहीं हैं।मैं इसे स्पष्ट बनाने के लिए अपनी पोस्ट संपादित करूंगा शेवरोटैन को संपादकों के निर्माण के लिए टूल श्रृंखला के ** भाग ** के रूप में डिजाइन किया गया था। और एक पूरा समाधान नहीं है। – bd82

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

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