Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση"

Transcript

1 Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου

2 Δομή Συντακτική Ανάλυση Γραμματικές χωρίς συμφραζόμενα. Αυτόματα Στοίβας Οι συναρτήσεις FIRST και FOLLOW. Συντακτικοί Αναλυτές από πάνω προς τα κάτω (top-down)

3 Φάσεις Μεταγλώττισης Αρχικό Πρόγραμμα Λεκτική Ανάλυση λεκτικές μονάδες Πίνακας Συμβόλων Τελικό Πρόγραμμα Συντακτική Ανάλυση συντακτικό δένδρο Σημασιολογική Ανάλυση συντακτικό δένδρο Παραγωγή Ενδιάμεσου Κώδικα ενδιάμεσος κώδικας Βελτιστοποίηση Ενδιάμεσου Κώδικα ενδιάμεσος κώδικας Παραγωγή Τελικού Κώδικα τελικός κώδικας Βελτιστοποίηση Τελικού Κώδικα Χειριστής Σφαλμάτων

4 Συντακτική Ανάλυση (Syntax Analysis or Parsing) Έλεγχος αν το πρόγραμμα έχει την ορθή σύνταξη σύμφωνα με τις προδιαγραφές της γλώσσας. Ορισμός σύνταξης: Γραμματική! Είσοδος: ακολουθία λεκτικών μονάδων από λεκτικό αναλυτή. Κατασκευή συντακτικού δένδρου Άμεση, όταν τα στάδια μεταγλώττισης είναι διακριτά Έμμεση, στην περίπτωση που δεν αποθηκεύεται σε κάποια μορφή το συντακτικό δένδρο.

5 Αλληλεπιδράσεις ΛΑ και ΣΑ Πηγαίο Πρόγραμμα Λεκτικός Αναλυτής Πίνακας Συμβόλων Επόμενη Λεκτική Μονάδα Λεκτική Μονάδα Σφάλματα Συντακτικός Αναλυτής (parser) Συντακτικό Δένδρο Υπόλοιπο Εμπρόσθιο Μέρος

6 Γραμματικές χωρίς συμφραζόμενα Γραμματικές τύπου 2 (γραμματικές χωρίς συμφραζόμενα context free grammars) Οι κανόνες παραγωγής έχουν μορφή α β, όπου η συμβολοσειρά α αποτελείται από ένα μητερματικό σύμβολο και η β είναι συμβολοσειρά. Άρα υπάρχουν κανόνες της μορφής: Α β όπου Α Ν. πχ. smt if expr then smt smt while (expr) smts

7 Πρόβλημα Συντακτικής Ανάλυσης Πρόβλημα συντακτικής ανάλυσης έγκειται στο να βρεθεί αν μια συμβολοσειρά ανήκει στην γλώσσα που παράγεται από μια γραμματική χωρίς συμφραζόμενα. Αλγόριθμοι συντακτικής ανάλυσης: Καθολικοί (universal), οι οποίοι αναγνωρίζουν οποιαδήποτε γραμματική. Από πάνω προς τα κάτω (top-down parers), όπου γίνεται κατασκευή του δένδρου από την ρίζα προς τα φύλλα. Από κάτω προς τα πάνω (bottom-up parsers), όπου η κατασκευή του δένδρου γίνεται από τα φύλλα προς την ρίζα.

8 Συντακτικοί Αναλυτές (parsers) Οι ΣΑ που χρησιμοποιούνται στην πράξη αφορούν ένα υποσύνολο των γραμματικών χωρίς συμφραζόμενα. Επιβολή περιορισμών λόγω αποδοτικότητας. Ακόμα και με περιορισμούς εν λόγω γραμματικές καλύπτουν τις ανάγκες των περισσοτέρων γλωσσών προγραμματισμού. Οι από πάνω προς τα κάτω ΣΑ (top-down parers), ευκολότεροι στην κατασκευή και προγραμματίζονται χειρωνακτικά. Οι από κάτω προς τα πάνω (bottom-up parsers), καλύπτουν μια μεγαλύτερη κλάση γλωσσών και κατασκευάζονται συνήθως από αυτοματοποιημένα εργαλεία.

9 Γλώσσες Προγραμματισμού Μεταγλωττιστές Στοιχεία Γραμματικών Χωρίς Συμφραζόμενα (context free grammars)

10 Παραγωγές στις Γραμματικές χωρίς Συμφραζόμενα (ΓΧΣ) Παραγωγή: Αντικατάσταση υποσυμβολοσειράς που ταιριάζει με αριστερό μέλος, με το αντίστοιχο δεξιό μέλος του κανόνα παραγωγής. Στις ΓΧΣ κάθε φορά αντικαθίσταται οποιοδήποτε μη-τερματικό σύμβολο που περιέχεται στην συμβολοσειρά. Αριστερότερη παραγωγή: αντικατάσταση πάντα του αριστερότερου μη-τερματικού συμβόλου Δεξιότερη παραγωγή: αντικατάσταση του δεξιότερου μη-τερματικού συμβόλου.

11 Παράδειγμα Γραμματική T ={+,-,id} Ν = {E,T} S = {E} P = { E E+T E E-T E T T id} Αριστερότερη παραγωγή: Ε=>Ε+Τ=>Τ+Τ=>id+T=>id+id Δεξιότερη παραγωγή: Ε=>Ε+Τ=>Ε+id=>T+id=>id+id

12 Συντακτικό Δένδρο (syntax tree) Τρόπος αναπαράστασης μιας παραγωγής. Το αρχικό μη-τερματικό σύμβολο τοποθετείται στη ρίζα του δένδρου. Κάθε "ενδιάμεσος" κόμβος του δένδρου αναπαριστά ένα μη-τερματικό σύμβολο. Κάθε φύλλο του δένδρου αναπαριστά ένα τερματικό σύμβολο. Οι ακμές από ένα "ενδιάμεσο" κόμβο στους απογόνους του αναπαριστούν την αντικατάσταση του μη-τερματικού συμβόλου βάση ενός κανόνα παραγωγής της γραμματικής.

13 Απλό Παράδειγμα Δένδρου Παραγωγής T ={+,-,id} Ν = {E,T} S = {E} P = { E E+T E E-T E T T id} Ε Ε + Τ Τ id id Από πάνω προς τα κάτω Ε Ε + Τ Τ id id Από κάτω προς τα πάνω Ε=>Ε+Τ=>Τ+Τ=>id+T=>id+id

14 Παράδειγμα (II.1) P={ Stmt if ( Expr ) then Stmt Stmt while ( Expr ) Stmt Stmt id := id ; Stmt id := num ; Stmt begin StmtList end StmtList Stmt StmtList Stmt SmtList Expr id Op id Expr id Op num Op > Op < } if ( Expr ) Stmt then if (id > id) then id := id ; Stmt id Op id id id := ; >

15 Παράδειγμα (II.2) P={ Stmt if ( Expr ) then Stmt Stmt while ( Expr ) Stmt Stmt id := id ; Stmt id := num ; Stmt begin StmtList end StmtList Stmt StmtList Stmt SmtList Expr id Op id Expr id Op num Op > Op < } while ( Expr ) id Op num Stmt while ( id > num) if (id < id) then id := num; Stmt if ( Expr ) then Stmt > id Op id < id := num ;

16 Αναπαράσταση Γραμματικών Καθαρή Backus-Naur Μορφή: Απλούστερος, συντομότερος και κομψότερος τρόπος αναπαράστασης γραμματικών. Μη τερματικά σύμβολα οριοθετούνται από γωνιακές παρενθέσεις, "<" και ">" Το σύμβολο αντικαθίσταται από "::=". Το σύμβολο " " χρησιμοποιείται για να διαχωρίσει πολλαπλά δεξιά μέλη που αντιστοιχούν σε ένα αριστερό μέλος ενός κανόνα. E E+T <Ε>::=<Ε>+<Τ> <Ε>-<Τ> E E-T T 1 <Τ>::= Τ 2...

17 Παραλλαγές Backus Naur Form (BNF) Υπάρχουν πολλές παραλλαγές και επεκτάσεις της BNF. Extended BNF (EBNF) Τερματικά σύμβολα σε εισαγωγικά και μη χρήση γωνιακών παρενθέσεων. Συμβολοσειρές σε αγκύλες "[" και "]"είναι προαιρετικές. Επιτρέπεται χρήση των συμβόλων " * " και " + " με την ίδια σημασία που έχουν και στις κανονικές εκφράσεις. Επιτρέπονται οι παρενθέσεις για ομαδοποίηση συμβόλων.

18 Stmt if ( Expr ) then Stmt Stmt if ( Expr ) Stmt Stmt id := id ; Stmt begin StmtList end StmtList Stmt StmtList Stmt SmtList Expr id Op id Expr id Op num Op > Op < Παράδειγμα EBNF EBNF Μορφή: Stmt::="if" "(" Expr ")" ["then"] Stmt "id" ":=" "id" ";" "begin" Stmt + "end" Expr ::= "id" Op "id" "id" Op "num" Op ::= ">" "<"

19 Αυτόματα Στοίβας (push-down Automata)

20 Αυτόματα Στοίβας Αφηρημένες Μηχανές οι οποίες λειτουργούν σαν "αναγνωριστές" συμβολοσειρών γραμματικών χωρίς συμφραζόμενα. Αποδεικνύεται ότι κάθε ΓΧΣ αντιστοιχεί σε ένα Αυτόματο στοίβας.

21 Ορισμός Αυτομάτων Στοίβας Ένα αυτόματο στοίβας ορίζεται ως Μ={Σ,Q,H,δ,q 0,h 0,F} όπου Σύνολο συμβόλων εισόδου (αλφάβητο) Σ Πεπερασμένο σύνολο καταστάσεων Q Η είναι το αλφάβητο στοίβας Συνάρτηση μετάβασης δ: Q H (Σ {ε}) P(H * Q) Αρχική κατάσταση q 0 Αρχικό σύμβολο στοίβας h 0 Σύνολο τελικών καταστάσεων F Q

