HeadlinesBriefing HeadlinesBriefing.com

Yantra: C++ पार्सर जेनरेटर जिसमें AST वॉकर है

Hacker News •
×

Yantra एक C++ पार्सर जेनरेटर है जो पहले पूरा AST बनाता है, फिर उसे ऊपर से नीचे की ओर अलग पास में चलता है, सेमेंटिक एक्शन कॉल करते हुए। अधिकांश LALR पार्सर जेनरेटर (Yacc, Bison, Lemon) के विपरीत, जो पार्सिंग के दौरान सेमेंटिक एक्शन चलाते हैं, Yantra एक माता नियम के एक्शन को उसके बच्चों के देखे जाने से पहले चलाने की अनुमति देता है। इससे एक ही व्याकरण से कई वॉकर परिभाषित करना संभव होता है, जैसे एक C++ उत्सर्जित करता है और दूसरा Java उत्सर्जित करता है। AST और वॉकर क्लास दोनों स्वचालित रूप से उत्पन्न होते हैं। Yantra में एकीकृत लेक्सर होता है जो नेस्टेड टिप्पणियों के लिए मोड समर्थन प्रदान करता है, वैकल्पिक अमलगमेटेड सिंगल-फ़ाइल आउटपुट जिसमें उत्पन्न main() होता है, और इसके लिए केवल C++23 कंपाइलर की आवश्यकता होती है। यह MIT लाइसेंस के तहत है और वर्तमान में संस्करण 0.5.1 पर है, pre-1.0, एक एकल डेवलपर द्वारा बनाए रखा जा रहा है।

एक छोटा व्याकरण उदाहरण ऊपर से नीचे की ओर चलने वाले व्यवहार को दर्शाता है: "1 + 2 + 3" का पार्स करने पर "Adding" पहले प्रिंट होता है (जड़), उसके बाद संख्या आउटपुट। यह क्रम केवल इसलिए संभव है क्योंकि पूरा पेड़ किसी भी एक्शन के निष्पादन से पहले मौजूद होता है।

ज्ञात सीमाएं प्रोजेक्ट के GitHub पृष्ठ पर दस्तावेज़ीकृत हैं। रिपॉजिटरी https://github.com/TantrixAuto/yantra पर उपलब्ध है, और रखरखावकर्ता द्वारा प्रतिक्रिया और प्रश्नों का स्वागत किया जाता है।

इस टूल का निर्माण CMake का उपयोग करके किया जाता है और यह ycc निष्पादन योग्य उत्पन्न करता है जो व्याकरण फ़ाइलों से पार्सर उत्पन्न करता है।

मुख्य इकाइयाँ: कंपनियाँ: TantrixAuto

स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित