Top Down Parsing LL(1) Narges S. Bathaeian

Σχετικά έγγραφα
تمرین اول درس کامپایلر

محاسبه ی برآیند بردارها به روش تحلیلی

فصل پنجم زبان های فارغ از متن

تحلیل مدار به روش جریان حلقه

سلسله مزاتب سبان مقدمه فصل : زبان های فارغ از متن زبان های منظم

روش محاسبه ی توان منابع جریان و منابع ولتاژ

نظریه زبان ها و ماشین ها

به نام خدا طراحی کامپایلرها

مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل

جلسه ی ۱۰: الگوریتم مرتب سازی سریع

جلسه ی ۱۸: درهم سازی سرتاسری - درخت جست و جوی دودویی

مدار معادل تونن و نورتن

همبستگی و رگرسیون در این مبحث هدف بررسی وجود یک رابطه بین دو یا چند متغیر می باشد لذا هدف اصلی این است که آیا بین

تخمین با معیار مربع خطا: حالت صفر: X: مکان هواپیما بدون مشاهده X را تخمین بزنیم. بهترین تخمین مقداری است که متوسط مربع خطا مینیمم باشد:

جلسه ی ۲۴: ماشین تورینگ

تصاویر استریوگرافی.

هر عملگرجبر رابطه ای روی يک يا دو رابطه به عنوان ورودی عمل کرده و يک رابطه جديد را به عنوان نتيجه توليد می کنند.

فصل چهارم : مولتی ویبراتورهای ترانزیستوری مقدمه: فیدبک مثبت

ﯽﺳﻮﻃ ﺮﯿﺼﻧ ﻪﺟاﻮﺧ ﯽﺘﻌﻨﺻ هﺎﮕﺸﻧاد

جلسه ی ۱۱: درخت دودویی هرم

آزمایش 8: تقویت کننده عملیاتی 2

تئوری جامع ماشین بخش سوم جهت سادگی بحث یک ماشین سنکرون دو قطبی از نوع قطب برجسته مطالعه میشود.

آزمون مقایسه میانگین های دو جامعه )نمونه های بزرگ(

جلسه ی ۳: نزدیک ترین زوج نقاط

. visual basic. int sum(int a, int b){ return a+b;} : : :

جلسه ی ۵: حل روابط بازگشتی

بسم اهلل الرحمن الرحیم آزمایشگاه فیزیک )2( shimiomd

مثال( مساله الپالس در ناحیه داده شده را حل کنید. u(x,0)=f(x) f(x) حل: به کمک جداسازی متغیرها: ثابت = k. u(x,y)=x(x)y(y) X"Y=-XY" X" X" kx = 0

دانشکده فنی دانشگاه آزاد اسالمی واحد تهران جنوب مهرماه 1391

هو الحق دانشکده ي مهندسی کامپیوتر جلسه هفتم

1) { } 6) {, } {{, }} 2) {{ }} 7 ) { } 3) { } { } 8) { } 4) {{, }} 9) { } { }

هد ف های هفته ششم: 1- اجسام متحرک و ساکن را از هم تشخیص دهد. 2- اندازه مسافت و جا به جایی اجسام متحرک را محاسبه و آن ها را مقایسه کند 3- تندی متوسط

دانشکده ی علوم ریاضی جلسه ی ۵: چند مثال

سايت ويژه رياضيات درسنامه ها و جزوه هاي دروس رياضيات

قاعده زنجیره ای برای مشتقات جزي ی (حالت اول) :

فصل 5 :اصل گسترش و اعداد فازی

تحلیل الگوریتم پیدا کردن ماکزیمم

جلسه ی ۴: تحلیل مجانبی الگوریتم ها

ویرایشسال 95 شیمیمعدنی تقارن رضافالحتی

Econometrics.blog.ir

جلسه 12 به صورت دنباله اي از,0 1 نمایش داده شده اند در حین محاسبه ممکن است با خطا مواجه شده و یکی از بیت هاي آن. p 1