22 Συνάρτηση μετάβασης δ Δύο ειδών μεταβάσεις: μηδενικές και μημηδενικές (μεταβάσεις ανάγνωσης) ανάλογα αν "καταναλώνεται" σύμβολο από την συμβολοσειρά εισόδου. Πεδίο τιμών του αυτομάτου είναι ένα σύνολο που περιέχουν κινήσεις. Κάθε κίνηση (γ,q') έχει δύο αποτελέσματα: μεταφορά του ΑΣ στην κατάσταση q' τοποθέτηση στην στοίβα της συμβολοσειράς γ (γ Η * ) στην στοίβα του αυτομάτου από αριστερά προς τα δεξιά.

23 Λειτουργία ΑΣ Αρχικά το ΑΣ βρίσκεται στην q 0 με αρχικό σύμβολο στοίβας το h 0. Έστω ότι το ΑΣ είναι σε μια κατάσταση q, με h το πρώτο σύμβολο της στοίβας και a το επόμενο σύμβολο εισόδου: αφαιρείται το h από την στοίβα, αν το σύνολο δ(q,h,a) δεν είναι κενό, επιλέγεται μια κίνηση από αυτό, έστω (γ,q') και το αυτόματο μεταβαίνει στην κατάσταση q', ενώ τοποθετείται στην στοίβα η γ και καταναλώνεται το a, αν το σύνολο δ(q,h,ε) δεν είναι κενό, επιλέγεται μια κίνηση όπως παραπάνω όμως το a δεν καταναλώνεται.

24 Λειτουργία ΑΣ Το ΑΣ αναγνωρίζει μια συμβολοσειρά εισόδου, όταν μετά το τέλος της εκτέλεσης έχει εξαντληθεί η συμβολοσειρά εισόδου και το ΑΣ βρίσκεται σε μια από τις τελικές καταστάσεις. Μη-ντετερμινισμός: αρκεί μια από τις δυνατές εκτελέσεις να οδηγεί σε τελική κατάσταση. Συνολική κατάσταση (configuration) είναι η τριάδα (q,γ,α), όπου q είναι η τρέχουσα κατάσταση του ΑΣ, γ η συμβολοσειρά που υπάρχει στη στοίβα και α η μη-αναγνωσμένη συμβολοσειρά εισόδου.

25 Αναπαράσταση αυτομάτων Πίνακας Μετάβασης:η πρώτη γραμμή είναι το αλφάβητο της στοίβας (με το σύμβολο ) και η πρώτη στήλη οι καταστάσεις του αυτομάτου. Μια κίνηση αναπαριστάται (γ,q) από pop, αφαίρεση h από στοίβα push(γ), τοποθέτηση συμβόλων στη στοίβα move(q), μετακίνηση στην κατάσταση q push(ε), και move(q) (αν το ΣΑ είναι στην q) παραλείπονται. Το h τοποθετείται εκ νέου στην κορυφή της στοίβας τότε η pop παραλείπεται. read(a) δηλώνει μετάβαση ανάγνωσης, keep μηδενική μετάβαση.

26 Παράδειγμα Αυτόματο το οποίο αναγνωρίζει συμβολοσειρές της μορφής (()()) (ισοζυγισμένες παρενθέσεις). Σ ={ ")","(" } Q = {S,T} H={X,I} δ(s,x,"(")={(xi,s)} δ(s,x,ε)={(x,τ)} q 0 =S h 0 =X F={T} δ(s,i,"(")={(i,s} δ(s,i,")")={(ε,s}

27 Πίνακας Μετάβασης δ(s,x,"(")={(xi,s)} δ(s,x,ε)={(x,τ)} δ(s,i,"(")={(ιi,s} δ(s,i,")")={(ε,s} S T X I read("(") => push(i) read("(") => push(i) keep => move(t) read(")") => push(i) success

28 Παράδειγμα Εκτέλεσης Συμβολοσειρά εισόδου: (()()) Μεταβάσεις: δ(s,x,"(")={(xi,s)} δ(s,i,"(")={(ιi,s} δ(s,x,ε)={(x,τ)} δ(s,i,")")={(ε,s} Κατάσταση Στοίβα bottom top 1 S Χ (()()) 2 S XΙ ()()) 3 S XΙΙ )()) 4 S XΙ ()) 5 S XΙΙ )) 6 S XΙ ) 7 S X ε 8 T Είσοδος

29 Είδη Πεπερασμένων Αυτομάτων Ένα ΑΣ ονομάζεται πραγματικού χρόνου, όταν δεν περιέχει ε-μετάβασεις και απλό όταν έχει μόνο μια κατάσταση. Ντετερμινιστίκο αυτόματο: Για κάθε a Σ {ε},q Q,h H το δ(q,h,a) έχει το πολύ ένα στοιχείο. Αν υπάρχει δ(q,h,ε) τότε δεν υπάρχουν μεταβάσεις δ(q,h,a) για κάθε a Σ. Γενικά, δεν υπάρχει ισοδυναμία ανάμεσα σε μηντετερμινιστικά και ντετερμινιστικά ΑΣ.

30 ΑΣ και Μεταγλωττιστές Κάθε ΓΧΣ έχει αντίστοιχο ΜΑΣ. Ενδιαφέρον (λόγω απόδοσης) έχουν τα ΝΑΣ, άρα ενδιαφέρον για υποσύνολο γλωσσών Μη-ντετερμινιστικές γλώσσες χωρίς συμφραζόμενα. Ειδικότερα ενδιαφερόμαστε για γραμματικές LL(1) και LR(1) που αντιστοιχούν σε ΝΑΣ και έχουν έυκολη υλοποίηση. Υποσύνολα των ντετερμινιστικών γλωσσών χωρίς συμφραζόμενα. Θα δούμε στη συνέχεια πως "κατασκευάζονται" τέτοια αυτόματα.

31 Γλώσσες Προγραμματισμού Μεταγλωττιστές Σχεδιασμός μιας Γραμματικής

32 Ισοδύναμες Γραμματικές Δύο γραμματικές που παράγουν την ίδια γλώσσα ονομάζονται ισοδύναμες. Συχνά στις γραμματικές γίνονται μετασχηματισμοί οι οποίοι δίνουν μια ισοδύναμη γραμματική από μια αρχική περισσότερο πρόσφορη για υλοποίηση. Ιδιαίτερα σημαντικό στις διφορούμενες γραμματικές.

33 Διφορούμενες Γραμματικές Όταν μια συμβολοσειρά μπορεί να αντιστοιχεί σε δύο συντακτικά δένδρα για μια γραμματική τότε η γραμματική ονομάζεται διφορούμενη. Για παράδειγμα: E::=E"+"E E"-"E Ε"*"Ε Ε"/"Ε D D::="1" "2" "3""... "9" "0" Ε Ε Συμβολοσειρά: Ε Ε + E D 1 D 2 + E D 3 E D 1 + Ε Ε + E D 2 D 3

34 Μετασχηματισμοί Διφορούμενες γραμματικές πρέπει να αποφεύγονται κατά την κατασκευή των μεταγλωττιστών. Σημασιολογικές Ασάφειες Αρκετές φορές είναι δυνατό να γίνουν κατάλληλοι μετασχηματισμοί οι οποίοι θα οδηγήσουν σε μια μη-διφορούμενη ισοδύναμη γραμματική.

35 Τελεστές και Γραμματικές Έκφραση της προτεραιότητας και προσεταιριστικότητας των τελεστών σε μια γραμματική. Προτεραιότητα τελεστών: ο τελεστής με την μεγαλύτερη προτεραιότητα παίρνει τα ορίσματα του πριν από τους άλλους τελεστές. Προσεταιριστικότητα: Αριστερά προσεταιριστικός τελεστής: Αριστερά του τελεστή υπάρχει μια υποέκφραση ίδιας προτεραιότητας. Δεξιά προσεταιριστικός τελεστής: Δεξιά του τελεστή υπάρχει μια υποέκφραση ίδιας προτεραιότητας.

36 Τελεστές και Γραμματικές Πώς μπορεί να εκφραστεί η προτεραιότητα και προσεταιριστικότητα μέσω μιας μηδιφορούμενης γραμματικής; Προτεραιότητα: Για κάθε ομάδα τελεστών ίσης προτεραιότητας, δημιουργούμε ένα μη-τερματικό σύμβολο. Προσεταιριστικότητα: Για κάθε τελεστή ορίζεται κατάλληλα ο αντίστοιχος κανόνας παραγωγής.

37 Προσεταιριστικότητα Αριστερά προσεταιριστικός τελεστής List ::= List "," Letter Letter ::= "a" "b"... "z" Συμβολοσειρά a,b,c Δεξιά προσεταιριστικός τελεστής Αssg ::= Letter "="Assg Letter Letter ::= "a" "b"... "z" Συμβολοσειρά a = b = c List List, Letter List, Letter c Letter b a Assg Letter = Assg a Letter = Assg b Letter c

38 Παράδειγμα (i) Γραμματική: E::=E"+"E E"-"E Ε"*"Ε Ε"/"Ε D D::="1" "2" "3""... "9" "0" Δύο κατηγορίες τελεστών ως προς την προτεραιότητα: αριστερά προσεταιριστικοί "+", "-" δημιουργία μη-τερματικού E αριστερά προσεταιριστικοί "*", "/" δημιουργία μη-τερματικού T. το σύμβολο D παραμένει για να δηλώσει τις βασικές μονάδες.

39 Παράδειγμα (ii) Αρ. προσεταιριστικοί "+", "-" (συμβ. Ε) Αρ. προσεταιριστικοί "*", "/" (συμβ. Τ) το σύμβολο D E::=E"+"T E"-"T T T::=T"*"D T"/"D D D::="1" "2"... "9" "0" Ε Συμβολοσειρά 4-3+5*8 Ε Ε - T + Τ Τ * D T D D 8 D 3 5 4

40 Απαλοιφή Αριστερής Αναδρομής Αριστερά αναδρομικός κανόνας με: Άμεση αναδρομή Α::= Αβ Έμμεση αναδρομή Α::=αβ, όπου σε μία ή περισσότερες παραγωγές η συμβολοσειρά α παράγει την Αγ. Γενικότερα Α α και α Αβ Η αριστερή αναδρομή είναι ανεπιθύμητη στην περίπτωση της από-πάνω προς τα κάτω ανάλυσης (top-down). Γιατί;

41 Μέθοδος Απαλοιφής Έστω ο κανόνας Α::=Αα 1 Αα 2... Αα n β 1... β m Ο μετασχηματισμός περιλαμβάνει την εισαγωγή ενός νέου τερματικού Α' και την μεταγραφή του κανόνα στους ακόλουθους: Α::=β 1 Α'... β m Α' Α'::=α 1 Α' α 2 Α'... α n Α' ε Παράδειγμα: E::=E "+"T E "-" T T Α::=Α α 1 Α α 2 β 1 Α::=β 1 Α' γίνεται Ε::=ΤΕ' Α'::=α 1 Α' α 2 Α' ε γίνεται Ε'::="+"ΤΕ' "-"ΤΕ' ε

42 Παράδειγμα Γραμματικής Γραμματική με Αριστερή Αναδρομή E::=E"+"T E"-"T T T::=T"*"D T"/"D D D::="1" "2"... "9" "0" Ισοδύναμη Γραμματική Ε::=ΤΕ' Ε'::="+"ΤΕ' "-"TΕ' ε Τ::=DT' T'::="*"DΤ' "/"DΤ' ε D::="1" "2"... "9" "0"

43 Αντικατάσταση Οι μετασχηματισμοί για τις έμμεσες αναδρομές περιλαμβάνουν αντικαταστάσεις, έτσι ώστε οι νέοι κανόνες που θα προκύψουν να είναι άμεσα αναδρομικοί, όπου και εφαρμόζεται η προηγούμενη μέθοδος. Αντικατάσταση είναι ο μετασχηματισμός στον οποίο αντικαθιστούμε ένα μη-τερματικό σύμβολο Β στο δεξιό μέλος ενός κανόνα Α με όλα τα εναλλακτικά δεξιά μέλη κανόνων που αφορούν το Β. Α::=α 1 Βα 2 Α::=α 1 β 1 α 2 α 1 β 2 α 2... α 1 β n α 2 Β::=β 1 β 2... β n Β::=β 1 β 2... β n

44 Παράδειγμα Έμμεσης Αναδρομής Έστω η γραμματική S::=A "a" "b" A::=A "c" S "d" "f" Κάνοντας τις αντικαταστάσεις S::=A "a" "b" A::=A "c" A "a" "d" "b" "d" "f" Απαλείφοντας την άμεση αριστερή αναδρομή S::=A "a" "b" A::="b" "d" A' "f" A' A'::="c" A' "a" "d" A' ε

45 Αριστερή Παραγοντοποίηση Για την αποδοτική υλοποίηση των συντακτικών αναλυτών δεν πρέπει δύο εναλλακτικοί κανόνες για ένα μη-τερματικό να ξεκινούν με το ίδιο πρόθεμα. Δηλαδή: Α::=αβ 1 αβ 2... αβ n γ 1 γ 2... γ n Η γραμματική με αριστερή παραγοντοποίηση μετατρέπεται στην: Α::=αΒ γ 1 γ 2... γ n Β::=β 1 β 2... β n

46 Το πρόβλημα του μετέωρου else (danfling else) Έστω μέρος μιας γραμματικής (οther είναι οποιοδήποτε άλλο S) S ::= "if" E "then" S "if" E "then" S else S Other Ποιό είναι το συντακτικό δένδρο της if E1 then if E2 then Stm1 else Stm2 S S if E1 then S if E1 then S else Stm2 if E2 then Stm1 else Stm2 if E2 then Stm1

47 Μετατροπή σε μη-διφορούμενη γραμματική Βασική ιδέα: ανάμεσα σε ένα then και σε ένα else δεν πρέπει να υπάρχει ένα "ανοικτό" (unmatched) S. Ως "κλειστό" (matched) S θεωρούμε ένα πλήρες if-thenelse ή οποιοδήποτε άλλο S. Το else αντιστοιχεί στο "εσωτερικότερο" if-then. Άρα S ::= "if" E "then" S "if" E "then" S else S Other Γίνεται: S ::= Mtch Umtc Mtch ::= "if" E "then" Mtch else Mtch Other Umtc ::= "if" E "then" S "if" E "then" Mtch else Umtc

48 Το πρόβλημα του μετέωρου else (danfling else) Παραγόμενο δένρο if E1 then if E2 then Stm1 else Stm2 S::= Mtch Umtc Mtch::="if" E "then" Mtch "else" Mtch Other Umtc::="if" E "then" S "if" E "then" Mtch "else" Umtc if E1 S Umtc then S Mtch if E2 then Mtch else Mtch Stm1 Stm2

49 Συναρτήσεις FIRST και FOLLOW

50 Συναρτήσεις FIRST και FOLLOW Οι δύο συναρτήσεις ορίζονται για τα σύμβολα μιας γραμματικής και αφορούν την κατασκευή συντακτικών αναλυτών και των δύο τύπων. Έστω μια γραμματική G={T,N,P,S} Η συνάρτηση FIRST(α) ορίζεται για κάθε συμβολοσειρά α (Τ Ν)* και ισούται με το σύνολο των τερματικών συμβόλων με τα οποία μπορεί να ξεκινά μια συμβολοσειρά η οποία παράγεται από την α. Η συνάρτηση FOLLOW(A), όπου Α Ν, είναι το σύνολο των τερματικών συμβόλων που μπορεί να ακολουθούν την Α σε ένα προτασιακό τύπο.

51 Συνάρτηση FIRST Δεδομένης μιας γραμματικής G={T,N,P,S}, και α (Τ Ν)* (δηλαδή κάθε συμβολοσειρά που αποτελείται από τερματικά και μη-τερματικά σύμβολα της G) η συνάρτηση FIRST(α) Τ {ε}, ορίζεται ως: Αν υπάρχει α * aβ, όπου a είναι τερματικό σύμβολο, τότε ισχύει a FIRST(α). Αν υπάρχει α * ε, τότε ε FIRST(α).

52 Υπολογισμός Συνάρτησης FIRST (i) Για κάθε σύμβολο Χ της γραμματικής G, ισχύουν οι ακόλουθοι κανόνες υπολογισμού: Αν Χ τερματικό τότε FIRST(X) ={X} Αν Χ Ν και υπάρχει κανόνας Χ ε, τότε FIRST(X)=FIRST(X) {ε} Αν Χ Ν, και για κάθε κανόνα Χ Α 1,Α 2...Α n, τότε FIRST(X) = FIRST(X) (FIRST(A i ) -{ε}), για κάθε i, τέτοιο ώστε j 0<j<i ε FIRST(A j ). Εάν j 0<j n ε FIRST(A j ), τότε FIRST(X)=FIRST(X) {ε} Οι κανόνες εφαρμόζονται μέχρι να μην μπορούν να μεταβληθούν τα σύνολα FIRST.

53 Υπολογισμός Συνάρτησης FIRST (ii) Για κάθε συμβολοσειρά Χ 1,Χ 2,...,Χ n FIRST(Χ 1,...,Χ n ) = FIRST(X 1 ) {ε} Για κάθε i 1<i n, εάν j 0<j<i ε FIRST(X j ) τότε FIRST(Χ 1,...,Χ n )=FIRST(Χ 1,...,Χ n ) (FIRST(X i )- {ε}) Εάν για κάθε 0<i n, ε FIRST(X i ), τότε FIRST(Χ 1,...,Χ n ) = FIRST(Χ 1,...,Χ n ) {ε}

54 Παράδειγμα Υπολογισμού FIRST Ε ΤΕ' Ε' +ΤΕ' Ε' ε Τ FT' T' *FΤ' T' ε F id F ( E ) FIRST(E)=FIRST(T)-{ε}={id,(} FIRST(E')= {+,ε} FIRST(T)=FIRST(F)-{ε}={id,(} FIRST(T')={*,ε} FIRST(F) = FIRST(id) FIRST(( E ))={id,(} FIRST( ( E ) ) = {(} FIRST(id)={id}

55 Συνάρτηση FOLLOW Δεδομένης μιας γραμματικής G={T,N,P,S}, και A Ν, τότε η συνάρτηση FOLLOW(A) Τ {EOF}, ορίζεται ως: Αν υπάρχει παραγωγή S * αaaβ, όπου α,β (Τ Ν)* και a είναι τερματικό σύμβολο, τότε a FOLLOW(α). Αν υπάρχει παραγωγή S * αa, όπου α (Τ Ν)* τότε EOF FOLLOW(α).

56 Υπολογισμός της συνάρτησης FOLLOW FOLLOW(S)={EOF} Για κάθε κανόνα της μορφής Α αββ, όπου Α και Β Ν και α,β (Τ Ν)*, FOLLOW(B)=FOLLOW(B) (FIRST(b)-{ε}) Εάν ε FIRST(β) τοτε FOLLOW(B)=FOLLOW(B) FOLLOW(Α) Το παραπάνω εκτελείται μέχρι τα σύνολα FOLLOW να μην μεταβάλλονται.

57 Παράδειγμα Υπολογισμού FOLLOW FIRST(E)=FIRST(T)=FIRST(F) ={id,)} FIRST(E')= {+,ε} FIRST(T')={*,ε} Ε ΤΕ' Ε' +ΤΕ' Ε' ε Τ FT' T' *FΤ' T' ε F id F ( E ) FOLLOW(E)={EOF} (αρχικό σύμβολο) Υπολογισμός FOLLOW(E) F ( E ) FOLLOW(E)=FOLLOW(E) (FIRST( ) )-{ε})={eof,)} Υπολογισμός FOLLOW(E') Ε ΤΕ' FOLLOW(E')=FOLLOW(E') (FIRST( ε )-{ε})={} FOLLOW(E')=FOLLOW(E') FOLLOW(E)={EOF,)} Ε' +ΤΕ' FOLLOW(E')=FOLLOW(E') (FIRST( ε )-{ε})={eof,)} FOLLOW(E')=FOLLOW(E') FOLLOW(E')={EOF,)}

58 Παράδειγμα Υπολογισμού FOLLOW FIRST(E)=FIRST(T)=FIRST(F) ={id,)} FIRST(E')= {+,ε} FIRST(T')={*,ε} Ε ΤΕ' Ε' +ΤΕ' Ε' ε Τ FT' T' *FΤ' T' ε F id F ( E ) Υπολογισμός FOLLOW(T) Ε ΤΕ' FOLLOW(T)=FOLLOW(T) (FIRST(E')-{ε})={+} FOLLOW(T)=FOLLOW(T) FOLLOW(E')={EOF,),+} Ε' +ΤΕ' FOLLOW(T)=FOLLOW(T) (FIRST( ε )-{ε})={} FOLLOW(T)=FOLLOW(T) FOLLOW(E')={EOF,),+}

