Yantra هو مولد محلل C++ يبني الشجرة abstactة الكاملة أولًا، ثم يمشيها من الأعلى إلى الأسفل في مرور منفصل، ويستدعي الإجراءات الدلالية. على عكس معظم مولدات المحللات LALR (Yacc، Bison، Lemon) التي تنفذ الإجراءات الدلالية أثناء التحليل، يتيح Yantra لإجراء rule الأصل أن يعمل قبل زيارة أطفاله. هذا يمكّن قواعد واحدة من تحديد عدة مشاة، مثل واحد يصدر C++ وآخر يصدر Java. تُولد فئات AST والمشاة تلقائيًا. يتميز Yantra بمحلل رمزي مدمج يدعم وضع التعليقات المتداخلة، وإخراج ملف واحد اختياري مدمج مع main() مولد، ويتطلب فقط مترجم C++23. إنه مرخص بموجب MIT، والإصدار الحالي هو 0.5.1، ما قبل 1.0، ويتم صيانته من قبل مطور واحد.
مثال صغير للقواعد يوضح سلوك المشي من الأعلى إلى الأسفل: تحليل "1 + 2 + 3" يطبع "Adding" أولًا (الجذر)، gefolطًا بطبعات الأرقام. هذا الترتيب ممكن فقط لأن الشجرة الكاملة موجودة قبل تنفيذ أي إجراء.
القيود المعروفة موثقة في صفحة GitHub الخاصة بالمشروع. المستودع متاح في https://github.com/TantrixAuto/yantra، مع ترحيب بالتعليقات والأسئلة من قبل المطور المسؤول.
الأداة تستخدم CMake للبناء وتنتج ملفًا تنفيذيًا ycc لإنشاء المحللات من ملفات القواعد.
الكيانات الرئيسية: الشركات: TantrixAuto
المصدر: Hacker News · لخّصه HeadlinesBriefing