זהו הפקודה antlr שניתן להפעיל בספק האחסון החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS
תָכְנִית:
שֵׁם
antlr - כלי נוסף לזיהוי שפה
תחביר
antlr [אפשרויות] grammar_files
תיאור
אנטלר ממירה צורה מורחבת של דקדוק ללא הקשר לקבוצה של פונקציות C אשר
ליישם ישירות צורה יעילה של מנתח LL(k) רקורסיבי דטרמיניסטי.
דקדוקים נטולי הקשר עשויים להיות מתוגברים עם פרדיקטים כדי לאפשר לסמנטיקה להשפיע
ניתוח; זה מאפשר סוג של ניתוח תלוי הקשר. גם נסיגה לאחור סלקטיבית
זמין לטיפול במבנים שאינם LL(k) ואפילו שאינם LALR(k). אנטלר מייצרת גם א
הגדרה של lexer שניתן להמיר אוטומטית לקוד C עבור מבוסס DFA
lexer by dlg. לָכֵן, antlr משרת פונקציה כמו זו של יאקעם זאת, זהו
במיוחד גמיש יותר ומשולב יותר עם מחולל lexer (antlr ישירות
מייצר dlg קוד, ואילו יאק ו לקס מקבלים תיאורים עצמאיים). בניגוד יאק
שמקבל LALR(1) דקדוקים, antlr מקבל דקדוקי LL(k) בסימון BNF מורחב -
מה שמבטל את הצורך בכללי עדיפות.
כמו יאק דקדוקים, antlr דקדוקים יכולים להשתמש בתכונת סמל המתוחזקת אוטומטית
ערכים המוזכרים כמשתני דולרים. יותר מכך, כי antlr יוצר מנתחים מלמעלה למטה,
ערכים שרירותיים עשויים לעבור בירושה מחוקי אב (העבירו כמו פרמטרים של פונקציה).
אנטלר יש גם מנגנון ליצירה ומניפולציה של עצים-תחביר-מופשטים.
יש עוד כמה חפצים נחמדים ב antlr, כולל היכולת להפיץ דקדוק אחד
על פני מספר קבצים או אפילו דקדוקים מרובים בקובץ בודד, היכולת ליצור א
גרסה של הדקדוק עם פעולות שהוסרו (למטרות תיעוד), והרבה
יותר.
אפשרויות
-ק n השתמש עד n סמלים של מבט קדימה בעת שימוש דחוס (קירוב ליניארי)
תסתכל קדימה. סוג זה של הסתכלות הוא זול מאוד לחישוב והוא נוסה בעבר
מבט LL(k) מלא, שהוא בעל מורכבות אקספוננציאלית במקרה הגרוע. ב
באופן כללי, ההסתכלות הדחוסה יכולה להיות הרבה יותר עמוקה (למשל, -ck 10) מאשר המלאה
מבט קדימה (שבדרך כלל חייב להיות פחות מ-4).
-CC צור פלט C++ הן מ-ANTLR והן מ-DLG.
-Cr צור הפניה צולבת לכל הכללים. עבור כל כלל, הדפס רשימה של כל השאר
כללים שמתייחסים אליו.
-ה1 עמימות/שגיאות מוצגות בפירוט נמוך (ברירת מחדל).
-ה2 עמימות/שגיאות מוצגות ביתר פירוט.
-ה3 עמימות/שגיאות מוצגות בפירוט מייסר.
-פיי פילה
שינוי שם שגיאה לתייק.
-פ פילה
שינוי שם stdpccts.h כותרת עליונה (נדלקת -גה) לתייק.
-פל פילה
שנה שם פלט מילוני, parser.dlg, לתייק.
-fm פילה
שנה את שם הקובץ עם הגדרות מצב מילוני, mode.h, לתייק.
-פרו פילה
שנה שם קובץ שממפה מחדש סמלים גלויים גלובליים, remap.h, לתייק.
-פט פילה
שינוי שם אסימונים.ח לתייק.
- ל צור קוד תואם ANSI (ברירת מחדל). זה לא נבדק בקפדנות
להיות תואם ANSI XJ11 C, אבל זה קרוב. הפלט הרגיל של antlr is
ניתנת כעת לקומפילציה גם תחת K&R, ANSI C ו-C++ - אפשרות זו לא עושה כלום
כי antlr מייצר חבורה של #ifdef כדי לעשות את הדבר הנכון בהתאם ל
שפה.
-gc מעיד על כך antlr לא צריך ליצור קוד C, כלומר לבצע ניתוח רק על
דקדוק.
-אלוקים קוד C מוכנס בכל אחד מה- antlr נוצרו פונקציות ניתוח כדי לספק
טיפול בהגדרת משתמש במעקב ניתוח מפורט. הקוד שהוכנס מורכב מ
קריאות לפקודות המאקרו או הפונקציות שסופקו על ידי המשתמש שנקראו zzTRACEIN ו zzTRACEOUT.
הטיעון היחיד הוא א char * מצביע על מחרוזת בסגנון C שהיא הדקדוק
כלל מוכר על ידי פונקציית הניתוח הנוכחית. אם לא ניתנת הגדרה ל-
פונקציות מעקב, עם כניסת כלל ויציאה, תודפס הודעה המציינת
כי כלל מסוים כפי שנכנס או יצא.
-ge צור מחלקת שגיאה עבור כל שאינו מסוף.
-גה ליצור stdpccts.h לכלול קבצים שאינם נוצרים ב-ANTLR. קובץ זה מכיל
כל ההגדרות הדרושות לתיאור סוג המנתח שנוצר על ידי antlr (למשל כמה
נעשה שימוש ב-lookahead ובין אם נבנים עצים או לא) ומכיל את כותרת
פעולה שצוינה על ידי המשתמש.
-gk צור מנתחים המעכבים אחזור של מבט קדימה עד לצורך. ללא אפשרות זו,
antlr יוצר מנתחים שתמיד יש k אסימונים של מבט קדימה זמינים.
-גל צור מידע שורה על פעולות דקדוק במנתח C של הטופס # קו "פילה"
מה שגורם להודעות שגיאה מהמהדר C/C++ להיות הגיוניות יותר ככל שיהיו
הצבע על קובץ הדקדוק ולא על קובץ C שנוצר. גם איתור באגים קל יותר,
כי אתה תעבור דרך קובץ הדקדוק לא C.
-ס אל תיצור סטים עבור רשימות ביטויי אסימונים; במקום ליצור א ||-מופרד
רצף של LA(1)==token_number. ברירת המחדל היא ליצור סטים.
-גמ ' צור קוד עבור עצי תחביר מופשטים.
-gx אל תיצור את קבצי המנתח המילוני (קשור ל-dlg). אפשרות זו צריכה להיות
ניתן כאשר המשתמש מעוניין לספק מנתח מילוני מותאם אישית. ייתכן גם
לשמש ב לעשות סקריפטים כדי לגרום רק למנתח להיבנות מחדש כאשר אין שינוי
ההשפעה על המבנה המילוני מתבצעת בדקדוקי הקלט.
-k n הגדר k של LL(k) ל n; כלומר הגדר אסימונים של מבט קדימה (ברירת מחדל==1).
-o dir Directory לאן קבצי הפלט צריכים ללכת (ברירת מחדל ="."). זה מאוד נחמד עבור
שמירה על ספריית המקור נקייה מ-ANTLR ו-DLG spawn.
-p הדקדוק המלא, שנאסף מכל קבצי דקדוק הקלט והוסר מכולם
הערות ופעולות מוטבעות, מופיע ברשימה stdout. זה נועד לסייע
לראות את הדקדוק כולו כמכלול ולבטל את הצורך לשמור על פעולות
כתוב בצורה תמציתית כך שהדקדוק יהיה קל יותר לקריאה. לפיכך, עדיף
להטמיע אפילו פעולות מורכבות ישירות בדקדוק, במקום לקרוא להן בשם
תת-שגרות, שכן תקורה של שיחת תת-השגרה תישמר.
-אבא אפשרות זו זהה ל -p אלא שהפלט מסומן עם הראשון
קבוצות שנקבעו מניתוח דקדוק.
-pc on
הפעל את החישוב וההנפה של הקשר פרדיקט.
-pc כבוי
כבה את החישוב וההרמת ההקשר של הפרדיקטים. אפשרות זו הופכת את 1.10
תתנהג כמו מהדורת 1.06 עם אפשרות -יחסי ציבור עַל. חישוב ההקשר מושבת ב
ברירת המחדל.
-rl n הגבל את המספר המרבי של צמתי עצים בשימוש בניתוח דקדוק ל n.
לִפְעָמִים, antlr אינו מסוגל לנתח דקדוק שנשלח על ידי המשתמש. זֶה
מצב נדיר יכול להתרחש רק כאשר הדקדוק גדול וכמות ההסתכלות קדימה
גדול מאחד. אלגוריתם ניתוח לא ליניארי משמש את PCCTS לטיפול ב
מקרה כללי של ניתוח LL(k). המורכבות הממוצעת של ניתוח, לעומת זאת, היא
כמעט ליניארי עקב עבודת רגליים מהודרת ביישום אשר מפחיתה את
מספר השיחות לאלגוריתם LL(k) המלא. תוצג הודעת שגיאה,
אם הגבול הזה הושג, מה שמצביע על מבנה הדקדוק המנותח מתי
antlr פגע באי-לינאריות. השתמש באפשרות זו אם antlr נראה שהוא יוצא לארוחת צהריים ו
הדיסק שלך מתחיל להכות; לְנַסוֹת n=10000 להתחלה. ברגע שיש למבנה הפוגע
זוהו, נסו להסיר את העמימות ש antlr ניסה להתגבר עם
ניתוח מבט גדול. ההקדמה של (...)? בלוקים חוזרים לאחור
מבטל חלק מהבעיות הללו - antlr לא מנתח חלופות שמתחילות
עם (...)? (זה פשוט חוזר אחורה, במידת הצורך, בזמן הריצה).
-w1 הגדר רמת אזהרה נמוכה. אין להזהיר אם פרדיקטים סמנטיים ו/או (...)? בלוקים הם
ההנחה היא לכסות חלופות מעורפלות.
-w2 החלטות ניתוח מעורפלות מניבות אזהרות גם אם פרדיקטים סמנטיים או (...)?
נעשה שימוש בלוקים. התריע אם ההקשר של פרדיקטים מחושבים ופרדיקטים סמנטיים
לא ברור לחלוטין הפקות אלטרנטיביות.
- קרא דקדוק מקלט סטנדרטי והפק stdin.c כקובץ המנתח.
מיוחד שיקולים
אנטלר עובד... אנחנו חושבים. אין ערובה מרומזת לשום דבר. אנחנו שומרים לא
משפטי זכויות לתוכנה הידועה בשם Purdue Compiler Construction Tool Set (PCCTS) -
PCCTS הוא נחלת הכלל. אדם או חברה יכולים לעשות איתם מה שהם רוצים
קוד המקור המופץ עם PCCTS או הקוד שנוצר על ידי PCCTS, כולל ה
שילוב של PCCTS, או הפלט שלו, בתוכנה מסחרית. אנו מעודדים משתמשים לעשות זאת
לפתח תוכנה עם PCCTS. עם זאת, אנו מבקשים לתת לנו קרדיט על הפיתוח
PCCTS. ב"אשראי", אנו מתכוונים לכך שאם תשלב את קוד המקור שלנו באחד משלך
תוכניות (מוצר מסחרי, פרויקט מחקר או אחר) שאתה מכיר בכך
עובדה איפשהו בתיעוד, דוח המחקר וכו'... אם אתה אוהב PCCTS ויש לך
פיתח כלי נחמד עם הפלט, נא לציין שפיתחת אותו באמצעות PCCTS.
כל עוד מקפידים על הנחיות אלו, אנו מצפים להמשיך ולשפר את המערכת
צפו להעמיד כלים אחרים לזמינים עם השלמתם.
השתמש ב-antlr באינטרנט באמצעות שירותי onworks.net