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

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

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

Transcript

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

2 Εισαγωγή Οι διαφορές των ΓΠ στις συντακτικές δομές τους, είναι πολύ μεγαλύτερες από τις διαφορές τους στις εννοιολογικές δομές. Π.χ. το στοιχείο του πίνακα Α στη θέση 1, γράφεται: Α(1) στις FORTRAN, COBOL, PL/1, Ada A[1] στις Pascal, C A<1> στη SNOBOL Στόχος συντακτικού: Κανόνες επικοινωνίας της πληροφορίας μεταξύ προγραμματιστή και μεταφραστή/διερμηνέα.

3 Γενικά κριτήρια Συντακτικών Κανόνων Αναγνωσιμότητα (readability) Self-documenting: «φυσική» μορφή εντολών, δομημένες εντολές, keywords και noise words, ενσωματωμένα σχόλια, μεγάλο μήκος ονομάτων, μνημονικά σύμβολα Ευκολία Γραφής (writeability) Πολλές φορές αντίθετο με αναγνωσιμότητα Ευκολία Μετάφρασης Πολλές συντακτικές δομές δυσκολία στη μετάφραση Έλλειψη Ασαφειών Π.χ. στη C: if (n>0) if (a>b) z=a; else z=b;

4 Συντακτικά Στοιχεία μιας ΓΠ (1) 1. Σύνολο Χαρακτήρων (Αλφάβητο) Γράμματα κεφαλαία και μικρά (A,B,,Z,a,b, z) Αριθμητικά ψηφία (0,1,,9) Ειδικοί χαρακτήρες (,. ; & $ * # ( ) [ ] ) Δύο αρχικές κωδικοποιήσεις χαρακτήρων για Η/Υ: a. EBCDIC (Extended Binary Coded Decimal Interchange Code) από την IBM (8 bit 2 8 = 256 χαρακτήρες) b. ASCII (American Standard Code for Information Interchange) από ANSI (7 bit 2 7 = 128 χαρακτήρες) Τώρα: UNICODE (Universal Character Set) 16 bit 2 16 = χαρακτήρες Συμβατή κωδικοποίηση με ASCII

5 Συντακτικά Στοιχεία μιας ΓΠ (2) 2. Αναγνωριστικά (identifiers) Ονόματα μεταβλητών, συναρτήσεων, 3. Σύμβολα πράξεων + * - / ** && AND OR NOT 4. Λέξεις Κλειδιά (keywords) και Δεσμευμένες Λέξεις (reserved words) Λέξεις Κλειδιά: Χρησιμοποιούνται από τη ΓΠ Δεσμευμένες Λέξεις: Λέξεις Κλειδιά που δεν μπορεί ο προγραμματιστής να αλλάξει τη χρήση τους Η C έχει 28 δεσμευμένες λέξεις (int, else, for, ) Η αρχική FORTRAN δεν είχε τα DO, IF ως δεσμευμένες λέξεις

6 Συντακτικά Στοιχεία μιας ΓΠ (3) ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΔΕΣΜΕΥΜΕΝΩΝ ΛΕΞΕΩΝ Ευανάγνωστα Προγράμματα Εύκολη εύρεση στον Πίνακα Συμβόλων από Μεταφραστή Διευκολύνουν τον εντοπισμό και τη διόρθωση λαθών ΜΕΙΟΝΕΚΤΗΜΑΤΑ ΔΕΣΜΕΥΜΕΝΩΝ ΛΕΞΕΩΝ Όσο αυξάνονται, πιο δύσκολο να τις θυμάται ο χρήστης Δύσκολη η επέκταση της ΓΠ με νέες δεσμευμένες λέξεις, διότι τα παλιά προγράμματα μπορεί να τις χρησιμοποιούν

7 Συντακτικά Στοιχεία μιας ΓΠ (4) 5. Σχόλια και Θόρυβος Σχόλια: π.χ. /* */ στη C, εντολή REM στην BASIC Θόρυβος: π.χ. στην COBOL: GO TO <label> 6. Κενά Διάφορες χρήσεις. Π.χ. στη SNOBOL είναι το σύμβολο της συγχώνευσης strings 7. Διαχωριστικά (delimiters) Στη C: { }. Στις ALGOL, Pascal: begin end Καλό για άρση ασαφειών

8 Συντακτικά Στοιχεία μιας ΓΠ (4) 8. Εκφράσεις (expressions) Συναρτήσεις που προσπελαύνουν δεδομένα σε ένα πρόγραμμα και επιστρέφουν μια τιμή. Π.χ. Α+Β*C 9. Εντολές (statements) Δημιουργούνται από συνδυασμούς εκφράσεων και άλλων συντακτικών στοιχείων. Π.χ. D = (A+B*C) E/2 10. Δομή Προγράμματος Υποπρογραμμάτων

9 Ιεραρχία Συντακτικών Στοιχείων Δομή Προγράμματος Υποπρογραμμάτων Εντολές Εκφράσεις Αναγνωριστικά Σύμβολα Λέξεις Κλειδιά Σχόλια Κενά Διαχωριστικά Αλφάβητο

10 Δομή Προγράμματος Υποπ/μάτων (1) a. Ξεχωριστός Ορισμός Υποπρογράμματος C, FORTRAN Κάθε υποπρόγραμμα μεταφράζεται χωριστά και συνδέονται όλα όταν γίνεται φόρτωση Χρειάζεται πλήρης περιγραφή όλων των data elements b. Ξεχωριστός Ορισμός Δεδομένων Java, C++, Smalltalk Ομαδοποίηση των λειτουργιών που χειρίζονται ένα δεδομένο data object c. Φωλιασμένος Ορισμός Υποπρογράμματος Pascal, ALGOL Ιεραρχικός ορισμός. Δυνατότητα ορισμού εμβέλειας. Στατικός έλεγχος τύπων.

11 Δομή Προγράμματος Υποπ/μάτων (2) d. Ξεχωριστός Ορισμός Interface C, Ada Δυνατότητα χρήσης file operations του ΛΣ (.h και.c file specs του make στη C) e. Περιγραφές δεδομένων χωριστές από τις εκτελέσιμες εντολές COBOL Όλα τα data είναι global. Data και procedure τμήματα f. Μη-χωριστοί Ορισμοί Υποπρογραμμάτων BASIC, SNOBOL Καμία οργάνωση. Τα υπ/ματα μπορούν να χρησιμοποιηθούν και από άλλα τμήματα του προγράμματος

12 Φάσεις Μετάφρασης (1) Κάθε Φάση δέχεται ως είσοδο ένα πρόγραμμα ισοδύναμο με το αρχικό σε κάποια μορφή και παράγει ως έξοδο το ίδιο πρόγραμμα σε άλλη μορφή. Δύο Στάδια: Ανάλυση πηγαίου προγράμματος (3 Φάσεις) Σύνθεση εκτελέσιμου κώδικα (3-4 Φάσεις) Αριθμός περασμάτων πηγαίου κώδικα: Συνήθως: 2 περάσματα αντίστοιχα με τα 2 Στάδια Πολλές φορές: 3 περάσματα: Ανάλυση πηγαίου κώδικα Ξαναγράψιμο πηγαίου κώδικα με αλγόριθμους βελτιστοποίησης Δημιουργία εκτελέσιμου κώδικα

13 Φάσεις Μετάφρασης (2) Στάδιο Ανάλυσης Στάδιο Σύνθεσης

14 Φάσεις Ανάλυσης πηγαίου προγρ/τος (1) Λεξική Ανάλυση (lexical analysis scanning) Η ακολουθία χαρακτήρων του αρχικού προγράμματος χωρίζεται σε βασικά συντακτικά στοιχεία tokens όπως: αναγνωριστικά, σύμβολα, λέξεις κλειδιά, Μπαίνει TYPE TAG σε κάθε token Εισάγονται τα tokens στον Πίνακα Συμβόλων (symbol table) αφού έχουν μετατραπεί σε κατάλληλη εσωτερική αναπαράσταση Υπολογιστικό μοντέλο λεξικής ανάλυσης: Πεπερασμένα Αυτόματα (finite-state automata)

15 Φάσεις Ανάλυσης πηγαίου προγρ/τος (2) Συντακτική Ανάλυση (syntax analysis parsing) Αναγνωρίζονται τα συντακτικά στοιχεία υψηλότερου επιπέδου (εκφράσεις, εντολές, υποπρογράμματα) Συνήθως εναλλάσσεται με την επόμενη Φάση (σημασιολογική ανάλυση) Οι δύο Φάσεις «επικοινωνούν» μέσω μιας stack, στην οποία ο συντακτικός αναλυτής τοποθετεί τα στοιχεία που αναγνωρίζει Παράγεται το Δέντρο Συντακτικής Ανάλυσης (parse tree) που δίνει και την ιεραρχία των συντακτικών στοιχείων Τύπος Γραμματικής για συντακτική ανάλυση: Γλώσσες Χωρίς Συμφραζόμενα (context-free languages)

16 Φάσεις Ανάλυσης πηγαίου προγρ/τος (3) Σημασιολογική Ανάλυση (semantic analysis) Κεντρικό τμήμα της μετάφρασης. Είναι η γέφυρα μεταξύ ανάλυσης και σύνθεσης Αρχίζει και διαμορφώνεται η δομή εκτελέσιμου κώδικα Στατικός έλεγχος τύπων και παραμέτρων υποπρ/των Άλλες λειτουργίες: Συντήρηση Πίνακα Συμβόλων Εισαγωγή ενσωματωμένης πληροφορίας Εντοπισμός λαθών Macro processing Compile-time operations

17 Φάσεις Σύνθεσης εκτελέσιμου κώδικα (1) Δημιουργία Ενδιάμεσου Κώδικα (intermediate code generation) Παράγεται ακολουθία operators ορισμάτων Βελτιστοποίηση κώδικα ανεξάρτητα από μηχανή (machine independent code improvement) Υπολογισμός κοινών υπο-εκφράσεων μία φορά Απομάκρυνση σταθερών λειτουργιών από loops Βελτιστοποίηση της χρήσης registers

18 Φάσεις Σύνθεσης εκτελέσιμου κώδικα (2) Παράδειγμα βελτιστοποίησης: Εντολή A = B+C+D Σε «ενδιάμεσο» κώδικα: a) Temp1 = B + C b) Temp2 = Temp1 + D c) A = Temp2 Σε «τελικό» κώδικα: 1. Load register with B 2. Add C to register 3. Store register in Temp1 4. Load register with Temp1 5. Add D to register 6. Store register in Temp2 7. Load register with Temp2 8. Store register in A Τα ζευγάρια εντολών 3-4 και 6-7 του «τελικού» κώδικα, μπορούν να αφαιρεθούν - βελτιστοποίηση

19 Τυπικός ορισμός Συντακτικού Στόχος Ακριβείς ορισμοί συντακτικού των ΓΠ για τους χρήστες και υλοποιητές των ΓΠ Επιπλέον Βάση για τη λεξική και συντακτική ανάλυση από τους μεταφραστές Ο Τυπικός (φορμαλιστικός) ορισμός του Συντακτικού μιας ΓΠ ονομάζεται Γραμματική Μια Γραμματική αποτελείται από: Ένα πεπερασμένο σύνολο συμβόλων Αλφάβητο Ένα πεπερασμένο σύνολο ορισμών (Κανόνες ή Παραγωγές) που καθορίζουν τις ακολουθίες χαρακτήρων (ή tokens) που δομούν επιτρεπτά προγράμματα της ΓΠ

20 Τυπική Γραμματική (formal grammar) Γραμματική ορισμένη με τη χρήση αυστηρά καθορισμένης σημειογραφίας (notation) Π.χ. η σημειογραφία BNF (Backus Naur Form) για τον ορισμό Γραμματικών χωρίς συμφραζόμενα (context-free grammars) Εμφάνιση στην αναφορά της ALGOL (1960) Την ίδια περίπου εποχή (1959) ο γλωσσολόγος Noam Chomsky ανέπτυξε τη θεωρία του για τις Γραμματικές Οι δύο προσεγγίσεις αποδείχτηκαν ισοδύναμες

21 Τυπικές Γλώσσες (formal languages) Το συντακτικό τους ορίζεται από Τυπικές Γραμματικές Για μια Τυπική Γλώσσα L χρειάζονται: 1. Ένα Αλφάβητο Σ διακριτών συμβόλων 2. Ένα σύνολο κανόνων Ρ που καθορίζουν ποιες ακολουθίες (ή λέξεις) συμβόλων του Σ είναι αποδεκτές στην L Τα παραπάνω 1 και 2 ονομάζονται Γραμματική στο Σ. Δηλαδή, μια Γραμματική G είναι ένα ζευγάρι (Σ, Ρ) που παράγει τη γλώσσα L(G)

22 Ένα παράδειγμα Τυπικής Γλώσσας Η γλώσσα L(B) = { } με Β = (Σ, Ρ) είναι όλοι οι μη-αρνητικοί δυαδικοί αριθμοί μικρότεροι από 1, με δύο υπο-δυαδικά ψηφία. Σ = {0. 1} Ρ = { R1: S 0 0S 1 R2: S 1.S 2 R3: S 2 0S 3 R4: S 2 1S 3 R5: S 3 0 R6: S 3 1 } N = { S 0 S 1 S 2 S 3 } : Συντακτικές Κατηγορίες ή Μη-Τερματικά Σύμβολα Start = S 0 : Αρχικό Σύμβολο (start symbol). Η συντακτική κατηγορία του πιο υψηλού επιπέδου : Μετασύμβολο

23 Ένα παράδειγμα Τυπικής Γλώσσας (2) Παραγωγή R: α β Ένα νέο string παράγεται με τη χρήση της παραγωγής R, αντικαθιστώντας το α με το β Δημιουργία (derivation) του string 0.01: R1 R2 R3 R6 S 0 0S 1 0.S 2 0.0S Πρέπει με διαδοχικές χρήσεις παραγωγών, ξεκινώντας από το start symbol, να καταλήγουμε σε αποδεκτό string της γλώσσας

24 Σύστημα Παραγωγής G = (Σ, Ν, Ρ, Start) όπου Start Σ U N

