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

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

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

Transcript

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

2 Συντακτική Ανάλυση Το συντακτικό μιας γλώσσας καθορίζει ποιες συμβολοσειρές ανήκουν στην γλώσσα. Το συντακτικό των γλωσσών προγραμματισμού καθορίζεται χρησιμοποιώντας γραμματικές χωρίς συμφραζόμενα. Χαροκόπειο Πανεπιστήμιο 2/74

3 Παράδειγμα Ένα if-else στην Java μπορεί να μοιάζει ως if ( expression ) statement1 else statement2 Δηλαδή μια πρόταση if στην Java μπορεί να είναι η παράθεση των δεσμευμένη λέξη if αριστερή παρένθεση μια έκφραση δεξιά παρένθεση μια πρόταση δεσμευμένη λέξη else μια πρόταση Χαροκόπειο Πανεπιστήμιο 3/74

4 Παράδειγμα Ένα if-else στην Java μπορεί να μοιάζει ως if ( expression ) statement1 else statement2 Χρησιμοποιώντας την μεταβλητή expr για να αναπαραστήσουμε την έκφραση και stmt για την πρόταση μπορούμε να γράψουμε: stmt if ( expr ) stmt else stmt Η παραπάνω μορφή ονομάζεται κανόνας παραγωγής. Λεκτικά στοιχεία όπως το if και οι παρενθέσεις ονομάζονται τερματικά σύμβολα ενώ οι μεταβλητές stmt και expr ονομάζονται μη-τερματικά σύμβολα. Χαροκόπειο Πανεπιστήμιο 3/74

5 Ρόλος των Γραμματικών Οι γραμματικές δίνουν μια ακριβή και ταυτόχρονα εύκολα κατανοητή περιγραφή του συντακτικού της γλώσσας προγραμματισμού Χαροκόπειο Πανεπιστήμιο 4/74

6 Ρόλος των Γραμματικών Οι γραμματικές δίνουν μια ακριβή και ταυτόχρονα εύκολα κατανοητή περιγραφή του συντακτικού της γλώσσας προγραμματισμού Για συγκεκριμένου τύπου γραμματικές, μπορούμε να κατασκευάσουμε αυτόματα αποδοτικούς συντακτικούς αναλυτές Χαροκόπειο Πανεπιστήμιο 4/74

7 Ρόλος των Γραμματικών Οι γραμματικές δίνουν μια ακριβή και ταυτόχρονα εύκολα κατανοητή περιγραφή του συντακτικού της γλώσσας προγραμματισμού Για συγκεκριμένου τύπου γραμματικές, μπορούμε να κατασκευάσουμε αυτόματα αποδοτικούς συντακτικούς αναλυτές Μία γραμματική επιτρέπει σε μια γλώσσα να επεκταθεί τμηματικά ώστε να υποστηρίζει καινούριες έννοιες. Η υλοποίηση των καινούριων εννοιών είναι πιο εύκολο να πραγματοποιηθεί. Χαροκόπειο Πανεπιστήμιο 4/74

8 Ρόλος και Θέση του Συντακτικού Αναλυτή Role of Parser source program lexical analyzer token get next token parser parse tree Rest of Front End intermediate representation symbol table Χαροκόπειο Πανεπιστήμιο 5/74

9 Γραμματικές Χωρίς Συμφραζόμενα Context-Free Grammars Μία γραμματική χωρίς συμφραζόμενα έχει 4 μέρη: 1 ένα σύνολο από λεκτικές μονάδες, τα τερματικά σύμβολα (terminal symbols) 2 ένα σύνολο από μη-τερματικά 3 ένα σύνολο κανόνων παραγωγής όπου κάθε κανόνας αποτελείται από ένα μη-τερματικό που ονομάζεται η αριστερή πλευρά του κανόνα, ένα βέλος και μια ακολουθία από λεκτικές μονάδες και/ή μη-τερματικά που ονομάζεται η δεξιά πλευρά του κανόνα 4 τον χαρακτηρισμό ενός μη-τερματικού ως το αρχικό σύμβολο Μελετήθηκαν στην αρχή από γλωσσολόγους (Chomsky, 1956). Χαροκόπειο Πανεπιστήμιο 6/74

10 Γραμματικές Παράδειγμα list list + digit list list - digit list digit digit Γράφουμε με πλάγια γράμματα τα μη-τερματικά. Ο πρώτος κανόνας μας λέει το αρχικό σύμβολο. Οι πρώτοι 3 κανόνες θα μπορούσαν να είναι γραμμένοι και ως list list + digit list - digit digit Η γλώσσα που ορίζεται από την γραμματική αυτή είναι το σύνολο των συμβολοσειρών που περιέχουν μια λίστα ψηφίων που χωρίζονται από το + ή το -. Χαροκόπειο Πανεπιστήμιο 7/74

11 Γραμματικές Παράδειγμα Μια γραμματική παράγει συμβολοσειρές ξεκινώντας από το αρχικό σύμβολο και αντικαθιστώντας ένα μη-τερματικό σύμβολο με την δεξιά πλευρά ενός κανόνα για αυτό το σύμβολο. π.χ μέρος μιας γραμματικής για την κλήση συναρτήσεων στην Java call id ( optparams ) optparams params ϵ params params, param param Χαροκόπειο Πανεπιστήμιο 8/74

12 Τρόπος Αναπαράστασης Γραμματικών BNF (Backus Naur Form) μη-τερματικά σύμβολα με γωνιακές παρενθέσεις, π.χ <expr> το σύμβολο αντικαθίσταται από το σύμβολο ::= συνδυασμός πολλών δεξιών μελών σε έναν κανόνα παραγωγής με το σύμβολο π.χ <digit> ::= 0 1 EBNF (Extended Backus Naur Form) επιπλέον σύμβολα όπως + και με την σημασιολογία που έχουν και στην περίπτωση των κανονικών εκφράσεων Χαροκόπειο Πανεπιστήμιο 9/74

13 Συντακτική Ανάλυση Parsing Είναι η διαδικασία που έχει ως είσοδο ένα σύνολο από τερματικά σύμβολα και πρέπει να αποφασίσει πως αυτή η είσοδος προέκυψε από το αρχικό σύμβολο μιας γραμματικής. Εαν δεν είναι δυνατό, τότε πρέπει να αναφέρει συντακτικά λάθη. Χαροκόπειο Πανεπιστήμιο 10/74

14 Συντακτική Ανάλυση Parsing Υπάρχουν 3 γενικές κατηγορίες συντακτικής ανάλυσης: 1 καθολικές (universal) μέθοδοι 2 καθοδικές (top-down) μέθοδοι 3 ανοδικές (bottom-up) μέθοδοι Χαροκόπειο Πανεπιστήμιο 11/74

15 Συντακτική Ανάλυση Parsing Υπάρχουν 3 γενικές κατηγορίες συντακτικής ανάλυσης: 1 καθολικές (universal) μέθοδοι 2 καθοδικές (top-down) μέθοδοι 3 ανοδικές (bottom-up) μέθοδοι Οι καθολικές δουλεύουν με όλες τις γραμματικές αλλά είναι αργές για χρήση στον προγραμματισμό. Χαροκόπειο Πανεπιστήμιο 11/74

16 Συντακτική Ανάλυση Parsing Υπάρχουν 3 γενικές κατηγορίες συντακτικής ανάλυσης: 1 καθολικές (universal) μέθοδοι 2 καθοδικές (top-down) μέθοδοι 3 ανοδικές (bottom-up) μέθοδοι Οι καθολικές δουλεύουν με όλες τις γραμματικές αλλά είναι αργές για χρήση στον προγραμματισμό. Οι καθοδικές και ανοδικές μέθοδοι είναι οι μέθοδοι που χρησιμοποιούνται πιο συχνά στους μεταγλωττιστές. Χαροκόπειο Πανεπιστήμιο 11/74

17 Συντακτική Ανάλυση Parsing Υπάρχουν 3 γενικές κατηγορίες συντακτικής ανάλυσης: 1 καθολικές (universal) μέθοδοι 2 καθοδικές (top-down) μέθοδοι 3 ανοδικές (bottom-up) μέθοδοι Οι καθολικές δουλεύουν με όλες τις γραμματικές αλλά είναι αργές για χρήση στον προγραμματισμό. Οι καθοδικές και ανοδικές μέθοδοι είναι οι μέθοδοι που χρησιμοποιούνται πιο συχνά στους μεταγλωττιστές. Οι πιο αποδοτικές μέθοδοι λειτουργούν μόνο για υποσύνολα των γραμματικών, αλλά αυτά τα υποσύνολα είναι συνήθως αρκετά για να εκφράσουμε γλώσσες προγραμματισμού. Χαροκόπειο Πανεπιστήμιο 11/74