59 Παράδειγμα Υπολογισμού FOLLOW FIRST(E)=FIRST(T)=FIRST(F) ={id,)} FIRST(E')= {+,ε} FIRST(T')={*,ε} Ε ΤΕ' Ε' +ΤΕ' Ε' ε Τ FT' T' *FΤ' T' ε F id F ( E ) Υπολογισμός FOLLOW(T') Τ FT' FOLLOW(T')=FOLLOW(T') (FIRST(ε)-{ε})={} FOLLOW(T')=FOLLOW(T') FOLLOW(Τ)={EOF,),+} T' *FΤ' FOLLOW(T')=FOLLOW(T') (FIRST(ε)-{ε})={EOF,),+} FOLLOW(T')=FOLLOW(T') FOLLOW(Τ')={EOF,),+}

60 Παράδειγμα Υπολογισμού FOLLOW FIRST(E)=FIRST(T)=FIRST(F) ={id,)} FIRST(E')= {+,ε} FIRST(T')={*,ε} Ε ΤΕ' Ε' +ΤΕ' Ε' ε Τ FT' T' *FΤ' T' ε F id F ( E ) Υπολογισμός FOLLOW(F) Τ FT' FOLLOW(F)=FOLLOW(F) (FIRST(T')-{ε})={*} FOLLOW(F)=FOLLOW(F) FOLLOW(T)={EOF,),+,*} T' *FΤ' FOLLOW(F)=FOLLOW(F) (FIRST(Τ')-{ε})={EOF,),+,*} FOLLOW(F)=FOLLOW(F) FOLLOW(T')={EOF,),+,*}