25 Ιεραρχία Γραμματικών Ανάλογα με το είδος των παραγωγών, υπάρχουν τελικά μόνο 4 τύποι τυπικών γλωσσών ΤΥΠΟΣ ΓΛΩΣΣΑΣ ΘΕΩΡΗΤΙΚΗ ΜΗΧΑΝΗ Ερωτήματα: (αναγνωρίζεται από) Ποιοι περιορισμοί είναι βασικοί και ποιοι όχι; Με ένα είδος κανόνων, τι προβλήματα λύνονται; Με ένα τύπο γλώσσας, ποιες θεωρητικές μηχανές αναγνωρίζουν τα «νόμιμα» strings; Μπορεί η θεωρητική μηχανή να αναγνωρίσει strings άπειρου μήκους;

26 Γλώσσες του Chomsky ΤΥΠΟΣ 0: Γλώσσες χωρίς περιορισμούς ΤΥΠΟΣ 1: Γλώσσες με συμφραζόμενα ΤΥΠΟΣ 2: Γλώσσες χωρίς συμφραζόμενα ΤΥΠΟΣ 3: Κανονικές Γλώσσες

27 Τύπος 3: Κανονικές Γλώσσες (regular languages) Η Γραμματική G = (Σ, Ν, Ρ, Start) είναι κανονική, αν οι παραγωγές της είναι της μορφής: Α α ή Α αβ όπου Α, Β є Ν και α є Σ Δηλαδή, το πρώτο σύμβολο δεξιά του είναι τερματικό και μπορεί να ακολουθείται από μητερματικό σύμβολο Κατάλληλες για λεξική ανάλυση Αναγνωρίζονται από πεπερασμένα αυτόματα

28 Παράδειγμα Κανονικής Γραμματικής X a z al zl ad zd L al zl ad zd a z D 0L 9L 0D 9D 0 9 : εναλλακτικός κανόνας ή (μετασύμβολο) Περιγράφει ονόματα Χ (π.χ. μεταβλητών) που είναι ένα μικρό γράμμα, ή ένα μικρό γράμμα που ακολουθείται από ακολουθία μικρών γραμμάτων ή/και αριθμητικών ψηφίων.

29 Τύπος 2: Γλώσσες χωρίς συμφραζόμενα (context-free languages) Η Γραμματική G = (Σ, Ν, Ρ, Start) είναι χωρίς συμφραζόμενα, αν οι παραγωγές της είναι της μορφής: Α s όπου Α є Ν και s є Σ U N Ονομάζονται έτσι, διότι αντικαταστάσεις μπορούν να γίνουν οπουδήποτε εμφανίζεται μη-τερματικό σύμβολο, χωρίς να λαμβάνονται υπόψη τα περιβάλλοντα σύμβολα Κατάλληλες για συντακτική ανάλυση Αναγνωρίζονται από push-down αυτόματα

30 Τύπος 1: Γλώσσες με συμφραζόμενα (context-sensitive languages) Η Γραμματική G = (Σ, Ν, Ρ, Start) είναι με συμφραζόμενα, αν οι παραγωγές είναι της μορφής: α β όπου: 1. Το α μπορεί να περιέχει περισσότερα από 1 σύμβολα (τουλάχιστον 1 μη-τερματικό) 2. (Μήκος του α) (Μήκος του β) Παράδειγμα: aβ ab, cb bc (τα a και c είναι το context) Αναγνωρίζονται από linear-bounded αυτόματα

31 Τύπος 0: Γλώσσες χωρίς περιορισμούς Η Γραμματική G = (Σ, Ν, Ρ, Start) είναι χωρίς περιορισμούς, αν οι παραγωγές είναι της μορφής: α β όπου: Το α μπορεί να περιέχει περισσότερα από 1 σύμβολα (τουλάχιστον 1 μη-τερματικό) Αναγνωρίζονται από Μηχανές Turing

32 Λεξική Ανάλυση (1) Αρχικό Πρόγραμμα x := 37 /* result */ RETURN x Λεξική Ανάλυση Tokens (στον Πίνακα Συμβόλων) VARIABLE /x ASSIGN SYMBOL INTEGER /37 RETURN VARIABLE /x Μηχανή αναγνώρισης tokens: Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις Finite State Automata Regular Expressions Ένα Πεπερασμένο Αυτόματο για κάθε είδος token (μεταβλητές, σύμβολα, λέξεις κλειδιά, )

33 Λεξική Ανάλυση (2) Μία Κανονική Έκφραση (ΚΕ) είναι ένα από τα: Ένας χαρακτήρας Το є σύμβολο (τίποτα empty) Δύο ΚΕ η μία δίπλα στην άλλη Δύο ΚΕ χωρισμένες με (ή) Μία ΚΕ ακολουθούμενη από το Kleene Star: Χ* (συνένωση 0 ή περισσότερων Κανονικών Εκφράσεων Χ) Χρησιμοποιούνται επίσης, για συντομία, τα σύμβολα: Χ + ΧΧ* (1 ή περισσότερα Χ) Χ? Χ є (κανένα ή 1 Χ) c g c d e f g (X) για καθορισμό προτεραιότητας της ΚΕ

34 Λεξική Ανάλυση (3) Κανονικές Γλώσσες: Δημιουργούνται από Κανονικές Εκφράσεις και αναγνωρίζονται από Πεπερασμένα Αυτόματα Για τη δημιουργία Γλωσσών Χωρίς Συμφραζόμενα, αρκεί η προσθήκη δυνατότητας Αναδρομής.

35 Λεξική Ανάλυση (4) Παράδειγμα Κανονικών Εκφράσεων: Στην Pascal για την παραγωγή και αναγνώριση αριθμών: Π.χ.: e E-89 ή πιο σύντομα: (0 9) + (.(0 9) + )? ((e E)(+ - )? (0 9) + )?

36 Λεξική Ανάλυση (5) Η αντίστοιχη τυπική γραμματική, έχει τους παραπάνω κανόνες σε αντίθετη σειρά (το unsigned_number θα είναι το start symbol) Αποδεικνύεται ότι ένα σύνολο κανονικών εκφράσεων, είναι αντίστοιχο με τυπική κανονική γραμματική.

37 Λεξική Ανάλυση (6) Πεπερασμένα Αυτόματα Finite State Automata FSA Τρόπος λειτουργίας: Διαβάζει κάθε φορά ένα χαρακτήρα από αριστερά. «Αποφασίζει» αν το string που έχει διαβάσει μέχρι τώρα, είναι αποδεκτό ως token. Η απόφαση αυτή καθορίζεται από την «κατάσταση» στην οποία βρίσκεται το αυτόματο μετά την ανάγνωση του τελευταίου χαρακτήρα. Όταν αναγνωριστεί ότι τελείωσε η λέξη, το token είναι αποδεκτό αν το αυτόματο βρεθεί σε «τελική κατάσταση». Αν βρεθεί σε άλλη κατάσταση, δεν γίνεται αποδεκτό.

38 Λεξική Ανάλυση (7) Παράδειγμα: Πεπερασμένο Αυτόματο που αναγνωρίζει δυαδικούς αριθμούς οι οποίοι έχουν περιττό αριθμό από Α Αρχική Κατάσταση 1 Β Τελική Κατάσταση Αντίστοιχη KE: 0*10*(10*10*)* ή (0*10*1)*0*10*

