Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση VIΙ. Εαρινό Εξάμηνο Lec 15 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής
|
|
- Ἀληκτώ Τοκατλίδης
- 5 χρόνια πριν
- Προβολές:
Transcript
1 Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση VIΙ Εαρινό Εξάμηνο Lec 15 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής
2 Αναλυτής LR ώθησης - απλοποίησης Ι Συμβολοσειρά εισόδου κεφαλή ανάγνωσης Πίνακας ενεργειών Πίνακας μεταβάσεων Αλγόριθμος ανάλυσης LR 9 Y στοίβα (σύμβολα ζωτικού προθέματος και καταστάσεις) 4
3 Αναλυτής 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();
4 Αναλυτής LR ώθησης - απλοποίησης ΙIΙ Μια γραμματική είναι LR(k) αν, δοθείσης μιας δεξιάς παραγωγής S n-1 n πρόταση μπορούμε: 1. Να αναγνωρίσουμε μια λαβή απλοποίησης για κάθε δεξιά προτασιακή μορφή i, και 2. Να καθορίσουμε τον κανόνα της απλοποίησης με την ανάγνωση της i από αριστερά προς τα δεξιά, προχωρώντας το πολύ k σύμβολα πιο δεξιά από το τέλος της λαβής απλοποίησης της i.
5 Αναλυτής LR ώθησης - απλοποίησης ΙV Αν μία γραμματική είναι LR(?) υπάρχει μία και μόνο μία δεξιά παραγωγή της κάθε πρότασης Στο πάνω μέρος της στοίβας είτε υπάρχουν όλες οι ενεργές λαβές απλοποίησης που περιλαμβάνουν την κορυφή της στοίβας, είτε ωθούνται σύμβολα μέχρι να αποτελεί η κορυφή το δεξί άκρο μιας λαβής απλοποίησης Η γλώσσα των λαβών απλοποίησης είναι κανονική και άρα μπορεί να κατασκευασθεί ένα προσδιοριστικό πεπερασμένο αυτόματο που να εκτελεί αναγνώριση λαβών απλοποίησης οι πίνακες ενεργειών και μετάβασης ουσιαστικά εκφράζουν το συγκεκριμένο αυτόματο Κάθε νέα κατάσταση του αυτόματου την εισάγουμε στη στοίβα Οι τελικές καταστάσεις του αυτόματου αντιστοιχούν σε ενέργειες απλοποίησης νέα κατάσταση είναι η GOTO[αριστερό σύμβολο κανόνα, κατάσταση κορυφής]
6 Αναλυτής LR ώθησης - απλοποίησης V Πως φτιάχνουμε τους πίνακες ενεργειών & μεταβάσεων; Στοίβα πηγαίος κώδικας Λεξικός αναλυτής Αναλυτής Ενδιάμεση Αναπαράσταση γραμματική Γεννήτρια αναλυτή (yacc) Πίνακες Ενεργειών & Μεταβάσεων
7 Αναλυτής LR ώθησης - απλοποίησης VΙ Πως φτιάχνουμε τους πίνακες ενεργειών & μεταβάσεων (χωρίς το yacc); κατασκευάζουμε από τη γραμματική το αυτόματο αναγνώρισης λαβών απλοποίησης ορίζουμε τους πίνακες ενεργειών & μεταβάσεων αν η κατασκευή του αυτομάτου πετύχει τότε η γραμματική είναι γραμματική LR(?) αλλιώς είναι πιθανό να προκύψουν συγκρούσεις ώθησης απλοποίησης ή συγκρούσεις απλοποίησης απλοποίησης τότε ή θα πρέπει να εφαρμοσθεί μία άλλη κατασκευή LR(?) ή να κατασκευάσουμε τον αναλυτή έτσι ώστε σε μία περίπτωση σύγκρουσης να επιλέγει κάθε φορά μία συγκεκριμένη ενέργεια οι αναλυτές του byacc όταν έχουμε σύγκρουση ώθησης απλοποίησης εκτελούν κάθε φορά την ώθηση
8 Αναλυτής LR ώθησης - απλοποίησης VΙΙ Πως φτιάχνουμε το αυτόματο αναγνώρισης λαβών απλοποίησης (χωρίς το yacc); χρησιμοποιούμε στοιχεία LR(k) για να κωδικοποιήσουμε το σύνολο των κανόνων που μπορεί το δεξί τους μέρος να αποτελέσει λαβή απλοποίησης σε μία δεδομένη κατάσταση υπολογίζουμε για κάθε κατάσταση τα goto( s, ) και closure( s ), δηλαδή το κλείσιμο (βλ. συνέχεια) καταγράφουμε τις καταστάσεις και τις μεταβάσεις του αυτόματου συμπληρώνουμε τους πίνακες ενεργειών & μεταβάσεων
9 Αναλυτής LR ώθησης - απλοποίησης VΙΙΙ Στοιχείο LR(k) είναι ένα ζεύγος [A, B], όπου A είναι μία παραγωγή με μία κάπου στο δεξί μέρος B σύμβολα εισόδου με μήκος k (τερματικά ή $) Παραδείγματα: [, a] [, a] [, a] [, a] Η δείχνει την τρέχουσα θέση που μπορούμε να θεωρήσουμε ότι αναπαριστά η κορυφή της στοίβας στοιχεία LR(0) [ ] (δεν υπάρχουν σύμβολα εισόδου) στοιχεία LR(1) [, a ] (ένα μόνο σύμβολο εισόδου) στοιχεία LR(2) [, a b ] (δύο σύμβολα εισόδου)...
10 Πίνακες ανάλυσης LR(1) I Η παραγωγή, με σύμβολο εισόδου a, παράγει 4 στοιχεία LR(1) [, a], [, a], [, a], & [, a] Το σύνολο των LR(1) στοιχείων μιας γραμματικής είναι πεπερασμένο. Ποια είναι η σημασία των συμβόλων εισόδου στα στοιχεία; τα καταγράφουμε έτσι ώστε να οδηγούμαστε στη σωστή απλοποίηση αν η βρίσκεται σε ενδιάμεση θέση σε ένα μόνο στοιχείο δεν παίζει κάποιο ιδιαίτερο ρόλο π.χ. στο [, a], το σύμβολο εισόδου δεν έχει ιδιαίτερη σημασία στο [, a], το σύμβολο a οδηγεί στην απλοποίηση στο σύνολο { [, a],[, b] } συμβόλο εισόδου = a απλοποίηση σε ; σύμβολο εισόδου FIRST( ) ώθηση σε μία LR(1) γραμματική ένα σύμβολο εισόδου είναι αρκετό για να καθορίσει την επόμενη ενέργεια
11 Πίνακες ανάλυσης 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 Συμπληρώνουμε τους πίνακες ενεργειών και μεταβάσεων της ανάλυσης
12 Πίνακες ανάλυσης 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
13 Πίνακες ανάλυσης 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)
14 Πίνακες ανάλυσης 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
15 Πίνακες ανάλυσης LR(1) VΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΤΑΣΚΕΥΗΣ ΠΙΝΑΚΩΝ LR(1) Closure( I ) while ( το σύνολο I μεγαλώνει ) for κάθε [, a] I for κάθε παραγωγή P for κάθε τερματικό b FIRST( a) if [, b] I then προσέθεσε το [, b] στο I Goto( I, x ) new = Ø for κάθε [ x, a] I new = new [ x, a] return closure(new) 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) Ι S έκφραση έκφραση όρος - έκφραση έκφραση όρος όρος παράγοντας * όρος όρος παράγοντας παράγοντας id ΣύμβολοFIRST S { id } έκφραση { id} όρος { id } παράγοντας { id} - { - } * { * } id { id}
17 Παράδειγμα ανάλυσης 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] }
18 Παράδειγμα ανάλυσης 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
19 Παράδειγμα ανάλυσης LR(1) ΙV ΕΝΕΡΓΕΙΕΣ ΜΕΤΑΒΑΣΕΙΣ id - * $ έκφραση όρος παράγο ντας 0 ωθ αποδ 2 ωθ 5 απ 3 3 απ 5 ωθ 6 απ 5 4 απ 6 απ 6 απ 6 5 ωθ ωθ απ 2 8 απ 4 απ 4
20 Συγκρούσεις ενεργειών Τι γίνεται αν η κατάσταση s περιέχει [ a, b] και [, a] ; Το πρώτο στοιχείο παράγει ώθηση και το δεύτερο απλοποίηση Δεν μπορούμε στο ACTION[s,a] να συμπληρώσουμε δύο ενέργειες Σύγκρουση ώθησης απλοποίησης (shift reduce conflict) Μπορούμε ή να αλλάξουμε τη γραμματική ή αυθαίρετα να επιλέξουμε την εκτέλεση ώθησης, κάτι που έχει αποδειχθεί ότι συνήθως αποδίδει τη σωστή σημασία (π.χ. Πρόβλημα μετέωρου else) ή να επιλέξουμε κάποια άλλη ανάλυση LR Τι γίνεται όταν η κατάσταση s περιέχει [, a] και [, a] ; Κάθε στοιχείο παράγει απλοποίηση, αλλά με διαφορετικό κανόνα Δεν μπορούμε στο ACTION[s,a] να συμπληρώσουμε δύο ενέργειες Σύγκρουση απλοποίησης απλοποίησης (reduce reduce conflict) Ένδειξη λάθους στη γραμματική και στις δύο περιπτώσεις λέμε ότι η γραμματική δεν είναι LR(1)
21 Παραλλαγές ανάλυσης LR: LR(0) κλείσιμο συνόλου στοιχείων LR(0): Closure( I ) while ( το σύνολο I μεγαλώνει ) for κάθε στοιχείο [ ] I for κάθε παραγωγή P if [ ] I then προσέθεσε το [ ] στο I κατασκευή συνόλων στοιχείων LR(0): 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 μεταβάσεις συνόλων στοιχείων LR(0): Goto( I, x ) new = Ø for κάθε [ x ] I new = new [ x ] return closure(new) Βασικά είναι οι ίδιοι αλγόριθμοι όπως και για την ανάλυση LR(1) Η μόνη διαφορά είναι ότι στα στοιχεία LR(0) δεν υπάρχει σύμβολο εισόδου και γι αυτό δεν παράγονται πολλά στοιχεία σε κάθε σύνολο Η ανάλυση LR(0) παράγει λιγότερες καταστάσεις Δεν μπορεί να αναγνωρίσει όλες τις γραμματικές που αναγνωρίζει η LR(1) Είναι πιο πιθανό να οδηγήσει σε συγκρούσεις ανάλυσης
22 Παραλλαγές ανάλυσης 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
23 Παραλλαγές ανάλυσης LR: LALR(1) Βασική ιδέα: συνένωση καταστάσεων LR(1) κρατάμε τον πυρήνα LR(0) των στοιχείων LR(1) (αγνοούμε τα σύμβολα εισόδου) αν δύο σύνολα LR(1) έχουν τον ίδιο πυρήνα, τότε τα συνενώνουμε και ενημερώνουμε τους πίνακες ACTION και GOTO Οι αναλυτές LALR(1) μπορούν να φτιαχτούν με δύο τρόπους 1. Κατασκευή των συνόλων στοιχείων LR(1) και συνένωση 2. Αγνοούμε τα στοιχεία με τελεία στην αρχή του δεξιού μέρους και κατασκευάζουμε πυρήνες συνόλων στοιχείων LR(0). Στη συνέχεια χρησιμοποιούμε έναν αλγόριθμο προώθησης συμβόλων εισόδου για να υπολογίσουμε τα σύμβολα εισόδου. Η δεύτερη προσέγγιση είναι πιο αποδοτική επειδή αποφεύγει τη δημιουργία μεγάλων ενδιάμεσων LR(1) πινάκων
24 Παραλλαγές ανάλυσης 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
25 Γλώσσες χωρίς συμφραζόμενα Ι Γλώσσες χωρίς συμφραζόμενα LR(k) LR(1) Προσδιοριστικές γλώσσες (LR(k)) Γλώσσες LL(k) Γλώσσες απλής προήγησης Η ιεραρχία γλωσσών χωρίς συμφραζόμενα Γλώσσες LL(1) Γλώσσες προτεραιότητας τελεστών
26 Γλώσσες χωρίς συμφραζόμενα ΙΙ Γλώσσες χωρίς συμφραζόμενα Γλώσσες χωρίς ασάφειες Προτεραιότητας τελεστών LR(k) LR(1) LALR(1) LL(k) Ιεραρχία γλωσσών χωρίς συμφραζόμενα Οι γλώσσες προτεραιότητας τελεστών περιλαμβάνουν και κάποιες γλώσσες με ασάφειες SLR(1) LR(0) LL(1) LL(1) είναι υποσύνολο των γραμματικών SLR(1)
27 Ανάνηψη λαθών Ι Εντοπισμός λάθους όσο το δυνατόν πιο έγκαιρα. Επιλογή θέσης από όπου θα συνεχίζεται η ανάλυση. Να εντοπίζονται μόνο υπαρκτά λάθη και να μην εμφανίζονται διαδιδόμενα πλασματικά λάθη. Να αποφεύγεται η μετάπτωση του αναλυτή σε ατέρμονες βρόχους. Τεχνικές ανάνηψης λαθών: - ανάνηψη «πανικού» - ανάνηψη σε επίπεδο φράσης - κανόνες παραγωγής για λάθη - συνολική διόρθωση
28 Ανάνηψη λαθών ΙΙ Η ανάνηψη «πανικού» στην προβλέπουσα αναδρομική κατάβαση υλοποιείται με τον καθορισμό μονάδων συγχρονισμού. Όταν ο αναλυτής βρει λάθος, τότε προσπερνά τις επόμενες μονάδες μέχρι να εντοπίσει μια μονάδα συγχρονισμού από την οποία μπορεί να συνεχίσει την ανάλυσης. Κάθε μη τερματικό σύμβολο έχει τις δικές του μονάδες συγχρονισμού. Οι μονάδες συγχρονισμού επιλέγονται μέσα από τα σύνολα FOLLOW. Στην ανάλυση LL(1) έχουμε εντοπισμό λάθους, όταν στην κορυφή της στοίβας βρίσκεται ένα μη τερματικό σύμβολο X, τέτοιο ώστε το τρέχον σύμβολο εισόδου να μην περιλαμβάνεται στο σύνολο FIRST(X) και αν αυτό συμβαίνει να περιέχει το ε, ούτε στο σύνολο FOLLOW(X).
29 Ανάνηψη «πανικού» στην ανάλυση LL(1) I Η ανάνηψη «πανικού» μπορεί εύκολα να υλοποιηθεί με τον προσδιορισμό της κατάλληλης ενέργειας, για κάθε περίπτωση κενής θέσης, στον πίνακα ανάλυσης. Διακρίνουμε τρεις πιθανές ενέργειες ανάνηψης: την αφαίρεση του συμβόλου Χ από τη στοίβα (pop), το προσπέρασμα ενός αριθμού συμβόλων εισόδου, μέχρι τον εντοπισμό μονάδας, που μπορεί να χρησιμοποιηθεί για την επανεκκίνηση της διαδικασίας ανάλυσης (scan) και την ώθηση στη στοίβα ενός νέου μη τερματικού συμβόλου.
30 Ανάνηψη «πανικού» στην ανάλυση LL(1) II Η pop εκτελείται, όταν η τρέχουσα λεξική μονάδα είναι η $ ή όταν αυτή ανήκει στο FOLLOW(X). Η scan εκτελείται, όταν η τρέχουσα λεξική μονάδα δεν είναι η $ και δεν ανήκει στο FIRST ( X ) FOLLOW ( X ). Η push επιστρατεύεται, όταν συμβεί να έχει αδειάσει η στοίβα, ενώ δεν έχει ολοκληρωθεί ακόμη η ανάγνωση όλων των μονάδων της συμβολοσειράς εισόδου. Τότε ωθείται στη στοίβα το σύμβολο της αρχής της γραμματικής και αγνοούνται ένα προς ένα όλα τα επόμενα σύμβολα εισόδου, μέχρι την ανάγνωση συμβόλου, που ανήκει στο σύνολο FIRST της αρχής.
31 Ανάνηψη «πανικού» στην ανάλυση LL(1) III ΠΑΡΑΔΕΙΓΜΑ (ανάνηψη λαθών στη γραμματική αριθμητικών εκφράσεων) S = έκφραση. έκφραση = όρος υπ_όροι. υπ_όροι = + όρος υπ_όροι - όρος υπ_όροι ε. όρος = παράγοντας υπ_παραγ. υπ_παραγ = * παράγοντας υπ_παραγ / παράγοντας υπ_παραγ ε. παράγοντας = ( έκφραση ) αριθμός.
32 Ανάνηψη «πανικού» στην ανάλυση LL(1) IV ΠΙΝΑΚΑΣ ΑΝΑΛΥΣΗΣ ΧΩΡΙΣ ΑΝΑΝΗΨΗ ΛΑΘΩΝ: M αριθμός + - * / ( ) $ έκφραση όρος υπ_όροι όρος υπ_όροι υπ_όροι + όρος υπ_όροι - όρος υπ_όροι ε ε όρος παράγοντας υπ_παραγ υπ_παραγ ε ε * παράγοντας υπ_παραγ παράγοντας αριθμός ΠΙΝΑΚΑΣ ΑΝΑΛΥΣΗΣ ΜΕ ΑΝΑΝΗΨΗ ΛΑΘΩΝ: / παράγοντας υπ_παραγ παράγοντας υπ_παραγ ( έκφραση ) ε ε αριθμός + - * / ( ) $ έκφραση όρος υπ_όροι scan scan scan scan όρος υπ_όροι pop pop υπ_όροι scan + όρος υπ_όροι - όρος υπ_όροι scan scan scan ε ε όρος παράγοντας pop pop scan scan παράγοντας pop pop υπ_παραγ υπ_παραγ υπ_παραγ scan ε ε * παράγοντας / παράγοντας scan ε ε υπ_παραγ υπ_παραγ παράγοντας αριθμός pop pop pop pop ( έκφραση ) pop pop
33 Ανάνηψη «πανικού» στην ανάλυση LL(1) V LL(1) ανάλυση και ανάνηψη λαθών για τη συμβολοσειρά (27-*) ΣΤΟΙΒΑ ΣΥΜ/ΕΙΡΑ ΠΑΡΑΓΩΓΗ $ έκφραση (27-*)$ $ υπ_όροι όρος (27-*)$ έκφραση = όρος υπ_όροι. $ υπ_όροι υπ_παραγ. παράγοντας (27-*)$ όρος = παράγοντας υπ_παραγ. $ υπ_όροι υπ_παραγ. ) έκφραση ( (27-*)$ παράγοντας = ( έκφραση ). $ υπ_όροι υπ_παραγ. ) έκφραση 27-*)$ $ υπ_όροι υπ_παραγ. ) υπ_όροι όρος 27-*)$ έκφραση = όρος υπ_όροι. $ υπ_όροι υπ_παραγ. ) υπ_όροι υπ_παραγ. παράγοντας 27-*)$ όρος = παράγοντας υπ_παραγ. $ υπ_όροι υπ_παραγ. ) υπ_όροι υπ_παραγ. αριθμός 27-*)$ παράγοντας = αριθμός. $ υπ_όροι υπ_παραγ. ) υπ_όροι υπ_παραγ. -*)$ $ υπ_όροι υπ_παραγ. ) υπ_όροι -*)$ υπ_παραγ. = ε. $ υπ_όροι υπ_παραγ. ) υπ_όροι όρος - -*)$ υπ_όροι = - όρος υπ_όροι. $ υπ_όροι υπ_παραγ. ) υπ_όροι όρος *)$ $ υπ_όροι υπ_παραγ. ) υπ_όροι όρος )$ scan $ υπ_όροι υπ_παραγ. ) υπ_όροι )$ pop $ υπ_όροι υπ_παραγ. ) )$ υπ_όροι. = ε. $ υπ_όροι υπ_παραγ. $ $ υπ_όροι $ υπ_παραγ. = ε. $ $ υπ_όροι. = ε.
34 Εντοπισμός λάθους στην ανάλυση LR I (1) έκφραση = έκφραση + όρος. (2) έκφραση = έκφραση - όρος. (3) έκφραση = όρος. (4) όρος = όρος * παράγοντας. (5) όρος = όρος / παράγοντας. (6) όρος = παράγοντας. (7) παράγοντας = ( έκφραση ). (8) παράγοντας = αριθμός. Πίνακας ενεργειών για τη γραμματική αριθμητικών εκφράσεων αριθμός + - * / ( ) $ κατάσταση 0 ώθηση ώθηση κατάσταση 1 ώθηση ώθηση αποδοχή κατάσταση 2 απλοπ (3) απλοπ (3) ώθηση ώθηση απλοπ (3) απλοπ (3) κατάσταση 3 απλοπ (6) απλοπ (6) απλοπ (6) απλοπ (6) απλοπ (6) απλοπ (6) κατάσταση 4 ώθηση ώθηση κατάσταση 5 απλοπ (8) απλοπ (8) απλοπ (8) απλοπ (8) απλοπ (8) απλοπ (8) κατάσταση 6 ώθηση ώθηση κατάσταση 7 ώθηση ώθηση κατάσταση 8 ώθηση ώθηση κατάσταση 9 ώθηση ώθηση κατάσταση 10 ώθηση ώθηση ώθηση κατάσταση 11 απλοπ (1) απλοπ (1) ώθηση ώθηση απλοπ (1) απλοπ (1) κατάσταση 12 απλοπ (2) απλοπ (2) ώθηση ώθηση απλοπ (2) απλοπ (2) κατάσταση 13 απλοπ (4) απλοπ (4) απλοπ (4) απλοπ (4) απλοπ (4) απλοπ (4) κατάσταση 14 απλοπ (5) απλοπ (5) απλοπ (5) απλοπ (5) απλοπ (5) απλοπ (5) κατάσταση 15 απλοπ (7) απλοπ (7) απλοπ (7) απλοπ (7) απλοπ (7) απλοπ (7)
35 Εντοπισμός λάθους στην ανάλυση LR II Πίνακας μεταβάσεων για τη γραμματική αριθμητικών εκφράσεων αριθμός + - * / ( ) έκφραση όρος παράγοντας κατάσταση κατάσταση κατάσταση κατάσταση 3 κατάσταση κατάσταση 5 κατάσταση κατάσταση κατάσταση κατάσταση κατάσταση κατάσταση κατάσταση κατάσταση 13 κατάσταση 14 κατάσταση 15
36 Εντοπισμός λάθους στην ανάλυση LR III Διάγνωση λάθους στη συμβολοσειρά (27-5*8 ΣΤΟΙΒΑ ΣΥΜΒΟΛΟΣΕΙΡΑ ΕΝΕΡΓΕΙΑ $0 (27-5*8$ ώθηση $0 ( *8$ ώθηση $0 ( 4 αριθμός 5-5*8$ απλοποίηση κατά (8) $0 ( 4 παράγοντας3-5*8$ απλοποίηση κατά (6) $0 ( 4 όρος2-5*8$ απλοποίηση κατά (3) $0 ( 4 έκφραση10-5*8$ ώθηση $0 ( 4 έκφραση10-7 5*8$ ώθηση $0 ( 4 έκφραση10-7 αριθμός 5 *8$ απλοποίηση κατά (8) $0 ( 4 έκφραση10-7 παράγοντας3 *8$ απλοποίηση κατά (6) $0 ( 4 έκφραση10-7 όρος12 *8$ ώθηση $0 ( 4 έκφραση10-7 όρος12 * 8 8$ ώθηση $0 ( 4 έκφραση10-7 όρος12 * 8 αριθμός 5 $ απλοποίηση κατά (8) $0 ( 4 έκφραση10-7 όρος12 * 8 παράγοντας13 $ απλοποίηση κατά (4) $0 ( 4 έκφραση10-7 όρος12 $ απλοποίηση κατά (2) $0 ( 4 έκφραση10 $ ΛΑΘΟΣ ( Missing parenthesis )
37 Εντοπισμός λάθους στην ανάλυση LR IV Αναγνώριση λάθους γίνεται όταν ο αλγόριθμος περιέλθει σε κατάσταση, που στον πίνακα ενεργειών δεν αντιστοιχεί συγκεκριμένη ενέργεια για το τερματικό εισόδου, που ακολουθεί. Το διαγνωστικό μήνυμα λάθους που πρέπει να τυπωθεί μπορεί να επιλεγεί αν εξετάσουμε τα περιεχόμενα της στοίβας. Διάγνωση λάθους στη συμβολοσειρά 27-*8 ΣΤΟΙΒΑ ΣΥΜΒΟΛΟΣΕΙΡΑ ΕΝΕΡΓΕΙΑ $0 27-*8$ ώθηση $0 αριθμός 5 -*8$ απλοποίηση κατά (8) $0 παράγοντας3 -*8$ απλοποίηση κατά (6) $0 όρος2 -*8$ απλοποίηση κατά (3) $0 έκφραση1 -*8$ ώθηση $0 έκφραση1-7 *8$ ΛΑΘΟΣ ( Missing operand )
38 Εντοπισμός λάθους στην ανάλυση LR V Ανάνηψη «πανικού»: Καθορίζεται ένα σύνολο μονάδων συγχρονισμού που συνήθως αποτελείται από διαχωριστές που δηλώνουν τέλος εντολών ή άλλων δομημένων στοιχείων της γλώσσας Όταν εντοπίζεται λάθος, τότε συνεχίζεται η ανάγνωση των λεξικών μονάδων εισόδου, μέχρι τον εντοπισμό κάποιας μονάδας συγχρονισμού. Ακολουθεί η σταδιακή αφαίρεση συμβόλων από τη στοίβα μέχρι αυτή να περιέλθει σε κατάσταση από την οποία ορίζεται συγκεκριμένη ενέργεια για το σύμβολο συγχρονισμού που εντοπίστηκε. Μετά την εκτέλεση της ενέργειας αυτής ο έλεγχος επανέρχεται στον αναλυτή για τη συνέχιση της διαδικασίας.
39 Εντοπισμός λάθους στην ανάλυση LR VΙ Ανάνηψη σε επίπεδο φράσης: Πρέπει όχι απλά να εντοπισθεί το λάθος, αλλά να γίνει και αναγνώριση του λάθους που εντοπίσθηκε. Η ανάνηψη αποβλέπει είτε στην τροποποίηση της κορυφής της στοίβας, είτε στην τροποποίηση των συμβόλων εισόδου που προηγούνται, για την απρόσκοπτη συνέχιση της ανάλυσης. Μία προσέγγιση αυτού του τύπου χαρακτηρίζεται από το ρίσκο να περιέλθει η ανάλυση σε ατέρμονα βρόχο. Συνιστώνται τεχνικές: που εγγυώνται την αφαίρεση από τη συμβολοσειρά εισόδου ή την ώθηση στη στοίβα τουλάχιστο μιας λεξικής μονάδας εγγυώνται το άδειασμα της στοίβας με την ολοκλήρωση της ανάγνωσης της συμβολοσειράς δεν αφαιρούν από τη στοίβα μη τερματικά σύμβολα και τις αντίστοιχες καταστάσεις, που έχουν ήδη αναγνωρισθεί
40 Εντοπισμός λάθους στην ανάλυση LR VΙΙ Ανάνηψη λαθών σε αναλυτές του byacc: Τροποποιούμε τη γραμματική προσθέτοντας κανόνες παραγωγής για λάθη, της μορφής: μη τερματικό: error μονάδες_συγχρονισμού όπου error η ψευδομονάδα λάθους του byacc. Μετά τον εντοπισμό λάθους (κενή θέση στον πίνακα ενεργειών) το byacc αφαιρεί από τη στοίβα όσα σύμβολα χρειάζεται, ώστε αυτή να περιέλθει σε κατάσταση, που περιέχει ένα τουλάχιστο στοιχείο προερχόμενο από κανόνα λάθους, με την τελεία τοποθετημένη στα αριστερά της ψευδομονάδας error. Στη συνέχεια ο αναλυτής ωθεί στη στοίβα τη μονάδα error, ως αν αυτή ήταν μια τυπική περίπτωση συμβόλου εισόδου. Αν στον κανόνα λάθους δεν έχει δηλωθεί κάποια μονάδα συγχρονισμού, τότε ο αναλυτής προχωράει άμεσα σε απλοποίηση σύμφωνα με αυτόν και εκτελεί τις ενέργειες που το συνοδεύουν. Η διαδικασία συνεχίζει αγνοώντας ένα ή περισσότερα σύμβολα εισόδου, μέχρι τον εντοπισμό εκείνου, για το οποίο ο πίνακας ενεργειών ορίζει τν επόμενη ενέργεια της ανάλυσης.
41 Εντοπισμός λάθους στην ανάλυση LR VΙΙΙ ΠΑΡΑΔΕΙΓΜΑ: ΓΡΑΜΜΑΤΙΚΗ ΑΡΙΘΜΗΤΙΚΩΝ ΕΚΦΡΑΣΕΩΝ (1) έκφραση = έκφραση + όρος. (2) έκφραση = έκφραση - όρος. (3) έκφραση = όρος. (4) όρος = όρος * παράγοντας. (5) όρος = όρος / παράγοντας. (6) όρος = παράγοντας. (7) παράγοντας = ( έκφραση ). (8) παράγοντας = αριθμός. Γράφουμε τον τελευταίο κανόνα της γραμματική μέσα στο byacc ως εξής: paragontas : ARITHMOS {$$=$1;} ( ekfrasi ) {$$=$2;} error {$$=0;} ;
42 Εντοπισμός λάθους στην ανάλυση LR IX ΠΑΡΑΔΕΙΓΜΑ: ΓΡΑΜΜΑΤΙΚΗ ΑΡΙΘΜΗΤΙΚΩΝ ΕΚΦΡΑΣΕΩΝ (συνέχεια) Ανάνηψη λάθους στην ανάλυση της συμβολοσειράς 27-*8 ΣΤΟΙΒΑ ΣΥΜΒΟΛΟΣΕΙΡΑ ΕΝΕΡΓΕΙΑ $0 27-*8$ ώθηση $0 αριθμός 2 -*8$ απλοποίηση κατά (8) $0 παράγοντας6 -*8$ απλοποίηση κατά (6) $0 όρος5 -*8$ απλοποίηση κατά (3) $0 έκφραση4 -*8$ ώθηση $0 έκφραση4-9 *8$ ΛΑΘΟΣ - ώθηση ( syntax error ) $0 έκφραση4-9 error1 *8$ απλοποίηση κατά (9) $0 έκφραση4-9 παράγοντας6 *8$ απλοποίηση κατά (6) $0 έκφραση4-9 όρος14 *8$ ώθηση $0 έκφραση4-9 όρος14 * 10 8$ ώθηση $0 έκφραση4-9 όρος14 * 10 αριθμός 2 $ απλοποίηση κατά (8) $0 έκφραση4-9 όρος14 * 10 παράγοντας15 $ απλοποίηση κατά (4) $0 έκφραση4-9 όρος14 $ απλοποίηση κατά (2) $0 έκφραση4 $ αποδοχή σημείωση: στην παραπάνω ανάλυση οι πίνακες της ανάλυσης είναι οι LALR(1) πίνακες byacc και όχι αυτοί που χρησιμοποιήσαμε σε προηγούμενα παραδείγματα που παράγει το
43 Εντοπισμός λάθους στην ανάλυση LR X σημαντική λεπτομέρεια: Μετά την εκτέλεση απλοποίησης σύμφωνα με κανόνα λάθους ο αναλυτής δεν εντοπίζει άλλο λάθος (αγνοεί τη ψευδομονάδα error) αν προηγουμένως δεν έχει εκτελέσει τρεις διαδοχικές ενέργειες ώθησης σε κανονική λειτουργία. Αυτό γίνεται για να αποφεύγεται ο εντοπισμός διαδιδόμενων (πλασματικών) λαθών και λέμε ότι τότε ο αναλυτής συνεχίζει τη λειτουργία του σε κατάσταση λάθους. Πρέπει η διαχείριση λαθών να γίνεται με τέτοιο τρόπο ώστε η επαναφορά του μεταγλωττιστή σε κανονική λειτουργία να γίνεται μετά από ανάγνωση ενός εύλογου αριθμού συμβόλων και όχι αφού έχει διαβασθεί ένα μεγάλο μέρος του προγράμματος χωρίς ουσιαστικά ο αναλυτής να έχει τη δυνατότητα εντοπισμού λαθών. Όταν δεν υπάρχει κίνδυνος εντοπισμού διαδιδόμενων λαθών μπορείτε να χρησιμοποιείτε το macro yyerrok, που επαναφέρει τον αναλυτή σε κανονική λειτουργία χωρίς να έχει προηγηθεί η εκτέλεση τριών ενεργειών ώθησης.
44 Εντοπισμός λάθους στην ανάλυση LR XΙ ΠΡΟΣΟΧΗ: Αν στο προηγούμενο παράδειγμα γράφαμε paragontas : ARITHMOS {$$=$1;} ( ekfrasi ) {$$=$2;} error { yyerrok; $$=0; } ; τότε η ανάλυση της συμβολοσειράς 27 8 οδηγείται σε έναν ατέρμονα βρόχο εκτύπωσης του μηνύματος syntax error
45 Εντοπισμός λάθους στην ανάλυση LR X περίπτωση που η χρήση του yyerrok είναι επωφελής: while_statement : WHILE expr DO statement DONE { $$=exec_do_while($2,$4); } error DONE { } ; yyerror( Bad WHILE syntax ); yyerrok; $$=NULL; άλλη δυνατότητα: να αγνοηθεί το σύμβολο εισόδου, που προκαλεί τον εντοπισμό λάθους και να συνεχισθεί η ανάλυση με το σύμβολο που ακλουθεί. Για να γίνει αυτό χρησιμοποιείτε το macro yyclearin
46 Εντοπισμός λάθους στην ανάλυση LR XI Στο παράδειγμα της προηγούμενης διαφάνειας ο κανόνας λάθους συνοδεύεται από μονάδα συγχρονισμού. Πως αντιδρά ο αναλυτής σε μία τέτοια περίπτωση; Το byacc αγνοεί όσα σύμβολα εισόδου χρειάζεται, μέχρι τον εντοπισμό κάποιου που είτε είναι μία από τις μονάδες συγχρονισμού, είτε μπορεί δυνητικά να απλοποιηθεί σε κάποιο απ αυτά (αν αυτό είναι μη τερματικό). Τότε το συγκεκριμένο σύμβολο ωθείται στη στοίβα, οπότε η ανάλυση μπορεί (σε ένα ή περισσότερα βήματα) να εκτελέσει απλοποίηση σύμφωνα με τον κανόνα του λάθους και να συνεχίσει την πορεία της.
47 Ανοδική Ανάλυση Σύνοψη Παραδείγματα
48 Συντακτική Ανάλυση από Κάτω προς τα Πάνω Bottom-up Syntax Analysis Δημιουργία δένδρου: Κατασκευή αριστερότερου κόμβου, του οποίου όλοι οι κόμβοι παιδιά (απόγονοι) έχουν ήδη κατασκευαστεί. Η κατασκευή του δένδρου τερματίζει όταν κατασκευαστεί το τερματικό σύμβολο της γραμματικής (ρίζα). Πρόβλημα: Ποιοι ήδη δημιουργημένοι κόμβοι θα χρησιμοποιηθούν ως παιδιά για την κατασκευή του νέου κόμβου;
49 Παράδειγμα Έστω η ακόλουθη γραμματική και η συμβολοσειρά id * id. Ε ::= Ε "+" Τ Τ T ::= Τ "*" F F F ::= "id" "(" E ")" Η δημιουργία του δένδρου περιλαμβάνει T E T id * id F * id T * id T * F T * F T * F id F F id F id F id id id id id
50 Δεξιότερη Παραγωγή Σε κάθε βήμα, ανάγουμε/ελαττώνουμε (reduce) μια υπο-συμβολοσειρά της εισόδου που ταιριάζει με το δεξιό μέλος ενός κανόνα παραγωγής με αντίστοιχο μη-τερματικό του σύμβολο (αριστερό μέλος). Η προηγούμενη κατασκευή του δένδρου αντιστοιχεί με ανάστροφη σειρά στην παραγωγή: Ε => Τ => Τ * F => T * id => F * id => id*id είναι δηλαδή η δεξιότερη παραγωγή για την συγκεκριμένη συμβολοσειρά.
51 ΣΑ Ολίσθησης Ελάττωσης (shift-reduce) Γενική κατηγορία ΣΑ από κάτω προς τα πάνω Χρησιμοποιούν στοίβα για να αποθηκεύουν τερματικά και μη-τερματικά σύμβολα. Ενέργειες ενός ΣΑ: Ολίσθηση (shift), όπου ένα σύμβολο εισόδου τοποθετείται στη στοίβα Ελάττωση (reduce), όπου ένα ή περισσότερα σύμβολα από την κορυφή της στοίβας αντικαθίστανται από ένα μητερματικό σύμβολο. Αποδοχή (accept), όταν η στοίβα περιέχει το αρχικό σύμβολο της γραμματικής Σφάλμα (error), όταν εμφανιστεί συντακτικό σφάλμα.
52 Παράδειγμα Ανάλυσης Ολίσθησης Ελάττωσης
53 Αποφάσεις κατά την διάρκεια της Συντακτικής Ανάλυσης
54 Συγκρούσεις Ολίσθησης Ελάττωσης (shift-reduce) Έστω η γραμματική: S ::= "if" E "then" S "if" E "then" S "else" S O και η ακόλουθη είσοδος: if E1 then if E2 then S1 else S2 Ένας συντακτικός αναλυτής ολίσθησης ελάττωσης σε κάποια στιγμή θα περιέχει: Στοίβα Είσοδος $if E then if E then S1 else S2 Τι θα πρέπει να γίνει ολίσθηση ή ελάττωση? Σύγκρουση ολίσθησης-ελάττωσης.
55 Συγκρούσεις Ελάττωσης Ελάττωσης
56 Συγκρούσεις Ελάττωσης Ελάττωσης (ii) Έστω η συμβολοσειρά id(id,id) οπότε σε μια δεδομένη στιγμή θα περιέχεται στην στοίβα Στοίβα Είσοδος $id(id,id) είναι δεδομένο ότι θα πρέπει να ελαττωθεί το id αλλά με ποίον από τους δύο κανόνες; (5) parameter ::= "id" (7) expr ::= "id" Αν το πρώτο id είναι διαδικασία τότε ο κανόνας (5) είναι σωστός, αν το id είναι πίνακας, τότε ο κανόνας (7) είναι σωστός. Σύγκρουση ελάττωσης-ελάττωσης
57 LR(k) Συντακτικοί Αναλυτές Αποφεύγουμε ΣΑ με συγκρούσεις, ώστε να έχουμε ντετερμινιστικούς συντακτικούς αναλυτές. LR(k) (Left-to-right, Rightmost derivation, k lookahead symbols): Διαβάζουν συμβολοσειρά εισόδου από αριστερά προς τα δεξιά, κατασκευάζουν το συντακτικό δένδρο χρησιμοποιώντας την αριστερότερη παραγωγή, διαβάζοντας k προπορευόμενα σύμβολα. Υλοποίηση με αυτόματα στοίβας ειδικής μορφής. Υλοποίηση LR(k) για k μεγαλύτερο του 1 είναι ιδιαίτερα πολύπλοκη. LR(1), SLR(1), LALR(1)
58 Γιατί Συντακτικούς Αναλυτές LR Είναι δυνατό να κατασκευαστούν ΣΑ LR σχεδόν για κάθε προγραμματιστική δομή και καλύπτουν τις ανάγκες της συντριπτικής πλειοψηφίας των γλωσσών προγραμματισμού. Είναι η γενικότερη μέθοδος συντακτικής ανάλυσης ελάττωσης-ολίσθησης και μπορεί να υλοποιηθεί αποδοτικά. Είναι εύκολη η ανίχνευση λαθών. Οι κλάση των γραμματικών LR είναι υπερσύνολο εκείνων των γραμματικών LL.
59 Αυτόματο LR Ενδιάμεση μνήμη για ανάγνωση συμβολοσειράς εισόδου. Πεπερασμένο σύνολο καταστάσεων Κ. Στοίβα όπου τοποθετούνται εναλλάξ σύμβολα της γραμματικής και καταστάσεις του αυτομάτου από το Κ. Πίνακας πράξεων ACTIOΝ, με μια γραμμή για κάθε κατάσταση K και μια στήλη για κάθε τερματικό σύμβολο της γραμματικής και το σύμβολο EOF. Πίνακας επόμενης κατάστασης NEXT, με μια γραμμή για κάθε κατάσταση του Κ και μια στήλη για κάθε σύμβολο της γραμματικής (τερματικό ή μη-τερματικό).
60 Λειτουργία ΣΑ LR Αρχικά, η στοίβα περιέχει μόνο η αρχική κατάσταση. Έστω ότι στην κορυφή της στοίβας βρίσκεται η κατάσταση s και το σύμβολο εισόδου είναι a. Τότε αν το κελί του πίνακα action(s,a) περιέχει: πράξη ολίσθησης, τότε το a τοποθετείται στη στοίβα και μετά από αυτό η κατάσταση next(s,a). πράξη ελάττωσης, με ένα κανόνα της μορφής Α::=β, τότε αφαιρούνται από τη στοίβα β ζεύγη καταστάσεωνσυμβόλων. Η επόμενη κατάσταση καθορίζεται από την ενέργεια s''=next(s',α) (πίνακας ΝΕΧΤ), όπου s' το στοιχείο στην κορυφή της στοίβας. Τοποθετείται στη στοίβα το Α και η κατάσταση s''. πράξη αποδοχής, τότε ο ΣΑ σταματά.
61 Αναπαράσταση Πινάκων ΣΑ Αναπαράσταση στοιχείων του πίνακα ΣΑ: si : Στη θέση Μ(j,x), σημαίνει ότι η επόμενη κατάσταση θα είναι η i, και θα γίνει η πράξη της ολίσθησης. rk : Στην θέση Μ(j,x), σημαίνει ότι γίνεται ελάττωση με τον κανόνα k (υποθέτουμε αρίθμηση των κανόνων), και acc : αποδοχή.
62 Παράδειγμα Πίνακα ΣΑ LR (1) Ε ::= Ε "+" Τ (2) Ε ::= Τ (3) T ::= Τ "*" F (4) T::=F (5) F::="(" E ")" (6) F ::= "id"
63 Παράδειγμα ανάλυσης της id * id + id
64 Κατασκευή Πινάκων ACTION & GOTO (NEXT) Αρκετοί αλγόριθμοι κατασκευής πινάκων: LR(0): αν η γραμματική ανήκει στην κατηγορία LR(0). Δεν χρησιμοποιείται πολύ στην πράξη. SLR(1): Μεγαλύτερο εύρος γραμματικών αλλά αρκετά περιοριστικός. LALR(1): Χρησιμοποιείται περισσότερο στην πράξη. LR(1): Πολύ μεγάλο μέγεθος πινάκων. Οι κατηγορίες γλωσσών που αναγνωρίζονται από τους αντίστοιχους ΣΑ είναι: LR(0) SLR(1) LALR(1) LR(1)
65 Αλγόριθμος SLR(1) Κατασκευή των Πινάκων ACTION GOTO (ΝΕΧΤ)
66 Κατασκευή Πίνακα SLR(1) Για την κατασκευή του αντίστοιχου πίνακα συντακτικής ανάλυσης απαιτείται ο ορισμός: της έννοιας του στοιχείου (item), της συνάρτησης CLOSURE(I) (κλεισίματος) ενός συνόλου στοιχείων, της συνάρτησης GOTO(I,X) ενός συνόλου στοιχείων και ενός συμβόλου της γραμματικής, η οποία επιστρέφει ένα σύνολο στοιχείων, ορισμός των καταστάσεων του αυτομάτου. Αλγόριθμος κατασκευής του πίνακα βάσει των παραπάνω.
67 Στοιχεία (Items) Στοιχείο είναι ένας κανόνας παραγωγής, στον οποίο έχει προστεθεί το σύμβολο " ". Για παράδειγμα στον κανόνα Α::= ΧΥΖ αντιστοιχούν τα ακόλουθα στοιχεία Α::= ΧΥΖ, Α::= Χ ΥΖ, Α::= ΧΥ Ζ Α::= ΧΥΖ Το σημείο " " σηματοδοτεί το σημείο της συμβολοσειράς που έχουμε ήδη δει, και το τι περιμένουμε να δούμε στη συνέχεια.
68 Συνάρτηση CLOSURE(I) Η συνάρτηση CLOSURE (κλείσιμο) ενός συνόλου στοιχείων Ι της γραμματικής δίνεται από: όλα τα στοιχεία του συνόλου Ι, για κάθε στοιχείο του Ι της μορφής Α::=α Ββ το οποίο ανήκει στο σύνολο CLOSURE(I) και για κάθε κανόνα της γραμματικής της μορφής Β::=γ, το στοιχείο Β::= γ ανήκει στο CLOSURE(I). Το παραπάνω βήμα εκτελείται μέχρι να μη ν μεταβάλλεται το CLOSURE(I).
69 Παράδειγμα Υπολογισμού CLOSURE(I) Έστω η (επαυξημένη) γραμματική: Ε' ::= Ε Ε ::= Ε "+" Τ Τ T ::= Τ "*" F F F ::= "id" "(" E ")" Εάν θεωρήσω το σύνολο I 0 = {E' ::= E} η συνάρτηση CLOSURE(I 0 ) είναι: CLOSURE(I 0 ) = {E'::= E; E::= E+T; E::= T; T ::= T * F; T ::= F; F ::= (E); F ::= id }
70 Συνάρτηση GOTO(Ι,Χ) Η συνάρτηση GOTO(I,X) απεικονίζει ένα σύνολο στοιχείων Ι και ένα σύμβολο της γραμματικής Χ (τερματικό ή μη) σε ένα σύνολο Ι' στοιχείων τέτοιων ώστε: GOTO(I,X) = CLOSURE(J) J = {A::=αX b A::=α Xb I} Παράδειγμα Υπολογισμού GOTO: I 1 ={E'::=E ; E::=E +T} GOTO(I 1,*) = {} GOTO(I 1,+)={ E::=E+ T; T::= T*F;T::= F; F::= id; F::= (E) } Ε' ::= Ε Ε ::= Ε "+" Τ Τ T ::= Τ "*" F F F ::= "id" "(" E ")"
71 Καταστάσεις του Αυτομάτου Αρχικά το αυτόματο δεν έχει "διαβάσει" κανένα σύμβολο. Άρα η αρχική του κατάσταση είναι: Ε' ::= E Φυσικά, το Ι 0 =CLOSURE(E'::= E) CLOSURE(E'::= E) = {E'::= E; E::= E+T; E::= T; T ::= T * F; T ::= F; F ::= (E); F ::= id } Αν το αυτόματο διαβάσει ένα σύμβολο a τότε η κατάσταση του θα δίνεται από την I 1 =GOTO(I 0,a) Πχ. "ανάγνωση" σύμβολου id, άρα GOTO(I 0,id)={ F ::= id } = I 1
72 Κατασκευή Καταστάσεων Έστω μια γραμματική G=(T,N,P,S) και η επαυξημένη γραμματική: G'={T,N S',P (S'::=S),S'} Οι καταστάσεις Ι 0, Ι 1,...Ι n προκύπτουν από την ακόλουθη διαδικασία: I 0 = CLOSURE({S'::= S}) C = {I 0 } repeat forall Ι i C forall α (T N) if GOTO(Ι i,α) and GOTO(Ι i,α) C then I j = GOTO(Ι i,α) C = C { I j } until C unchaged
73 Κατασκευή Πίνακα SLR(1) ΣΑ για μια Γραμματική G 1 Δημιουργία των καταστάσεων των στοιχείων της G. 2 Για μια κατάσταση Ι i, αν υπάρχει στο Ι i κανόνας: i. Α::=α aβ και a είναι τερματικό σύμβολο και υπάρχει GOTO(Ι i,a)= Ι j τότε action(i,a)=shift j ii.α::=α τότε για κάθε a στο FOLLOW(A) με Α S', τότε action(i,a)= reduce A::=α iii.s'::=s τότε action(i,eof) = accept 3 Για κάθε μη-τερματικό σύμβολο Α αν GOTO(Ι i,a)= Ι j τότε next(i,a)= j 4 Όλες οι άλλες θέσεις του πίνακα παίρνουν την τιμή error. 5 Η αρχική κατάσταση είναι η Ι 0 =CLOSURE({S'::= S})
74 Παράδειγμα Υπολογισμού SLR(1) Πίνακα Ε' ::= Ε Ε ::= Ε "+" Τ Ε ::= Τ T ::= Τ "*" F T ::=F F ::= "(" E ")" F ::= "id" I 0 ={E'::= E; E::= E+T; E::= T; T ::= T * F;T ::= F; F ::= (E);F ::= id } I 1 =GOTO(I 0,E)={E'::=E ;E::=E +T} I 2 =GOTO(I 0,T)={E::=T ; T ::=T * F} I 3 =GOTO(I 0,F)={T ::= F } I 4 =GOTO(I 0, ( )={F ::=( E);E::= E+T; E::= T; T ::= T * F; T ::= F; F ::= (E); F ::= id } I 5 =GOTO(I 0, id) = { F ::= id } I 6 =GOTO(I 1, +)={E::=E+ T;T ::= T * F; T ::= F; F ::= (E); F ::= id } I 7 =GOTO(I 2, *)={T ::=T * F;F ::= (E);F ::= id }...
75 Παράδειγμα Κατασκευή Πίνακα I 1 =GOTO(I 0,E) I 6 =GOTO(I 1, +) I 2 =GOTO(I 0,T) και I 1 ={E'::=E ;...} I 3 =GOTO(I 0,F) I 7 =GOTO(I 2, *) I 4 =GOTO(I 0, ( ) I 2 ={E::=T ;...} & I 5 =GOTO(I 0, id) FOLLOW(E)={+,),EOF}
76 Πλήρης Πίνακας SLR (1) Ε ::= Ε "+" Τ (2) Ε ::= Τ (3) T ::= Τ "*" F (4) T::=F (5) F::="(" E ")" (6) F ::= "id"
77 Παρατηρήσεις Προφανώς, αν σε ένα κελί του πίνακα αντιστοιχούν δύο τιμές, όπως αυτές ορίστηκαν παραπάνω, τότε η γραμματική δεν είναι SLR(1). Η υλοποίηση ΣΑ LR γίνεται συνήθως με μεταεργαλεία, όπως είναι το bison (yacc).
Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση II
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση II Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Εισαγωγή στην ανάλυση από κάτω προς τα πάνω. Οι έννοιες της ελάττωσης
Διαβάστε περισσότεραΜεταγλωττιστές. Ενότητα 8: Συντακτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ
Μεταγλωττιστές Ενότητα 8: Συντακτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΜεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Μεταγλωττιστές Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανοδική Κατασκευή Συντακτικού Δέντρου κατασκευή δέντρου
Διαβάστε περισσότεραΜεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 5 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Γιώργος Δημητρίου Μάθημα 5 ο ΣΑ από Κάτω προς τα Πάνω Ξεκίνημα με την πρώτη λεκτική μονάδα Διάβασε διαδοχικές λεκτικές μονάδες αντικαθιστώντας το δεξί μέλος κάποιου κανόνα που έχει σχηματιστεί με το αριστερό
Διαβάστε περισσότεραΜεταγλωττιστές. Ενότητα 7: Συντακτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ
Μεταγλωττιστές Ενότητα 7: Συντακτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΣχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση ΙII. Εαρινό Εξάμηνο Lec 11 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής
Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση ΙII Εαρινό Εξάμηνο 2018-2019 Lec 11 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Γραμματικές Μία γραμματική ονομάζεται αναδρομική εφόσον επιτρέπει παραγωγές
Διαβάστε περισσότεραΓλώσσες Προγραμματισμού Μεταγλωττιστές
Γλώσσες Προγραμματισμού Μεταγλωττιστές Επαναληπτικό Μάθημα Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Γλώσσες Προγραμματισμού Γλώσσα προγραμματισμού: Συμβολική περιγραφή
Διαβάστε περισσότεραΣχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση IV. Εαρινό Εξάμηνο Lec 12 01/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής
Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση IV Εαρινό Εξάμηνο 2018 2019 Lec 12 01/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Καθοδική Ανάλυση Ξεκινά από τη αρχή της γραμματικής (ρίζα δένδρου) για να
Διαβάστε περισσότεραΚεφάλαιο 2: Τυπικές γλώσσες
Κεφάλαιο 2: Τυπικές γλώσσες (μέρος 2ο) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 47 / 216 Γλώσσες χωρίς συμφραζόμενα (i) Γραμματικές χωρίς συμφραζόμενα: Σε κάθε παραγωγή ένα μη τερματικό
Διαβάστε περισσότεραΠίνακας Περιεχοµένων Πρόλογος Κεφάλαιο Βασικές εισαγωγικές έννοιες
Πίνακας Περιεχοµένων Πρόλογος...vii Κεφάλαιο 1:Βασικές εισαγωγικές έννοιες...1 1.1 Η δοµή του µεταγλωττιστή...2 1.2 Η διαδικασία µεταγλώττισης...3 1.2.1 Η Λεξική Ανάλυση...6 1.2.2 Η Συντακτική Ανάλυση...6
Διαβάστε περισσότεραΚεφάλαιο 4: Συντακτική ανάλυση
Κεφάλαιο 4: Συντακτική ανάλυση (μέρος 3ο) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 211 / 216 Συντακτικοί αναλυτές SLR(1) συµβολοσειρά εισόδου a 1 a 2... a n EOF s m x m... κορυφή επόµενο
Διαβάστε περισσότεραΕισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο
Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2014-2015 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα
Διαβάστε περισσότεραΈστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την
Βοηθητικές έννοιες (i) Σύνολα FIRST Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την Αν a τότε a FIRST Αν τότε FIRST Νίκος Παπασπύρου,
Διαβάστε περισσότεραΜεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 4 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής
Γιώργος Δημητρίου Μάθημα 4 ο Συντακτική Ανάλυση Επαλήθευση της σύνταξης του προγράμματος Κατασκευή συντακτικού δέντρου Η κεντρική φάση της Μετάφρασης Οδηγούμενης από τη Σύνταξη Από εδώ ξεκινά η παραγωγή
Διαβάστε περισσότεραΑπάντηση: (func endfunc)-([a-za-z])+
Γλώσσες Προγραμματισμού Μεταγλωττιστές Ασκήσεις Επανάληψης ) Περιγράψτε τις κανονικές εκφράσεις που υποστηρίζουν (i) συμβολοσειρές που ξεκινούν με το πρόθεμα "func" ή "endfunc" ακολουθούμενο το σύμβολο
Διαβάστε περισσότεραΜεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Γιώργος Δημητρίου Μάθημα 2 ο Αλφάβητα και Γλώσσες Αλφάβητο: Ένα μη κενό και πεπερασμένο σύνολο συμβόλων Γλώσσα: Ένα οποιοδήποτε υποσύνολο των συμβολοσειρών ενός αλφαβήτου (οι προτάσεις της γλώσσας, πχ.
Διαβάστε περισσότεραΑρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση
Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2011-2012 Γιάννης Γαροφαλάκης, Καθηγητής Αθανάσιος Ν.Νικολακόπουλος, Υποψήφιος Διδάκτορας 28 Μαρτίου 2012 Περίληψη Σκοπός της παρούσας
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής
Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Δεύτερη Σειρά Ασκήσεων 22 Νοεμβρίου 2016 (χειρόγραφη και ηλεκτρονική παράδοση 9 Δεκεμβρίου) Άσκηση 1: Θεωρήστε τη γραμματική με κανόνες: Α B a A a c B B b A b
Διαβάστε περισσότεραTop Down Bottom Up. Συντακτική Ανάλυση. Συντακτική Ανάλυση για Γραµµατικές χωρίς Συµφραζόµενα (top-down - Earley)
Top Down Bottom Up Συντακτική Ανάλυση Γιώργος Μανής δεοµένης της παραγωγής X αβ, ο συµβολισµός X α β αναπαριστά µία κατάσταση στη οποία το α έχει ήδη αναγνωριστεί και το β προσδοκάται να αναγνωριστεί.
Διαβάστε περισσότεραΣχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ.
Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι Εαρινό Εξάμηνο 2018-2019 Lec 05 & 06 25 & 26 /02/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Φάσεις μεταγλώττισης Αρχικό Πρόγραμμα Λεκτική Ανάλυση λεκτικές μονάδες
Διαβάστε περισσότεραΣειρά Προβλημάτων 3 Λύσεις
Σειρά Προβλημάτων 3 Λύσεις Άσκηση 1 Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) {0 n 1 n n > 0} {0 n 1 2n n > 0} (β) {w {a,b} * η w ξεκινά και τελειώνει με το ίδιο σύμβολο
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Δεύτερη Σειρά Ασκήσεων 22 Νοεμβρίου 2016 Μέρος Α. (χειρόγραφη και ηλεκτρονική παράδοση 9 Δεκεμβρίου) Άσκηση 1: Θεωρήστε τη
Διαβάστε περισσότεραΜεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Συντακτική Ανάλυση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Μεταγλωττιστές Συντακτική Ανάλυση Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Συντακτική Ανάλυση Το συντακτικό μιας γλώσσας καθορίζει ποιες συμβολοσειρές
Διαβάστε περισσότεραΘεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)
Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αυτόματα Στοίβας (2.2) Τυπικός Ορισμός Παραδείγματα Ισοδυναμία με Ασυμφραστικές
Διαβάστε περισσότεραΣειρά Προβλημάτων 4 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing που να διαγιγνώσκει τη γλώσσα { ww rev w {a, b} * και w αποτελεί καρκινική λέξη } (α) H ζητούμενη μηχανή
Διαβάστε περισσότεραΜεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ
Μεταγλωττιστές Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΜεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 3 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής
Γιώργος Δημητρίου Μάθημα 3 ο Λεκτική Ανάλυση και Λεκτικοί Αναλυτές Γενικά για τη λεκτική ανάλυση Έννοιες που χρειαζόμαστε Τεχνικές λεκτικής ανάλυσης Πίνακας συμβόλων και διαχείριση λαθών Σχεδίαση λεκτικού
Διαβάστε περισσότεραΜεταγλωττιστές. Εργαστήριο 5. Εισαγωγή στο BISON. Γεννήτρια Συντακτικών Αναλυτών. 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση
Μεταγλωττιστές Εργαστήριο 5 Εισαγωγή στο BISON Γεννήτρια Συντακτικών Αναλυτών 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2015-1016 Φάσεις Μεταγλώττισης
Διαβάστε περισσότεραΣειρά Προβλημάτων 4 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα { w#z w, z {a,b}* και η z είναι υπολέξη της w}. Συγκεκριμένα,
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Παραδείγματα Ενοτήτων 3-6 Ενότητα 3: Λεκτική ανάλυση Άσκηση 3-1: Να δώσετε το ενοποιημένο διάγραμμα μετάβασης που αναγνωρίζει
Διαβάστε περισσότεραΣειρά Προβλημάτων 4 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα { ww w {a,b}* }. (β) Να διατυπώσετε την τυπική περιγραφή
Διαβάστε περισσότεραΘέματα Μεταγλωττιστών
Γιώργος Δημητρίου Ενότητα 1 η : Parsers Συντακτική Ανάλυση για ΓΧΣ Οι τεχνικές συντακτικής ανάλυσης κατηγοριοποιούνται με βάση διάφορα κριτήρια: Κατεύθυνση ανάλυσης μη τερματικών συμβόλων Σειρά επιλογής
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ Τελικές Εξετάσεις Απαντήστε όλα τα θέματα του Μέρους Α και ένα θέμα από
Διαβάστε περισσότεραΓλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση με το Εργαλείο BISON
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση με το Εργαλείο BISON Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Γεννήτριες Συντακτικών Αναλυτών Bison/yacc
Διαβάστε περισσότεραΜεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Γιώργος Δημητρίου Μάθημα 1 ο Γλώσσα - Μετάφραση Γλώσσα προγραμματισμού = Αναπαράσταση αλγορίθμων Ευκολία χρήσης Ακρίβεια και πληρότητα περιγραφής, όχι διφορούμενη! Μία περιγραφή για όλες τις μηχανές Μετάφραση
Διαβάστε περισσότεραΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων
ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 2 Ο Εργαστηριακό Μάθημα Λεξική Ανάλυση Σκοπός: Το μάθημα αυτό αναφέρεται: Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση Στη δήλωση ορισμό κανονικών εκφράσεων Θεωρία Πρόλογος
Διαβάστε περισσότεραΘεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)
Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αυτόματα Στοίβας (2.2) Τυπικός Ορισμός Παραδείγματα Ισοδυναμία με Ασυμφραστικές
Διαβάστε περισσότεραΣχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι. Εαρινό Εξάμηνο Lec /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής
Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι Εαρινό Εξάμηνο 2018-2019 Lec 09 18 /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Φάσεις μεταγλώττισης Αρχικό Πρόγραμμα Λεκτική Ανάλυση λεκτικές μονάδες Πίνακας
Διαβάστε περισσότεραΘέματα Μεταγλωττιστών
Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 1 η : Parsers Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Συντακτική Ανάλυση για ΓΧΣ Οι τεχνικές συντακτικής ανάλυσης κατηγοριοποιούνται
Διαβάστε περισσότεραΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ
ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Ενότητα 8: Ιδιότητες Γραμματικών χωρίς Συμφραζόμενα Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΣειρά Προβλημάτων 4 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα {w 1w 2 w 1 {0,1} * και w 2 = 0 k 1 m όπου k και m
Διαβάστε περισσότεραΜεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ
Μεταγλωττιστές Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΛεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής
Λεκτικός Αναλυτής Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Οι Φάσεις της Μεταγλώττισης λεκτική ανάλυση συντακτική ανάλυση Πίνακας Συμβόλων σημασιολογική ανάλυση παραγωγή ενδιάμεσου κώδικα Διαχείριση
Διαβάστε περισσότεραΕισαγωγή στην Επιστήμη των Υπολογιστών
Εισαγωγή στην Επιστήμη των Υπολογιστών 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές http://www.corelab.ece.ntua.gr/courses/ Αυτόματα Τρόπος κωδικοποίησης αλγορίθμων. Τρόπος περιγραφής συστημάτων πεπερασμένων
Διαβάστε περισσότεραΣειρά Προβλημάτων 4 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing που να διαγιγνώσκει τη γλώσσα { n 3 } (α) H ζητούμενη μηχανή Turing μπορεί να διατυπωθεί ως την επτάδα Q,
Διαβάστε περισσότεραΤι είναι το yacc. Δομή ενός αρχείου yacc. Πρόλογος. ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο. Ο yacc είναι ένας γενικού σκοπού parser generator.
ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο Yacc slide 1/52 Τι είναι το yacc Ο yacc είναι ένας γενικού σκοπού parser generator. μετατρέπει την περιγραφή ργρ φήμίας contt- free γραμματικής σε C/C++ πρόγραμμα.
Διαβάστε περισσότεραΣειρά Προβλημάτων 3 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { a i b j c k d m i, j, k, m 0 και i + j = k + m } (β) { uxvx rev u,v,x {0,1,2} + και όλα
Διαβάστε περισσότεραΣειρά Προβλημάτων 5 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 5 Λύσεις Να δείξετε ότι οι πιο κάτω γλώσσες είναι διαγνώσιμες. (α) ({ G η G είναι μια ασυμφραστική γραμματική που δεν παράγει καμιά λέξη με μήκος μικρότερο του 2 } (β) { Μ,w
Διαβάστε περισσότεραΑυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6
Εισαγωγή στην Επιστήμη των Υπολογιστών 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές http://www.corelab.ece.ntua.gr/courses/ Αυτόματα Τρόπος κωδικοποίησης αλγορίθμων. Τρόπος περιγραφής συστημάτων πεπερασμένων
Διαβάστε περισσότεραΜεταγλωττιστές. Ενότητα 5: Λεκτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ
Μεταγλωττιστές Ενότητα 5: Λεκτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΑρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013
Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013 27 Μαρτίου 2013 Περίληψη Σκοπός της παρούσας εργασίας είναι η εξοικείωσή σας με τις θεμελιώδεις θεωρητικές και πρακτικές πτυχές
Διαβάστε περισσότεραΕισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο
Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2016-2017 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα
Διαβάστε περισσότεραΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 9: Αυτόματα Στοίβας (Pushdown Automata - PDA)
ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Διάλεξη 9: Αυτόματα Στοίβας (Pushdown Automata - PDA) Τι θα κάνουμε σήμερα Εισαγωγή στα Αυτόματα Στοίβας Τυπικός Ορισμός Αυτομάτου Στοίβας (2.2.1) Παραδείγματα
Διαβάστε περισσότεραΣειρά Προβλημάτων 4 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα {1010 2 10 3 10 n 1 10 n 1 n 1}. (β) Να διατυπώσετε
Διαβάστε περισσότεραΣειρά Προβλημάτων 4 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα { w w = (ab) 2m b m (ba) m, m 0 } (β) Να διατυπώσετε
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Λεκτικός αναλυτής Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Διαβάστε περισσότεραΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου
Λογισμικό Συστήματος Κλειώ Σγουροπούλου Λογισμικό συστήματος Λειτουργικό σύστημα Μεταφραστές γλώσσας (translators) Διερμηνείς (interpreters) Μεταγλωττιστές (compilers) Εκδότες (editors) Φορτωτές (loaders)
Διαβάστε περισσότεραHY340, 2010 Α. Σαββίδης. Slide 3 / 43. Slide 4 / 43
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 2ο Εισαγωγή στο YACC Ι ΑΣΚΩΝ Αντώνιος Σαββίδης Slide
Διαβάστε περισσότεραΣειρά Προβλημάτων 3 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { a m b n c p m,n,p 0 και είτε m + n = p είτε m = n + p } (β) { xx rev yy rev x, y {a,b}
Διαβάστε περισσότεραΑυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών. Προδιαγραφές
Εισαγωγή στην Επιστήμη των Υπολογιστών 4ο εξάμηνοσ.h.m.μ.y. & Σ.Ε.Μ.Φ.Ε. http://www.corelab.ece.ntua.gr/courses/ 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές Στάθης Ζάχος Συνεργασία: Κωστής Σαγώνας Επιμέλεια:
Διαβάστε περισσότεραΜηχανές Turing (T.M) I
Μηχανές Turing (T.M) I Οι βασικές λειτουργίες μιας TM είναι: Διάβασε το περιεχόμενο του τρέχοντος κυττάρου Γράψε 1 ή 0 στο τρέχον κύτταρο Κάνε τρέχον το αμέσως αριστερότερο ή το αμέσως δεξιότερο κύτταρο
Διαβάστε περισσότεραΚεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει
Διαβάστε περισσότεραSyntax Analysis Part V
Syntax Analysis Part V Chapter 4: Bottom-Up Parsing Slides adapted from : Robert van Engelen, Florida State University LR Parsers LR parsers are table-driven algorithms, much like the LL parsers The parse
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Τελικές εξετάσεις 3 Ιανουαρίου 27 Διάρκεια εξέτασης: 3 ώρες (2:-5:) ΘΕΜΑ ο
Διαβάστε περισσότεραΘα χρησιμοποιήσουμε το bison, μια βελτιωμένη έκδοση του yacc. Φροντιστήριο 2ο Εισαγωγή στο YACC. Yacc. Δομή Προγράμματος Yacc
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 2ο Εισαγωγή στο YACC Ι ΑΣΚΩΝ Αντώνιος Σαββίδης Slide
Διαβάστε περισσότεραΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ
ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Ενότητα 5: Μη κανονικές γλώσσες Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,
Διαβάστε περισσότεραΣειρά Προβλημάτων 5 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 5 Λύσεις Να δείξετε ότι οι πιο κάτω γλώσσες είναι διαγνώσιμες. (α) { Μ η Μ είναι μια ΤΜ η οποία διαγιγνώσκει το πρόβλημα ΙΣΟΔΥΝΑΜΙΑ ΤΜ (διαφάνεια 9 25)} (α) Γνωρίζουμε ότι το
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 8: Πεπερασμένα Αυτόματα Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται
Διαβάστε περισσότερα53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η
53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η ΠΑΓΚΡΑΤΙ: Φιλολάου & Εκφαντίδου 26 : 210/76.01.470 210/76.00.179 ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς
Διαβάστε περισσότεραΣειρά Προβλημάτων 3 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { w {(, )} * οι παρενθέσεις στην w είναι ισοζυγισμένες } (β) { a k b m c 2m a k k > 0,
Διαβάστε περισσότεραΣειρά Προβλημάτων 3 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { a k b m c n k < m ή m > 2n, όπου k,m,n 0 } Μια γραμματική για τη γλώσσα έχει ως εξής:
Διαβάστε περισσότεραΣειρά Προβλημάτων 4 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing που να διαγιγνώσκει τη γλώσσα { a 2n b n c 3n n 2 } : H ζητούμενη μηχανή Turing μπορεί να διατυπωθεί ως την
Διαβάστε περισσότεραΣειρά Προβλημάτων 4 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing που να διαγιγνώσκει την ακόλουθη γλώσσα. { a n b n+2 c n 2 n 2 } Λύση: H ζητούμενη μηχανή Turing μπορεί να
Διαβάστε περισσότεραΣε αυτό το µάθηµα. Εισαγωγή στις Μηχανές Turing. Μηχανή Turing (Turing Machine - TM) Μηχανές Turing. Παραδείγµατα Μηχανών Turing
Σε αυτό το µάθηµα Εισαγωγή στις Μηχανές Turing Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Παραδείγµατα Μηχανών Turing Παραλλαγές: Πολυταινιακές, Μη ντετερµινιστικές
Διαβάστε περισσότεραΠεριεχόμενα Τι περιγράφει ένα ΣΔ ΣΔ και παραγωγές Θεωρία Υπολογισμού Ενότητα 15: Συντακτικά Δέντρα Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ. Π.
Θεωρία Υπολογισμού νότητα 15: Συντακτικά Δέντρα Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται
Διαβάστε περισσότεραΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1
Εφαρμογές στοιβών Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων Αντίστροφος Πολωνικός Συμβολισμός ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι
Διαβάστε περισσότεραΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex.
ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 5 Ο Εργαστηριακό Μάθημα Δημιουργία Νέων Λεξικών Αναλυτών Σκοπός: Το μάθημα αυτό αναφέρεται: Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex. Στην
Διαβάστε περισσότεραΣειρά Προβλημάτων 3 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { x x η τιμή της αριθμητικής έκφρασης 10 2n + 10 n + 1, n 1} (β) { a i b j c k d m i, j,
Διαβάστε περισσότεραΔιάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:
Διαβάστε περισσότεραΑριθμητική Ανάλυση και Εφαρμογές
Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 07-08 Πεπερασμένες και Διαιρεμένες Διαφορές Εισαγωγή Θα εισάγουμε την έννοια των διαφορών με ένα
Διαβάστε περισσότεραΕργαστήριο 08 Εισαγωγή στo Yacc
Εργαστήριο 08 Εισαγωγή στo Yacc Θεωρία Σκοπός: Το μάθημα αυτό αναφέρεται: Στο εργαλείο κατασκευής συντακτικών αναλυτών, Yacc, στις δομές και συναρτήσεις που προσφέρει. Στη σύνταξη των αρχείων περιγραφής
Διαβάστε περισσότεραnum(m(w 1 ;... ; w k )) = f(num(w 1 ),..., num(w k ))
Υπολογισμοί με Μ.Τ. Εστω M = (K, Σ, δ, s, {y, n}) μια Μ.Τ. Κάθε συνολική κατάσταση τερματισμού της οποίας η κατάσταση τερματισμού είναι το y, θα ονομάζεται συνολική κατάσταση αποδοχής, ενώ αν η κατάσταση
Διαβάστε περισσότεραΠροβλήματα, αλγόριθμοι, ψευδοκώδικας
Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη
Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Διαβάστε περισσότεραint array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι
Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι
Διαβάστε περισσότεραΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ
Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 Πάτρα 3/5/2017 Ονοματεπώνυμο:.. Α1. Να γράψετε στην κόλλα σας τον αριθμό
Διαβάστε περισσότεραΣειρά Προβλημάτων 3 Λύσεις
Σειρά Προβλημάτων 3 Λύσεις Άσκηση 1 Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { xyw 1w 2 x, y {a, b}, w 1 = a n, w 2 = b 2n, όπου, αν x=y=a, τότε n = 2k, διαφορετικά
Διαβάστε περισσότεραΛογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ
ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ Λογικός τύπος ( ) Ο τύπος είναι κατάλληλoς για την αναπαράσταση ποσοτήτων που μπορούν να πάρουν δύο μόνο τιμές (π.χ. ναι/όχι, αληθές/ψευδές, ). Τιμές ή Δήλωση Εκχώρηση Ισοδυναμία με ακέραιους
Διαβάστε περισσότεραΓ ε ν ι κ ό Λ ύ κ ε ι ο Ε λ ε υ θ ε ρ ο ύ π ο λ η ς. Α λ γ ό ρ ι θ μ ο ι
Α λ γ ό ρ ι θ μ ο ι Αριθμητικοί τελεστές Οι αριθμητικοί τελεστές είναι: πρόσθεση, αφαίρεση, πολλαπλασιασμός και διαίρεση +,-,*,/ ύψωση σε δύναμη ^ πηλίκο ακέραιης διαίρεσης δύο ακεραίων αριθμών div υπόλοιπο
Διαβάστε περισσότεραΕπιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:
Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς Βασικές Έννοιες Αλγορίθμων Δομή Ακολουθίας (κεφ. 2 και 7 σχολικού βιβλίου) 1. Οι μεταβλητές αντιστοιχίζονται από τον μεταγλωττιστή κάθε
Διαβάστε περισσότεραΛύσεις 4ης Σειράς Ασκήσεων
Λύσεις 4ης Σειράς Ασκήσεων Άσκηση 1 Αναγάγουμε τν Κ 0 που γνωρίζουμε ότι είναι μη-αναδρομική (μη-επιλύσιμη) στην γλώσσα: L = {p() η μηχανή Turing Μ τερματίζει με είσοδο κενή ταινία;} Δοσμένης της περιγραφής
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 6 η Βρόχοι Επανάληψης Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή
Διαβάστε περισσότεραΣειρά Προβλημάτων 3 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { xyxy rev x {a, b}, y {a, b} * } (α) Μια γραμματική για τη γλώσσα έχει ως εξής: S as a
Διαβάστε περισσότεραΘεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (1)
Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες () Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Πεπερασμένα Αυτόματα (Κεφάλαιο., Sipser) Ορισμός πεπερασμένων αυτομάτων και ορισμός του
Διαβάστε περισσότεραΑλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες
Διαβάστε περισσότεραΆδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ
Θεωρία Υπολογισμού Ενότητα 24: Μη Ντεντερμινιστικές Μηχανές Turing Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως
Διαβάστε περισσότεραΑυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation
Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation Διδάσκων: Στάθης Ζάχος Επιμέλεια Διαφανειών: Μάκης Αρσένης CoReLab ΣΗΜΜΥ - Ε.Μ.Π. Φεβρουάριος 2017 Διδάσκων: Στάθης Ζάχος ( CoReLab
Διαβάστε περισσότερα