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

15
חחחחח – חחחחח חחחח חחחחחחbison חחח חחחח חח חחחח( yacc - – חחחחחח חbison )

Upload: sharne

Post on 05-Jan-2016

70 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: תרגול – בניית מנתח תחבירי

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

bison

כתוב) בו מקום -yaccבכל ל – (bisonהכוונה

Page 2: תרגול – בניית מנתח תחבירי

(yylex)

קובץ הגדרות משותף לשניהם:

y.hpp

Page 3: תרגול – בניית מנתח תחבירי

ידי על הנוצר Bisonהמנתח

ומקבלת אסימון ממנוyylexקוראת ל-

Page 4: תרגול – בניית מנתח תחבירי

Bison

בין -flexקישור bisonל bison- " ל קריאה י ע הלקסיקלי המנתח את .yylexמפעיל

- ש האסימונים בין לתאם -flexצריך ש האסימונים לבין .bisonמייצר מכיר

yylval מטיפוס גלובלי משתנה היא, YYSTYPEהוא שלו המחדל .intשברירתאת להגדיר "YYSTYPEניתן , י ע למשל עצמאית

Page 5: תרגול – בניית מנתח תחבירי

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

הלקסיקלי.

Page 6: תרגול – בניית מנתח תחבירי

חוקים

החוקים • ברשימת הראשון החוק של שמאל באגף המשתנההדקדוק של התחילי המשתנה הוא

•: הבאה בצורה ירשם חוק

•: וטרמינלים משתנים של הסמנטיות לתכונות גישההחוק - – של שמאל באגף המופיע המשתנה תכונות $$–n$ - (n>0)- ה הסימן חוקים ) nתכונות כולל החוק של ימין באגף

סמנטיים(A B C NUM ‘d’ E

$$ $1 $2 $3 $4 $5 הסימן

A B C NUM d E מתייחס ל-

Page 7: תרגול – בניית מנתח תחבירי

מרקרים - חוקים

X

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

Page 8: תרגול – בניית מנתח תחבירי

) הלקסיקלי ) מהניתוח אסימון

תאסוציאטיביותמו

דיק

תמו

דיק

תחילי משתנה

Page 9: תרגול – בניית מנתח תחבירי
Page 10: תרגול – בניית מנתח תחבירי
Page 11: תרגול – בניית מנתח תחבירי

עם bisonעבודה

• bison –d source.ypp• flex source.lex• g++ source.tab.cpp lex.yy.c

• bison –v source.ypp

קבצי ,tab.hמייצרtab.cpp

קובץ lex.yy.cמייצר

הרצה קובץ מייצר

קובץ עם source.outputמייצרהמעברים וטבלת האוטומט מצבי

Page 12: תרגול – בניית מנתח תחבירי

t7.hppקובץ

t7.tab.hppקובץ

Page 13: תרגול – בניית מנתח תחבירי

lexקובץ

Page 14: תרגול – בניית מנתח תחבירי

bisonקובץ

Page 15: תרגול – בניית מנתח תחבירי

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

1. cbdbc2. cadbc3. caddc4. cadac

ממבחן שאלה