39 Λεξική Ανάλυση (8) Ισοδύναμη αναπαράσταση: Τρέχουσα Κατάσταση Πίνακας Καταστάσεων Μεταβάσεων Χαρακτήρας που διαβάζεται Νέα Κατάσταση Αποδοχή token A 0 A OXI A 1 B NAI B 0 B NAI B 1 A OXI

40 Λεξική Ανάλυση (9) Λειτουργία του FSA για την είσοδο : Αναγνωσμένοι χαρακτήρες Νέα Κατάσταση A Αποδοχή token OXI 1 B NAI 10 B NAI 100 B NAI 1001 A OXI A OXI B NAI

41 Λεξική Ανάλυση (10) Ένα Πεπερασμένο Αυτόματο έχει: Μία αρχική κατάσταση Μία ή περισσότερες τελικές καταστάσεις Ένα σύνολο μεταβάσεων Κάθε string που ξεκινάει το Πεπερασμένο Αυτόματο από την αρχική κατάσταση, και τελειώνει σε μια τελική κατάσταση, είναι αποδεκτό token. Τα Πεπερασμένα Αυτόματα που χρησιμοποιούμε είναι ντετερμινιστικά. Μη-ντετερμινιστικά είναι αυτά που έχουν περισσότερες από μία μεταβάσεις με το ίδιο label.

42 Λεξική Ανάλυση (11) Υλοποίηση: Κάθε κατάσταση είναι μια ρουτίνα του προγράμματος που υλοποιεί το FSA Ο λεξικός αναλυτής ξεκινά με GETCHAR από αριστερά, καλώντας ένα FSA Αν ο λεξικός αναλυτής δεν φτάσει σε τελική κατάσταση του τρέχοντος FSA, επιστρέφει στον αρχικό χαρακτήρα και ξεκινά ένα άλλο FSA Στην Άσκηση θα χρησιμοποιήσουμε το γεννήτορα λεξικών αναλυτών flex που βασίζεται σε FSAs

43 Λεξική Ανάλυση (12) 2ο Παράδειγμα: Πεπερασμένο Αυτόματο που αναγνωρίζει δυαδικούς αριθμούς οι οποίοι έχουν άρτιο αριθμό από Α Β Αρχική και Τελική Κατάσταση Αντίστοιχη KE: 0*(10*10*)* ή (0*10*1)*0* 1

44 Λεξική Ανάλυση (13) Πίνακας Καταστάσεων Μεταβάσεων Τρέχουσα Κατάσταση Χαρακτήρας που διαβάζεται Νέα Κατάσταση Αποδοχή token A 0 A ΝΑΙ A 1 B ΟΧΙ B 0 B ΟΧΙ B 1 A ΝΑΙ

45 Λεξική Ανάλυση (14) Λειτουργία του FSA για την είσοδο : Αναγνωσμένοι χαρακτήρες Νέα Κατάσταση A Αποδοχή token ΝΑΙ 1 B ΟΧΙ 10 B ΟΧΙ 100 B ΟΧΙ 1001 A ΝΑΙ A ΝΑΙ B ΟΧΙ

46 Λεξική Ανάλυση (15) 3ο Παράδειγμα: Πεπερασμένο Αυτόματο που αναγνωρίζει δυαδικούς αριθμούς οι οποίοι έχουν άρτιο αριθμό από 1, χωρίς το є: 1 Α 0 Β 1 1 Γ 0 0 Αντίστοιχη KE: 0 + (0*10*10*) +

47 Λεξική Ανάλυση (16) 4ο Παράδειγμα: Πεπερασμένο Αυτόματο που αναγνωρίζει ονόματα μεταβλητών που αρχίζουν με γράμμα και αποτελούνται από γράμματα και αριθμητικά ψηφία Γράμμα ή ψηφίο Α Γράμμα Β Άλλο ERROR ή άλλο FSA Άλλο ERROR ή άλλο FSA

48 Λεξική Ανάλυση (17) 5ο Παράδειγμα: Πεπερασμένο Αυτόματο που αναγνωρίζει προσημασμένους ή μη-προσημασμένους ακέραιους αριθμούς Ψηφίο Ψηφίο Α ή + Β Ψηφίο Γ Αντίστοιχη KE: (+ - )? (0 9) +

49 Συντακτική Ανάλυση (1) Για τη Συντακτική Ανάλυση είναι κατάλληλες οι Γραμματικές Χωρίς Συμφραζόμενα Τυπική σημειογραφία BNF (Backus Naur Form) για τον ορισμό Γραμματικών Χωρίς Συμφραζόμενα (context-free grammars) Μετασύμβολα της σημειογραφίας BNF, για τον ορισμό των κανόνων της Γλώσσας: ::= ορίζεται ως εναλλακτικός κανόνας ή < > Μη-τερματικό σύμβολο (συντακτική κατηγορία)

50 Συντακτική Ανάλυση (2) Και η Λεξική Ανάλυση θα μπορούσε να είναι μέρος της Συντακτικής. Π.χ. η BNF Γραμματική: <ψηφίο> ::= η οποία ορίζει τον τύπο token «αριθμητικό ψηφίο». Διότι οι Κανονικές Γλώσσες (λεξική ανάλυση), είναι υποσύνολο των Γλωσσών Χωρίς Συμφραζόμενα (συντακτική ανάλυση). Με τις Γλώσσες Χωρίς Συμφραζόμενα, μπορούμε να περιγράψουμε πιο σύνθετες γλώσσες. Π.χ. <υπο-συνθήκη εντολή> ::= if <λογική έκφραση> then <εντολή> else <εντολή> if <λογική έκφραση> then <εντολή>

51 Συντακτική Ανάλυση (3) Χρήσιμη μορφή κανόνα, η αναδρομή: <μη-προσ. ακέραιος> ::= <ψηφίο> <μη-προσ. ακέραιος> <ψηφίο> <ψηφίο> ::= Μία μικρή BNF Γραμματική: <έκφραση> ::= id αρ <έκφραση> <πράξη> <έκφραση> (<έκφραση>) - <έκφραση> <πράξη> ::= + - * / όπου: id αρ είναι είδη token αναγνωρισμένα στη λεξική ανάλυση (id = αναγνωριστικό, αρ = αριθμός) <έκφραση> = start symbol

52 Συντακτική Ανάλυση (4) Αναγνώριση σωστών προγραμμάτων: Top down Parsing Δέντρο Συντακτικής Ανάλυσης (Parse Tree) Π.χ. για την έκφραση Α C <έκφραση> <έκφραση> <πράξη> <έκφραση> id (A) id (C)

53 Συντακτική Ανάλυση (5) Πρέπει, ξεκινώντας με ρίζα το start symbol, να δημιουργείται ένα δέντρο, που φύλλα του είναι η ακολουθία χαρακτήρων που θέλουμε να αναγνωριστεί. Οι ακολουθίες χαρακτήρων που μπορούν να δημιουργηθούν από το start symbol με κάποιο parse tree, συγκροτούν τη Γλώσσα που ορίζει η Γραμματική. Το Δέντρο Συντακτικής Ανάλυσης για την αναγνώριση της έκφρασης (Α + Β) * C :