18 Συντακτική Ανάλυση Parsing Η έξοδος ενός συντακτικού αναλυτή είναι μια αναπαράσταση ενός συντακτικού δέντρου. Το δέντρο αυτό περιέχει τις λεκτικές μονάδες που έχουν προκύψει από τον λεκτικό αναλυτή. Συνήθως κατά την διάρκεια της συντακτικής ανάλυσης συμβαίνουν και άλλες διαδικασίες όπως η συλλογή πληροφοριών στον πίνακα συμβόλων σχετικά με τα σύμβολα που προέκυψαν από τον λεκτικό αναλυτή, κ.τ.λ. Χαροκόπειο Πανεπιστήμιο 12/74

19 Διαχείριση Συντακτικών Λαθών Syntax Error Handling Η δουλειά ενός μεταγλωττιστή θα ήταν πολύ ευκολότερη αν είχε να διαχειριστεί μόνο σωστά προγράμματα. Είναι όμως απαραίτητη λειτουργία ενός μεταγλωττιστή να βοηθάει στην εύρεση του λάθους (γραμμή, θέση) βοηθάει στην εύρεση του τύπου του λάθους παρέχει συμβουλές διόρθωσης λαθών. Χαροκόπειο Πανεπιστήμιο 13/74

20 Διαχείριση Συντακτικών Λαθών Πιθανά Λάθη Τα προγραμματιστικά λάθη μπορούν να συμβούν σε πολλά επίπεδα: 1 Λεκτικά λάθη όπως ορθογραφικά λάθη δεσμευμένων λέξεων έως παράληψη εισαγωγικών σε συμβολοσειρές. Χαροκόπειο Πανεπιστήμιο 14/74

21 Διαχείριση Συντακτικών Λαθών Πιθανά Λάθη Τα προγραμματιστικά λάθη μπορούν να συμβούν σε πολλά επίπεδα: 1 Λεκτικά λάθη όπως ορθογραφικά λάθη δεσμευμένων λέξεων έως παράληψη εισαγωγικών σε συμβολοσειρές. 2 Συντακτικά λάθη όπως παράληψη ερωτηματικών, ανοιχτές παρενθέσεις, κ.τ.λ Χαροκόπειο Πανεπιστήμιο 14/74

22 Διαχείριση Συντακτικών Λαθών Πιθανά Λάθη Τα προγραμματιστικά λάθη μπορούν να συμβούν σε πολλά επίπεδα: 1 Λεκτικά λάθη όπως ορθογραφικά λάθη δεσμευμένων λέξεων έως παράληψη εισαγωγικών σε συμβολοσειρές. 2 Συντακτικά λάθη όπως παράληψη ερωτηματικών, ανοιχτές παρενθέσεις, κ.τ.λ 3 Σημασιολογικά λάθη όπως προβλήματα τύπων, για παράδειγμα επιστροφή τιμής από συνάρτηση Java η οποία είναι δηλωμένη ως void. Χαροκόπειο Πανεπιστήμιο 14/74

23 Διαχείριση Συντακτικών Λαθών Πιθανά Λάθη Τα προγραμματιστικά λάθη μπορούν να συμβούν σε πολλά επίπεδα: 1 Λεκτικά λάθη όπως ορθογραφικά λάθη δεσμευμένων λέξεων έως παράληψη εισαγωγικών σε συμβολοσειρές. 2 Συντακτικά λάθη όπως παράληψη ερωτηματικών, ανοιχτές παρενθέσεις, κ.τ.λ 3 Σημασιολογικά λάθη όπως προβλήματα τύπων, για παράδειγμα επιστροφή τιμής από συνάρτηση Java η οποία είναι δηλωμένη ως void. 4 Λογικά λάθη που μπορεί να είναι από απλά λάθη λογικής από την μεριά του προγραμματιστή έως την χρήση του τελεστή = αντί για == σε ένα πρόγραμμα C. Χαροκόπειο Πανεπιστήμιο 14/74

24 Ανάνηψη Error Recovery Η διαδικασία διαχείρισης λαθών έχει τους εξής υψηλού επιπέδου στόχους: ξεκάθαρη και σαφή αναφορά των λαθών γρήγορη ανάνηψη από κάθε λάθος ώστε να είναι δυνατή η αναγνώριση και επόμενων λαθών μικρή καθυστέρηση σε περίπτωση σωστών προγραμμάτων Ευτυχώς τα πιο κοινά λάθη είναι απλά και ένας σχετικά απλός μηχανισμός διαχείρισης λαθών είναι συχνά αρκετός. Χαροκόπειο Πανεπιστήμιο 15/74

25 Στρατηγικές Ανάνηψης 1 Panic-Mode Recovery αφαιρούμε σύμβολα από την είσοδο μέχρι να βρούμε ένα σύμβολο από ένα σύνολο συγχρονισμού. το σύνολο συγχρονισμού περιέχει συνήθως σύμβολα όπως ; ή } ο σχεδιαστής του μεταγλωττιστή είναι υπεύθυνος για τον ορισμό των συμβόλων συγχρονισμού μπορεί να αφαιρέσει πολλά σύμβολα χωρίς να βρει επιπλέον λάθη απλή μέθοδος Χαροκόπειο Πανεπιστήμιο 16/74

26 Στρατηγικές Ανάνηψης 1 Panic-Mode Recovery αφαιρούμε σύμβολα από την είσοδο μέχρι να βρούμε ένα σύμβολο από ένα σύνολο συγχρονισμού. το σύνολο συγχρονισμού περιέχει συνήθως σύμβολα όπως ; ή } ο σχεδιαστής του μεταγλωττιστή είναι υπεύθυνος για τον ορισμό των συμβόλων συγχρονισμού μπορεί να αφαιρέσει πολλά σύμβολα χωρίς να βρει επιπλέον λάθη απλή μέθοδος 2 Phrase-Level Recovery τοπική αλλαγή ενός προθέματος της εισόδου π.χ αλλαγή ενός κόμματος με ερωτηματικό ή προσθήκη ερωτηματικού ο σχεδιαστής του μεταγλωττιστή ορίζει τις αλλαγές Χαροκόπειο Πανεπιστήμιο 16/74

27 Στρατηγικές Ανάνηψης 1 Panic-Mode Recovery αφαιρούμε σύμβολα από την είσοδο μέχρι να βρούμε ένα σύμβολο από ένα σύνολο συγχρονισμού. το σύνολο συγχρονισμού περιέχει συνήθως σύμβολα όπως ; ή } ο σχεδιαστής του μεταγλωττιστή είναι υπεύθυνος για τον ορισμό των συμβόλων συγχρονισμού μπορεί να αφαιρέσει πολλά σύμβολα χωρίς να βρει επιπλέον λάθη απλή μέθοδος 2 Phrase-Level Recovery τοπική αλλαγή ενός προθέματος της εισόδου π.χ αλλαγή ενός κόμματος με ερωτηματικό ή προσθήκη ερωτηματικού ο σχεδιαστής του μεταγλωττιστή ορίζει τις αλλαγές 3 Error Productions προσθέτουμε στην γραμματική κανόνες για κοινά λάθη Χαροκόπειο Πανεπιστήμιο 16/74

28 Στρατηγικές Ανάνηψης 1 Panic-Mode Recovery αφαιρούμε σύμβολα από την είσοδο μέχρι να βρούμε ένα σύμβολο από ένα σύνολο συγχρονισμού. το σύνολο συγχρονισμού περιέχει συνήθως σύμβολα όπως ; ή } ο σχεδιαστής του μεταγλωττιστή είναι υπεύθυνος για τον ορισμό των συμβόλων συγχρονισμού μπορεί να αφαιρέσει πολλά σύμβολα χωρίς να βρει επιπλέον λάθη απλή μέθοδος 2 Phrase-Level Recovery τοπική αλλαγή ενός προθέματος της εισόδου π.χ αλλαγή ενός κόμματος με ερωτηματικό ή προσθήκη ερωτηματικού ο σχεδιαστής του μεταγλωττιστή ορίζει τις αλλαγές 3 Error Productions προσθέτουμε στην γραμματική κανόνες για κοινά λάθη 4 Global Correction αλγόριθμοι που βρίσκουν τις ελάχιστες αλλαγές που χρειάζονται για να γίνει σωστή η είσοδος γενικά πολύ χρονοβόρες για τους μεταγλωττιστές Χαροκόπειο Πανεπιστήμιο 16/74

29 Συντακτικά Δέντρα Parse Trees Ένα συντακτικό δέντρο δείχνει γραφικά πως ένα αρχικό σύμβολο μιας γραμματικής οδηγεί σε μια συμβολοσειρά της γλώσσας. Δεδομένου μιας γραμματικής χωρίς συμφραζόμενα, ένα συντακτικό δέντρο είναι ένα δέντρο με τις εξής ιδιότητες: 1 Η ρίζα έχει ως ετικέτα το αρχικό σύμβολο 2 Κάθε φύλλο έχει ως ετικέτα μια λεκτική μονάδα ή ϵ 3 Κάθε εσωτερικός κόμβος έχει ως ετικέτα ένα μη-τερματικό 4 Αν A είναι το μη-τερματικό ενός εσωτερικού κόμβου και X 1, X 2,..., X n είναι οι ετικέτες των παιδιών του από αριστερά προς τα δεξιά τότε υπάρχει ο κανόνας παραγωγής A X 1 X 2 X n. Τα X 1, X 2,..., X n μπορεί να είναι τερματικά ή μη-τερματικά σύμβολα. Ως ειδική περίπτωση, αν A ϵ τότε ένας κόμβος με ετικέτα A μπορεί να έχει ένα μόνο παιδί με ετικέτα ϵ. Χαροκόπειο Πανεπιστήμιο 17/74