61 Παράδειγμα Υπολογισμού FIRST & FOLLOW Ε ΤΕ' Ε' +Τ Ε' ε Τ FT' T' *F T' ε F id F ( E ) FIRST(E)=FIRST(T)=FIRST(F) ={id,(} FIRST(E')= {+,ε} FIRST(T')={*,ε} FOLLOW(E)={EOF,)} FOLLOW(E')={EOF,)} FOLLOW(T)={EOF,),+} FOLLOW(T')={EOF,),+} FOLLOW(F)={EOF,),+,*}

62 Συντακτική Ανάλυση από Πάνω προς τα Κάτω (top-down)

63 Συντακτική Ανάλυση από Πάνω προς τα Κάτω Η συντακτική ανάλυση ξεκινά από το αρχικό σύμβολο της γραμματικής (ρίζα του συντακτικού δένδρου) και αντικαθιστά αυτό με τα σύμβολα από ένα κανόνα παραγωγής. Η διαδικασία συνεχίζεται με τους επόμενους κόμβους μέχρι όλα τα φύλλα του δένδρου να είναι τερματικά σύμβολα της γραμματικής. Με ποια σειρά θα εξεταστούν οι κόμβοι παιδιά ενός κόμβου; Ποιος από τους πιθανούς εναλλακτικούς κανόνες θα χρησιμοποιηθεί για την αντικατάσταση του μη-τερματικού συμβόλου;

64 Με ποια σειρά θα εξεταστούν οι κόμβοι παιδιά ενός κόμβου; Οι πλειοψηφία των συντακτικών αναλυτών επεκτείνουν τους νέους κόμβους από τα αριστερά προς τα δεξιά (Left-to-right) σύμφωνα με την σειρά εμφάνισης τους στο δεξιό μέλος του αντίστοιχου κανόνα παραγωγής. Α::="a"Β"a"Γ Β::="b" Γ::="c" A a Β a Γ b c

65 Ποιος από τους πιθανούς εναλλακτικούς κανόνες θα χρησιμοποιηθεί για την αντικατάσταση του μητερματικού συμβόλου; Επιλογή κατάλληλου κανόνα είναι ένα δύσκολο ζήτημα (για να λυθεί αποδοτικά). Η περίπτωση της οπισθοδρόμησης δεν είναι αποδεκτή. Συνήθως ο ΣΑ διαβάζει ένα ή περισσότερα σύμβολα ώστε να αποφασίσει ποιος είναι ο κατάλληλος κανόνας (look-ahead symbols). LL(k): ΣΑ που διαβάζει την συμβολοσειρά από αριστερά προς τα δεξιά (Left-to-right), κατασκευάζει την αριστερότερη παραγωγή (Leftmost derivation) και απαιτεί k σύμβολα εισόδου. π.χ. LL(1) ΣΑ

66 LL(1) Γραμματικές LL(1) γραμματική: Αναγνώσιμη από ένα LL(1) ΣΑ (αναδρομικής κατάβασης ή ΑΣ). Υποσύνολο των γραμματικών χωρίς συμφραζόμενα, αρκετά πλούσιο όμως για να περιγράψει τις περισσότερες γλώσσες. Προϋποθέσεις: Για κάθε ζεύγος κανόνων παραγωγής Α α και Α β πρέπει να ισχύει FIRST(α) FIRST(β) =. Αν το ε ανήκει στο FIRST(A) (για παράδειγμα υπάρχει κανόνας Α ε) πρέπει να ισχύει FIRST(Α) FOLLOW(Α) =.

67 LL(1) Γραμματικές Αποκλείονται οι γραμματικές: Αριστερά αναδρομικές Έχουν δύο εναλλακτικούς κανόνες με δεξιά μέλη που ξεκινούν με το ίδιο σύμβολο. Έχουν δύο εναλλακτικούς κανόνες τα δεξιά μέλη των οποίων παράγουν την κενή συμβολοσειρά. Πως επιτυγχάνεται το παραπάνω; Απαλοιφή αριστερής αναδρομής Αντικατάσταση Αριστερή παραγοντοποίηση

68 ΣΑ Αναδρομικής Κατάβασης Recursive Descent ΣΑ από πάνω προς τα κάτω, εύκολα κατασκευάσιμος χειρωνακτικά. Σε κάθε μη-τερματικό σύμβολο, αντιστοιχίζεται μια ρουτίνα η οποία το αναγνωρίζει. Αποφυγή οπισθοδρόμησης: Χρήση της συνάρτησης FIRST για την επιλογή της κατάλληλης ρουτίνας για την αναγνώριση, εξετάζοντας την επόμενη λεκτική μονάδα (lookahead).

69 ΣΑ Αναδρομικής Κατάβασης (ii) Έστω Α::=α 1 α 2... α n και η επόμενη λεκτική μονάδα είναι η token. O κώδικας για την αναγνώριση της Α είναι: if token FIRST(α 1 ) then <κώδικας για την α 1 >... ifelse token FIRST(α n ) then <κώδικας για την α n > ifelse ε FIRST(α 1 )... FIRST(α n ) then <συντακτικό σφάλμα> ifelse token FOLLOW(A) then <συντακτικό σφάλμα>

70 ΣΑ Αναδρομικής Κατάβασης (iii) Κώδικας για το δεξιό μέλος των κανόνων Η κενή συμβολοσειρά δεν απαιτεί κώδικα Ένα τερματικό t αναγνωρίζεται από τον κώδικα match(a): match(t : token) if lookahead = t then lookahead := nexttoken() else syntax_error Ένα μη-τερματικό σύμβολο Α αναγνωρίζεται από την κλήση στη ρουτίνα που αναγνωρίζει το Α. Παράθεση δύο συμβολοσειρών αβ αναγνωρίζεται καλώντας τον τον κώδικα για την α και τον κώδικα για την β.

71 Παράδειγμα Γραμματικής Ε ΤΕ' Ε' +ΤΕ' Ε' ε Τ FT' T' *FΤ' T' ε F id F ( E ) FIRST(E)=FIRST(T)=FIRST(F) ={id,(} FIRST(E')= {+,ε} FIRST(T')={*,ε} FOLLOW(E)={EOF,)} FOLLOW(E')={EOF,)} FOLLOW(T)={EOF,),+} FOLLOW(T')={EOF,),+} FOLLOW(F)={EOF,),+,*}