54 Συντακτική Ανάλυση (6) Parse Tree για το: (Α + Β) * C <έκφραση> <έκφραση> <πράξη> <έκφραση> ( <έκφραση> ) * id (C) <έκφραση> <πράξη> <έκφραση> id (A) + id (B)

55 Συντακτική Ανάλυση (7) Parse Tree για το: (Α + ) * C <έκφραση> <έκφραση> <πράξη> <έκφραση> ( <έκφραση> ) * id (C) <έκφραση> <πράξη> <έκφραση> id (A) +? (ERROR)

56 Συντακτική Ανάλυση (8) Μια πιο σύνθετη Γραμματική: <A> ::= <E> = <B> <B> ::= <C> <B> + <C> <B> - <C> <C> ::= <D> <C> * <D> <C> / <D> <D> ::= <E> αρ (<B>) <E> ::= id id [<F>] <F> ::= <B> <F>, <B>

57 Συντακτική Ανάλυση (8) Είναι μια Γραμματική για εντολές ανάθεσης: <εντολή ανάθεσης> ::= <μεταβλητή> = <έκφραση> <έκφραση> ::= <όρος> <έκφραση> + <όρος> <έκφραση> - <όρος> <όρος> ::= <παράγοντας> <όρος> * <παράγοντας> <όρος> / <παράγοντας> <παράγοντας> ::= <μεταβλητή> αρ (<έκφραση>) <μεταβλητή> ::= id id [<λίστα δεικτών>] <λίστα δεικτών> ::= <έκφραση> <λίστα δεικτών>, <έκφραση> Π.χ. Α = Β+Κ-3 C[3,2N-4] = L[(3*P[X]-H)+67/D[9]]+4

58 Συντακτική Ανάλυση (9) Δέντρο Συντακτικής Ανάλυσης για το W=Y*(U+V) <εντολή ανάθεσης> <μεταβλητή> = id (W) <παράγοντας> <όρος> <όρος> * <μεταβλητή> id (Y) <έκφραση> <παράγοντας> ( <έκφραση> ) <έκφραση> <όρος> <παράγοντας> <μεταβλητή> id (U) + <όρος> <παράγοντας> <μεταβλητή> id (V)

59 Συντακτική Ανάλυση (10) Εναλλακτική Γραμματική για την ίδια Γλώσσα: <εντολή ανάθεσης> ::= <μεταβλητή> = <έκφραση> <έκφραση> ::= <όρος> <έκφραση> * <όρος> <έκφραση> + <όρος> <όρος> ::= <παράγοντας> <όρος> - <παράγοντας> <όρος> / <παράγοντας> <παράγοντας> ::= <μεταβλητή> αρ (<έκφραση>) <μεταβλητή> ::= id id [<λίστα δεικτών>] <λίστα δεικτών> ::= <έκφραση> <λίστα δεικτών>, <έκφραση>

60 Συντακτική Ανάλυση (11) Extended BNF σημειογραφία. Επιπλέον μετασύμβολα: [ ] : Προαιρετικό { } : 0 ή περισσότερες εμφανίσεις ( ) : Ομαδοποίηση <εντολή ανάθεσης> ::= <μεταβλητή> = <έκφραση> <έκφραση> ::= <όρος> { ( + - ) <όρος> } <όρος> ::= <παράγοντας> { ( * / ) <παράγοντας> } <παράγοντας> ::= <μεταβλητή> αρ (<έκφραση>) <μεταβλητή> ::= id id [<λίστα δεικτών>] <λίστα δεικτών> ::= <έκφραση> {, <έκφραση> } Μειονέκτημα: Μερικές φορές κρύβεται η αναδρομή

61 Συντακτική Ανάλυση (12) Ισοδύναμη μέθοδος περιγραφής του συντακτικού με την BNF: Συντακτικά Διαγράμματα. Κανόνες μετατροπής BNF σε Συντακτικά Διαγράμματα, στην περιγραφή της Pascal από τον Wirth, 1976: 1. Τερματικό Σύμβολο a a 2. Μη-τερματικό Σύμβολο <v> v

62 Συντακτική Ανάλυση (13) v1 3. <P> ::= <v1> a1 <v2> є a2 a1 P v2 є a2

63 Συντακτική Ανάλυση (14) 4. <P> ::= <v1> a1 <v2> P v1 a1 v2 5. <P> ::= [ <v1> ] 0 ή 1 φορές το <v1> δηλ. <P> ::= є <v1> P v1 6. <P> ::= { <v1> } 0 ή περισσότερες φορές το <v1> δηλ. <P> ::= є <v1><p> P v1 7. <P> ::= <v1> <v1><p> 1 ή περισσότερες φορές το <v1> P v1

64 Συντακτική Ανάλυση (15) Το παράδειγμα <έκφραση> ::= id αρ <έκφραση> <πράξη> <έκφραση> (<έκφραση>) - <έκφραση> πράξη έκφραση id αρ ( έκφραση )

65 Συντακτική Ανάλυση (16) Η σύνθετη Γραμματική για εντολές ανάθεσης: <εντολή ανάθεσης> ::= <μεταβλητή> = <έκφραση> <έκφραση> ::= <όρος> <έκφραση> + <όρος> <έκφραση> - <όρος> <όρος> ::= <παράγοντας> <όρος> * <παράγοντας> <όρος> / <παράγοντας> <παράγοντας> ::= <μεταβλητή> αρ (<έκφραση>) <μεταβλητή> ::= id id [<λίστα δεικτών>] <λίστα δεικτών> ::= <έκφραση> <λίστα δεικτών>, <έκφραση>

66 Συντακτική Ανάλυση (17) <εντολή ανάθεσης> ::= <μεταβλητή> = <έκφραση> εντ. ανάθεσης μεταβλητή = έκφραση <έκφραση> ::= <όρος> <έκφραση> + <όρος> <έκφραση> - <όρος> έκφραση όρος +

67 Συντακτική Ανάλυση (18) <όρος> ::= <παράγοντας> <όρος> * <παράγοντας> <όρος> / <παράγοντας> όρος παράγοντας * /

68 Συντακτική Ανάλυση (19) <παράγοντας> ::= <μεταβλητή> αρ (<έκφραση>) παράγοντας μεταβλητή αρ ( έκφραση )

69 Συντακτική Ανάλυση (20) <μεταβλητή> ::= id id [<λίστα δεικτών>] μεταβλητή id [ Λίστα δεικτών ] <λίστα δεικτών> ::= <έκφραση> <λίστα δεικτών>, <έκφραση> λίστα δεικτών έκφραση,

70 Συντακτική Ανάλυση (21) Υλοποίηση Συντακτικών Διαγραμμάτων με Ειδικές Δομές Δεδομένων: Κόμβος Συντακτικού Διαγράμματος TAG OTHER Symbol FOLLOW TAG: TRUE αν το Symbol είναι τερματικό σύμβολο FALSE αν το Symbol είναι μη-τερματικό σύμβολο OTHER: Pointer που δείχνει τον επόμενο εναλλακτικό (παράλληλο) κόμβο («nil» αν ο κόμβος είναι η τελευταία επιλογή) FOLLOW: Pointer που δείχνει τον επόμενο υποχρεωτικό (σειριακό) κόμβο («nil» αν ο κόμβος είναι ο τελευταίος στη σειρά)