30 Συντακτικά Δέντρα Παράδειγμα list list digit list digit digit Τα φύλλα του δέντρου από αριστερά προς τα δεξιά παράγουν την συμβολοσειρά που αντιστοιχεί στο συντακτικό δέντρο. Χαροκόπειο Πανεπιστήμιο 18/74

31 Διφορούμενες Γραμματικές Ambiguity Προσοχή χρειάζεται αφού υπάρχουν γραμματικές που παράγουν συμβολοσειρές που έχουν περισσότερα από ένα συντακτικά δέντρα. Αυτές οι γραμματικές ονομάζονται διφορούμενες. Χαροκόπειο Πανεπιστήμιο 19/74

32 Διφορούμενες Γραμματικές Ambiguity έστω η παρακάτω γραμματική string string + string string string - string string η συμβολοσειρά έχει περισσότερα από ένα συντακτικά δέντρα τα οποία αντιστοιχούν στους δύο τρόπους που μπορούμε να βάλουμε παρενθέσεις (9-5)+2 και 9-(5+2). Χαροκόπειο Πανεπιστήμιο 20/74

33 Διφορούμενες Γραμματικές Ambiguity string string string + string string - string string - string 2 9 string + string Χαροκόπειο Πανεπιστήμιο 21/74

34 Προσεταιριστικότητα Τελεστών Associativity of Operators Λόγω κοινής παραδοχής ξέρουμε πως η έκφραση είναι ισοδύναμη με (9 + 5) + 2 και η είναι ισοδύναμη με (9 5) 2. Λέμε πως ο τελεστής + έχει αριστερή προσεταιριστικότητα εαν στην έκφραση... + x +... το x ανήκει στον αριστερό τελεστή. Χαροκόπειο Πανεπιστήμιο 22/74

35 Προσεταιριστικότητα Τελεστών Associativity of Operators Στις περισσότερες γλώσσες προγραμματισμού οι τελεστές +,, *, / είναι αριστερά προσεταιριστικοί. Γράφοντας δηλαδή εννοούμε (9 + 5) + 2. Χαροκόπειο Πανεπιστήμιο 23/74

36 Προσεταιριστικότητα Τελεστών Associativity of Operators Στις περισσότερες γλώσσες προγραμματισμού οι τελεστές +,, *, / είναι αριστερά προσεταιριστικοί. Γράφοντας δηλαδή εννοούμε (9 + 5) + 2. Αντιθέτως στις περισσότερες γλώσσες προγραμματισμού ο τελεστής ανάθεσης (assignment) είναι δεξιά προσεταιριστικός. Γράφοντας δηλαδή a = b = c εννοούμε a = (b = c). Χαροκόπειο Πανεπιστήμιο 23/74

37 Προσεταιριστικότητα Τελεστών Associativity of Operators Μια γραμματική που παράγει συμβολοσειρές όπως a = b = c = d με ανάθεση που είναι δεξιά προσεταιριστική είναι η παρακάτω: right letter = right letter letter a b z Χαροκόπειο Πανεπιστήμιο 24/74

38 Προσεταιριστικότητα Τελεστών Associativity of Operators Μια γραμματική που παράγει συμβολοσειρές όπως a = b = c = d με ανάθεση που είναι δεξιά προσεταιριστική είναι η παρακάτω: right letter = right letter letter a b z right letter = right a letter b = letter right = right Υπάρχει μόνο ένας τρόπος να περιγραφεί αυτή η είσοδος με την γραμματική αυτή. c letter d Χαροκόπειο Πανεπιστήμιο 24/74

39 Προτεραιότητα Τελεστών Precedence of Operators Η προσεταιριστικότητα των τελεστών λύνει το πρόβλημα όταν υπάρχει ο ίδιος τελεστής περισσότερες από μια φορές. Τι συμβαίνει όμως όταν έχουμε διαφορετικούς τελεστές; π.χ η έκφραση θα μπορούσε να είναι (9 + 5) 2 ή 9 + (5 2). Όταν έχουμε περισσότερους από έναν τελεστές χρειαζόμαστε προτεραιότητα τελεστών. Χαροκόπειο Πανεπιστήμιο 25/74

40 Προτεραιότητα Τελεστών Precedence of Operators Λέμε πως ο τελεστής έχει μεγαλύτερη προτεραιότητα από τον τελεστή + εαν πέρνει τα ορίσματα του πριν από τον τελεστή +. Στην έκφραση λοιπόν ο τελεστής πέρνει πρώτος ορίσματα και άρα είναι ισοδύναμη με 9 + (5 2). Χαροκόπειο Πανεπιστήμιο 26/74

41 Παράδειγμα Γραμματικής Έστω λοιπόν πως θέλουμε να γράψουμε μια γραμματική για αριθμητικές εκφράσεις με τους τελεστές +,,, / οι οποίοι είναι όλοι αριστερά προσεταιριστικοί. Θα δημιουργήσουμε 2 μη-τερματικά σύμβολα για τα δύο επίπεδα προτεραιότητας, expr και term. Επίσης θα δημιουργήσουμε ένα μη-τερματικό σύμβολο factor για την βασική μονάδα των εκφράσεων που είναι τα ψηφία και οι εκφράσεις με παρενθέσεις. factor digit ( expr ) digit Χαροκόπειο Πανεπιστήμιο 27/74

42 Παράδειγμα Γραμματικής Στην συνέχεια προσθέτουμε κανόνες για την πρόσθεση και την αφαίρεση, φροντίζοντας να είναι αριστερά προσεταιριστικοί expr expr + term expr expr - term expr term Χαροκόπειο Πανεπιστήμιο 28/74

43 Παράδειγμα Γραμματικής Στην συνέχεια προσθέτουμε κανόνες για την πρόσθεση και την αφαίρεση, φροντίζοντας να είναι αριστερά προσεταιριστικοί expr expr + term expr expr - term expr term και αντίστοιχα προσθέτουμε κανόνες για τον πολλαπλασιασμό και την διαίρεση, φροντίζοντας να είναι αριστερά προσεταιριστικοί term term * factor term term / factor term factor Χαροκόπειο Πανεπιστήμιο 28/74

44 Παράδειγμα Γραμματικής 3*2+3*(2+3)*9 5 expr expr - term expr + term factor term term * factor digit term * factor term * factor digit 5 factor digit factor ( expr ) 9 digit 2 digit expr + term 3 3 term factor factor digit digit 3 2 Χαροκόπειο Πανεπιστήμιο 29/74

45 Παραγωγές Derivations έστω η γραμματική E E + E E E - E ( E ) id Ξεκινώντας από το αρχικό σύμβολο και χρησιμοποιώντας τους κανόνες παραγωγής μπορούμε να παράγουμε συμβολοσειρές που ανήκουν στην γλώσσα που αναπαριστά η γραμματικη. E E (E) (id) Η παραπάνω διαδικασία ονομάζεται παραγωγή του (id) από το E. Χαροκόπειο Πανεπιστήμιο 30/74

46 Παραγωγές Derivations Το σύμβολο σημαίνει "παράγει σε ένα βήμα". Όταν θέλουμε να πούμε "παράγει σε μηδέν ή περισσότερα βήματα" χρησιμοποιούμε το σύμβολο. Αντίστοιχα το σύμβολο + για να πούμε "παράγει σε ένα ή περισσότερα βήματα". Χαροκόπειο Πανεπιστήμιο 31/74

47 Ορισμοί Πρόταση Μια συμβολοσειρά χωρίς μη-τερματικά σύμβολα που παράγεται από το αρχικό σύμβολο μιας γραμματικής χρησιμοποιώντας κανόνες παραγωγής ονομάζεται πρόταση της γραμματικής. Γλώσσα Η γλώσσα που παράγεται από μια γραμματική είναι το σύνολο των προτάσεων που μπορούν να παραχθούν από την γραμματική. Γλώσσα Χωρίς Συμφραζόμενα Μια γλώσσα που παράγεται από μια γραμματική χωρίς συμφραζόμενα ονομάζεται γλώσσα χωρίς συμφραζόμενα. Χαροκόπειο Πανεπιστήμιο 32/74

48 Ορισμοί Ισοδύναμες Γραμματικές Δύο γραμματικές που παράγουν την ίδια γλώσσα, ονομάζονται ισοδύναμες. Χαροκόπειο Πανεπιστήμιο 33/74