فصل دهم: همبستگی و رگرسیون

آموزش SPSS مقدماتی و پیشرفته مدیریت آمار و فناوری اطالعات -

جلسه 14 را نیز تعریف کرد. عملگري که به دنبال آن هستیم باید ماتریس چگالی مربوط به یک توزیع را به ماتریس چگالی مربوط به توزیع حاشیه اي آن ببرد.

دبیرستان غیر دولتی موحد

یدنب هشوخ یاه متیروگلا

فعالیت = ) ( )10 6 ( 8 = )-4( 3 * )-5( 3 = ) ( ) ( )-36( = m n m+ m n. m m m. m n mn

به نام خدا. Sparse Coding ستاره فرامرزپور

به نام خدا طراحی کامپایلرها

6- روش های گرادیان مبنا< سر فصل مطالب

شاخصهای پراکندگی دامنهی تغییرات:

به نام ستاره آفرین قضیه ویریال جنبشی کل ذرات یک سیستم پایدار مقید به نیرو های پایستار را به متوسط انرژی پتانسیل کل شان

جلسه 15 1 اثر و اثر جزي ی نظریه ي اطلاعات کوانتومی 1 ترم پاي یز جدایی پذیر باشد یعنی:

Spacecraft thermal control handbook. Space mission analysis and design. Cubesat, Thermal control system

فهرست مطالب جزوه ی فصل اول مدارهای الکتریکی مفاهیم ولتاژ افت ولتاژ و اختالف پتانسیل تحلیل مدار به روش جریان حلقه... 22

مثلث بندی دلونی فصل 9 مژگان صالحی- دی 92 استاد راهنما: جناب آقای دکتر محمد فرشی

فصل سوم جبر بول هدف های رفتاری: در پایان این فصل از فراگیرنده انتظار می رود که :

درخت. سید ناصر رضوی

شیمی عمومی دانشگاه فردوسی مشهد

به نام خدا. الف( توضیح دهید چرا از این تکنیک استفاده میشود چرا تحلیل را روی کل سیگنال x[n] انجام نمیدهیم

جلسه دوم سوم چهارم: مقدمه اي بر نظریه میدان

خالصه درس: نویسنده:مینا سلیمان گندمی و هاجر کشاورز امید ریاضی شرطی. استقالل متغیر های تصادفی پیوسته x و y استقالل و امید ریاضی

مینامند یا میگویند α یک صفر تابع

محاسبات کوانتمی 1 علم ساخت و استفاده از کامپیوتري است که بر پایه ي اصول مکانیک کوانتم قرار گرفته است.

Beta Coefficient نویسنده : محمد حق وردی

قرار می گیرند. همچنین برای نگهداری اطالعات و نمایش آنها بر روی صفحه نمایش از متغیرها

جلسه 9 1 مدل جعبه-سیاه یا جستاري. 2 الگوریتم جستجوي Grover 1.2 مسا له 2.2 مقدمات محاسبات کوانتمی (22671) ترم بهار

راهنمای کاربری موتور بنزینی )سیکل اتو(

برابری کار نیروی برآیند و تغییرات انرژی جنبشی( را بدست آورید. ماتریس ممان اینرسی s I A

جلسه 22 1 نامساویهایی در مورد اثر ماتریس ها تي وري اطلاعات کوانتومی ترم پاییز

:موس لصف یسدنه یاه لکش رد یلوط طباور

باشند و c عددی ثابت باشد آنگاه تابع های زیر نیز در a پیوسته اند. به شرطی که g(a) 0 f g

SanatiSharif.ir مقطع مخروطی: دایره: از دوران خط متقاطع d با L حول آن یک مخروط نامحدود بدست میآید که سطح مقطع آن با یک

معادلهی مشخصه(کمکی) آن است. در اینجا سه وضعیت متفاوت برای ریشههای معادله مشخصه رخ میدهد:

هندسه تحلیلی و جبر خطی ( خط و صفحه )

ندرک درگ ندرک درگ شور

هندسه تحلیلی بردارها در فضای R

ارزیابی بهره وری متقاطع DEA بر پایه بهبود پارتو

فصل ششم: ترکیبات درس اول: شمارش اصل جمع و اصل ضرب فعالیت قیمه هویج سیب پرتقال قورمه «سورۀ نحل»

فیلتر کالمن Kalman Filter

فصل چهارم : مولتی ویبراتورهای ترانزیستوری مقدمه: فیدبک مثبت

فصل سوم جریان های الکتریکی و مدارهای جریان مستقیم جریان الکتریکی

فصل اول پیچیدگی زمانی و مرتبه اجرایی

فصل چهارم تعیین موقعیت و امتدادهای مبنا

نویسنده: محمدرضا تیموری محمد نصری مدرس: دکتر پرورش خالصۀ موضوع درس سیستم های مینیمم فاز: به نام خدا

تمرینات درس ریاض عموم ٢. r(t) = (a cos t, b sin t), ٠ t ٢π. cos ٢ t sin tdt = ka۴. x = ١ ka ۴. m ٣ = ٢a. κds باشد. حاصل x٢

درهم سازی سید مهدی وحیدی پور ارایه سوم: درهمسازی روشها و کاربردها

فصل ترکیبیات درس اول شمارش درس دوم جایگشت درس سوم ترکیب

مود لصف یسدنه یاه لیدبت

توابع و کتابخانه ها: سید ناصر رضوی

Delaunay Triangulations محیا بهلولی پاییز 93

Angle Resolved Photoemission Spectroscopy (ARPES)

مسائل. 2 = (20)2 (1.96) 2 (5) 2 = 61.5 بنابراین اندازه ی نمونه الزم باید حداقل 62=n باشد.

تجزیهی بندرز مقدمه کشور هستند. بدین سبب این محدودیتهای مشترک را محدودیتهای پیچیده

آزمایش 1: پاسخ فرکانسی تقویتکننده امیتر مشترك

7- روش تقریب میانگین نمونه< سر فصل مطالب

3 لصف یربج یاه ترابع و ایوگ یاه ناوت

مارکوف 1.مقدمه: سید مهدی صفوی محمد میکاییلی محمد پویان چکیده ما با مطالعه مدل مخفی میدان تصادفی مارکوف از الگوریتم EM

جلسه 3 ابتدا نکته اي در مورد عمل توابع بر روي ماتریس ها گفته می شود و در ادامه ي این جلسه اصول مکانیک کوانتمی بیان. d 1. i=0. i=0. λ 2 i v i v i.

جلسه 2 جهت تعریف یک فضاي برداري نیازمند یک میدان 2 هستیم. یک میدان مجموعه اي از اعداد یا اسکالر ها به همراه اعمال

Transcript:

طراحی کامپایلر Top Down Parsing LL1)

تعریف top down parsing Parse tree را از ریشه به سمت برگها می سازد. دو نوع LL1), LLk) Recursive descent