71 Συντακτική Ανάλυση (22) Κανόνες: v1 P FALSE v1 P a1 v2 TRUE a1 FALSE v2 nil

72 Συντακτική Ανάλυση (23) P v1 a1 v2 P FALSE v1 TRUE a1 FALSE v2 nil nil nil nil

73 Συντακτική Ανάλυση (24) P v1 P FALSE v1 TRUE є nil nil

74 Συντακτική Ανάλυση (25) Το παράδειγμα <έκφραση> ::= id <έκφραση> <πράξη> <έκφραση> (<έκφραση>) - <έκφραση> πράξη έκφραση id ( έκφραση )

75 Συντακτική Ανάλυση (26) TRUE id TRUE є έκφραση TRUE - FALSE πράξη nil TRUE ( FALSE έκφραση TRUE ) nil nil nil

76 Ισοδύναμες Γραμματικές (1) Ισοδύναμες Γραμματικές: Γραμματικές που παράγουν την ίδια γλώσσα. Δηλαδή, οι γραμματικές G 1 και G 2 είναι ισοδύναμες, αν και μόνο αν L(G 1 ) = L(G 2 ) Χρήσιμη ιδιότητα στην κατασκευή compilers: Κατά τη σχεδίαση, χρησιμοποιούμε απλές γραμματικές που είναι εύκολα κατανοητές Στη συνέχεια, ίσως χρειαστεί να τις μετασχηματίσουμε σε ισοδύναμες, με ιδιότητες που τις κάνουν πιο εύκολα υλοποιήσιμες Το πρόβλημα της διαπίστωσης της ισοδυναμίας δύο γραμματικών είναι μη-υπολογίσιμο.

77 Ισοδύναμες Γραμματικές (2) Διφορούμενες (ambiguous) Γραμματικές Χωρίς Συμφραζόμενα: Όταν υπάρχουν 2 ή περισσότερα δέντρα συντακτικής ανάλυσης για την ίδια παραγόμενη συμβολοσειρά. Μια διφορούμενη γραμματική μπορεί να είναι ισοδύναμη με άλλη γραμματική που δεν είναι διφορούμενη. Οι γραμματικές που δεν μπορούν να μετασχηματιστούν σε μη-διφορούμενες, ονομάζονται εγγενώς διφορούμενες (inherently ambiguous). Στους compilers, αποφεύγουμε τη χρήση διφορούμενων γραμματικών, γιατί οδηγούν σε σημασιολογικές ασάφειες.

78 Ισοδύναμες Γραμματικές (3) Παράδειγμα διφορούμενης γραμματικής: <Ε> ::= id <Ε> + <Ε> <Ε> * <Ε> (<Ε>) Δέντρα Συντακτικής Ανάλυσης για το: Α + Β * C

79 Ισοδύναμες Γραμματικές (4) <E> <E> <E> + <E> <E> * <E> id(a) <E> * <E> <E> + <E> id(c) id(b) id(c) id(a) id(b)

80 Ισοδύναμες Γραμματικές (5) Ισοδύναμη Γραμματική μη-διφορούμενη: <Ε> ::= <Ε> + <T> <T> <T> ::= <T> * <F> <F> <F> ::= (<Ε>) id Δηλαδή, «επιβάλλουμε» τη χρήση από τη ρίζα, του δεύτερου αρχικού κανόνα:

81 Ισοδύναμες Γραμματικές (6) <E> <Τ> <F> <E> + <Τ> <Τ> * <F> <F> id(c) Δηλαδή, δημιουργήσαμε μια ισοδύναμη γραμματική, αλλά πιο πολύπλοκη, που παράγει και πιο πολύπλοκα δέντρα συντακτικής ανάλυσης. Όμως, δεν είναι διφορούμενη id(a) id(b)

82 Συντακτική Ανάλυση Top-Down (1) Top-Down Συντακτική Ανάλυση (Καθοδική) Ο Συντακτικός Αναλυτής (ΣΑ) πρέπει να αποφασίσει για τα εξής: 1. Ποιος κανόνας παραγωγής θα χρησιμοποιηθεί για να δημιουργηθούν τα «παιδιά» ενός κόμβου; ΑΠΑΝΤΗΣΗ: Δύσκολη Διαβάζει ένα αριθμό k tokens για να αποφασίσει, χρησιμοποιεί την παραγωγή που είναι πιο αριστερά, 1. Στη συνέχεια, με ποια σειρά θα γίνει η επεξεργασία των νέων κόμβων που προκύπτουν; ΑΠΑΝΤΗΣΗ: Οι περισσότεροι ΣΑ τους επεξεργάζονται από αριστερά προς τα δεξιά.

83 Συντακτική Ανάλυση Top-Down (2) Οι συνήθεις top-down ΣΑ αναφέρονται ως: LL(k) Left-to-right διάβασμα string Leftmost δημιουργία παραγωγών Αριθμός tokens που διαβάζονται (look-ahead symbols)

84 Συντακτική Ανάλυση Top-Down (3) Γραμματικές LL(1): Οι γραμματικές χωρίς συμφραζόμενα που αναγνωρίζονται από LL(1) Συντακτικούς Αναλυτές. Αποδεικνύεται ότι για να είναι μια γραμματική LL(1), όλες οι παραγωγές της πρέπει να ικανοποιούν τα εξής: 1. Να μην έχουν αριστερή αναδρομή, άμεση ή έμμεση. 2. Να μην έχουν 2 εναλλακτικούς κανόνες, τα δεξιά μέλη των οποίων αρχίζουν με το ίδιο σύμβολο. 3. Να μην έχουν 2 εναλλακτικούς κανόνες, τα δεξιά μέλη των οποίων παράγουν την κενή συμβολοσειρά (є).

85 Συντακτική Ανάλυση Top-Down (4) Χρησιμοποιείται μια Στοίβα και δύο Πράξεις: Ταίριασμα συμβόλου: Αν στην κορυφή της στοίβας βρίσκεται το τερματικό σύμβολο a και το τρέχον σύμβολο του string εισόδου είναι επίσης a, τότε το a αφαιρείται από τη στοίβα και διαβάζεται το επόμενο σύμβολο του string εισόδου. Πρόβλεψη: Αν στην κορυφή της στοίβας βρίσκεται το μη-τερματικό σύμβολο <Α>, το αντικαθιστούμε με το δεξιό μέρος κάποιου κανόνα ορισμού του <Α>, με τα σύμβολα σε αντίθετη σειρά. Αν καμία από τις δύο πράξεις δεν μπορεί να εφαρμοστεί, τότε υπάρχει συντακτικό σφάλμα.

86 Συντακτική Ανάλυση Top-Down (5) Παράδειγμα υλοποίησης LL(1) Συντακτικού Αναλυτή: Γραμματική: <S> ::= (<S>)<S> є String εισόδου: () Βήμα Στοίβα Είσοδος Πράξη 0 <S> () EOF Πρόβλεψη <S> ::= (<S>)<S> 1 <S>)<S>( () EOF Ταίριασμα συμβόλου ( 2 <S>)<S> ) EOF Πρόβλεψη <S> ::= є 3 <S>) ) EOF Ταίριασμα συμβόλου ) 4 <S> EOF Πρόβλεψη <S> ::= є 5 є EOF Αναγνώριση