49 Επιλογές Παραγωγών Κατά την διάρκεια μιας παραγωγής έχουμε δύο επιλογές π.χ 1 επιλογή του μη-τερματικού προς αντικατάσταση 2 επιλογή του κανόνα παραγωγής που έχει αυτό το τερματικό ως αριστερό μέρος η παραγωγή E E (E) (E + E) (E + id) (id + id) διαφέρει από την παραγωγή E E (E) (E + E) (id + E) (id + id) Χαροκόπειο Πανεπιστήμιο 34/74

50 Παραγωγές αριστερότερη παραγωγή Μια παραγωγή ονομάζεται αριστερότερη παραγωγή (leftmost derivation) εαν επιλέγεται προς αντικατάσταση πάντα το πρώτο μη-τερματικό από αριστερά. Συμβολίζουμε τέτοιες παραγωγές με α lm β. δεξιότερη παραγωγή Μια παραγωγή ονομάζεται δεξιότερη παραγωγή (rightmost derivation) εαν επιλέγεται προς αντικατάσταση πάντα το πρώτο μη-τερματικό από δεξιά. Συμβολίζουμε τέτοιες παραγωγές με α rm β. Χαροκόπειο Πανεπιστήμιο 35/74

51 Συντακτικά Δέντρα και Παραγωγές Τα συντακτικά δέντρα είναι μια γραφική αναπαράσταση παραγωγών που δεν αναπαριστά την σειρά που εκτελέστηκαν οι παραγωγές. Χαροκόπειο Πανεπιστήμιο 36/74

52 Συντακτικά Δέντρα και Παραγωγές Τα συντακτικά δέντρα είναι μια γραφική αναπαράσταση παραγωγών που δεν αναπαριστά την σειρά που εκτελέστηκαν οι παραγωγές. Μας ενδιαφέρουν μόνο αριστερότερες ή δεξιότερες παραγωγές μιας και αυτές έχουν 1-1 σχέση με συντακτικά δέντρα. Χαροκόπειο Πανεπιστήμιο 36/74

53 Συντακτικά Δέντρα και Παραγωγές Τα συντακτικά δέντρα είναι μια γραφική αναπαράσταση παραγωγών που δεν αναπαριστά την σειρά που εκτελέστηκαν οι παραγωγές. Μας ενδιαφέρουν μόνο αριστερότερες ή δεξιότερες παραγωγές μιας και αυτές έχουν 1-1 σχέση με συντακτικά δέντρα. Μπορούμε λοιπόν να ορίσουμε την έννοια της διφορούμενης γραμματικής και σε σχέση με την ύπαρξη δύο η περισσότερων αριστερότερων (ή δεξιότερων) παραγωγών για μία πρόταση. Χαροκόπειο Πανεπιστήμιο 36/74

54 Συντακτικά Δέντρα και Παραγωγές E E E E E ( E ) E E E E E E ( E ) ( E ) ( E ) E + E E + E E + E id id id Χαροκόπειο Πανεπιστήμιο 37/74

55 Γραμματικές Χωρίς Συμφραζόμενα και Κανονικές Εκφράσεις Οποιαδήποτε γλώσσα μπορεί να περιγραφεί από μια κανονική έκφραση μπορεί να περιγραφεί και από μια γραμματική χωρίς συμφραζόμενα. Το αντίθετο όμως δεν ισχύει. π.χ η κανονική έκφραση (a b) abb και η γραμματική A 0 aa 0 ba 0 aa 1 A 1 ba 2 A 2 ba 3 A 3 ϵ περιγράφουν την ίδια γλώσσα. Χαροκόπειο Πανεπιστήμιο 38/74

56 Γραμματικές Χωρίς Συμφραζόμενα και Κανονικές Εκφράσεις Οποιαδήποτε γλώσσα μπορεί να περιγραφεί από μια κανονική έκφραση μπορεί να περιγραφεί και από μια γραμματική χωρίς συμφραζόμενα. Το αντίθετο όμως δεν ισχύει. Η γλώσσα {a n b n n 1} δεν μπορεί να περιγραφεί με μια κανονική έκφραση ενώ μπορεί από μια γλώσσα χωρίς συμφραζόμενα. Με μια φράση μπορούμε να πούμε πως "τα πεπερασμένα αυτόματα δεν μπορούν να μετρήσουν" Χαροκόπειο Πανεπιστήμιο 38/74

57 Τέλος Αρχείου Πριν ξεκινήσουμε να μιλάμε για μεθόδους συντακτικής ανάλυσης, πρέπει να κάνουμε έναν απαραίτητο μετασχηματισμό στην γραμματική μας ώστε να μπορεί ο συντακτικός αναλυτής να καταλάβει και το τέλος του αρχείου εισόδου. Θα χρησιμοποιούμε το σύμβολο $ για το End-Of-File. Εαν στην αρχική γραμματική μας υπήρχε ένα αρχικό σύμβολο S, αλλάζουμε το αρχικό σύμβολο σε S και προσθέτουμε έναν κανόνα S S $ Χαροκόπειο Πανεπιστήμιο 39/74

58 Καθοδική Κατασκευή Συντακτικού Δέντρου top-down Το πρόβλημα της κατασκευής ενός συντακτικού δέντρου από την συμβολοσειρά εισόδου. ξεκινάμε από την ρίζα επιλέγουμε συνεχόμενα το αριστερότερο μη-τερματικό σύμβολο προς αντικατάσταση (κατασκευάζουμε τους κόμβους με preorder σειρά, left-most derivation). διαλέγουμε τον κανόνα παραγωγής που θα χρησιμοποιήσουμε για την αντικατάσταση του μη-τερματικού. Χαροκόπειο Πανεπιστήμιο 40/74

59 Καθοδική Κατασκευή Συντακτικού Δέντρου top-down Το πρόβλημα της κατασκευής ενός συντακτικού δέντρου από την συμβολοσειρά εισόδου. ξεκινάμε από την ρίζα επιλέγουμε συνεχόμενα το αριστερότερο μη-τερματικό σύμβολο προς αντικατάσταση (κατασκευάζουμε τους κόμβους με preorder σειρά, left-most derivation). διαλέγουμε τον κανόνα παραγωγής που θα χρησιμοποιήσουμε για την αντικατάσταση του μη-τερματικού. Επαναλαμβάνουμε την διαδικασία αυτή μέχρι να τελειώσουν τα μη-τερματικά ή να μην μπορούμε να αναγνωρίσουμε την είσοδο. Χαροκόπειο Πανεπιστήμιο 40/74

60 Καθοδική Κατασκευή Συντακτικού Δέντρου top-down Το πρόβλημα της κατασκευής ενός συντακτικού δέντρου από την συμβολοσειρά εισόδου. ξεκινάμε από την ρίζα επιλέγουμε συνεχόμενα το αριστερότερο μη-τερματικό σύμβολο προς αντικατάσταση (κατασκευάζουμε τους κόμβους με preorder σειρά, left-most derivation). διαλέγουμε τον κανόνα παραγωγής που θα χρησιμοποιήσουμε για την αντικατάσταση του μη-τερματικού. Επαναλαμβάνουμε την διαδικασία αυτή μέχρι να τελειώσουν τα μη-τερματικά ή να μην μπορούμε να αναγνωρίσουμε την είσοδο. Στην γενική μορφή αν οι κανόνες που έχουμε διαλέξει δεν οδηγούν σε "αναγνώριση" όλης της εισόδου τότε κάνουμε backtracking. Χαροκόπειο Πανεπιστήμιο 40/74

61 Recursive-descent Parsing Ένα πρόγραμμα με μια συνάρτηση για κάθε μη-τερματικό η εκτέλεση ξεκινά με την συνάρτηση για το αρχικό σύμβολο void A ( ) { Choose an A production, A X 1 X 2 X k ; for ( i = 1 to k ) { if ( X i is a nonterminal ) call procedure X i () ; else if ( X i equals the current input symbol a ) { advance input to next symbol ; } else { backtrack the pointer which reads the input ; choose another production and continue ; if no more production rules report error ; } } } Χαροκόπειο Πανεπιστήμιο 41/74

62 Recursive-descent Parsing Παράδειγμα Έστω η γραμματική S c A d A a b A a και η είσοδος c a d Χαροκόπειο Πανεπιστήμιο 42/74

63 Recursive-descent Parsing Παράδειγμα S c A d c a d Χαροκόπειο Πανεπιστήμιο 43/74

64 Recursive-descent Parsing Παράδειγμα S c A d c a d Χαροκόπειο Πανεπιστήμιο 43/74

65 Recursive-descent Parsing Παράδειγμα S c A d c a d a b Χαροκόπειο Πανεπιστήμιο 43/74

66 Recursive-descent Parsing Παράδειγμα S c A d c a d a b Χαροκόπειο Πανεπιστήμιο 43/74

67 Recursive-descent Parsing Παράδειγμα S c A d c a d??? a b??? Χαροκόπειο Πανεπιστήμιο 43/74

68 Recursive-descent Parsing Παράδειγμα S c A d c a d a Χαροκόπειο Πανεπιστήμιο 43/74