مثال G = {S},{, ) }, P, S) S S S ) S ε ))$

مثال S S ) S ε ))$

مثال S S ) S ε ))$

مثال S S ) S ε ))$

پیاده سازی Stack LL1) parsing table

مثال push S 1. S S ) 2. S ε S N/T ) $ S 1 2 2 ))$ S

مثال rule 1 1. S S ) 2. S ε N/T ) $ S 1 2 2 ))$ S )

مثال match 1. S S ) 2. S ε N/T ) $ S 1 2 2 ))$ S )

مثال 1. S S ) 2. S ε N/T ) $ S 1 2 2 ))$ S )

مثال rule 1 1. S S ) 2. S ε N/T S 1 ) 2 $ 2 S ))$ ) )

مثال match 1. S S ) 2. S ε N/T S 1 ) 2 $ 2 S ))$ ) )

مثال 1. S S ) 2. S ε N/T ) $ S 1 2 2 S ))$ ) )

مثال rule 2 1. S S ) 2. S ε N/T ) $ S 1 2 2 ))$ ) )

مثال ) match 1. S S ) 2. S ε N/T ) $ S 1 2 2 ))$ ) )

مثال ) match 1. S S ) 2. S ε N/T ) $ S 1 2 2 ))$ )

مثال accept 1. S S ) 2. S ε N/T ) $ S 1 2 2 ))$