87 Συντακτική Ανάλυση Top-Down (6) Σε αρκετές περιπτώσεις μπορούμε να μετατρέψουμε μια γραμματική σε ισοδύναμη LL(1). Για τη μετατροπή αυτή, χρησιμοποιούμε τρία είδη μετασχηματισμών: Α. Αντικατάσταση Α α 1 α n B β 1 Αβ 2 Α α 1 α n B β 1 α 1 β 2 β 1 α n β 2

88 Συντακτική Ανάλυση Top-Down (7) B. Αριστερή Παραγοντοποίηση Α αβ 1 αβ n Α αb B β 1 β n Γ. Απαλοιφή Αριστερής Αναδρομής (ΑΑ) Άμεση ΑΑ: Α Αα Έμμεση ΑΑ: Α Βα 1, Β Cα 2, C Aα 3 (δηλ. Α Αα 3 α 2 α 1 ) Α Αα 1 Αα n β 1 β m Α β 1 Β β m B B α 1 Β α n B є

89 Συντακτική Ανάλυση Top-Down (8) Παράδειγμα: <X> ::= <B> a <A> b <A> ::= a <A> a <B> ::= <B> b b Η γραμματική αυτή δεν είναι LL(1), διότι: Στη 2 η παραγωγή υπάρχουν 2 εναλλακτικοί κανόνες που αρχίζουν με το ίδιο σύμβολο (a). Η 3 η παραγωγή έχει άμεση αριστερή αναδρομή. Για να δημιουργήσουμε μια ισοδύναμη LL(1) γραμματική, θα κάνουμε τις εξής 2 μετατροπές:

90 Συντακτική Ανάλυση Top-Down (9) Στη 2 η παραγωγή θα χρησιμοποιήσουμε το μετασχηματισμό της Αριστερής Παραγοντοποίησης: <A> ::= a <A> a <A> ::= a <C> <C> ::= <A> є Στην 3 η παραγωγή θα χρησιμοποιήσουμε το μετασχηματισμό της Απαλοιφής Αριστερής Αναδρομής: <B> ::= <B> b b <B> ::= b <D> <D> ::= b<d> є

91 Συντακτική Ανάλυση Top-Down (10) Τελικά, η ισοδύναμη LL(1) γραμματική, είναι η: <X> ::= <B> a <A> b <A> ::= a <C> <C> ::= <A> є <B> ::= b <D> <D> ::= b<d> є

92 Συντακτική Ανάλυση Bottom-Up (1) Bottom-Up Συντακτική Ανάλυση (Ανοδική) Ο Συντακτικός Αναλυτής (ΣΑ) ξεκινά την κατασκευή του δέντρου συντακτικής ανάλυσης από τα φύλλα (τα τερματικά σύμβολα του προς έλεγχο string). Στη συνέχεια προσπαθεί να βρει τον αριστερότερο κόμβο που δεν έχει ακόμα φτιαχτεί, ενώ όλα τα παιδιά του έχουν φτιαχτεί. Μέχρι να κατασκευαστεί η ρίζα του δέντρου με το Start. Κάθε στιγμή ο ΣΑ πρέπει να επιλέξει ποιους από τους ήδη υπάρχοντες κόμβους θα χρησιμοποιήσει ως παιδιά του νέου κόμβου που θα φτιάξει: Ελάττωση (reducing).

93 Συντακτική Ανάλυση Bottom-Up (2) Παράδειγμα: <S> ::= r <B> <B> ::= <D> <B>, <D> <D> ::= a b Κατασκευή του δέντρου συντακτικής ανάλυσης για το string ra,b :

94 Συντακτική Ανάλυση Bottom-Up (3) <S> <S> ::= r <B> <B> ::= <D> <B>, <D> <D> ::= a b <B> <B> <D> <D> r a, b

95 Συντακτική Ανάλυση Bottom-Up (4) Συντακτικοί Αναλυτές ολίσθησης-ελάττωσης (shift-reduce parsers). Χρησιμοποιούν μια Στοίβα και δύο Πράξεις: Ολίσθηση (shift): Αφαιρεί ένα σύμβολο από την αρχή του string και το βάζει στην κορυφή της στοίβας. Ελάττωση (reduce): Όταν στην κορυφή της στοίβας υπάρχει το δεξί μέλος παραγωγής. Αφαιρούνται αυτά τα σύμβολα από τη στοίβα και αντικαθίστανται από το αριστερό μέλος.

96 Συντακτική Ανάλυση Bottom-Up (5) Βήμα Στοίβα Είσοδος Πράξη 0 є ra,b EOF Ολίσθηση 1 r a,b EOF Ολίσθηση 2 ra,b EOF Ελάττωση <D> ::= a 3 r<d>,b EOF Ελάττωση <B> ::= <D> 4 r<b>,b EOF Ολίσθηση 5 r<b>, b EOF Ολίσθηση 6 r<b>,b EOF Ελάττωση <D> ::= b 7 r<b>,<d> EOF Ελάττωση <B> ::= <B>, <D> 8 r<b> EOF Ελάττωση <S> ::= r <B> 9 <S> EOF Αναγνώριση

97 Συντακτική Ανάλυση Bottom-Up (6) Προβλήματα: Στο Βήμα 4 υπήρχαν δύο επιλογές: ολίσθηση ή ελάττωση με τον κανόνα <S> ::= r <B>. Η 2 η επιλογή καταλήγει σε αδιέξοδο, γιατί η ανάλυση τελειώνει χωρίς να έχει σαρωθεί όλο το string εισόδου: Σύγκρουση ολίσθησης-ελάττωσης (shift-reduce conflict) Στο Βήμα 7 υπήρχαν δύο επιλογές: ελάττωση με τον κανόνα <B> ::= <B>, <D> ή ελάττωση με τον κανόνα <B> ::= <D>. Η 2 η επιλογή δεν είναι καλή, γιατί δεν μπορεί να προχωρήσει η ανάλυση: Σύγκρουση ελάττωσης-ελάττωσης (reducereduce conflict) Τέτοια προβλήματα λύνονται από ντετερμινιστικούς ΣΑ ολίσθησης-ελάττωσης, τους LR(k).

98 Συντακτική Ανάλυση Bottom-Up (7) Bottom-up ΣΑ LR(k) Left-to-right διάβασμα string Rightmost δημιουργία παραγωγών Αριθμός tokens που διαβάζονται (look-ahead symbols)