69 Recursive-descent Parsing Παράδειγμα S c A d c a d a Χαροκόπειο Πανεπιστήμιο 43/74

70 Recursive-descent Parsing Παράδειγμα S c A d c a d a Χαροκόπειο Πανεπιστήμιο 43/74

71 Αριστερά Αναδρομικές Γραμματικές Επειδή διαλέγουμε συνέχεια το πρώτο μη-τερματικό σύμβολο από αριστερά και δοκιμάζουμε κανόνες, οι μέθοδοι αυτές δεν μπορούν να λειτουργήσουν με γραμματικές που είναι αριστερά αναδρομικές. αριστερά αναδρομικές γραμματικές Μια γραμματική ονομάζεται αριστερά αναδρομική αν έχει ένα μη-τερματικό A για το οποίο υπάρχει παραγωγή του τύπου A + Aα Οι μέθοδοι top-down μπαίνουν σε ατέρμονο βρόγχο λόγω της προσπάθειας τους να "περιγράψουν" το πρώτο μη-τερματικό από αριστερά. Χαροκόπειο Πανεπιστήμιο 44/74

72 Αριστερά Αναδρομικές Γραμματικές π.χ E E + T E T T T F T F F ( E ) F id Χαροκόπειο Πανεπιστήμιο 45/74

73 Αφαίρεση (άμεσης) Αριστερής Αναδρομής Γενικά μπορούμε να αφαιρέσουμε την αριστερή αναδρομή κάνοντας μετασχηματισμούς στην γραμματική μας. Στη απλή περίπτωση που υπάρχει μόνο άμεση αριστερή αναδρομή, δηλαδή υπάρχουν κανόνες της μορφής A Aa μπορούμε να εφαρμόσουμε την εξής τεχνική: ομαδοποιούμε σε A Aα 1 Aα 2 Aα m β 1 β 2 β n και αλλάζουμε σε A β 1 A b 2 A β n A A α 1 A α 2 A α m A ϵ Χαροκόπειο Πανεπιστήμιο 46/74

74 Αφαίρεση (άμεσης) Αριστερής Αναδρομής π.χ σε E E + T T T T F F F ( E ) id E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 47/74

75 FIRST Η κατασκευή ενός καθοδικού αλλά και ενός ανοδικού συντακτικού αναλυτή μπορεί να βοηθηθεί από δύο συναρτήσεις, FIRST και FOLLOW. FIRST Ορίζουμε FIRST(α), όπου α είναι οποιαδήποτε συμβολοσειρά από σύμβολα της γραμματικής, ως το σύνολο των τερματικών που είναι πρώτα σε συμβολοσειρές που παράγονται από την α. Εαν α ϵ τότε ϵ FIRST(α). Χαροκόπειο Πανεπιστήμιο 48/74

76 Υπολογισμός FIRST Για να υπολογίσουμε την συνάρτηση FIRST(X) για κάθε σύμβολο X μιας γραμματικής, χρησιμοποιούμε τους κανόνες που ακολουθούν μέχρι να μη μπορούμε να προσθέσουμε κάποιο τερματικό ή το ϵ σε κάποιο σύνολο FIRST. 1 αν X είναι τερματικό τότε FIRST(X) = {X} 2 αν X είναι μη-τερματικό και X Y 1Y 2 Y k είναι ένας κανόνας παραγωγής για k 1 τότε: αν για κάποιο i έχουμε πως a FIRST(Y i ) και το ϵ ανήκει σε όλα τα Y 1 Y i 1 αν ϵ FIRST(Y j ) j = 1, 2,..., k τότε πρόσθεσε το ϵ στο FIRST(X) 3 αν X ϵ είναι ένας κανόνας, πρόσθεσε το ϵ στο FIRST(X) Χαροκόπειο Πανεπιστήμιο 49/74

77 FIRST παράδειγμα E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 50/74

78 FIRST παράδειγμα FIRST(F) = {(, id} E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 50/74

79 FIRST παράδειγμα FIRST(F) = {(, id} FIRST(T) = FIRST(F) = {(, id} E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 50/74

80 FIRST παράδειγμα FIRST(F) = {(, id} FIRST(T) = FIRST(F) = {(, id} FIRST(E) = FIRST(T) = {(, id} E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 50/74

81 FIRST παράδειγμα FIRST(F) = {(, id} FIRST(T) = FIRST(F) = {(, id} FIRST(E) = FIRST(T) = {(, id} FIRST(E ) = {+, ϵ} E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 50/74

82 FIRST παράδειγμα FIRST(F) = {(, id} FIRST(T) = FIRST(F) = {(, id} FIRST(E) = FIRST(T) = {(, id} FIRST(E ) = {+, ϵ} FIRST(T ) = {, ϵ} E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 50/74

83 FOLLOW FOLLOW Ορίζουμε FOLLOW(A), όπου A είναι ένα μη-τερματικό, ως το σύνολο των τερματικών a που μπορούν να εμφανιστούν αμέσως μετά το A σε κάποια συμβολοσειρά που παράχθηκε από το αρχικό σύμβολο. Είναι δηλαδή το σύνολο από τερματικά a τέτοια ώστε να υπάρχει παραγωγή S qaap για κάποια q και p. Κατά την διάρκεια της παραγωγής μπορεί να υπήρχαν σύμβολα μεταξύ των A και a αλλά κατέληξαν σε ϵ. Επίσης αν το A μπορεί να είναι το δεξιότερο σύμβολο σε μια παραγωγή, τότε το ειδικό σύμβολο $ που θεωρούμε πως δεν ανήκει σε καμία γραμματική ανήκει στο FOLLOW(A) συμβολίζοντας το τέλος της εισόδου (EOF). Χαροκόπειο Πανεπιστήμιο 51/74

84 Υπολογισμός FOLLOW Για να υπολογίσουμε την συνάρτηση FOLLOW(A) για κάθε μη-τερματικό A μιας γραμματικής, χρησιμοποιούμε τους κανόνες που ακολουθούν μέχρι να μη μπορούμε να προσθέσουμε σε κάποιο σύνολο FOLLOW. 1 πρόσθεσε το $ στο FOLLOW(S) όπου S είναι το αρχικό σύμβολο Χαροκόπειο Πανεπιστήμιο 52/74

85 Υπολογισμός FOLLOW Για να υπολογίσουμε την συνάρτηση FOLLOW(A) για κάθε μη-τερματικό A μιας γραμματικής, χρησιμοποιούμε τους κανόνες που ακολουθούν μέχρι να μη μπορούμε να προσθέσουμε σε κάποιο σύνολο FOLLOW. 1 πρόσθεσε το $ στο FOLLOW(S) όπου S είναι το αρχικό σύμβολο 2 εαν υπάρχει κανόνας A αbβ τότε όλα τα FIRST(β) εκτός του ϵ είναι στο FOLLOW(B) Χαροκόπειο Πανεπιστήμιο 52/74

86 Υπολογισμός FOLLOW Για να υπολογίσουμε την συνάρτηση FOLLOW(A) για κάθε μη-τερματικό A μιας γραμματικής, χρησιμοποιούμε τους κανόνες που ακολουθούν μέχρι να μη μπορούμε να προσθέσουμε σε κάποιο σύνολο FOLLOW. 1 πρόσθεσε το $ στο FOLLOW(S) όπου S είναι το αρχικό σύμβολο 2 εαν υπάρχει κανόνας A αbβ τότε όλα τα FIRST(β) εκτός του ϵ είναι στο FOLLOW(B) 3 εαν υπάρχει κανόνας A αb ή κανόνας A αbβ όπου το FIRST(β) περιέχει το ϵ, τότε όλα τα FOLLOW(A) ανήκουν στο FOLLOW(B) Χαροκόπειο Πανεπιστήμιο 52/74

87 FOLLOW παράδειγμα E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 53/74

88 FOLLOW παράδειγμα FOLLOW(E) = {), $} E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 53/74

89 FOLLOW παράδειγμα FOLLOW(E) = {), $} FOLLOW(E ) = FOLLOW(E) = {), $} E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 53/74

90 FOLLOW παράδειγμα FOLLOW(E) = {), $} FOLLOW(E ) = FOLLOW(E) = {), $} FOLLOW(T) = {+, ), $} E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 53/74

91 FOLLOW παράδειγμα FOLLOW(E) = {), $} FOLLOW(E ) = FOLLOW(E) = {), $} FOLLOW(T) = {+, ), $} FOLLOW(T ) = FOLLOW(T) = {+, ), $} E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 53/74

92 FOLLOW παράδειγμα FOLLOW(E) = {), $} FOLLOW(E ) = FOLLOW(E) = {), $} FOLLOW(T) = {+, ), $} FOLLOW(T ) = FOLLOW(T) = {+, ), $} FOLLOW(F) = {+,, ), $} E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 53/74

93 FIRST & FOLLOW S α A q β c γ c F IRST (A) q F OLLOW (A) Χαροκόπειο Πανεπιστήμιο 54/74