72 Παράδειγμα Γραμματικής Ε ΤΕ' Ε' +ΤΕ' Ε' ε Τ FT' T' *FΤ' T' ε F id F ( E ) FIRST(TE') = {id,(} void E() if token = id or token = ( call T() call E'() else syntax_error FIRST(+T) = {+} FOLLOW(E')={EOF,)} void E'() if token = + then match(+) call T() call E'() elseif token not_in { EOF, ) } then syntax_error

73 Παράδειγμα Γραμματικής Ε ΤΕ' Ε' +ΤE' Ε' ε Τ FT' T' *FT' T' ε F id F ( E ) FIRST(FT') = {id,(} void T() if token = id or token =( call F() call T'() else syntax_error FIRST(*F) = {*} FOLLOW(T')={EOF,),+} void T'() if token = * then match(*) call F() call T'() elseif token not_in { EOF,),+} then syntax_error

74 Παράδειγμα Γραμματικής Ε ΤΕ' Ε' +ΤE' Ε' ε Τ FT' T' *FT' T' ε F id F ( E ) FIRST(id) = {id} FIRST( (E) ) = {(} void F() if token = id then match(id) elseif token = ( then match( ( ) call E() match( ) ) else syntax_error void syntaxanalysis() token = nexttoken() call E() if token =\= EOF then syntax_error

75 Μη-αναδρομικοί συντακτικοί αναλυτές LL(1) Είναι δυνατό να κατασκευαστεί ένα ειδικό αυτόματο στοίβας για μια LL(1) γραμματικοί. Συνήθως τέτοιοι ΣΑ κατασκευάζονται με αυτόματο τρόπο. Το αυτόματο αποτελείται από: ενδιάμεση μνήμη, από όπου διαβάζεται η συμβολοσειρά εισόδου, στοίβα, όπου τοποθετούνται τα τερματικά και μητερματικά σύμβολα της γραμματικής. πίνακας συντακτικής ανάλυσης, με μια γραμμή για κάθε μη-τερματικό σύμβολο και μια στήλη για κάθε τερματικό σύμβολο της γραμματικής και το σύμβολο EOF.

76 ΣΑ LL(1) Αυτομάτου Στοίβας a 1 a 2... a m EOF x n... x 2 Πίνακας Συντακτικής Ανάλυσης LL(1) x 1

77 Κατασκευή Πίνακα Συντακτικής Ανάλυσης Για κάθε κανόνα παραγωγής Α β: Για κάθε τερματικό σύμβολο a a FIRST(β), πρόσθεσε τον κανόνα Α β στη θέση M[A,a] Αν ε FIRST(β), τότε για κάθε τερματικό σύμβολο a FOLLOW(Α), πρόσθεσε τον κανόνα Α β στην θέση Μ[Α,a]. Αν ε FIRST(β) και EOF FOLLOW(Α) τότε πρόσθεσε τον κανόνα Α β στην θέση Μ[Α,EOF] Όσες θέσεις του πίνακα μένουν κενές συμπληρώνονται με την ένδειξη error (ή απλώς υπονοείται).

78 Παράδειγμα Κατασκευής Πίνακα Συντακτικής Ανάλυσης Ε ΤΕ' Ε' +ΤE' Ε' ε Τ FT' T' *FT' T' ε F id F ( E ) FIRST(E)=FIRST(T)=FIRST(F) ={id,(} FIRST(E')= {+,ε} FIRST(T')={*,ε} FOLLOW(E)={EOF,)} FOLLOW(E')={EOF,)} FOLLOW(T)={EOF,),+} FOLLOW(T')={EOF,),+} FOLLOW(F)={EOF,),+,*} id + * ( ) EOF E E TE E TE E E +TE E ε E ε

79 Παράδειγμα Κατασκευής Πίνακα Συντακτικής Ανάλυσης Ο πλήρης πίνακας για την συγκεκριμένη γραμματική είναι: id + * ( ) EOF E E TE E TE E E +TE E ε E ε T T FT T FT T T ε T *FT T ε T ε F F id F (E)

80 Λειτουργία ΣΑ LL(1) Συμπίπτει με την λειτουργία του ΑΣ. Μέχρι η στοίβα να είναι κενή: Αν στην κορυφή της στοίβας βρίσκεται το τερματικό σύμβολο a το οποίο συμπίπτει με το επόμενο σύμβολο της συμβολοσειράς εισόδου, τότε το a αφαιρείται από τη στοίβα και το αυτόματο προχωρά στο επόμενο σύμβολο. Αν στην κορυφή της στοίβας είναι το μη-τερματικό Α, και το επόμενο σύμβολο της συμβολοσειράς εισόδου τότε είναι το a, και υπάρχει κανόνας Α β στο Μ[Α,a], τότε το Α αφαιρείται από τη στοίβα και τοποθετούνται τα σύμβολα του β στη στοίβα. Αλλιώς σφάλμα.

81 Παράδειγμα: Συμβολοσειρά id+id*id Στοίβα Είσοδος Κανόνας/Κίνηση 0 E id + id * id EOF E T E 1 E T id + id * id EOF T F T 2 E T F id + id * id EOF F id 3 E T id id + id * id EOF pop(id) 4 E T + id * id EOF T ε 5 E + id * id EOF E + T E 6 E T+ +id * id EOF pop(+) 7 E T id * id EOF T F T 8 E T F id * id EOF F id 9 E T id id * id EOF pop(id) 10 E T * id EOF T * F T 11 E T F * *id EOF pop(*) 12 E T F id EOF F id 13 E T id id EOF pop(id) 14 E T EOF T ε 15 E EOF E ε 16 ε EOF success

82 Ανάνηψη από Σφάλματα Η βασική ιδέα είναι να γίνει η ανίχνευση ενός σφάλματος και να: γίνει η έξοδος μηνύματος λάθους με σαφήνεια και ακρίβεια προχωρήσει η μεταγλωττιστής στην επεξεργασία της υπόλοιπης συμβολοσειράς εισόδου, ώστε να εντοπιστούν τυχόν άλλα σφάλματα. μην καθυστερεί πολύ η μεταγλώττιση του προγράμματος.

83 Μέθοδος Πανικού Απλούστερη στρατηγική ανάνηψης από σφάλματα (panic mode). Ανάγνωση επόμενων λεκτικών μονάδων από την είσοδο, μέχρι να βρεθεί λεκτική μονάδα η οποία να ανήκει στο σύνολο "συγχρονισμού". Κατάλληλες λεκτικές μονάδες και διαχωριστές. Επιλογή των κατάλληλων λεκτικών μονάδων στο σύνολο εξαρτάται από την γλώσσα. Παραλείπει κάποια σφάλματα Παραδοχή ότι τα δεν εμφανίζονται συχνά περισσότερα του ενός σφάλματα σε μια γραμμή.

84 Ανάνηψη από σφάλματα σε LL(1) ΣΑ Σφάλμα διαπιστώνεται όταν: Αν το τερματικό σύμβολο στην κορυφή της στοίβας δεν είναι ίδιο με το επόμενο τερματικό σύμβολο εισόδου. Αν για το μη-τερματικό σύμβολο της στοίβας και το επόμενο τερματικό σύμβολο της εισόδου, δεν υπάρχει κανόνας στον πίνακα συντακτικής ανάλυσης.

85 Μέθοδος Πανικού σε LL(1) ΣΑ (i) Καθορισμός τους συνόλου χρονισμού: Τα σύμβολα στο σύνολο FOLLOW(A). Αφαιρούμε από την είσοδο λεκτικές μονάδες μέχρι να φτάσουμε σε μια η οποία ανήκει στο FOLLOW(A), και αφαιρούμε το Α από την στοίβα. Δεν είναι πάντα η κατάλληλη μέθοδος, καθώς αν λείπει ένας διαχωριστικός χαρακτήρας (πχ ";" στη C) οι λεκτικές μονάδες με τις οποίες ξεκινούν οι επόμενες εκφράσεις δεν θα είναι στο FOLLOW(A). Προσθήκη στο σύνολο χρονισμού των "χαμηλότερων" στην ιεραρχία μη-τερματικών, συνόλων FIRST "υψηλότερων" μη-τερματικών.

86 Μέθοδος Πανικού σε LL(1) ΣΑ (ii) Μπορούν να προστεθούν σύμβολα από το FIRST(A) στο και αν βρεθεί κάποιο από αυτά στη συμβολοσειρά εισόδου να συνεχιστεί η αναγνώριση του Α. Εάν ένα μη-τερματικό παράγει την κενή συμβολοσειρά, τότε αυτή η παραγωγή προτιμάται. Αν ένα τερματικό είναι στην κορυφή της στοίβας τότε απλώς αφαιρείται από αυτή και δίνεται το κατάλληλο μήνυμα λάθους.

87 Ανάνηψη σε επίπεδο Φάσης (phase-level recovery) Σύμφωνα με την στρατηγική, σε κάθε κενή θέση του πίνακα συντακτικής ανάλυσης, αντιστοιχίζεται μια ρουτίνα σφάλματος, η οποία: τυπώνει το κατάλληλο διαγνωστικό μήνυμα Εισάγει/διαγράφει ή μεταβάλλει το σύμβολο εισόδου Αφαιρεί το τρέχον σύμβολο από την στοίβα. Κίνδυνος ατερμόνων βρόχων πχ. στην εισαγωγή ενός συμβόλου Η εισαγωγή ενός συμβόλου μπορεί να οδηγήσει σε μη επιτρεπτή συμβολοσειρά εισόδου.

88 Σύνοψη Συντακτική Ανάλυση Γραμματικές χωρίς συμφραζόμενα. Αυτόματα Στοίβας Οι συναρτήσεις FIRST και FOLLOW. Συντακτικοί Αναλυτές από πάνω προς τα κάτω (top-down)

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Συντακτική Ανάλυση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Συντακτική Ανάλυση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μεταγλωττιστές Συντακτική Ανάλυση Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Συντακτική Ανάλυση Το συντακτικό μιας γλώσσας καθορίζει ποιες συμβολοσειρές

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση II

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση II Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση II Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Εισαγωγή στην ανάλυση από κάτω προς τα πάνω. Οι έννοιες της ελάττωσης

Διαβάστε περισσότερα

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την Βοηθητικές έννοιες (i) Σύνολα FIRST Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την Αν a τότε a FIRST Αν τότε FIRST Νίκος Παπασπύρου,

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 4 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 4 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 4 ο Συντακτική Ανάλυση Επαλήθευση της σύνταξης του προγράμματος Κατασκευή συντακτικού δέντρου Η κεντρική φάση της Μετάφρασης Οδηγούμενης από τη Σύνταξη Από εδώ ξεκινά η παραγωγή

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Γλώσσες Προγραμματισμού Μεταγλωττιστές Γλώσσες Προγραμματισμού Μεταγλωττιστές Επαναληπτικό Μάθημα Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Γλώσσες Προγραμματισμού Γλώσσα προγραμματισμού: Συμβολική περιγραφή

Διαβάστε περισσότερα

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μεταγλωττιστές Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανοδική Κατασκευή Συντακτικού Δέντρου κατασκευή δέντρου

Διαβάστε περισσότερα

Κεφάλαιο 2: Τυπικές γλώσσες

Κεφάλαιο 2: Τυπικές γλώσσες Κεφάλαιο 2: Τυπικές γλώσσες (μέρος 2ο) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 47 / 216 Γλώσσες χωρίς συμφραζόμενα (i) Γραμματικές χωρίς συμφραζόμενα: Σε κάθε παραγωγή ένα μη τερματικό

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 2 ο Αλφάβητα και Γλώσσες Αλφάβητο: Ένα μη κενό και πεπερασμένο σύνολο συμβόλων Γλώσσα: Ένα οποιοδήποτε υποσύνολο των συμβολοσειρών ενός αλφαβήτου (οι προτάσεις της γλώσσας, πχ.

Διαβάστε περισσότερα

Μεταγλωττιστές. Ενότητα 7: Συντακτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 7: Συντακτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 7: Συντακτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ Τελικές Εξετάσεις Απαντήστε όλα τα θέματα του Μέρους Α και ένα θέμα από

Διαβάστε περισσότερα

Top Down Bottom Up. Συντακτική Ανάλυση. Συντακτική Ανάλυση για Γραµµατικές χωρίς Συµφραζόµενα (top-down - Earley)

Top Down Bottom Up. Συντακτική Ανάλυση. Συντακτική Ανάλυση για Γραµµατικές χωρίς Συµφραζόµενα (top-down - Earley) Top Down Bottom Up Συντακτική Ανάλυση Γιώργος Μανής δεοµένης της παραγωγής X αβ, ο συµβολισµός X α β αναπαριστά µία κατάσταση στη οποία το α έχει ήδη αναγνωριστεί και το β προσδοκάται να αναγνωριστεί.

Διαβάστε περισσότερα

Απάντηση: (func endfunc)-([a-za-z])+

Απάντηση: (func endfunc)-([a-za-z])+ Γλώσσες Προγραμματισμού Μεταγλωττιστές Ασκήσεις Επανάληψης ) Περιγράψτε τις κανονικές εκφράσεις που υποστηρίζουν (i) συμβολοσειρές που ξεκινούν με το πρόθεμα "func" ή "endfunc" ακολουθούμενο το σύμβολο

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Δεύτερη Σειρά Ασκήσεων 22 Νοεμβρίου 2016 (χειρόγραφη και ηλεκτρονική παράδοση 9 Δεκεμβρίου) Άσκηση 1: Θεωρήστε τη γραμματική με κανόνες: Α B a A a c B B b A b

Διαβάστε περισσότερα

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση ΙII. Εαρινό Εξάμηνο Lec 11 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση ΙII. Εαρινό Εξάμηνο Lec 11 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση ΙII Εαρινό Εξάμηνο 2018-2019 Lec 11 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Γραμματικές Μία γραμματική ονομάζεται αναδρομική εφόσον επιτρέπει παραγωγές

Διαβάστε περισσότερα

Μεταγλωττιστές. μια φοιτητική προσέγγιση

Μεταγλωττιστές. μια φοιτητική προσέγγιση Μεταγλωττιστές μια φοιτητική προσέγγιση i. Περιεχόμενα i. Περιεχόμενα ii.πηγές 1. Εισαγωγή στη Μεταγλώττιση 1.1 Η διαδικασία της μεταγλώττισης Μεταγλωττιστής: Ανάλυση Σύνθεση 1.2 Οι φάσεις της μεταγλώττισης

Διαβάστε περισσότερα

Μεταγλωττιστές. Ενότητα 8: Συντακτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 8: Συντακτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 8: Συντακτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ.

Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ. Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι Εαρινό Εξάμηνο 2018-2019 Lec 05 & 06 25 & 26 /02/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Φάσεις μεταγλώττισης Αρχικό Πρόγραμμα Λεκτική Ανάλυση λεκτικές μονάδες

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 5 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 5 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 5 ο ΣΑ από Κάτω προς τα Πάνω Ξεκίνημα με την πρώτη λεκτική μονάδα Διάβασε διαδοχικές λεκτικές μονάδες αντικαθιστώντας το δεξί μέλος κάποιου κανόνα που έχει σχηματιστεί με το αριστερό

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 3 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 3 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 3 ο Λεκτική Ανάλυση και Λεκτικοί Αναλυτές Γενικά για τη λεκτική ανάλυση Έννοιες που χρειαζόμαστε Τεχνικές λεκτικής ανάλυσης Πίνακας συμβόλων και διαχείριση λαθών Σχεδίαση λεκτικού

Διαβάστε περισσότερα

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αυτόματα Στοίβας (2.2) Τυπικός Ορισμός Παραδείγματα Ισοδυναμία με Ασυμφραστικές

Διαβάστε περισσότερα

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2011-2012 Γιάννης Γαροφαλάκης, Καθηγητής Αθανάσιος Ν.Νικολακόπουλος, Υποψήφιος Διδάκτορας 28 Μαρτίου 2012 Περίληψη Σκοπός της παρούσας

Διαβάστε περισσότερα

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι. Εαρινό Εξάμηνο Lec /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι. Εαρινό Εξάμηνο Lec /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι Εαρινό Εξάμηνο 2018-2019 Lec 09 18 /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Φάσεις μεταγλώττισης Αρχικό Πρόγραμμα Λεκτική Ανάλυση λεκτικές μονάδες Πίνακας

Διαβάστε περισσότερα

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση IV. Εαρινό Εξάμηνο Lec 12 01/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση IV. Εαρινό Εξάμηνο Lec 12 01/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση IV Εαρινό Εξάμηνο 2018 2019 Lec 12 01/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Καθοδική Ανάλυση Ξεκινά από τη αρχή της γραμματικής (ρίζα δένδρου) για να

Διαβάστε περισσότερα

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση VIΙ. Εαρινό Εξάμηνο Lec 15 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση VIΙ. Εαρινό Εξάμηνο Lec 15 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση VIΙ Εαρινό Εξάμηνο 2018-2019 Lec 15 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Αναλυτής LR ώθησης - απλοποίησης Ι Συμβολοσειρά εισόδου κεφαλή ανάγνωσης

Διαβάστε περισσότερα

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2014-2015 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα

Διαβάστε περισσότερα

Ορισµοί. Τυπικές Γλώσσες Γραµµατικές και Μεταφραστές. Αλφάβητο: ένα οποιδήποτε µη κενό και πεπερασµένο σύνολο Σ αποτελούµενο από σύµβολα

Ορισµοί. Τυπικές Γλώσσες Γραµµατικές και Μεταφραστές. Αλφάβητο: ένα οποιδήποτε µη κενό και πεπερασµένο σύνολο Σ αποτελούµενο από σύµβολα Ορισµοί Τυπικές Γλώσσες Γραµµατικές και Μεταφραστές Αλφάβητο: ένα οποιδήποτε µη κενό και πεπερασµένο σύνολο Σ αποτελούµενο από σύµβολα { 0, } δυαδικό αλφάβητο { Α, Β, Γ,, Ω } κεφαλαία ελληνικά γράµµατα

Διαβάστε περισσότερα

Πίνακας Περιεχοµένων Πρόλογος Κεφάλαιο Βασικές εισαγωγικές έννοιες

Πίνακας Περιεχοµένων Πρόλογος Κεφάλαιο Βασικές εισαγωγικές έννοιες Πίνακας Περιεχοµένων Πρόλογος...vii Κεφάλαιο 1:Βασικές εισαγωγικές έννοιες...1 1.1 Η δοµή του µεταγλωττιστή...2 1.2 Η διαδικασία µεταγλώττισης...3 1.2.1 Η Λεξική Ανάλυση...6 1.2.2 Η Συντακτική Ανάλυση...6

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Δεύτερη Σειρά Ασκήσεων 22 Νοεμβρίου 2016 Μέρος Α. (χειρόγραφη και ηλεκτρονική παράδοση 9 Δεκεμβρίου) Άσκηση 1: Θεωρήστε τη

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου Λογισμικό Συστήματος Κλειώ Σγουροπούλου Λογισμικό συστήματος Λειτουργικό σύστημα Μεταφραστές γλώσσας (translators) Διερμηνείς (interpreters) Μεταγλωττιστές (compilers) Εκδότες (editors) Φορτωτές (loaders)

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 1 ο Γλώσσα - Μετάφραση Γλώσσα προγραμματισμού = Αναπαράσταση αλγορίθμων Ευκολία χρήσης Ακρίβεια και πληρότητα περιγραφής, όχι διφορούμενη! Μία περιγραφή για όλες τις μηχανές Μετάφραση

Διαβάστε περισσότερα

Κεφάλαιο 2: Τυπικές γλώσσες. Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος / 216

Κεφάλαιο 2: Τυπικές γλώσσες. Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος / 216 Κεφάλαιο 2: Τυπικές γλώσσες Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 13 / 216 Τυπικές γλώσσες (i) Βασικές έννοιες Αλφάβητο Σύμβολο Συμβολοσειρά Μήκος συμβολοσειράς Σύνολο συμβολοσειρών

Διαβάστε περισσότερα

Κατηγορικές Γραµµατικές

Κατηγορικές Γραµµατικές Κατηγορικές Γραµµατικές Γραµµατικές Χωρίς περιορισµούς Με συµφραζόµενα Χωρίς συµφραζόµενα Κανονικές Πεπερασµένων επιλογών Κατηγορικές Ενεργοποίησης Γραµµατικές G = { T, N, P, S } Τ: αλφάβητο τερµατικών

Διαβάστε περισσότερα

ΜΑΘΗΜΑ: Μεταγλωττιστές

ΜΑΘΗΜΑ: Μεταγλωττιστές Comment [h1]: Παράδειγμ α: https://ocp.teiath.gr/modules/ exercise/exercise_result.php?course=pey101&eurid=16 9 ΜΑΘΗΜΑ: Μεταγλωττιστές ΔΙΔΑΣΚΩΝ: Άγγελος Μιχάλας ΤΜΗΜΑ: Τμήμα Μηχανικών Πληροφορικής ΤΕ 1

Διαβάστε περισσότερα

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1 Εφαρμογές στοιβών Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων Αντίστροφος Πολωνικός Συμβολισμός ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Παραδείγματα Ενοτήτων 3-6 Ενότητα 3: Λεκτική ανάλυση Άσκηση 3-1: Να δώσετε το ενοποιημένο διάγραμμα μετάβασης που αναγνωρίζει

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση με το Εργαλείο BISON

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση με το Εργαλείο BISON Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση με το Εργαλείο BISON Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Γεννήτριες Συντακτικών Αναλυτών Bison/yacc

Διαβάστε περισσότερα

Μεταγλωττιστές. Εργαστήριο 5. Εισαγωγή στο BISON. Γεννήτρια Συντακτικών Αναλυτών. 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση

Μεταγλωττιστές. Εργαστήριο 5. Εισαγωγή στο BISON. Γεννήτρια Συντακτικών Αναλυτών. 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση Μεταγλωττιστές Εργαστήριο 5 Εισαγωγή στο BISON Γεννήτρια Συντακτικών Αναλυτών 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2015-1016 Φάσεις Μεταγλώττισης

Διαβάστε περισσότερα

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού»

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού» ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραµµατισµού 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας 1 6.1 Γενιές γλωσσών προγραµµατισµού 2 Δεύτερη γενιά: γλώσσα assembly Ένα µνηµονικό σύστηµα για την αναπαράσταση προγραµµάτων

Διαβάστε περισσότερα

Στοιχεία Θεωρίας Υπολογισµού (2): Πεπερασµένα Αυτόµατα, Κανονικές Εκφράσεις

Στοιχεία Θεωρίας Υπολογισµού (2): Πεπερασµένα Αυτόµατα, Κανονικές Εκφράσεις Στοιχεία Θεωρίας Υπολογισµού (2): Πεπερασµένα Αυτόµατα, Κανονικές Εκφράσεις Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Θεωρία Υπολογισµού

Διαβάστε περισσότερα

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, Εφαρµογές στοιβών Στην ενότητα αυτή θα µελετηθεί η χρήση στοιβών στις εξής εφαρµογές: Αναδροµικές συναρτήσεις Ισοζυγισµός Παρενθέσεων Αντίστροφος Πολωνικός Συµβολισµός ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι

Διαβάστε περισσότερα

Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 1 η : Parsers Συντακτική Ανάλυση για ΓΧΣ Οι τεχνικές συντακτικής ανάλυσης κατηγοριοποιούνται με βάση διάφορα κριτήρια: Κατεύθυνση ανάλυσης μη τερματικών συμβόλων Σειρά επιλογής

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού Μεταγλωττιστές

Γλώσσες Προγραμματισμού Μεταγλωττιστές Γλώσσες Προγραμματισμού Μεταγλωττιστές Παραγωγή Ενδιάμεσου Κώδικα Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Παραγωγή ενδιάμεσου κώδικα. Ενδιάμεσες γλώσσες. Αφηρημένα

Διαβάστε περισσότερα

Γλώσσες Χωρίς Συμφραζόμενα

Γλώσσες Χωρίς Συμφραζόμενα Γλώσσα χωρίς Συμφραζόμενα Γλώσσες Χωρίς Συμφραζόμενα Διδάσκοντες: Φ. Αφράτη, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

Διαβάστε περισσότερα

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2016-2017 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα

Διαβάστε περισσότερα

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6 Εισαγωγή στην Επιστήμη των Υπολογιστών 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές http://www.corelab.ece.ntua.gr/courses/ Αυτόματα Τρόπος κωδικοποίησης αλγορίθμων. Τρόπος περιγραφής συστημάτων πεπερασμένων

Διαβάστε περισσότερα

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 2 Ο Εργαστηριακό Μάθημα Λεξική Ανάλυση Σκοπός: Το μάθημα αυτό αναφέρεται: Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση Στη δήλωση ορισμό κανονικών εκφράσεων Θεωρία Πρόλογος

Διαβάστε περισσότερα

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αυτόματα Στοίβας (2.2) Τυπικός Ορισμός Παραδείγματα Ισοδυναμία με Ασυμφραστικές

Διαβάστε περισσότερα

Τεχνητή Νοημοσύνη. 21η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Τεχνητή Νοημοσύνη. 21η διάλεξη ( ) Ίων Ανδρουτσόπουλος. Τεχνητή Νοημοσύνη 21η διάλεξη (2016-17) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία: «Artificial Intelligence A Modern Approach» των. Russel

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Παραδείγματα Ενοτήτων 1-2 Ενότητα 1: Εισαγωγή Άσκηση 1-1: Θεωρήστε μια υποθετική γλώσσα προγραμματισμού και την παρακάτω γραμματική

Διαβάστε περισσότερα

Σύνταξη & Συντακτική Ανάλυση

Σύνταξη & Συντακτική Ανάλυση Σύνταξη & Συντακτική Ανάλυση Μια γραμματική για τα Αγγλικά Μια πρόταση αποτελείται από μια ουσιαστική φράση, ένα ρήμα, και μια ουσιαστική φράση ::= Μια ουσιαστική φράση αποτελείται από

Διαβάστε περισσότερα

Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Μια ανασκόπηση στους Μεταγλωττιστές Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Α. Γλώσσα -Μετάφραση Γλώσσα προγραμματισμού = Αναπαράσταση

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Σημασιολογική Ανάλυση

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Σημασιολογική Ανάλυση Γλώσσες Προγραμματισμού Μεταγλωττιστές Σημασιολογική Ανάλυση Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Σημασιολογικής Ανάλυσης Στατική και Δυναμική Σημασιολογία Σημασιολογικοί

Διαβάστε περισσότερα

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2): Αυτόµατα Στοίβας. Παραδείγµατα Σχεδιασµού CFG. Παράδειγµα 1.

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2): Αυτόµατα Στοίβας. Παραδείγµατα Σχεδιασµού CFG. Παράδειγµα 1. Σύνοψη Προηγούµενου Γλώσσες χωρίς Συµφραζόµενα 2): Αυτόµατα Στοίβας Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Μη Κανονικές Γλώσσες Το Λήµµα της Αντλησης για τις

Διαβάστε περισσότερα

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1)

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1) Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ασυμφραστικές Γραμματικές (2.1) Τυπικός Ορισμός Σχεδιασμός Ασυμφραστικών Γραμματικών