چگونگی ساختن جدول 1. S S ) 2. S ε N/T ) $ S 1 2 2 First S) Follow S)

چگونگی ساختن جدول جدولی که ستونهای آن الفبا و سطرهای آن متغیرهای گرامر هستند را ایجاد می کنیم. مجموعه first هر متغیر و قانونهای مربوطه اش را پیدا کرده و در خانه مربوطه شماره قانون را وارد می کنیم. برای متغیرهایی که به رشته تهی می روند, follow را پیدا می کنیم نه دقیقا!!). مجموعه

تعریف مجموعه های first و follow مجموعه : first زیر مجموعه ای از الفبا که نشان می دهد رشته هایی که از یک متغیر بدست می آیند با چه حرفی شروع می شوند. مجموعه : follow زیر مجموعه ای از الفبا که نشان می دهد رشته هایی که در دنباله یک متغیر می آیند با چه حرفی شروع می شوند.

پیدا کردن مجموعه first A ε A a A aβ A αβ firsta) = {ε} firsta) = {a} firsta) = {a} firsta) = firstfirstα)firstβ)) A α1 α2 αn firsta)= U firsta) A αi

مثال S aas bc A cc da ε C AS firsts) S aas = {a} firsts) S bc = {b} firsts)={a,b} firsta) A cc = {c} firsta da) A da = {d} firsta)={c,d,ε} firstc) = firstfirsta)firsts))= first{c,d,ε}{a,b})= first{ca,cb,da,db,a,b})= {c,d,a,b}

پیدا کردن مجموعه follow A is start symbol followa) $ A αbβ followb) = firstfirstβ)followα)) A1 α1bβ1 A2 α2bβ2 A3 α3bβ3. followb) = U followb) Ai αibβi هنگام افتادن در دور از محاسبه صرف نظر می کنیم.

S aas bc A cc da ε C AS S is start symbol follows) S aas = firstfirstε)follows))= firstfollows))= follows) follows) C AS = firstfirstε)followc))= firstfollowc))= followc) follows) $ مثال follows)={$} U followc)

مثال S aas bc A cc da ε C AS followc) S bc = firstfirstε)follows))= firstfollows))= follows) S is start symbol FollowS)= FollowC)= {$}

S aas bc A cc da ε C AS S is start symbol followa) A da = firstfirstε)followa))= firstfollowa))= followa) followa) S aas = firstfirsts)follows))= first{a,b}{$})= {a,b} followa) C AS = firstfirsts)followc))= first{a,b}{$})= {a,b} followa)={a,b} مثال

مثال ساختن جدول 1. S S ) 2. S ε N/T ) $ S

مثال ساختن جدول 1. S S ) 2. S ε first S) ) S S) = { } N/T ) $ S 1

مثال ساختن جدول N/T 1. S S ) 2. S ε ) $ S 1 2 2 first S ε ) = { ε } follow S ) $ follow S ) S S) = firstfirst{ ) })follows))= first{ ) }follows))= { ) } follow S) = { $, ) }

مثال دیگر block_stmt stmt stmt_seq stmt_seq ; block_stmt ε stmt s

مثال دیگر ادامه) block_stmt stmt stmt_seq stmt_seq ; block_stmt ε stmt s firstblock_stmt)= firstfirststmt)firststmt_seq))= first{s}{;, ε})= first{s;, s}) = {s} firststmt_seq)= firststmt_seq) stmt_seq ; block_stmt U firststmt_seq) stmt_seq ε = {;} U {ε} = {;, ε} firststmt)= {s}