94 Προγνωστικός Συντακτικός Αναλυτής Predictive Parsing Στόχος μας είναι να κατασκευάσουμε έναν recursive-descent parser που να μην χρειάζεται να κάνει backtracking. Η μέθοδος του predictive parsing λειτουργεί μόνο σε γραμματικές όπου το πρώτο τερματικό σύμβολο κάθε υποέκφρασης περιέχει όλη την πληροφορία που χρειαζόμαστε ώστε να αποφασίσουμε τον σωστό κανόνα παραγωγής. Χαροκόπειο Πανεπιστήμιο 55/74

95 Γραμματικές LL(1) Προγνωστικοί συντακτικοί αναλυτές μπορούν να κατασκευαστούν για μια κλάση γραμματικών που ονομάζονται LL(1). Η ονομασία LL(1) προκύπτει από τα παρακάτω: scanning input from Left to right producing a Leftmost derivation using 1 input symbol of lookahead at each step to make parsing action decisions Χαροκόπειο Πανεπιστήμιο 56/74

96 Προγνωστικός Συντακτικός Αναλυτής Από τα σύνολα FIRST και FOLLOW μπορούμε να κατασκευάσουμε έναν πίνακα, τον προγνωστικό πίνακα συντακτικής ανάλυσης. διδιάστατος πίνακας M[A, a] όπου A μη-τερματικό και a τερματικό σύμβολο ή το σύμβολο $ η τιμή M[A, a] μας λέει τον κανόνα που να ακολουθήσουμε αν ήμαστε στην συνάρτηση που αντιστοιχεί στο μη-τερματικό A και βλέπουμε στην είσοδο το τερματικό a Χαροκόπειο Πανεπιστήμιο 57/74

97 Προγνωστικός Συντακτικός Αναλυτής Τρόπος υπολογισμού πίνακα προγνωστικής συντακτικής ανάλυσης από τα σύνολα FIRST και FOLLOW. Για κάθε κανόνα παραγωγής A u κάνε τα εξής: για κάθε τερματικό a που ανήκει στο FIRST(u) πρόσθεσε τον κανόνα A u στο M[A, a] Χαροκόπειο Πανεπιστήμιο 58/74

98 Προγνωστικός Συντακτικός Αναλυτής Τρόπος υπολογισμού πίνακα προγνωστικής συντακτικής ανάλυσης από τα σύνολα FIRST και FOLLOW. Για κάθε κανόνα παραγωγής A u κάνε τα εξής: για κάθε τερματικό a που ανήκει στο FIRST(u) πρόσθεσε τον κανόνα A u στο M[A, a] εαν ϵ FIRST(u) τότε για κάθε τερματικό b FOLLOW(A) πρόσθεσε τον κανόνα A u στο M[A, b]. Εαν ϵ FIRST(u) και $ FOLLOW(A), πρόσθεσε τον κανόνα A u επίσης στο M[A, $]. Χαροκόπειο Πανεπιστήμιο 58/74

99 Προγνωστικός Συντακτικός Αναλυτής Τρόπος υπολογισμού πίνακα προγνωστικής συντακτικής ανάλυσης από τα σύνολα FIRST και FOLLOW. Για κάθε κανόνα παραγωγής A u κάνε τα εξής: για κάθε τερματικό a που ανήκει στο FIRST(u) πρόσθεσε τον κανόνα A u στο M[A, a] εαν ϵ FIRST(u) τότε για κάθε τερματικό b FOLLOW(A) πρόσθεσε τον κανόνα A u στο M[A, b]. Εαν ϵ FIRST(u) και $ FOLLOW(A), πρόσθεσε τον κανόνα A u επίσης στο M[A, $]. εαν η θέση M[A, u] είναι κενή τότε θέσε την θέση αυτή σε "λάθος" Χαροκόπειο Πανεπιστήμιο 58/74

