मेरे पास एक प्रोजेक्ट है जहां उपयोगकर्ता को जावास्क्रिप्ट में पूरी तरह से लिखा गया ui के लिए निर्देशों का एक सेट परिभाषित करने की आवश्यकता होती है। मुझे निर्देशों की एक स्ट्रिंग को पार्स करने की क्षमता रखने की आवश्यकता है और फिर उन्हें निर्देशों में अनुवादित करने की आवश्यकता है। क्या पार्सिंग के लिए वहां कोई पुस्तकालय है जो 100% जावास्क्रिप्ट है? या जनरेटर जो जावास्क्रिप्ट में उत्पन्न होगा? धन्यवाद!लेक्सर जावास्क्रिप्ट में लिखा है?
उत्तर
कुछ http://jscc.phorward-software.com/ की तरह कुछ हो सकता है?
जेएस/सीसी JavaScript and ECMAScript -डिवेट्स के लिए पहली उपलब्ध पार्सर विकास प्रणाली है। यह एक उत्पादक कंपाइलर विकास प्रणाली के निर्माण के इरादे से और दोनों लोगों के लिए उपयोग में आसान शैक्षिक वातावरण बनाने के इरादे से विकसित किया गया है, जिसमें पेर्स टेबल पीढ़ी को नीचे-नीचे पार्सिंग में सामान्य किया जाता है।
मंच स्वतंत्र सॉफ्टवेयर यूनियनों दोनों: के लिए रेगुलर एक्सप्रेशन आधारित lexical analyzer जनरेटर मिलान व्यक्तिगत इनपुट चरित्र धारा से टोकन और एक LALR(1) पार्सर जेनरेटर, कंप्यूटिंग एक दिया context-free grammar विनिर्देश के लिए पार्स टेबल और एक स्टैंड का निर्माण -अलोन, काम कर रहे पार्सर। जेएस/सीसी को खिलाया गया संदर्भ-मुक्त व्याकरण Backus-Naur-Form-आधारित मेटा भाषा में परिभाषित किया गया है, और नियम के कमी पर व्यक्तिगत अर्थात् कोड का मूल्यांकन करने की अनुमति देता है।
जे एस/सीसी ही पूरी तरह ECMAScript तो यह कई अलग अलग तरीकों क्रियान्वित किया जा सकता में लिखा गया है: मंच स्वतंत्र, ब्राउज़र आधारित एक वेबसाइट पर एम्बेडेड जावास्क्रिप्ट के रूप में, एक Windows स्क्रिप्ट होस्ट आवेदन के रूप में, एक संकलित रूप में JScript.NET निष्पादन योग्य, मोज़िला/राइनो या मोज़िला/स्पाइडरमॉन्की के रूप में व्याख्या किए गए एप्लिकेशन, या विंडोज़ पर एक वी 8 शेल स्क्रिप्ट, * निक्स, लिनक्स और मैक ओएसएक्स। हालांकि, उत्पादक निष्पादन के लिए, कमांड लाइन संस्करणों का उपयोग करने की अनुशंसा की जाती है। ये संस्करण एक जेएस/सीसी पार्सर विनिर्देश से एक पूर्ण कंपाइलर को इकट्ठा करने में सक्षम हैं, जिसे तब .js जावास्क्रिप्ट स्रोत फ़ाइल में संग्रहीत किया जाता है।
यह यहां स्थानांतरित हो गया है: http://jscc.phorward-software.com/ – KnowHowSolutions
'निर्देशों के सेट' के डिजाइन के आधार पर, आप जावास्क्रिप्ट के अंतर्निहित eval
फ़ंक्शन का उपयोग करने में सक्षम हो सकते हैं, जो जावास्क्रिप्ट स्रोत को पार करता है; आप निर्देशों को जावास्क्रिप्ट कोड में बदलने के लिए एक सरल अनुवादक लिखने में सक्षम हो सकते हैं।
वैसे, एक्सएसएस छेद के बारे में बहुत सावधान रहें।
यह संभवतः एक वाक्यविन्यास होगा जो जावास्क्रिप्ट के लिए बहुत सरल और असंबंधित है। यह एक और समूह द्वारा परिभाषित किया जा रहा है जिसके साथ मैं काम कर रहा हूं। – Phobis
यदि यह एक बहुत ही सरल वाक्यविन्यास है, तो आप आसानी से जावास्क्रिप्ट में इसे बदलने में सक्षम हो सकते हैं, शायद परिवर्तित स्रोत के लिए सहायक कार्यों के सेट के साथ। – SLaks
सरल पार्सिंग कार्यों के लिए मैं प्रैट के Top Down Operator Precedence parser के एक संस्करण का उपयोग करने का बहुत शौकिया हूं। जबकि प्रैट ने पुरानी लिस्प बोलीभाषा का उपयोग करके मूल पत्र लिखा था, वही अवधारणाओं का उपयोग किसी भी भाषा में आसानी से किया जा सकता है। वास्तव में, डगलस क्रॉकफोर्ड ने Top Down Operator Precedence parsing in JavaScript पर एक उत्कृष्ट लेख लिखा, जो आपको केवल वही चाहिए जो आपको चाहिए।
क्या पार्सर डाउनलोड के लिए कुछ उपलब्ध है? मैंने पीडीएफ पढ़ने की कोशिश की लेकिन इसे लॉगिन की आवश्यकता है :( – Mottie
इसके बारे में क्षमा करें। मैंने मूल लिंक को एक मुफ्त पीडीएफ लिंक के साथ बदलने के लिए अपना जवाब संपादित कर लिया है। व्यक्तिगत रूप से, मुझे वास्तव में क्रॉकफ़ोर्ड का लेख अधिक उपयोगी होने के लिए मिला पेपर स्वयं, जिसे मैंने ज्यादातर ऐतिहासिक हितों के मामले में शामिल किया था। यदि आप लिस्प बोलते हैं, तो यहां पेपर पर आधारित कुछ कोड है: http://bit.ly/dFdrl, और यहां पाइथन-आधारित कार्यान्वयन भी है: http://bit.ly/12HNkV। – bcat
मैं ऐसा कुछ ढूंढ रहा था जिसमें कोई सुरक्षा छेद नहीं होगा और मैं दो संसाधनों में आया था। वे स्क्रिप्ट को पार्स नहीं करते हैं, लेकिन वास्तव में इसे "सुरक्षित" वातावरण में चलाते हैं - eval
फ़ंक्शन का उपयोग करते समय आप गारंटी नहीं दे सकते। तो, मैं अगर यह आप के लिए वास्तव में क्या देख रहे है पता नहीं है, लेकिन एक बार देख ले:
- jsandbox - जावास्क्रिप्ट सैंडबॉक्स
- Google Caja - आभासी आइफ्रेम।
यदि आप जावास्क्रिप्ट पार्सर्स और कोड जेनरेटर बनाना चाहते हैं, तो जावास्क्रिप्ट में मेटाआई कार्यान्वयन देखें।
यह सब से एक अद्भुत थोड़ा 10 पेज तकनीकी कागज पर आधारित है:
एक MetaII संकलक ट्यूटोरियल एक पूरी तरह से आत्म निहित संकलक प्रणाली है कि खुद को और अन्य भाषाओं का अनुवाद कर सकते निर्माण से अवगत वैल शोर्रे: मेटा II: ईमानदार-से-देवता 1 9 64 से एक सिंटेक्स-ओरिएंटेड कंपाइलर लेखन भाषा। मेटाइआई कंपाइलर पूर्ण आत्म-वर्णन लगभग 30 लाइनें है! मैं 1970 में इस पीठ से compilers निर्माण करने के लिए कैसे सीखा वहाँ एक दिमाग उड़ा पल जब आप अंततः grok कैसे संकलक खुद को पुनर्जीवित कर सकते हैं ....
ट्यूटोरियल MetaII, यह कैसे काम करता बताते हैं, और MetaII संकलन MetaII लागू करता है जावास्क्रिप्ट में आप अन्य लैंगुगों को पार्स करने और विभिन्न जावास्क्रिप्ट का उत्पादन करने के लिए आसानी से इस कंपाइलर को संशोधित कर सकते हैं।
मैं अपने कॉलेज के दिनों से वेबसाइट लेखक पता है, लेकिन वेबसाइट के साथ कुछ नहीं किया है।
यदि आप वास्तव में सिर्फ एक lexer लिए देख रहे हैं, prettify प्रयास करें।
आप एक lexer और कुछ नहीं बल्कि एक lexer चाहते हैं तो इस पर एक नज़र डालें: https://github.com/aaditmshah/lexer
यह कोड के कुछ ही लाइनों में लिखा शक्तिशाली सुविधाओं के बहुत सारे के साथ एक शुद्ध जावास्क्रिप्ट lexer है।
Jison शायद सबसे अच्छा और सबसे सक्रिय lexer & पार्सर जेनरेटर बाहर वहाँ जावास्क्रिप्ट के लिए है। यह बाइसन और वाईएसी की नकल करता है।
Jison: http://zaach.github.io/jison/
यदि आप चाहते हैं सिर्फ एक हल्के वजन lexer (~ 100 SLOC) आप Lexed.js पर एक नज़र ले जा सकते हैं: https://github.com/tantaman/lexed.js
Antlr version 4.5 अब एक Javascript target है।
https://github.com/SAP/chevrotain/blob/master/examples/parser/inheritance/inheritance.js
यह उदाहरण भी शामिल हैं:
यहाँ एक "छद्म" निर्देश के प्राकृतिक भाषा, जो Chevrotain पार्सिंग डीएसएल साथ में शुद्ध जावास्क्रिप्ट लागू किया गया था के लिए एक पार्सर का एक उदाहरण है कई प्राकृतिक भाषाओं (अंग्रेजी & जर्मन) व्याकरण वंशानुक्रम का उपयोग के लिए समर्थन करते हैं।
Chevrotain की श्रेणी के अंतर्गत आती है यह करता है के रूप में कोई कोड पीढ़ी "पुस्तकालयों बाहर वहाँ पार्सिंग के लिए है कि 100% जावास्क्रिप्ट रहे हैं"। का उपयोग करते हुए Chevrotain "हाथ क्राफ्टिंग" एक पुनरावर्ती सभ्य पार्सर, केवल बिना के समान है सिरदर्द का सबसे जैसे:
- अग्रावलोकन समारोह सृजन (निर्णय लेने से जो विकल्प लेने के लिए)
- स्वत: त्रुटि वसूली।
- बाएं रिकर्सन डिटेक्शन
- अस्पष्टता जांच।
- स्थिति जानकारी।
- ...
Chevrotain कि स्वचालित रूप से संभालती है।
- 1. सी ++ और जावास्क्रिप्ट यूआई में फ़ायरफ़ॉक्स क्यों लिखा गया है?
- 2. स्यूडोटेर्मिनल मास्टर ने लिखा है कि उसने अभी लिखा है
- 3. सी #/.NET लेक्सर जेनरेटर
- 4. FogBugz क्या प्रोग्रामिंग भाषा में लिखा है?
- 5. विजुअल स्टूडियो Winforms में लिखा है?
- 6. PHP लेक्सर और पार्सर जेनरेटर?
- 7. antlr 4 लेक्सर या पार्सर
- 8. पार्सर और लेक्सर फ़ाइलें ग्रहण
- 9. FTP सर्वर सी # में लिखा
- 10. कॉफीस्क्रिप्ट में कॉफीस्क्रिप्ट कैसे लिखा जा सकता है?
- 11. jQuery/जावास्क्रिप्ट मैं लिखा एक छोटी स्क्रिप्ट जो क्रोम पर ठीक काम करता है है फ़ायरफ़ॉक्स
- 12. विंडोज के लिए आईट्यून्स क्या लिखा है?
- 13. समाप्ति लिखा डेटा
- 14. लेक्सर- और पार्सर नियमों के अंदर नकारात्मक
- 15. खैर लिखा सी ++ उदाहरण
- 16. हाथ से एक (खोल) लेक्सर कैसे लिखें
- 17. पार्सर और लेक्सर के लिए डिज़ाइन दिशानिर्देश?
- 18. जावास्क्रिप्ट metaprogramming: वर्तमान में क्रियान्वित समारोह जो गतिशील रूप में लिखा गया था
- 19. क्या पाइथन में लिखा गया कोई GEDCOM पार्सर है?
- 20. जावा में एक जेवीएम कैसे लिखा जा सकता है
- 21. क्या विंडोज ड्राइवरों को पायथन में लिखा जा सकता है?
- 22. योजना में कौन सा सॉफ्टवेयर लिखा गया है?
- 23. पाइथन कहने में कितना ऑपरेटिंग सिस्टम लिखा जा सकता है?
- 24. यूनिक्स खोल उचित भाषा में लिखा गया है?
- 25. क्या सी # में लिखा गया एक jQuery जैसी पुस्तकालय है?
- 26. लिस्प में क्या दिलचस्प ओपन सोर्स सॉफ्टवेयर लिखा गया है?
- 27. क्या सीसीसी में जीसीसी सी संकलक लिखा गया है?
- 28. क्या सी # में एक मेमकैच समकक्ष लिखा गया है?
- 29. सीएस में पूरी तरह से लिखा ओएस के कोर (डिवाइस abstraction स्तर) हैं? (जैसे: "यूनिक्स सी में लिखा गया है")
- 30. RabbitMQ किस भाषा में लिखा गया था?
आपके प्रश्न को दोबारा पढ़ने से, ... प्राकृतिक भाषा निर्देश लिख रहा है (जावास्क्रिप्ट नहीं)? लेकिन आप जो लिखा है उसे लेना चाहते हैं और इसे जावास्क्रिप्ट में बदलना चाहते हैं? – Mottie
मुझे एक प्रोजेक्ट की आपकी जैसी ही आवश्यकताएं हैं: जावास्क्रिप्ट पार्सर और कोड जनरेटर की आवश्यकता है। क्या आपने किसी का उपयोग करने का फैसला किया है? – Paul
मैंने उपयोग किया: http://jscc.jmksf.com/ मेरे लिए सही काम किया। – Phobis