यह सवालों की एक श्रृंखला का हिस्सा है जो एबट्रैक्शन प्रोजेक्ट के लिए बहन परियोजना पर केंद्रित है, जिसका उद्देश्य भाषा डिजाइन में उपयोग की जाने वाली अवधारणाओं को एक रूपरेखा के रूप में सार करना है। बहन परियोजना को ओइलेक्सर कहा जाता है, जिसका उद्देश्य मैचों पर कोड इंजेक्शन के उपयोग के बिना व्याकरण फ़ाइलों से एक पार्सर का निर्माण करना है।
इन प्रश्नों से जुड़े कुछ अन्य पृष्ठ, संरचनात्मक टाइपिंग से संबंधित, यहाँ देखे जा सकते हैं और उपयोग में आसानी हो सकती है । रूपरेखा के बारे में पूछताछ और पोस्ट करने के उचित स्थान के बारे में मेटा-विषय यहां पाया जा सकता है ।
मैं उस बिंदु पर पहुंच रहा हूं, जहां मैं एक दिए गए व्याकरण में से पार्स ट्री को निकालना शुरू करने वाला हूं, उसके बाद एक रिकर्सिव डिसेंट पार्सर है जो आगे के रास्तों को भेदने के लिए DFA का उपयोग करता है (ANTLR 4 के LL (*) के समान, इसलिए मैं मुझे लगा कि मैं इसे जानकारी प्राप्त करने के लिए खोलूंगा।
पार्सर कंपाइलर में, किस प्रकार की विशेषताएं आदर्श हैं?
अब तक यहाँ क्या लागू है का एक संक्षिप्त अवलोकन है:
- टेम्पलेट्स
- आगे की भविष्यवाणी देखें, यह जानते हुए कि किसी दिए गए बिंदु पर क्या मान्य है।
- नियमों के भीतर शाब्दिक रूप से 'डिलेरलाइज़ेशन' नियम लेना और हल करना कि वे किस टोकन से हैं।
- ननदेर्तिमान आटोमैटा
- नियतात्मक ऑटोमेटा
- टोकन मान्यता के लिए सरल शाब्दिक राज्य मशीन
- टोकन स्वचालन विधि:
- स्कैन - टिप्पणियों के लिए उपयोगी: टिप्पणी: = "/ *" स्कैन ("* /");
- घटाव - पहचानकर्ताओं के लिए उपयोगी: पहचानकर्ता: = घटाना (पहचानकर्ता, खोजशब्द);
- यह सुनिश्चित करता है कि पहचानकर्ता खोजशब्दों को स्वीकार नहीं करता है।
- एनकोड - बेस एन संक्रमण की एक श्रृंखला एक्स गिनती के रूप में एक स्वचालन को एनकोड करता है।
- यूनिकोडएस्केप: = "\\ u" बेसएकोड (पहचानकर्ताचेरोइस्केप, 16, 4);
- हेक्साडेसिमल में एक यूनिकोड से बच जाता है, हेक्स 4-संक्रमण के साथ। इस के बीच का अंतर और: [0-9A-Fa-f] {4} परिणामी स्वचालन है, जिसमें एनकोड के साथ हेक्साडेसिमल मानों के अनुमत सेट को IdentifierCharNoEscape के दायरे में सीमित किया गया है। इसलिए यदि आप इसे \ u005c देते हैं, तो एन्कोड संस्करण मान को स्वीकार नहीं करेगा। इस तरह की चीजों में एक गंभीर चेतावनी है: संयम से उपयोग करें। परिणामस्वरूप स्वचालन काफी जटिल हो सकता है।
- यूनिकोडएस्केप: = "\\ u" बेसएकोड (पहचानकर्ताचेरोइस्केप, 16, 4);
क्या लागू नहीं किया गया है सीएसटी पीढ़ी, मुझे इस काम को पाने के लिए उचित संदर्भ को ले जाने के लिए निर्धारक स्वचालन को समायोजित करने की आवश्यकता है।
रुचि रखने वाले किसी भी व्यक्ति के लिए, मैंने T * y । प्रोजेक्ट के मूल रूप का एक सुंदर प्रिंट अपलोड किया है । प्रत्येक फ़ाइल को हर दूसरी फ़ाइल से लिंक करना चाहिए, मैंने उन्हें अनुसरण करने के लिए अलग-अलग नियमों में लिंक करना शुरू किया, लेकिन इसमें बहुत लंबा समय लगेगा (स्वचालित करने के लिए सरल हो गया होगा!)
यदि अधिक संदर्भ की आवश्यकता है, तो कृपया तदनुसार पोस्ट करें।
5-14-2013 को संपादित करें : मैंने दिए गए भाषा के भीतर राज्य मशीनों के लिए ग्राफविज़ ग्राफ बनाने के लिए कोड लिखा है। यहाँ विधानसभापार्ट का ग्राफविज़ डिग्राफ है । भाषा विवरण में जुड़े सदस्यों के पास उस नियम के लिए उनके संबंधित फ़ोल्डर में एक rulename.txt होना चाहिए। उदाहरण पोस्ट करने के बाद से कुछ भाषा विवरण बदल गए हैं, यह व्याकरण के बारे में चीजों को सरल बनाने के कारण है। यहाँ एक दिलचस्प ग्राफविज़ छवि है ।