99 Συντακτική Ανάλυση Bottom-Up (8) Στην πράξη χρησιμοποιούνται οι LR(1). Η λειτουργία τους είναι περισσότερο πολύπλοκη από αυτή των LL(1). Δεν αντιμετωπίζουν πρόβλημα με αριστερή αναδρομή. Το εργαλείο bison είναι γεννήτορας συντακτικών αναλυτών για γραμματικές χωρίς συμφραζόμενα τύπου LR(1)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD) Η Γλώσσα Pascal Χαρακτηριστικά Τύποι Δεδοµένων Δοµή προγράµµατος 1. Βασικές έννοιες Χαρακτηριστικά της γλώσσας Pascal Γλώσσα προγραµµατισµού Συντακτικό Σηµασιολογία Αλφάβητο της γλώσσας Pascal (Σύνολο

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

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

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

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

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

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

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

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

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

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

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία Mεταγλωττιστές 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex Σκοπός: Το μάθημα αυτό αναφέρεται: στις κανονικές εκφράσεις στην δομή και το περιεχόμενο του αρχείου-εισόδου του flex Γενικά Θεωρία Κατά την

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

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

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

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

Αριθμητικά Συστήματα

Αριθμητικά Συστήματα Αριθμητικά Συστήματα Οργάνωση Δεδομένων (1/2) Bits: Η μικρότερη αριθμητική μονάδα ενός υπολογιστικού συστήματος, η οποία δείχνει δύο καταστάσεις, 0 ή 1 (αληθές η ψευδές). Nibbles: Μονάδα 4 bit που παριστά

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

Μοντελοποίηση Υπολογισμού. Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις

Μοντελοποίηση Υπολογισμού. Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις Μοντελοποίηση Υπολογισμού Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις Προβλήματα - Υπολογιστές Δεδομένου ενός προβλήματος υπάρχουν 2 σημαντικά ερωτήματα: Μπορεί να επιλυθεί με χρήση υπολογιστή;

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

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

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

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

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

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

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

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

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό Μάριος Αραποστάθης Καθηγητής πληροφορικής Βαρβάκειου Λύκειου http://users.sch.gr/mariosarapostathis 6.1 Η έννοια του

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

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

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

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

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

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

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 Πάτρα 3/5/2017 Ονοματεπώνυμο:.. Α1. Να γράψετε στην κόλλα σας τον αριθμό

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

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ Α) Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και δίπλα το γράμμα "Σ", αν είναι σωστή, ή το γράμμα "Λ", αν είναι λανθασμένη. (Μονάδες 25) 1. Ένα αδόμητο πρόβλημα είναι ταυτόχρονα και ανοικτό

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

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

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

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

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

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

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

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

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

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

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

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

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

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

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

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

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

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

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

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

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

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

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

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

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

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

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

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

Κεφάλαιο 2: Μεταφραστές

Κεφάλαιο 2: Μεταφραστές Κεφάλαιο 2: Μεταφραστές Αρχές Γλωσσών και Προγραμματισμού Λειτουργία Μετάφρασης ΑΡΧΙΚΗ ΓΛΩΣΣΑ (Source) L A ΓΛΩΣΣΑ ΥΛΟΠΟΙΗΣΗΣ ΜΕΤΑΦΡΑΣΤΗ (Implementation) L Y ΤΕΛΙΚΗ ΓΛΩΣΣΑ (Target) L T Αρχικό Πρόγραμμα

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

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 ΙΣΤΟΡΙΚΑ Παρουσιάστηκε το 1970 από το Niklaus Wirth Προγενέστερη γλώσσα ήταν η Algol 60 Είναι δομημένη γλώσσα προγραμματισμού υψηλού

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

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

Προγραµµατισµός Η/Υ. Μέρος2

Προγραµµατισµός Η/Υ. Μέρος2 Προγραµµατισµός Η/Υ Μέρος2 Περιεχόμενα Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής Αλγόριθμος Ψευδοκώδικας Παραδείγματα Αλγορίθμων Γλώσσες προγραμματισμού 2 Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ii ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ 1. Εισαγωγή - Βασικές έννοιες....1 1.1 Εσωτερική παράσταση δεδομένων....2 1.1.1 Παράσταση θέσης....3 1.1.2 Μετατροπές μεταξύ συστημάτων διαφορετικών βάσεων....5 1.1.3 Οι αριθμητικές

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

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

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

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Η ΓΛΩΣΣΑ PASCAL ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Απλοί ή στοιχειώδης Τ.Δ. Ακέραιος τύπος Πραγματικός τύπος Λογικός τύπος Χαρακτήρας Σύνθετοι Τ.Δ. Αλφαριθμητικός 1. Ακέραιος (integer) Εύρος: -32768 έως 32767 Δήλωση

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

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

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

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

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

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

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

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

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

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

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

Τι είναι το 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++ πρόγραμμα.

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

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

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

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

Η δυαδική σχέση M ( «παράγει σε ένα βήμα» ) ορίζεται ως εξής: (q, w) M (q, w ), αν και μόνο αν w = σw, για κάποιο σ Σ

Η δυαδική σχέση M ( «παράγει σε ένα βήμα» ) ορίζεται ως εξής: (q, w) M (q, w ), αν και μόνο αν w = σw, για κάποιο σ Σ Πεπερασμένα Αυτόματα (ΠΑ) Τα πεπερασμένα αυτόματα είναι οι απλούστερες «υπολογιστικές μηχανές». Δεν έχουν μνήμη, μόνο μία εσωτερική μονάδα με πεπερασμένο αριθμό καταστάσεων. Διαβάζουν τη συμβολοσειρά εισόδου

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

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 2: Mεταφραστές Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Λειτουργία Μετάφρασης ΑΡΧΙΚΗ ΓΛΩΣΣΑ (Source) L A ΓΛΩΣΣΑ

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

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

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

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

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

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

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Καθηγητής Πληροφορικής ΠΕ19 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 6 ο : ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ Η έννοια του προγράμματος

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

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

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών 4ο εξάμηνοσhmμy 6η ενότητα: Αυτόματα, τυπικές γλώσσες, γραμματικές Επιμέλεια διαφανειών: Στάθης Ζάχος, Άρης Παγουρτζής http://www.corelab.ece.ntua.gr/courses/introcs

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

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

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

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

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών

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

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

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

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

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

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

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

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

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

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

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

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Επανάληψη Μαθήματος

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Επανάληψη Μαθήματος ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας Επανάληψη Μαθήματος Το Μάθημα σε μια Διαφάνεια Υπολογιστικά μοντέλα Κανονικές Γλώσσες Ντετερμινιστικά Αυτόματα Μη Ντετερμινιστικά Αυτόματα Κανονικές Εκφράσεις

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στην FORTRAN Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 Fortran FORmula TRANslation: (Μία από τις πρώτες γλώσσες τρίτης γενιάς) Εκδόσεις FORTRAN (1957) FORTRAN II (1958) FORTRAN III

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. Στέφανος Ουγιάρογλου ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Κεφάλαιο 6 «Εισαγωγή στον Προγραμματισμό» Στέφανος Ουγιάρογλου Διαφάνειες από υλικό του Χ. Μουρατίδη Προγραμματισμός Η/Υ Ο προγραμματισμός είναι η διατύπωση

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

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

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

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

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1 ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 03/01/09 Χαράλαμπος Τζόκας 1 Πρόγραμμα - Προγραμματισμός Πρόγραμμα: Σύνολο εντολών που πρέπει να δοθούν στον Υπολογιστή, ώστε να υλοποιηθεί ο αλγόριθμος της επίλυσης

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό 6.1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, τρία σημαντικά στάδια: 1. Τον ακριβή προσδιορισμό του προβλήματος. 2. Την ανάπτυξη

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