ΑΡΙΣΟΣΕΛΕΙΟ ΠΑΝΕΠΙΣΗΜΙΟ ΘΕΑΛΟΝΙΚΗ ΑΝΟΙΚΣΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΣΑ Σχεδίαση Γλωσσών & Μεταγλωττιστζς Ενότητα 8: Πίνακεσ LR Ανάλυςησ Επ. Καθ. Π. Κατςαρόσ Τμήμα Πληροφορικήσ
Άδειεσ Χρήςησ Το παρόν εκπαιδευτικό υλικό υπόκειται ςε άδειεσ χρήςησ Creative Commons. Για εκπαιδευτικό υλικό, όπωσ εικόνεσ, που υπόκειται ςε άλλου τφπου άδεια χρήςησ, η άδεια χρήςησ αναφζρεται ρητώσ.
Χρηματοδότηςη Το παρόν εκπαιδευτικό υλικό ζχει αναπτυχθεί ςτα πλαίςια του εκπαιδευτικοφ ζργου του διδάςκοντα. Το ζργο «Ανοικτά Ακαδημαϊκά Μαθήματα ςτο Αριςτοτζλειο Πανεπιςτήμιο Θεςςαλονίκησ» ζχει χρηματοδοτήςει μόνο τη αναδιαμόρφωςη του εκπαιδευτικοφ υλικοφ. Το ζργο υλοποιείται ςτο πλαίςιο του Επιχειρηςιακοφ Προγράμματοσ «Εκπαίδευςη και Δια Βίου Μάθηςη» και ςυγχρηματοδοτείται από την Ευρωπαϊκή Ζνωςη (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικοφσ πόρουσ.
Αναλσηής LR ώθηζης - απλοποίηζης Ι Σσκβοιοζεηρά εηζόδοσ θεθαιή αλάγλωζες Πίλαθας ελεργεηώλ Πίλαθας κεηαβάζεωλ Αιγόρηζκος αλάισζες LR 9 Y ζηοίβα (ζύκβοια δωηηθού προζέκαηος θαη θαηαζηάζεης) 4 4
Αναλσηής LR ώθηζης - απλοποίηζης ΙI push($); // $ ηο ζύκβοιο ηέιοσς ζσκβοιοζεηράς push(s 0 ); // s 0 ε αρτηθή θαηάζηαζε lookahead = get_next_token(); repeat forever s = top_of_stack(); // ACTION είλαη ο πίλαθας ελεργεηώλ if ( ACTION[s,lookahead] = = απλοποίηση ) then pop 2* ζύκβοια; //αθαηρούληαη ηα ζύκβοια & οη θαηαζηάζεης s = top_of_stack(); push( ); push(goto[s, ]); // GOTO είλαη ο πίλαθας κεηαβάζεωλ else if ( ACTION[s,lookahead] = = ώθηση s i ) then push(lookahead); push(s i ); lookahead = get_next_token(); else if ( ACTION[s,lookahead] = = αποδοχή and lookahead = = $ ) then return (επηηστής αλαγλώρηζε); else error(); 5
Αναλσηής LR ώθηζης - απλοποίηζης ΙIΙ Μηα γραμμαηική είναι LR(k) αλ, δνζείζεο κηαο δεμηάο παξαγσγήο S 0 1 2 n-1 n πξόηαζε κπνξνύκε: 1. Να αλαγλσξίζνπκε κηα ιαβή απινπνίεζεο γηα θάζε δεμηά πξνηαζηαθή κνξθή i, θαη 2. Να θαζνξίζνπκε ηνλ θαλόλα ηεο απινπνίεζεο κε ηελ αλάγλσζε ηεο i από αξηζηεξά πξνο ηα δεμηά, πξνρσξώληαο ην πνιύ k ζύκβνια πην δεμηά από ην ηέινο ηεο ιαβήο απινπνίεζεο ηεο i. 6
Αναλσηής LR ώθηζης - απλοποίηζης ΙV Αλ κία γξακκαηηθή είλαη LR(?) ππάξρεη κία θαη κόλν κία δεμηά παξαγσγή ηεο θάζε πξόηαζεο ην πάλσ κέξνο ηεο ζηνίβαο είηε ππάξρνπλ όιεο νη ελεξγέο ιαβέο απινπνίεζεο πνπ πεξηιακβάλνπλ ηελ θνξπθή ηεο ζηνίβαο, είηε σζνύληαη ζύκβνια κέρξη λα απνηειεί ε θνξπθή ην δεμί άθξν κηαο ιαβήο απινπνίεζεο Η γιώζζα ησλ ιαβώλ απινπνίεζεο είλαη θαλνληθή θαη άξα κπνξεί λα θαηαζθεπαζζεί έλα πξνζδηνξηζηηθό πεπεξαζκέλν απηόκαην πνπ λα εθηειεί αλαγλώξηζε ιαβώλ απινπνίεζεο νη πίλαθεο ελεξγεηώλ θαη κεηάβαζεο νπζηαζηηθά εθθξάδνπλ ην ζπγθεθξηκέλν απηόκαην Κάζε λέα θαηάζηαζε ηνπ απηόκαηνπ ηελ εηζάγνπκε ζηε ζηνίβα Οη ηειηθέο θαηαζηάζεηο ηνπ απηόκαηνπ αληηζηνηρνύλ ζε ελέξγεηεο απινπνίεζεο λέα θαηάζηαζε είλαη ε GOTO[αξηζηεξό ζύκβνιν θαλόλα, θαηάζηαζε θνξπθήο] 7
Αναλσηής LR ώθηζης - απλοποίηζης V Πσο θηηάρλνπκε ηνπο πίλαθεο ελεξγεηώλ & κεηαβάζεσλ; Σηνίβα πεγαίος θώδηθας Λεμηθόο αλαιπηήο Αλαιπηήο Ελδηάκεζε Αλαπαράζηαζε γρακκαηηθή Γελλήηξηα αλαιπηή (yacc) Πίλαθεο Ελεξγεηώλ & Μεηαβάζεωλ 8
Αναλσηής LR ώθηζης - απλοποίηζης VΙ Πσο θηηάρλνπκε ηνπο πίλαθεο ελεξγεηώλ & κεηαβάζεσλ (ρσξίο ην yacc); θαηαζθεπάδνπκε από ηε γξακκαηηθή ην απηόκαην αλαγλώξηζεο ιαβώλ απινπνίεζεο νξίδνπκε ηνπο πίλαθεο ελεξγεηώλ & κεηαβάζεσλ αλ ε θαηαζθεπή ηνπ απηνκάηνπ πεηύρεη ηόηε ε γξακκαηηθή είλαη γξακκαηηθή LR(?) αιιηώο είλαη πηζαλό λα πξνθύςνπλ ζπγθξνύζεηο ώζεζεο απινπνίεζεο ή ζπγθξνύζεηο απινπνίεζεο απινπνίεζεο ηόηε ή ζα πξέπεη λα εθαξκνζζεί κία άιιε θαηαζθεπή LR(?) ή λα θαηαζθεπάζνπκε ηνλ αλαιπηή έηζη ώζηε ζε κία πεξίπησζε ζύγθξνπζεο λα επηιέγεη θάζε θνξά κία ζπγθεθξηκέλε ελέξγεηα οι αναλσηές ηοσ byacc όηαν έτοσμε ζύγκροσζη ώθηζης απλοποίηζης εκηελούν κάθε θορά ηην ώθηζη 9
Αναλσηής LR ώθηζης - απλοποίηζης VΙΙ Πσο θηηάρλνπκε ην απηόκαην αλαγλώξηζεο ιαβώλ απινπνίεζεο (ρσξίο ην yacc); ρξεζηκνπνηνύκε ζηνηρεία LR(k) γηα λα θσδηθνπνηήζνπκε ην ζύλνιν ησλ θαλόλσλ πνπ κπνξεί ην δεμί ηνπο κέξνο λα απνηειέζεη ιαβή απινπνίεζεο ζε κία δεδνκέλε θαηάζηαζε ππνινγίδνπκε γηα θάζε θαηάζηαζε ηα goto( s, ) θαη closure( s ), δειαδή ην θιείζηκν (βι. ζπλέρεηα) θαηαγξάθνπκε ηηο θαηαζηάζεηο θαη ηηο κεηαβάζεηο ηνπ απηόκαηνπ ζπκπιεξώλνπκε ηνπο πίλαθεο ελεξγεηώλ & κεηαβάζεσλ 10
Αναλσηής LR ώθηζης - απλοποίηζης VΙΙΙ ηνηρείν LR(k) είλαη έλα δεύγνο [A, B], όπνπ A είλαη κία παξαγσγή κε κία θάπνπ ζην δεμί κέξνο B ζύκβνια εηζόδνπ κε κήθνο k (ηεξκαηηθά ή $) Παξαδείγκαηα: [, a] [, a] [, a] [, a] Η δείρλεη ηελ ηξέρνπζα ζέζε πνπ κπνξνύκε λα ζεσξήζνπκε όηη αλαπαξηζηά ε θνξπθή ηεο ζηνίβαο ζηνηρεία LR(0) [ ] (δελ ππάξρνπλ ζύκβνια εηζόδνπ) ζηνηρεία LR(1) [, a ] (έλα κόλν ζύκβνιν εηζόδνπ) ζηνηρεία LR(2) [, a b ] (δύν ζύκβνια εηζόδνπ)... 11
Πίνακες ανάλσζης LR(1) I Η παξαγσγή, κε ζύκβνιν εηζόδνπ a, παξάγεη 4 ζηνηρεία LR(1) [, a], [, a], [, a], & [, a] Σν ζύλνιν ησλ LR(1) ζηνηρείσλ κηαο γξακκαηηθήο είλαη πεπεξαζκέλν. Πνηα είλαη ε ζεκαζία ησλ ζπκβόισλ εηζόδνπ ζηα ζηνηρεία; ηα θαηαγξάθνπκε έηζη ώζηε λα νδεγνύκαζηε ζηε ζσζηή απινπνίεζε αλ ε βξίζθεηαη ζε ελδηάκεζε ζέζε ζε έλα κόλν ζηνηρείν δελ παίδεη θάπνην ηδηαίηεξν ξόιν π.ρ. ζην [, a], ην ζύκβνιν εηζόδνπ δελ έρεη ηδηαίηεξε ζεκαζία ζην [, a], ην ζύκβνιν a νδεγεί ζηελ απινπνίεζε ζην ζύλνιν { [, a],[, b] } ζπκβόιν εηζόδνπ = a απλοποίηση ζε ; ζύκβνιν εηζόδνπ FIRST( ) ώθηση ζε κία LR(1) γξακκαηηθή έλα ζύκβνιν εηζόδνπ είλαη αξθεηό γηα λα θαζνξίζεη ηελ επόκελε ελέξγεηα 12
Πίνακες ανάλσζης LR(1) II Οη θαηαζηάζεηο ηνπ πξνζδηνξηζηηθνύ απηόκαηνπ αλαγλώξηζεο ιαβώλ απινπνίεζεο νξίδνληαη σο ζύλνια ζηνηρείσλ, I 0, I 1,..., I n a. Δηζάγνπκε έλα λέν ζύκβνιν S θαη κία παξαγσγή S S όπνπ S ε αξρή ηεο γξακκαηηθήο b. Η αξρηθή θαηάζηαζε, I 0 πεξηιακβάλεη ηα ζηνηρεία [S S, $] θαη όια ηα ηζνδύλακα πνπ δίλνληαη σο closure( I 0 ) c. Γηα θάζε ζύλνιν I k θαη θάζε ζύκβνιν, βξίζθνπκε ην goto(i k, ) αλ ην ζύλνιν ηεο goto(i k, ) δελ έρεη ήδε δεκηνπξγεζεί ηόηε ην δεκηνπξγνύκε θαηαγξάθνπκε όιεο ηηο κεηαβάζεηο goto( ) 2 πκπιεξώλνπκε ηνπο πίλαθεο ελεξγεηώλ θαη κεηαβάζεσλ ηεο αλάιπζεο 13
Πίνακες ανάλσζης LR(1) IIΙ ΤΠΟΛΟΓΙΜΟ closure(i) Σν closure(i) πξνζζέηεη ζην ζύλνιν I όια ηα ζηνηρεία πνπ πξνθύπηνπλ από ηα ήδε ππάξρνληα ζην I θάζε ζηνηρείν [, a] δεκηνπξγεί επίζεο όια ηα [, x] γηα θάζε παξαγσγή κε ζηα αξηζηεξά θαη γηα όια ηα x FIRST( a) εθόζνλ ζπκπεξηιεθζνύλ όια ηα ζηνηρεία ηεο παξαγσγήο πεξηιακβάλνληαη θαη όζα πξνθύπηνπλ από απηά εθαξκόδνληαο ηελ ίδηα πξάμε Closure( I ) while ( το σύνολο I μεγαλώνει ) for κάθε [, a] I for κάθε παραγωγή P for κάθε τερματικό b FIRST( a) if [, b] I then προσέθεσε το [, b] στο I 14
Πίνακες ανάλσζης LR(1) IV ΤΠΟΛΟΓΙΜΟ goto(i,x) Τπνινγίδεη ηε λέα θαηάζηαζε πνπ ν αλαιπηήο πξνζεγγίδεη αλ απηόο βξίζθεηαη ζηελ θαηάζηαζε I θαη αλαγλσξίδεη ην ηεξκαηηθό x goto( { [, a] }, ) παξάγεη θαηάζηαζε πνπ πεξηιακβάλεη ην [, a] αλ δελ ππάξρεη δεκηνπξγείηαη θαη πεξηιακβάλεηαη ζε απηή θαη ην closure( [, a] ) Goto( I, x ) new = Ø for κάθε [ x, a] I new = new [ x, a] return closure(new) 15
Πίνακες ανάλσζης LR(1) V ΑΛΓΟΡΙΘΜΟ ΚΑΣΑΚΔΤΗ ΑΤΣΌΜΑΣΟΤ Ξεθηλάκε από ην I 0 = closure( [S S, $] ) Γεκηνπξγνύκε ζπλέρεηα λέεο θαηαζηάζεηο κέρξη ηε ζηηγκή πνπ δελ ζα κπνξεί λα δεκηνπξγεζνύλ άιιεο I 0 = closure( [S S, $] ) C = { I 0 } while ( προστίθενται στο C νέα σύνολα στοιχείων ) for κάθε I i C και κάθε x ( T NT ) I new = goto(i i, x) if I new C then C = C I new κατέγραψε τη μετάβαση I i I new με αναγνώριση του x 16
Πίνακες ανάλσζης LR(1) VΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΣΑΚΔΤΗ ΠΙΝΑΚΩΝ LR(1) Closure( I ) while ( το σύνολο I μεγαλώνει ) for κάθε [, a] I for κάθε παραγωγή P for κάθε τερματικό b FIRST( a) if [, b] I then προσέθεσε το [, b] στο I I 0 = closure( [S S, $] ) C = { I 0 } Goto( I, x ) new = Ø for κάθε [ x, a] I new = new [ x, a] return closure(new) while ( προστίθενται στο C νέα σύνολα στοιχείων ) for κάθε I i C και κάθε x ( T NT ) I new = goto(i i, x) if I new C then C = C I new κατέγραψε τη μετάβαση I i I new με αναγνώριση του x 17
Παράδειγμα ανάλσζης LR(1) Ι S έθθραζε έθθραζε όρος - έθθραζε έθθραζε όρος όρος παράγοληας * όρος όρος παράγοληας παράγοληας id Σύκβοιο FIRST S { id } έκυραση { id} όρος { id } παράγοντας { id} - { - } * { * } id { id} 18
Παράδειγμα ανάλσζης LR(1) ΙΙ I 1 = {[S έκυραση, \0]} έκυραση I 0 = {[S έκυραση,\0], [έκυραση όρος - έκυραση, \0], [έκυραση όρος, \0], [όρος παράγοντας * όρος, {\0,-}], [όρος παράγοντας, {\0,-}], [παράγοντας id,{\0,-,*}]} I 4 = { [παράγοντας id, {\0,-,*}] } id παράγοντας όρος I 2 = { [έκυραση όρος - έκυραση, \0], [έκυραση όρος, \0] } id παράγοντας I 6 ={[όρος παράγοντας * όρος, {\0,-}], [όρος παράγοντας * όρος, {\0,-}], [όρος παράγοντας, {\0,-}], [παράγοντας id, {\0, -, *}]} I 3 = {[όρος παράγοντας * όρος, {\0,-}], [όρος παράγοντας, {\0,-}]} * - όρος παράγοντας id I 5 = {[έκυραση όρος - έκυραση, \0], [έκυραση όρος - έκυραση, \0], [έκυραση όρος, \0], [όρος παράγοντας * όρος, {\0,-}], [όρος παράγοντας, {\0,-}], [παραγοντας id, {\0,-,*}] } έκυραση I 8 = { [όρος παράγοντας * όρος, {\0,-}] } I 7 = { [έκυραση όρος - έκυραση, \0] } 19
Παράδειγμα ανάλσζης LR(1) ΙΙΙ ΓΗΜΙΟΤΡΓΙΑ ΠΙΝΑΚΩΝ for θάζε ζύλοιο ζηοητείωλ I x C for θάζε ζηνηρείν I x if ζηοητείο είλαη [ a,b] θαη a T θαη goto(i x,a) = I k, then ACTION[x,a] ώζεζε k else if ζηοητείο είλαη [S S,$] then ACTION[x,$] απνδνρή else if ζηοητείο είλαη [,a] then ACTION[x,a] απινπνίεζε for θάζε n NT if goto(i x,n) == I k then GOTO[x,n] k 20
Παράδειγμα ανάλσζης LR(1) ΙV ΔΝΔΡΓΔΙΔΣ ΜΔΤΑΒΑΣΔΙΣ id - * $ έκυραση όρος παράγο ντας 0 ωζ 4 1 2 3 1 απνδ 2 σζ 5 απ 3 3 απ 5 σζ 6 απ 5 4 απ 6 απ 6 απ 6 5 σζ 4 7 2 3 6 σζ 4 8 3 7 απ 2 8 απ 4 απ 4 21
Σσγκρούζεις ενεργειών Ση γίλεηαη αλ ε θαηάζηαζε s πεξηέρεη [ a, b] θαη [, a] ; Σν πξώην ζηνηρείν παξάγεη ώζεζε θαη ην δεύηεξν απινπνίεζε Γελ κπνξνύκε ζην ACTION[s,a] λα ζπκπιεξώζνπκε δύν ελέξγεηεο Σύγκροσζη ώθηζης απλοποίηζης (shift reduce conflict) Μπνξνύκε ή λα αιιάμνπκε ηε γξακκαηηθή ή απζαίξεηα λα επηιέμνπκε ηελ εθηέιεζε ώζεζεο, θάηη πνπ έρεη απνδεηρζεί όηη ζπλήζσο απνδίδεη ηε ζσζηή ζεκαζία (π.ρ. Πξόβιεκα κεηέσξνπ else) ή λα επηιέμνπκε θάπνηα άιιε αλάιπζε LR Ση γίλεηαη όηαλ ε θαηάζηαζε s πεξηέρεη [, a] θαη [, a] ; Κάζε ζηνηρείν παξάγεη απινπνίεζε, αιιά κε δηαθνξεηηθό θαλόλα Γελ κπνξνύκε ζην ACTION[s,a] λα ζπκπιεξώζνπκε δύν ελέξγεηεο Σύγκροσζη απλοποίηζης απλοποίηζης (reduce reduce conflict) Έλδεημε ιάζνπο ζηε γξακκαηηθή θαη ζηηο δύν πεξηπηώζεηο ιέκε όηη ε γξακκαηηθή δελ είλαη LR(1) 22
Παραλλαγές ανάλσζης LR: LR(0) θιείζηκο ζσλόιοσ ζηοητείωλ LR(0): Closure( I ) while ( το σύνολο I μεγαλώνει ) for κάθε στοιχείο [ ] I for κάθε παραγωγή P if [ ] I then προσέθεσε το [ ] στο I κεηαβάζεης ζσλόιωλ ζηοητείωλ LR(0): Goto( I, x ) new = Ø for κάθε [ x ] I new = new [ x ] return closure(new) Βαζηθά είλαη οη ίδηοη αιγόρηζκοη όπως θαη θαηαζθεσή ζσλόιωλ ζηοητείωλ LR(0): γηα ηελ αλάισζε LR(1) I 0 = closure( [S S ] ) Η κόλε δηαθορά είλαη όηη ζηα ζηοητεία C = { I 0 } LR(0) δελ σπάρτεη ζύκβοιο εηζόδοσ θαη γη ασηό δελ παράγοληαη ποιιά ζηοητεία ζε while ( προστίθενται στο C νέα σύνολα στοιχείων) θάζε ζύλοιο for κάθε I i C και κάθε x ( T NT ) Η αλάισζε LR(0) παράγεη ιηγόηερες I new = goto(i i, x) θαηαζηάζεης if I new C then Γελ κπορεί λα αλαγλωρίζεη όιες ηης C = C I new γρακκαηηθές ποσ αλαγλωρίδεη ε LR(1) κατέγραψε τη μετάβαση I i I new με Δίλαη πηο πηζαλό λα οδεγήζεη ζε αναγνώριση του x ζσγθρούζεης αλάισζες 23
Παραλλαγές ανάλσζης LR: SLR(1) Ο αιγόξηζκνο SLR(1) γηα λα θαζνξίζεη πόηε ζα γίλεη απινπνίεζε ρξεζηκνπνηεί θαη ηα ζύλνια FOLLOW Οη αλαιπηέο SLR(1) έρνπλ ιηγόηεξεο θαηαζηάζεηο από όηη νη LR(1) for θάζε ζύλνιν ζηνηρείωλ I x C for θάζε ζηνηρείν I x if ζηοητείο είλαη [ a ] θαη a T θαη goto(i x,a) = I k, then ACTION[x,a] ώζεζε k else if ζηοητείο είλαη [S S ] then ACTION[x,\0] απνδνρή else if ζηοητείο είλαη [ ] then for θάζε a FOLLOW( ) then ACTION[x,a] απινπνίεζε for each n NT if goto(i x,n) = I k then GOTO[x,n] k 24
Παραλλαγές ανάλσζης LR: LALR(1) Βαζηθή ηδέα: ζπλέλσζε θαηαζηάζεσλ LR(1) θξαηάκε ηνλ ππξήλα LR(0) ησλ ζηνηρείσλ LR(1) (αγλννύκε ηα ζύκβνια εηζόδνπ) αλ δύν ζύλνια LR(1) έρνπλ ηνλ ίδην ππξήλα, ηόηε ηα ζπλελώλνπκε θαη ελεκεξώλνπκε ηνπο πίλαθεο ACTION θαη GOTO Οη αλαιπηέο LALR(1) κπνξνύλ λα θηηαρηνύλ κε δύν ηξόπνπο 1. Καηαζθεπή ησλ ζπλόισλ ζηνηρείσλ LR(1) θαη ζπλέλσζε 2. Αγλννύκε ηα ζηνηρεία κε ηειεία ζηελ αξρή ηνπ δεμηνύ κέξνπο θαη θαηαζθεπάδνπκε ππξήλεο ζπλόισλ ζηνηρείσλ LR(0). ηε ζπλέρεηα ρξεζηκνπνηνύκε έλαλ αιγόξηζκν πξνώζεζεο ζπκβόισλ εηζόδνπ γηα λα ππνινγίζνπκε ηα ζύκβνια εηζόδνπ. Η δεύηεξε πξνζέγγηζε είλαη πην απνδνηηθή επεηδή απνθεύγεη ηε δεκηνπξγία κεγάισλ ελδηάκεζσλ LR(1) πηλάθσλ 25
Παραλλαγές ανάλσζης LR: LALR(1) Έλαο αλαιπηήο LALR(1) γηα κηα γξακκαηηθή G έρεη ηνλ ίδην αξηζκό θαηαζηάζεσλ κε ηνλ αληίζηνηρν αλαιπηή SLR(1) Αλ έλαο αλαιπηήο LR(1) γηα κηα γξακκαηηθή G δελ παξνπζηάδεη ζπγθξνύζεηο ώζεζεο - απινπνίεζεο, ηόηε δελ ζα έρεη ζπγθξνύζεηο ώζεζεο απινπνίεζεο θαη ν αλαιπηήο LALR(1) Έλαο αλαιπηήο LALR(1) κπνξεί λα εκθαλίδεη ζύγθξνπζε απινπνίεζεο - απινπνίεζεο ρσξίο απηό λα ζπκβαίλεη θαη ζηνλ αληίζηνηρν LR(1) Οη αλαιπηέο LALR(1) είλαη πην γεληθνί από ηνπο SLR(1) θαη ζπγρξόλσο έρνπλ ην ίδην κηθξό ρώξν θαηαζηάζεσλ Αλάιπζε LALR(1) παξάγνπλ νη γελλήηξηεο yacc θαη byacc 26
Γλώζζες τωρίς ζσμθραζόμενα Ι Γιώζζεο ρωξίο ζπκθξαδόκελα Πξνζδηνξηζηηθέο γιώζζεο (LR(k)) LR(k) LR(1) Γιώζζεο LL(k) Γιώζζεο απιήο πξνήγεζεο Η ηεραρτία γιωζζώλ τωρίς ζσκθραδόκελα Γιώζζεο LL(1) Γιώζζεο πξνηεξαηόηεηαο ηειεζηώλ 27
Γλώζζες τωρίς ζσμθραζόμενα ΙΙ Γιώζζεο ρωξίο ζπκθξαδόκελα Γιώζζεο ρωξίο αζάθεηεο Πξνηεξαηόηεηαο ηειεζηώλ LR(k) LR(1) LALR(1) SLR(1) LR(0) LL(k) LL(1) Ιεραρτία γιωζζώλ τωρίς ζσκθραδόκελα Οη γιώζζεο πξνηεξαηόηεηαο ηειεζηώλ πεξηιακβάλνπλ θαη θάπνηεο γιώζζεο κε αζάθεηεο LL(1) είλαη ππνζύλνιν ηωλ γξακκαηηθώλ SLR(1) 28
ΑΡΙΣΟΣΕΛΕΙΟ ΠΑΝΕΠΙΣΗΜΙΟ ΘΕΑΛΟΝΙΚΗ ΑΝΟΙΚΣΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΣΑ Τζλος ενότητας Επεξεργαςία: Εμμανουζλα Στάχτιαρη Θεςςαλονίκη, 21/07/2014