pyPEG

צילום מסך תוכנה:
pyPEG
פרטי תוכנה:
גרסה: 2.4.1
טען תאריך: 14 Apr 15
מפתחים: Volker Birk
רשיון: ללא תשלום
פופולריות: 29

Rating: 1.5/5 (Total Votes: 2)

פייתון היא שפת סקריפטים נחמדה. זה גם נותן לך גישה למנתח משלו ומהדר. זה גם נותן לך גישה למנתחים אחרים שונים למטרות מיוחדות כמו תבניות XML ומחרוזת.
אבל לפעמים ייתכן שתרצה יש לי המנתח שלך. זה מה שזה pyPEG ל.
כדי לקבל תצוגה מהירה על מה שקורה, בבקשה לקרוא את המאמר הזה על איך לנתח שפה שרירותית ל- XML ​​עם pyPEG בבלוג שלי.
מהו PEG?
PEG אומר דקדוק ביטוי של ניתוח. זה משהו כמו הרעיון של ביטויים רגילים לשפות חופשיות הקשר; הסבר ברור מאוד שתמצא במאמר בויקיפדיה על PEG.
עם יתדות אתה יכול לתאר את אותו שפות כמו עם BNF (והם אפילו דומים).
מה הוא מנתח-Interpreter?
מנתחים משותפים אינכם משתמשים יתדות ומלמעלה למטה בניתוח, אבל LR (n) או LL (n) וניתוח מלמטה למעלה. התוצאה היא הרעיון של יישום גנרטורים מנתח.
כי עם LR (n) או LL (n) מנתחים אתה צריך לחשב את DFA הראשון, בדרך כלל אתה נותן גנרטור המנתח יעשה זאת עבורך. התוצאה היא יישום מנתח עבור דקדוק BNF שלך, שהיה הקלט. אפשר לקרוא גנרטור מנתח מהדר מBNF ליישום מנתח.
-Interpreter מנתח עושה את העבודה כמתורגמן במקום להיות מהדר כזה. רק תן לי הדקדוק שלך כקלט, וזה מנתח את השפה תיארה מתוך טקסט. לא תהיה תכנית שנוצרה.
שימוש בpyPEG
זה אומר: pyPEG באמצעות קל מאוד;-) אם אתה יודע בביטויים רגילים כבר, אתה תלמד להשתמש pyPEG במהירות.
מדגם קטן
דוגמא: לחשוב על שפה פשוטה, כמו זו:
FAK פונקציה (n) {
& Nbsp; אם (== n 0) {// 0! הוא 1 בהגדרה
& Nbsp; לחזור 1;
& Nbsp;} else {
& Nbsp; FAK תמורת n * (n - 1);
& Nbsp;};
}
PyPEG לשפה שנראה כמו הקוד הבא (ראה גם את התסריט לדוגמא):
התגובה def (): שיבה [re.compile (r "//.*"), re.compile ("/*.*?*/", re.S)]
() Def המילולי: re.compile תמורה (".? *" R'd * .D * | | ד + ')
סמל def (): re.compile תמורה (r "w +")
מפעיל def (): re.compile תמורה (r "+ | - | * | / | ==")
פעולת def (): סמל תמורה, מפעיל, [מילולי, functioncall]
ביטוי def (): שיבה [מילולי, פעולה, functioncall]
expressionlist def (): לחזור ביטוי, -1, (",", ביטוי)
returnstatement def (): מילת המפתח שיבה ("לחזור"), ביטוי
ifstatement def (): מילת המפתח שיבה ("אם"), "(", ביטוי, ")", בלוק, מילות מפתח ("אחר"), בלוק
הצהרת def (): שיבה [ifstatement, returnstatement], ";"
בלוק def (): שיבה "{", -2, הצהרה, "}"
parameterlist def (): שיבה "(", סמל, -1, (",", סמל), ")"
functioncall def (): לחזור סמל, "(", expressionlist, ")"
פונקצית def (): מילת המפתח שיבה ("פונקציה"), סמל, parameterlist, בלוק
def simpleLanguage (): פונקצית תמורה

מה חדש בהודעה זו:

    • זוהי מהדורת ניקוי. הקוד של לנתח () ולהלחין () היה קבוע.

      מהו

    חדש בגרסה 1.4:.

    • גרסה זו מתקנת כמה באגים עם ניתוח packrat >

    מה חדשה בגרסה 1.3:

    • החלפת tuple לשמות בpyAST על ידי הסמל (רשימה בכיתה), שהוא די תואם, אך תומך בקוד תיאורים יותר במסדי מהדר, מדי.
    • מה חדש בגרסת 1.2

    :
    • באגס עם Unicode בטיפול בשגיאות תוקן. >

    מה חדש בגרסה 1.1:.

    • תמיכת Unicode נוספה

    מה חדש בגרסה 0.46:.

    • pyPEG.print_trace לנכון
    • המרת pyPEG ל3.x Python עכשיו עובד בצורה חלקה באמצעות 2to3
    • כללי הדקדוק שמוחלים ניתן לייחס אופציונלי על ידי הגדרה
    • pyPEG יהיה פלט עקבות זה לstderr.

    מה חדש בגרסה 0.45:.

    • תיקוני באגים

    מה חדש בגרסת 0.44:

    • pyPEG עכשיו מעטר כל אובייקט pyAST עם שם קובץ המקור וקו מספר.

    דרישות :

    • Python

  • תוכנה דומה

    JarBuilder
    JarBuilder

    2 Jun 15

    CURSEL
    CURSEL

    3 Jun 15

    Pyexpander
    Pyexpander

    20 Feb 15

    Ctalk
    Ctalk

    20 Feb 15

    תוכנות אחרות של יזם Volker Birk

    YML
    YML

    11 May 15

    תגובות ל pyPEG

    תגובות לא נמצא
    להוסיף הערה
    הפעל את התמונות!