100 Παράδειγμα Για τον κανόνα E TE έχουμε FIRST(TE ) = FIRST(T) = {(, id} άρα μπορούμε να προσθέσουμε τον κανόνα αυτό στην θέση M[E, (] και στην θέση M[E, id] E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 59/74

101 Παράδειγμα Για τον κανόνα E TE έχουμε FIRST(TE ) = FIRST(T) = {(, id} άρα μπορούμε να προσθέσουμε τον κανόνα αυτό στην θέση M[E, (] και στην θέση M[E, id] Για τον κανόνα E +TE έχουμε FIRST(+TE ) = {+} και άρα προσθέτουμε τον κανόνα αυτό στην θέση M[E, +] E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 59/74

102 Παράδειγμα Για τον κανόνα E TE έχουμε FIRST(TE ) = FIRST(T) = {(, id} άρα μπορούμε να προσθέσουμε τον κανόνα αυτό στην θέση M[E, (] και στην θέση M[E, id] Για τον κανόνα E +TE έχουμε FIRST(+TE ) = {+} και άρα προσθέτουμε τον κανόνα αυτό στην θέση M[E, +] Για τον κανόνα E ϵ έχουμε FIRST(ϵ) = {ϵ} και επειδή FOLLOW(E ) = {), $} προσθέτουμε τον κανόνα αυτό στις θέσεις M[E, )] και M[E, $]. E T E E +T E ϵ T F T T F T ϵ F ( E ) id Χαροκόπειο Πανεπιστήμιο 59/74

103 Παράδειγμα NON INPUT SYMBOL TERMINAL id + * ( ) $ 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) Άσκηση: Χρησιμοποιήστε τον παραπάνω πίνακα για να κάνετε συντακτική ανάλυση στην συμβολοσειρά id + id + id $ Χαροκόπειο Πανεπιστήμιο 60/74

104 Γραμματικές LL(1) Μια γραμματική ανήκει στην κλάση LL(1) εαν ο αλγόριθμος κατασκευής του πίνακα προγνωστικής ανάλυσης παράγει έναν πίνακα M που δεν έχει καμία θέση με περισσότερους από ένα κανόνες. Χαροκόπειο Πανεπιστήμιο 61/74

105 Πίνακας Προγνωστικής Ανάλυσης Για κάθε LL(1) γραμματική ο πίνακας αυτός έχει σε κάθε θέση είτε έναν κανόνα είτε "λάθος". Αυτό όμως δεν ισχύει για τις εξής γραμματικές όπου μπορούμε να έχουμε περισσότερους από έναν κανόνες ανά θέση του πίνακα: αριστερά αναδρομική γραμματική (left-recursive) διφορούμενη γραμματική (ambiguity) κανόνες με κοινά προθέματα (left-factoring) Χαροκόπειο Πανεπιστήμιο 62/74

106 Κανόνες με Κοινά Προθέματα Left Factoring Μερικές γραμματικές έχουν κανόνες με κοινά προθέματα, π.χ stmt if expr then stmt else stmt stmt if expr then stmt Ένας συντακτικός αναλυτής βλέποντας το if δεν γνωρίζει ποιον κανόνα από τους δύο να ακολουθήσει. Σε αυτή την περίπτωση κάνουμε μετασχηματισμούς στην γραμματική μας ώστε να πάρουμε μια ισοδύναμη γραμματική χωρίς κοινά προθέματα. Χαροκόπειο Πανεπιστήμιο 63/74

107 Κανόνες με Κοινά Προθέματα Left Factoring Η τεχνική είναι η εξής. Αν A αβ 1 A αβ 2 και βλέπουμε στην είσοδο α απλά καθυστερούμε την απόφαση. A αa A β 1 A β 2 Χαροκόπειο Πανεπιστήμιο 64/74

108 Διφορούμενες Γραμματικές Dangling-else Έχουμε ήδη δει πως διφορούμενες γραμματικές είναι εκείνες που έχουν δύο ή περισσότερα συντακτικά δέντρα για την ίδια έκφραση. Το πιο γνωστό παράδειγμα είναι το ξεκρέμαστο (dangling) else. stmt if expr then stmt else stmt if expr then stmt other Χαροκόπειο Πανεπιστήμιο 65/74

109 Διφορούμενες Γραμματικές Dangling-else Η συμβολοσειρά έχει δύο συντακτικά δέντρα. if E 1 then if E 2 then S 1 else S 2 Χαροκόπειο Πανεπιστήμιο 66/74

110 Διφορούμενες Γραμματικές Dangling-else Η συμβολοσειρά έχει δύο συντακτικά δέντρα. if E 1 then if E 2 then S 1 else S 2 stmt if expr then stmt E 1 if expr then stmt else stmt E 2 S 1 S 2 Χαροκόπειο Πανεπιστήμιο 66/74

111 Διφορούμενες Γραμματικές Dangling-else Η συμβολοσειρά έχει δύο συντακτικά δέντρα. if E 1 then if E 2 then S 1 else S 2 stmt if expr then stmt else stmt E 1 if expr then stmt S 2 E 2 S 1 Χαροκόπειο Πανεπιστήμιο 66/74

112 Dangling-else Στις γλώσσες προγραμματισμού που υποστηρίζουν if με αυτή την μορφή, το πρώτο συντακτικό δέντρο είναι το σωστό. κανόνας Ταίριαξε κάθε else με το αταίριαστο then που είναι πιο κοντά. Αυτός ο κανόνας μπορεί να ενταχθεί μέσα στην γραμματική, αλλά στην πράξη δεν συμβαίνει. Χαροκόπειο Πανεπιστήμιο 67/74

113 Dangling-else Η ιδέα για την μετατροπή της γραμματικής σε μη-διφορούμενη είναι πως μια πρόταση που εμφανίζεται μεταξύ ενός then και ενός else πρέπει να είναι "ταιριασμένη". stmt matched_stmt open_stmt matched_stmt if expr then matched_stmt else matched_stmt other open_stmt if expr then stmt if expr then matched_stmt else open_stmt Χαροκόπειο Πανεπιστήμιο 68/74

114 Dangling-else Η συμβολοσειρά if E 1 then if E 2 then S 1 else S 2 έχει τώρα μόνο ένα συντακτικό δέντρο. stmt open stmt if expr then stmt E 1 matched stmt if expr then matched stmt else matched stmt E 2 S 1 S 2 Χαροκόπειο Πανεπιστήμιο 69/74

115 Άλλες γραμματικές Μερικά χαρακτηριστικά των γλωσσών προγραμματισμού δεν μπορούν να περιγραφούν μόνο με γραμματικές χωρίς συμφραζόμενα. Χαροκόπειο Πανεπιστήμιο 70/74

116 Άλλες γραμματικές Μερικά χαρακτηριστικά των γλωσσών προγραμματισμού δεν μπορούν να περιγραφούν μόνο με γραμματικές χωρίς συμφραζόμενα. Η γλώσσα L = {wcw w is in (a b) } και το γεγονός πως δεν είναι γλώσσα χωρίς συμφραζόμενα δείχνει πως και οι γλώσσες C και Java δεν είναι γλώσσες χωρίς συμφραζόμενα. Χαροκόπειο Πανεπιστήμιο 70/74

117 Άλλες γραμματικές Μερικά χαρακτηριστικά των γλωσσών προγραμματισμού δεν μπορούν να περιγραφούν μόνο με γραμματικές χωρίς συμφραζόμενα. Η γλώσσα L = {wcw w is in (a b) } και το γεγονός πως δεν είναι γλώσσα χωρίς συμφραζόμενα δείχνει πως και οι γλώσσες C και Java δεν είναι γλώσσες χωρίς συμφραζόμενα. Η γλώσσα L αντιπροσωπεύει το γεγονός πως τα αναγνωριστικά στις γλώσσες αυτές μπορεί να έχουν όσο μήκος θέλουν και ταυτόχρονα πρέπει να δηλώνονται πριν χρησιμοποιηθούν. Χαροκόπειο Πανεπιστήμιο 70/74

118 Άλλες γραμματικές Μερικά χαρακτηριστικά των γλωσσών προγραμματισμού δεν μπορούν να περιγραφούν μόνο με γραμματικές χωρίς συμφραζόμενα. Η γλώσσα L = {wcw w is in (a b) } και το γεγονός πως δεν είναι γλώσσα χωρίς συμφραζόμενα δείχνει πως και οι γλώσσες C και Java δεν είναι γλώσσες χωρίς συμφραζόμενα. Η γλώσσα L αντιπροσωπεύει το γεγονός πως τα αναγνωριστικά στις γλώσσες αυτές μπορεί να έχουν όσο μήκος θέλουν και ταυτόχρονα πρέπει να δηλώνονται πριν χρησιμοποιηθούν. Οι μεταγλωττιστές αντιπροσωπεύουν όλα τα αναγνωριστικά με id και ελέγχουν σε επόμενες φάσεις (σημασιολογική ανάλυση) πως έχουν δηλωθεί πριν χρησιμοποιηθούν. Χαροκόπειο Πανεπιστήμιο 70/74

119 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής Μπορούμε να αντικαταστήσουμε την αναδρομή με μια στοίβα Input a + b $ Stack X Y Z $ Predictive Parsing Program Output Parsing Table M Χαροκόπειο Πανεπιστήμιο 71/74

120 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής Αλγόριθμος Στην αρχή ο συντακτικός αναλυτής έχει w$ στην είσοδο και το αρχικό σύμβολο S της γραμματικής στην κορυφή της στοίβας επάνω από το σύμβολο $. έστω a το πρώτο σύμβολο της w έστω X το σύμβολο στην κορυφή της στοίβας while X $ do if X = a then αφαίρεσε την κορυφή της στοίβας και έστω a το επόμενο σύμβολο της w else if X είναι τερματικό σύμβολο then error() else if M[X, a] είναι κενή (λάθος) then error() else if M[X, a] = X Y 1Y 2 Y k then τύπωσε τον κανόνα X Y 1Y 2 Y k αφαίρεσε την κορυφή της στοίβας πρόσθεσε τα Y k, Y k 1,..., Y 1 με αυτή την σειρά στην στοίβα έστω X το σύμβολο που είναι στην κορυφή της στοίβας end Χαροκόπειο Πανεπιστήμιο 72/74

121 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ Χαροκόπειο Πανεπιστήμιο 73/74

122 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE Χαροκόπειο Πανεπιστήμιο 73/74

123 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT Χαροκόπειο Πανεπιστήμιο 73/74

124 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id Χαροκόπειο Πανεπιστήμιο 73/74

125 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id id T E $ + id id$ match id Χαροκόπειο Πανεπιστήμιο 73/74

126 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id id T E $ + id id$ match id id E $ + id id$ print T ϵ Χαροκόπειο Πανεπιστήμιο 73/74

127 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id id T E $ + id id$ match id id E $ + id id$ print T ϵ id +TE $ + id id$ print E +TE Χαροκόπειο Πανεπιστήμιο 73/74

128 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id id T E $ + id id$ match id id E $ + id id$ print T ϵ id +TE $ + id id$ print E +TE id + TE $ id id$ match + Χαροκόπειο Πανεπιστήμιο 73/74

129 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id id T E $ + id id$ match id id E $ + id id$ print T ϵ id +TE $ + id id$ print E +TE id + TE $ id id$ match + id + FT E $ id id$ print T FT Χαροκόπειο Πανεπιστήμιο 73/74

130 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id id T E $ + id id$ match id id E $ + id id$ print T ϵ id +TE $ + id id$ print E +TE id + TE $ id id$ match + id + FT E $ id id$ print T FT id + idt E $ id id$ print F id Χαροκόπειο Πανεπιστήμιο 73/74

131 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id id T E $ + id id$ match id id E $ + id id$ print T ϵ id +TE $ + id id$ print E +TE id + TE $ id id$ match + id + FT E $ id id$ print T FT id + idt E $ id id$ print F id id + id T E $ id$ match id Χαροκόπειο Πανεπιστήμιο 73/74

132 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id id T E $ + id id$ match id id E $ + id id$ print T ϵ id +TE $ + id id$ print E +TE id + TE $ id id$ match + id + FT E $ id id$ print T FT id + idt E $ id id$ print F id id + id T E $ id$ match id id + id FT E $ id$ output T FT Χαροκόπειο Πανεπιστήμιο 73/74

133 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id id T E $ + id id$ match id id E $ + id id$ print T ϵ id +TE $ + id id$ print E +TE id + TE $ id id$ match + id + FT E $ id id$ print T FT id + idt E $ id id$ print F id id + id T E $ id$ match id id + id FT E $ id$ output T FT id + id FT E $ id$ match Χαροκόπειο Πανεπιστήμιο 73/74

134 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id id T E $ + id id$ match id id E $ + id id$ print T ϵ id +TE $ + id id$ print E +TE id + TE $ id id$ match + id + FT E $ id id$ print T FT id + idt E $ id id$ print F id id + id T E $ id$ match id id + id FT E $ id$ output T FT id + id FT E $ id$ match id + id idt E $ id$ output F id Χαροκόπειο Πανεπιστήμιο 73/74

135 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id id T E $ + id id$ match id id E $ + id id$ print T ϵ id +TE $ + id id$ print E +TE id + TE $ id id$ match + id + FT E $ id id$ print T FT id + idt E $ id id$ print F id id + id T E $ id$ match id id + id FT E $ id$ output T FT id + id FT E $ id$ match id + id idt E $ id$ output F id id + id id T E $ $ match id Χαροκόπειο Πανεπιστήμιο 73/74

136 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id id T E $ + id id$ match id id E $ + id id$ print T ϵ id +TE $ + id id$ print E +TE id + TE $ id id$ match + id + FT E $ id id$ print T FT id + idt E $ id id$ print F id id + id T E $ id$ match id id + id FT E $ id$ output T FT id + id FT E $ id$ match id + id idt E $ id$ output F id id + id id T E $ $ match id id + id id E $ $ output T ϵ Χαροκόπειο Πανεπιστήμιο 73/74

137 Μη-αναδρομικός Προγνωστικός Συντακτικός Αναλυτής MATCHED STACK INPUT ACTION E$ id + id id$ TE $ id + id id$ print E TE FT E $ id + id id$ print T FT idt E $ id + id id$ print F id id T E $ + id id$ match id id E $ + id id$ print T ϵ id +TE $ + id id$ print E +TE id + TE $ id id$ match + id + FT E $ id id$ print T FT id + idt E $ id id$ print F id id + id T E $ id$ match id id + id FT E $ id$ output T FT id + id FT E $ id$ match id + id idt E $ id$ output F id id + id id T E $ $ match id id + id id E $ $ output T ϵ id + id id $ $ output E ϵ Χαροκόπειο Πανεπιστήμιο 73/74

138 Γραμματικές LL(k) Μπορούμε να γενικοποιήσουμε τις γραμματικές χρησιμοποιώντας τα k πρώτα σύμβολα για να πάρουμε αποφάσεις. Προγνωστικοί συντακτικοί αναλυτές μπορούν να κατασκευαστούν για μια κλάση γραμματικών που ονομάζονται LL(k). Η ονομασία LL(k) προκύπτει από τα παρακάτω: scanning input from Left to right producing a Leftmost derivation using k input symbol of lookahead at each step to make parsing action decisions Ο πίνακας προγνωστικής ανάλυσης που προκύπτει (στην χειρότερη περίπτωση) είναι πολύ μεγάλος αφού μπορεί να έχει εκθετικό μέγεθος. Χαροκόπειο Πανεπιστήμιο 74/74

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό

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

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

Syntax Analysis Part I

Syntax Analysis Part I 1 Syntax Analysis Part I Chapter 4 COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University, 2007-2011 2 Position of a Parser in the Compiler Model Source Program Lexical Analyzer

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή Αντίρριο, 05/04/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» To δεύτερο μέρος της εργασίας έχει ως στόχο την ανάπτυξη του συντακτικού αναλυτή με χρήση του bison / byacc. Στο

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

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

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

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

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

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

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

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

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

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

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

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

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

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» Η εργασία έχει ως στόχο τον σχεδιασμό και την υλοποίηση ενός μεταγλωττιστή για την γλώσσα Ciscal, χρησιμοποιώντας

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

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

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

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

Εισαγωγή στην Αριθμητική Ανάλυση

Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον

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

Θα χρησιμοποιήσουμε το bison, μια βελτιωμένη έκδοση του yacc. Φροντιστήριο 2ο Εισαγωγή στο YACC. Yacc. Δομή Προγράμματος Yacc

Θα χρησιμοποιήσουμε το bison, μια βελτιωμένη έκδοση του yacc. Φροντιστήριο 2ο Εισαγωγή στο YACC. Yacc. Δομή Προγράμματος Yacc HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 2ο Εισαγωγή στο YACC Ι ΑΣΚΩΝ Αντώνιος Σαββίδης Slide

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

Η γλώσσα προγραμματισμού Strange

Η γλώσσα προγραμματισμού Strange Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού Strange Η Strange είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική αυτή γλώσσα περιέχει

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2008 ΔΙΔΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙΔΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Παράδοση: Πέμπτη 10 Απριλίου 2008, 24:00 (μεσάνυχτα)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό

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

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

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 9: Στοίβες:Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις Εφαρμογή

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

HY340, 2010 Α. Σαββίδης. Slide 3 / 43. Slide 4 / 43

HY340, 2010 Α. Σαββίδης. Slide 3 / 43. Slide 4 / 43 HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 2ο Εισαγωγή στο YACC Ι ΑΣΚΩΝ Αντώνιος Σαββίδης Slide

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

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

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

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

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

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

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

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

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι Μεταγλωττιστές Εργαστήριο 9 Σημασιολογική Ανάλυση Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2016-2017 Σύνταξη και Σημασιολογία Σε οποιαδήποτε γλώσσα (προγραμματισμού ή μη) υπάρχουν δύο βασικές

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

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

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

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

Chapter 4 (c) parsing

Chapter 4 (c) parsing Chapter 4 (c) parsing 1 Parsing A grammar describes the strings of tokens that are syntactically legal in a PL A recogniser simply accepts or rejects strings. A generator produces sentences in the language

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2010 Ι ΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙ ΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Ανάθεση: Πέµπτη 15 Απριλίου 2010, 11:00 (πρωί)

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

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

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

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

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

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

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

Παρουσίαση του εργαλείου BISON

Παρουσίαση του εργαλείου BISON Παρουσίαση του εργαλείου BISON Γεννήτρια Συντακτικών Αναλυτών Β Φάση Συντακτική Ανάλυση Χαρακτηριστικά του bison Γεννήτρια συντακτικών αναλυτών σε C/C++. Συµβατό µε το εργαλείο του Unixyacc. Σχετικά εύκολο

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

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

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

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

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

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

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

Γενικές Παρατηρήσεις. Μη Κανονικές Γλώσσες - Χωρίς Συµφραζόµενα (1) Το Λήµµα της Αντλησης. Χρήση του Λήµµατος Αντλησης.

Γενικές Παρατηρήσεις. Μη Κανονικές Γλώσσες - Χωρίς Συµφραζόµενα (1) Το Λήµµα της Αντλησης. Χρήση του Λήµµατος Αντλησης. Γενικές Παρατηρήσεις Μη Κανονικές Γλώσσες - Χωρίς Συµφραζόµενα () Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Υπάρχουν µη κανονικές γλώσσες, π.χ., B = { n n n }. Αυτό

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

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

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

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

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

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1 Διασυνδεδεμένες Δομές Δυαδικά Δέντρα Προγραμματισμός II 1 lalis@inf.uth.gr Δέντρα Τα δέντρα είναι κλασικές αναδρομικές δομές Ένα δέντρο αποτελείται από υποδέντρα, καθένα από τα οποία μπορεί να θεωρηθεί

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

Τι είναι το yacc. Δομή ενός αρχείου yacc. Πρόλογος. ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο. Ο yacc είναι ένας γενικού σκοπού parser generator.

Τι είναι το yacc. Δομή ενός αρχείου yacc. Πρόλογος. ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο. Ο yacc είναι ένας γενικού σκοπού parser generator. ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο Yacc slide 1/52 Τι είναι το yacc Ο yacc είναι ένας γενικού σκοπού parser generator. μετατρέπει την περιγραφή ργρ φήμίας contt- free γραμματικής σε C/C++ πρόγραμμα.

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

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013 Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013 27 Μαρτίου 2013 Περίληψη Σκοπός της παρούσας εργασίας είναι η εξοικείωσή σας με τις θεμελιώδεις θεωρητικές και πρακτικές πτυχές

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

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

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

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

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

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY

ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY Mία γλώσσα προγραμματισμού συνίσταται από ένα περιορισμένο υποσύνολο της αγγλικής γλώσσας και το οποίο αποτελείται από εκφράσεις σαφώς ορισμένες, χωρίς παρερμηνεία.

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

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

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

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

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Εισαγωγή - 1 Μία κλασσική γλώσσα προγραμματισμού αποτελείται από: Εκφράσεις (των

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

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

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 1: Εισαγωγή Ποιος είμαι εγώ! 2 Ναύπλιο, 4/1976-9/1993 Πάτρα, 9/1993-6/2004 Williamsburg, VA, USA, 7/2004-7/2006 Μυτιλήνη, 10/2006-2/2007 Βόλος, 2/2007 - H Υπεύθυνη των

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

ΗΥ101: Εισαγωγή στην Πληροφορική

ΗΥ101: Εισαγωγή στην Πληροφορική Δρ. Χρήστος Ηλιούδης Τι είναι η ; Η διαδικασία του προγραμματισμού είναι μία πολύπλοκη διαδικασία που συχνά οδηγεί σε λάθη (πραγματοποιείται από ανθρώπους!!!). Τα προγραμματιστικά λάθη λέγονται bugs και

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

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

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

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

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

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

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

3. Εκφράσεις και έλεγχος ροής

3. Εκφράσεις και έλεγχος ροής 3. Εκφράσεις και έλεγχος ροής Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να διακρίνετε ανάμεσα σε μεταβλητές μέλη και αυτόματες μεταβλητές Να περιγράφετε την αρχικοποίηση των μεταβλητών μελών Να αναγνωρίζετε

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Δημήτρης Πλεξουσάκης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Δημήτρης Πλεξουσάκης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Λογική Δημήτρης Πλεξουσάκης 2ο μέρος σημειώσεων: Συστήματα Αποδείξεων για τον ΠΛ, Μορφολογική Παραγωγή, Κατασκευή Μοντέλων Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης

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

Η γλώσσα προγραμματισμού EEL

Η γλώσσα προγραμματισμού EEL Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού EEL Η EEL (Early Experimental Language) είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική

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

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 7: Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης Πράξεις Εισαγωγής, Εύρεσης Στοιχείου, Διαγραφής Μικρότερου Στοιχείου Διδάσκων:

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β. ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Σύνολο χαρακτήρων της Pascal Για

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