Lark عبارة عن مجموعة أدوات تحليل لـ Python، تم تصميمها مع التركيز على بيئة العمل والأداء والنمطية.
يستطيع Lark تحليل جميع اللغات الخالية من السياق. بكل بساطة، هذا يعني أنه قادر على تحليل أي لغة برمجة تقريبًا، وإلى حد ما معظم اللغات الطبيعية أيضًا.
لمن؟
المبتدئين : لارك ودود للغاية للتجريب. يمكنه تحليل أي قواعد نحوية تستخدمها، بغض النظر عن مدى تعقيدها أو غموضها، والقيام بذلك بكفاءة. كما أنه ينشئ لك شجرة تحليل مشروحة، باستخدام القواعد النحوية والمدخلات فقط، ويمنحك أدوات مريحة ومرنة لمعالجة شجرة التحليل تلك.
الخبراء : يستخدم Lark كلاً من Earley(SPPF) وLALR(1)، والعديد من المعجمات المختلفة، حتى تتمكن من مقايضة القوة والسرعة، وفقًا لمتطلباتك. كما يوفر مجموعة متنوعة من الميزات والمرافق المتطورة.
ماذا يمكن أن تفعل؟
والعديد من الميزات. اقرأ للأمام واكتشف!
والأهم من ذلك، أن Lark سيوفر لك الوقت ويمنعك من الإصابة بصداع التحليل.
$ pip install lark --upgrade
لارك ليس لديه تبعيات.
توفر Lark تسليط الضوء على بناء الجملة لملفاتها النحوية (*.lark):
هذه تطبيقات لارك بلغات أخرى. إنهم يقبلون قواعد Lark النحوية، ويقدمون أدوات مساعدة مماثلة.
إليك برنامج صغير لتحليل عبارة "Hello, World!" (أو أي عبارة أخرى مماثلة):
from lark import Lark
l = Lark ( '''start: WORD "," WORD "!"
%import common.WORD // imports from terminal library
%ignore " " // Disregard spaces in text
''' )
print ( l . parse ( "Hello, World!" ) )
والإخراج هو:
Tree ( start , [ Token ( WORD , 'Hello' ), Token ( WORD , 'World' )])
لا تظهر علامات الترقيم في الشجرة الناتجة. تمت تصفيته تلقائيًا بواسطة Lark.
لارك رائع في التعامل مع الغموض. إليكم نتيجة تحليل عبارة "ذباب الفاكهة مثل الموز":
اقرأ الكود هنا، وشاهد المزيد من الأمثلة هنا.
انظر القائمة الكاملة للميزات هنا
القبرة سريعة وخفيفة (الأقل أفضل)
تحقق من البرنامج التعليمي JSON لمزيد من التفاصيل حول كيفية إجراء المقارنة.
للحصول على معايير شاملة من طرف ثالث، قم بمراجعة مستودع Python Parsing Benchmarks.
مكتبة | خوارزمية | القواعد | يبني شجرة؟ | يدعم الغموض؟ | هل يمكن التعامل مع كل CFG؟ | تتبع الخط/العمود | يولد قائمة بذاتها |
---|---|---|---|---|---|---|---|
قبرة | إيرلي/اللر(1) | إيبنف | نعم! | نعم! | نعم! | نعم! | نعم! (اللر فقط) |
رقائق | لالر(1) | بي إن إف | لا | لا | لا | لا | لا |
بايبارسينغ | ربط | المجمعات | لا | لا | لا* | لا | لا |
بَقدونس | ربط | إيبنف | لا | لا | لا* | لا | لا |
شديد البخل | ربط | إيبنف | نعم | لا | لا* | لا | لا |
أنتلر | ليرة لبنانية(*) | إيبنف | نعم | لا | نعم؟ | نعم | لا |
(* لا تستطيع PEGs التعامل مع القواعد النحوية غير الحتمية. أيضًا، وفقًا لويكيبيديا، يظل دون إجابة ما إذا كانت PEGs يمكنها حقًا تحليل جميع CFGs الحتمية )
القائمة الكاملة
يستخدم Lark ترخيص MIT.
(الأداة المستقلة ضمن MPL2)
يقبل Lark طلبات السحب. انظر كيفية تطوير لارك
الشكر الجزيل لكل من ساهم حتى الآن:
إذا كنت تحب Lark، وترغب في رؤيتنا ننمو، فيرجى التفكير في رعايتنا!
من الأفضل طرح الأسئلة حول الكود على gitter أو في الإصدارات.
بالنسبة لأي شيء آخر، يمكن التواصل معي عبر البريد الإلكتروني على erezshin على gmail com.
-- ايريز