مثال دیگر ادامه) 1. block_stmt stmt stmt_seq 2. stmt_seq ; block_stmt 3. ε 4. stmt s block_stmt stmt_seq stmt s 1 4 ; 2 $

مثال دیگر ادامه) block_stmt stmt stmt_seq stmt_seq ; block_stmt ε stmt s followstmt_seq)= firstfirstε) followblock_stmt)) = followblock_stmt) = {$} followblock_stmt)= {$} U followblock_stmt) stmt_seq ; block_stmt = {$} U firstfirstε) followstmt_seq)) = {$} U followstmt_seq)

مثال دیگر ادامه) 1. block_stmt stmt stmt_seq 2. stmt_seq ; block_stmt 3. ε 4. stmt s block_stmt stmt_seq stmt s 1 4 ; 2 $ 3

چه گرامرهایی LL1) نیستند گرامرهایی که در حداقل یکی از خانه های جدول, بیش از یک قانون نوشته شده باشد. یا: A α1 α2 αn firstαi) Λ firstαj) = {} ε E firsta) firsta) Λ followa) = {}

مثال از گرامری که LL1) نیست. stmt if_stmt other if_stmt if exp ) stmt else_part else_part else stmt ε exp 0 1

مثال از گرامری که LL1) نیست. stmt if_stmt other if_stmt if exp ) stmt else_part else_part else stmt ε exp 0 1 firststmt)= firstif_stmt) U {other}= { if, other} firstif_stmt)= {if} firstelse_part)= {else, ε} firstexp)= {0,1} followelse_part)= followif_stmt)= followstmt)= firstfirstelse_part)followif_stmt)) U followelse_part) U {$} = first{else, ε}followstmt) U {$}= {else, $ }

مثال از گرامری که LL1) نیست. ادامه) stmt if_stmt other if_stmt if exp ) stmt else_part else_part else stmt ε exp 0 1 firststmt)= firstif_stmt) U {other}= { if, other} firstif_stmt)= {if} firstelse_part)= {else, ε} firstexp)= {0,1} followelse_part)= {else, $ } firstelse_part) Λ followelse_part) <> {}

مثال از گرامری که LL1) نیست. ادامه) 1. stmt if_stmt 2. other 3. if_stmt if exp ) st else_part 4. else_part else stmt s is if 1 3 ot 2 ) else 0 1 $ 5. ε 6. exp 0 7. 1 ep ex 4,5 6 7 5 firststmt)= firstif_stmt) U {other}= { if, other} firstif_stmt)= {if} firstelse_part)= {else, ε} firstexp)= {0,1} followelse_part)= {else, $ }

دو مشکل که با رفع آنها ممکن است گرامر به LL1) تبدیل شود. Left recursion Common factor بازگشتی از چپ فاکتور مشترک

بازگشتی از چپ Left recursion A Aa b firsta)= {b} U firsta)=? baa$

حذف بازگشتی از چپ A Aa b A ba A aa ε A Aα1 Aα2 Aαn β1 β2 βm A β1a β2a βma A α1a α2a αna ε

مثال exp exp addop term term exp term exp exp addop term exp ε

حذف بازگشتی از چپ غیر مستقیم non immediate A Bα B Aβ از جایگزینی باید استفاده کرد. با اولویت بندی متغیرها, از افتادن در دور هنگام جایگذاری جلوگیری می کنیم.

A Ba Aa c B Bb Ab d مثال -1 اولویت -3 B > A جايگذاري A در B A BaA ca A aa ε -2 حذف بازگشتی از چپ B Bb BaA b ca b d A A BaA ca 4- حذف بازگشتي از چپ B A aa ε A BaA ca B Bb Ab d A aa ε B ca bb db B bb aa bb ε

فاکتور مشترک Common factor A αβ1 αβ2 firsta αβ1) Λ firsta αβ2) <> {}

حذف فاکتور مشترک A αβ1 αβ2 A αa A β1 β2