Διαβάστε περισσότερα

Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 1 η : Parsers Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Συντακτική Ανάλυση για ΓΧΣ Οι τεχνικές συντακτικής ανάλυσης κατηγοριοποιούνται

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές http://www.corelab.ece.ntua.gr/courses/ Αυτόματα Τρόπος κωδικοποίησης αλγορίθμων. Τρόπος περιγραφής συστημάτων πεπερασμένων

Διαβάστε περισσότερα

Λεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Λεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Λεκτικός Αναλυτής Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Οι Φάσεις της Μεταγλώττισης λεκτική ανάλυση συντακτική ανάλυση Πίνακας Συμβόλων σημασιολογική ανάλυση παραγωγή ενδιάμεσου κώδικα Διαχείριση

Διαβάστε περισσότερα

Κεφάλαιο 3 : Σύνταξη Γλωσσών Προγραμματισμού

Κεφάλαιο 3 : Σύνταξη Γλωσσών Προγραμματισμού Κεφάλαιο 3 : Σύνταξη Γλωσσών Προγραμματισμού Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών ΤΜΗΥΠ Πανεπιστήμιο Πατρών Εισαγωγή Οι διαφορές των ΓΠ στις συντακτικές δομές τους, είναι πολύ μεγαλύτερες από

Διαβάστε περισσότερα

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Ενότητα 8: Ιδιότητες Γραμματικών χωρίς Συμφραζόμενα Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Τυπικές Γλώσσες. και Μεταφραστές. Γιώργος Μανής

