1 / 15

תרגול – בניית מנתח תחבירי

תרגול – בניית מנתח תחבירי. bison (בכל מקום בו כתוב yacc – הכוונה ל- bison ). ( yylex ). קובץ הגדרות משותף לשניהם: y.hpp. המנתח הנוצר על ידי Bison. קוראת ל- yylex ומקבלת אסימון ממנו. קישור בין flex ל- bison. bison מפעיל את המנתח הלקסיקלי ע"י קריאה ל- yylex .

sharne
Download Presentation

תרגול – בניית מנתח תחבירי

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. תרגול – בניית מנתח תחבירי bison (בכל מקום בו כתוב yacc – הכוונה ל-bison)

  2. (yylex) קובץ הגדרות משותף לשניהם: y.hpp

  3. המנתח הנוצר על ידי Bison קוראת ל-yylex ומקבלת אסימון ממנו

  4. קישור בין flex ל-bison bison מפעיל את המנתח הלקסיקלי ע"י קריאה ל-yylex. צריך לתאם בין האסימונים ש-flex מייצר לבין האסימונים ש-bison מכיר. Bison yylval הוא משתנה גלובלי מטיפוס YYSTYPE, שברירת המחדל שלו היא int. ניתן להגדיר את YYSTYPE עצמאית, למשל ע"י

  5. חלק 1 וחלק 3 מועתקים כמו שהם לקובץ שנוצר ע"י Bison. חלק 2 יכול להשתמש בהגדרות שניתנות בחלק 1, למשל עבור הניתוח הלקסיקלי.

  6. חוקים • המשתנה באגף שמאל של החוק הראשון ברשימת החוקים הוא המשתנה התחילי של הדקדוק • חוק ירשם בצורה הבאה: • גישה לתכונות הסמנטיות של משתנים וטרמינלים: • $$ - תכונות המשתנה המופיע באגף שמאל של החוק • n$ - (n>0) תכונות הסימן ה-n באגף ימין של החוק (כולל חוקים סמנטיים) A B C NUM ‘d’ E

  7. חוקים - מרקרים חוקי ε נכתבים ע"י חוק ריק, למשל A : B C | ; X

  8. אסימון (מהניתוח הלקסיקלי) קדימות אסוציאטיביות משתנה תחילי קדימות

  9. עבודה עם bison • bison –d source.ypp • flex source.lex • g++ source.tab.cpplex.yy.c • bison –v source.ypp מייצר קבצי tab.h, tab.cpp מייצר קובץ lex.yy.c מייצר קובץ הרצה מייצר קובץ source.output עם מצבי האוטומט וטבלת המעברים

  10. קובץ t7.hpp קובץ t7.tab.hpp

  11. קובץ lex

  12. קובץ bison

  13. שאלה ממבחן כתבו מה יהיה פלט התוכנית עבור כל אחד מהקלטים הבאים (כל שורה מסתיימת בסימן ירידת שורה ‘\n’) cbdbc cadbc caddc cadac

More Related