مثال exp exp addop term term term term mulop fact fact fact exp) n addop + - mulop * Left recursion : exp term

مثال exp exp addop term term term term mulop fact fact fact exp) n addop + - mulop * exp term exp exp addop term exp ε term fact term term mulop fact term ε fact exp) n addop + - mulop *

مثال block_stmt stmt ; block_stmt stmt stmt s Common factor block_stmt

مثال block_stmt stmt ; block_stmt stmt stmt s block_stmt stmt block_stmt block_stmt ; block_stmt ε stmt s

مثال کلی جدول پارس و پارس رشته n+n*n exp term exp exp addop term exp ε term fact term term mulop fact term ε fact exp) n addop + - mulop *

مثال کلی جدول پارس و پارس رشته n+n*n exp term exp exp addop term exp ε term fact term term mulop fact term ε fact exp) n addop + - mulop * firstexp) firstexp ) firstterm) firstterm ) firstfact) firstaddop) firstmulop)

مثال کلی جدول پارس و پارس رشته n+n*n exp term exp exp addop term exp ε term fact term term mulop fact term ε fact exp) n addop + - mulop * firstexp) firstexp ) firstterm) firstterm ) firstfact) = {,n} firstaddop) = {+,-} firstmulop) = {*}

مثال کلی جدول پارس و پارس رشته n+n*n exp term exp exp addop term exp ε term fact term term mulop fact term ε fact exp) n addop + - mulop * firstexp) firstexp ) = {+,-,ε} firstterm) = {,n} firstterm ) = {*, ε} firstfact) = {,n} firstaddop) = {+,-} firstmulop) = {*}

مثال کلی جدول پارس و پارس رشته n+n*n exp term exp exp addop term exp ε term fact term term mulop fact term ε fact exp) n addop + - mulop * firstexp) = {,n} firstexp ) = {+,-,ε} firstterm) = {,n} firstterm ) = {*, ε} firstfact) = {,n} firstaddop) = {+,-} firstmulop) = {*}

مثال کلی جدول پارس و پارس رشته n+n*n exp term exp exp addop term exp ε term fact term term mulop fact term ε fact exp) n addop + - mulop * followexp ) followterm )

مثال کلی جدول پارس و پارس رشته n+n*n exp term exp exp addop term exp ε term fact term term mulop fact term ε fact exp) n addop + - mulop * followexp ) followterm ) followexp) = {$,)}

مثال کلی جدول پارس و پارس رشته n+n*n exp term exp exp addop term exp ε term fact term term mulop fact term ε fact exp) n addop + - mulop * followexp ) = {$, )} followterm ) followexp) = {$,)}

مثال کلی جدول پارس و پارس رشته n+n*n exp term exp exp addop term exp ε term fact term term mulop fact term ε fact exp) n addop + - mulop * followexp ) = {$, )} followterm ) followexp) = {$,)} followterm) = first{+,-,ε}{$,)})= {+,-,$,)}

مثال کلی جدول پارس و پارس رشته n+n*n exp term exp exp addop term exp ε term fact term term mulop fact term ε fact exp) n addop + - mulop * followexp ) = {$, )} followterm ) = {+,-,$,)} followexp) = {$,)} followterm) = first{+,-,ε}{$,)})= {+,-,$,)}

مثال کلی جدول پارس و پارس رشته n+n*n 1. exp term exp 2. exp addop term exp 3. ε 4. term fact term 5. term mulop fact term 6. ε 7. fact exp) 8. n 9. addop + 10. - 11. mulop * exp exp term term fact add n 1 4 8 1 4 7 ) 3 6 + 2 6 9-2 6 10 * 5 $ 3 6 mul 11

مثال کلی جدول پارس و پارس رشته n+n*n exp exp term n 1 4 1 4 ) 3 + 2-2 * $ 3 Stack exp exp term exp term fact Input n+n*n$ n+n*n$ n+n*n$ term 6 6 6 5 6 fact 8 7 add 9 10 mul 11