Τυπικές Γλώσσες. και Μεταφραστές. Γιώργος Μανής Τυπικές Γλώσσες Γραµµατικές και Μεταφραστές Γιώργος Μανής Ορισµοί Αλφάβητο: ένα οποιδήποτε µη κενό και πεπερασµένοσύνολοσ αποτελούµενο από σύµβολα { 0, 1 } δυαδικό αλφάβητο { Α, Β, Γ,, Ω } κεφαλαία ελληνικά

Διαβάστε περισσότερα

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Θεωρία Υπολογισµού 1 /

Διαβάστε περισσότερα

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί);

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί); Μοντελοποίηση του Υπολογισµού Στοιχεία Θεωρίας Υπολογισµού (): Τυπικές Γλώσσες, Γραµµατικές Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ποιές οι θεµελιώδεις δυνατότητες

Διαβάστε περισσότερα

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Ενότητα 5: Μη κανονικές γλώσσες Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

Διαβάστε περισσότερα

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 10: Αυτόματα Στοίβας II

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 10: Αυτόματα Στοίβας II ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Διάλεξη 10: Αυτόματα Στοίβας II Τι θα κάνουμε σήμερα Ισοδυναμία αυτομάτων στοίβας με ασυμφραστικές γραμματικές (2.2.3) 1 Ισοδυναμία PDA με CFG Θεώρημα: Μια

Διαβάστε περισσότερα

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 9: Αυτόματα Στοίβας (Pushdown Automata - PDA)

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 9: Αυτόματα Στοίβας (Pushdown Automata - PDA) ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Διάλεξη 9: Αυτόματα Στοίβας (Pushdown Automata - PDA) Τι θα κάνουμε σήμερα Εισαγωγή στα Αυτόματα Στοίβας Τυπικός Ορισμός Αυτομάτου Στοίβας (2.2.1) Παραδείγματα

Διαβάστε περισσότερα

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ Θεωρία Υπολογισμού Ενότητα 7: Πεπερασμένη αναπαράσταση γλωσσών Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

Διαβάστε περισσότερα

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ Θεωρία Υπολογισμού Ενότητα 14: Γραμματικές Χωρίς Συμφραζόμενα Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Πρώτη Σειρά Ασκήσεων 27 Οκτωβρίου 2016 Μέρος Α. (χειρόγραφη και ηλεκτρονική παράδοση 11 Νοεμβρίου) Άσκηση 1: Θεωρήστε το ακόλουθο

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Λεκτικός αναλυτής Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Κανονικές Γλώσσες. Κανονικές Γλώσσες. Κανονικές Γλώσσες και Αυτόματα. Κανονικές Γλώσσες και Αυτόματα

Κανονικές Γλώσσες. Κανονικές Γλώσσες. Κανονικές Γλώσσες και Αυτόματα. Κανονικές Γλώσσες και Αυτόματα Κανονικές Γλώσσες Κανονικές Γλώσσες Διδάσκοντες: Φ. Αφράτη, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Κανονική γλώσσα αν παράγεται από κανονική γραμματική. Παραγωγές P (V Σ) Σ * ((V Σ) ε) Παραγωγές μορφής:

Διαβάστε περισσότερα

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών. Προδιαγραφές

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών. Προδιαγραφές Εισαγωγή στην Επιστήμη των Υπολογιστών 4ο εξάμηνοσ.h.m.μ.y. & Σ.Ε.Μ.Φ.Ε. http://www.corelab.ece.ntua.gr/courses/ 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές Στάθης Ζάχος Συνεργασία: Κωστής Σαγώνας Επιμέλεια:

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Τελικές εξετάσεις 3 Ιανουαρίου 27 Διάρκεια εξέτασης: 3 ώρες (2:-5:) ΘΕΜΑ ο

Διαβάστε περισσότερα

Περιεχόμενα Τι περιγράφει ένα ΣΔ ΣΔ και παραγωγές Θεωρία Υπολογισμού Ενότητα 15: Συντακτικά Δέντρα Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ. Π.

Περιεχόμενα Τι περιγράφει ένα ΣΔ ΣΔ και παραγωγές Θεωρία Υπολογισμού Ενότητα 15: Συντακτικά Δέντρα Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ. Π. Θεωρία Υπολογισμού νότητα 15: Συντακτικά Δέντρα Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται

Διαβάστε περισσότερα

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Λεκτική Ανάλυση

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Λεκτική Ανάλυση Γλώσσες Προγραμματισμού Μεταγλωττιστές Λεκτική Ανάλυση Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Λεκτική Ανάλυση Τυπικές Γλώσσες Κανονικές Εκφράσεις Υλοποίηση Λεκτικών

Διαβάστε περισσότερα

Εργαστήριο 08 Εισαγωγή στo Yacc

Εργαστήριο 08 Εισαγωγή στo Yacc Εργαστήριο 08 Εισαγωγή στo Yacc Θεωρία Σκοπός: Το μάθημα αυτό αναφέρεται: Στο εργαλείο κατασκευής συντακτικών αναλυτών, Yacc, στις δομές και συναρτήσεις που προσφέρει. Στη σύνταξη των αρχείων περιγραφής

Διαβάστε περισσότερα

Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation

Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation Διδάσκων: Στάθης Ζάχος Επιμέλεια Διαφανειών: Μάκης Αρσένης CoReLab ΣΗΜΜΥ - Ε.Μ.Π. Φεβρουάριος 2017 Διδάσκων: Στάθης Ζάχος ( CoReLab

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο Γιώργος Δημητρίου Μάθημα 9 ο Ενδιάμεσος Κώδικας Απεικόνιση ανάμεσα στον αρχικό και στον τελικό κώδικα Γραμμικές αναπαραστάσεις: Ενδιάμεσος κώδικας πλησιέστερα στον τελικό ευκολότερη παραγωγή τελικού κώδικα

Διαβάστε περισσότερα

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 5: Κανονικές Εκφράσεις

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 5: Κανονικές Εκφράσεις ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Διάλεξη 5: Κανονικές Εκφράσεις Τι θα κάνουμε σήμερα Κλειστότητα Κανονικών Πράξεων (1.2.3) Εισαγωγή στις Κανονικές Εκφράσεις Τυπικός ορισμός της κανονικής

Διαβάστε περισσότερα

Γλώσσες Χωρίς Συμφραζόμενα

Γλώσσες Χωρίς Συμφραζόμενα Γλώσσες Χωρίς Συμφραζόμενα Διδάσκοντες: Φ. Αφράτη, Δ. Φωτάκης, Δ. Σούλιου Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Γλώσσα χωρίς

Διαβάστε περισσότερα

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 3: Σύνταξη Γλωσσών Προγραμματισμού Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Εισαγωγή Οι διαφορές των ΓΠ στις

Διαβάστε περισσότερα

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

Διαβάστε περισσότερα

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 7: Ασυμφραστικές Γλώσσες (Γλώσσες Ελεύθερες Συμφραζομένων)

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 7: Ασυμφραστικές Γλώσσες (Γλώσσες Ελεύθερες Συμφραζομένων) ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Διάλεξη 7: Ασυμφραστικές Γλώσσες (Γλώσσες Ελεύθερες Συμφραζομένων) Τι θα κάνουμε σήμερα Εισαγωγικά Ασυμφραστικές Γραμματικές (2.1) Τυπικός Ορισμός Της Ασυμφραστικής

Διαβάστε περισσότερα

Κανονικές Γλώσσες. ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Κανονικές Γλώσσες. ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Κανονικές Γλώσσες ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Κανονικές Γλώσσες Κανονική γλώσσα αν

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 4 ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΥΝΤΑΚΤΙΚΗΣ ΑΝΑΛΥΣΗΣ

ΚΕΦΑΛΑΙΟ 4 ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΥΝΤΑΚΤΙΚΗΣ ΑΝΑΛΥΣΗΣ 1 ΚΕΦΑΛΑΙΟ 4 ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΥΝΤΑΚΤΙΚΗΣ ΑΝΑΛΥΣΗΣ Στόχος Στόχος του Κεφαλαίου αυτού είναι να µάθουµε τις βασικότερες από τις τεχνικές και τις µεθοδολογίες συντακτικής ανάλυσης των κατηγοριών bottom up

Διαβάστε περισσότερα

Υλοποίηση ΣΑ με το bison

Υλοποίηση ΣΑ με το bison (i) 69 / 216 Μεταεργαλείο bison: γεννήτορας ΣΑ LALR(1) Είσοδος: μεταπρόγραμμα που περιγράφει τη σύνταξη και τις σημασιολογικές ρουτίνες Έξοδος: πρόγραμμα σε C Η συνάρτηση yyparse υλοποιεί το ΣΑ Επιστρέφει

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:

Διαβάστε περισσότερα

Μεταγλωττιστές. Ενότητα 5: Λεκτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 5: Λεκτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 5: Λεκτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

Υλοποίηση ΣΑ με το bison

Υλοποίηση ΣΑ με το bison (i) Μεταεργαλείο bison: γεννήτορας ΣΑ LALR(1) Είσοδος: μεταπρόγραμμα που περιγράφει τη σύνταξη και τις σημασιολογικές ρουτίνες Έξοδος: πρόγραμμα σε C Η συνάρτηση yyparse υλοποιεί το ΣΑ Επιστρέφει 0 αν

Διαβάστε περισσότερα

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Ενότητα 4: Μη-ντετερμινιστικά πεπερασμένα αυτόματα με ε-μεταβάσεις Ρεφανίδης Ιωάννης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (1)

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (1) Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες () Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Πεπερασμένα Αυτόματα (Κεφάλαιο., Sipser) Ορισμός πεπερασμένων αυτομάτων και ορισμός του

Διαβάστε περισσότερα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 8 ο Μετάφραση Οδηγούμενη από τη Σύνταξη Ο ΣΑ καλεί τις ρουτίνες που εκτελούν τη σημασιολογική ανάλυση και παράγουν τον ενδιάμεσο κώδικα Σημασιολογικές πληροφορίες μπορούν να μεταφέρονται

Διαβάστε περισσότερα

Σειρά Προβλημάτων 3 Λύσεις

Σειρά Προβλημάτων 3 Λύσεις Σειρά Προβλημάτων 3 Λύσεις Άσκηση 1 Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) {0 n 1 n n > 0} {0 n 1 2n n > 0} (β) {w {a,b} * η w ξεκινά και τελειώνει με το ίδιο σύμβολο

Διαβάστε περισσότερα

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Παραδείγματα Ενοτήτων 7-9 Ενότητα 7: Ενδιάμεσος κώδικας Άσκηση 7-1: Θεωρήστε τη γλώσσα προγραμματισμού C με τη γνωστή γραμματική

Διαβάστε περισσότερα

aab aabb aaabb aaaabb aaaabb aaaabb

aab aabb aaabb aaaabb aaaabb aaaabb Κεφάλαιο 4 Γλώσσες & Γραμματικές Χωρίς Συμφραζόμενα Σύνοψη Η κλάση των Γλωσσών Χωρίς Συμφραζόμενα (ΓΧΣ) είναι εκφραστικά αρκετά ισχυρή, ώστε να επιτρέπει την περιγραφή γλωσσών, όπως οι γλώσσες προγραμματισμού,

Διαβάστε περισσότερα

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata Σύνοψη Προηγούµενου Γλώσσες χωρίς Συµφραζόµενα (2) Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Αυτόµατα Στοίβας Pushdown utomata Ισοδυναµία µε τις Γλώσσες χωρίς Συµφραζόµενα:

Διαβάστε περισσότερα