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

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

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

Transcript

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

2 Λεκτικός Αναλυτής Ο λεκτικός αναλυτής είναι η πρώτη φάση της μεταγλώττισης. Σκοπός του είναι να διαβάσει μία είσοδο από χαρακτήρες και να παράξει μία σειρά από λεκτικές μονάδες (tokens) που θα χρησιμοποιηθούν στην συνέχεια για την συντακτική ανάλυση. Χαροκόπειο Πανεπιστήμιο 2/63

3 Λεκτικός Αναλυτής και Συντακτικός Αναλυτής source program lexical analyzer token get next token parser symbol table Ο λεκτικός αναλυτής υλοποιείται συνήθως ως υπορουτίνα του συντακτικού αναλυτή. Ο συντακτικός αναλυτής ζητάει από τον λεκτικό αναλυτή μία καινούρια λεκτική μονάδα και ο λεκτικός αναλυτής διαβάζει χαρακτήρες μέχρι να μπορεί να αναγνωρίσει κάποια λεκτική μονάδα. Χαροκόπειο Πανεπιστήμιο 3/63

4 Επιπλέον Λειτουργίες του Λεκτικού Αναλυτή Συνήθως ο λεκτικός αναλυτής κάνει και μερικές έξτρα λειτουργίες που αφορούν την είσοδο όπως: αφαίρεση σχολίων αφαίρεση κενών, νέων γραμμών και tabs συσχέτιση λεκτικών μονάδων και λαθών με αριθμό γραμμής υλοποίηση preprocessing macros Χαροκόπειο Πανεπιστήμιο 4/63

5 Διαχωρισμός Λεκτικής και Συντακτικής Ανάλυσης Για πιο λόγο διαχωρίζουμε την λεκτική και την συντακτική ανάλυση; 1 απλοποίηση 2 πιο αποδοτικός μεταγλωττιστής 3 μεταφερτότητα (portability), ειδικά σύμβολα και παραξενιές γλώσσας παραμένουν μόνο στον λεξικό αναλυτή Χαροκόπειο Πανεπιστήμιο 5/63

6 Λεκτικές Μονάδες, Περιγραφές και Λεξήματα Ο λεκτικός αναλυτής επιστρέφει λεκτικές μονάδες (tokens). Κάθε λεκτική μονάδα αντιστοιχεί σε ένα σύνολο από συμβολοσειρές. Το σύνολο αυτό περιγράφεται από έναν κανόνα που ονομάζεται περιγραφή (pattern). Ένα λέξημα (lexeme) είναι μια συμβολοσειρά για την οποία ισχύει μια περιγραφή για μια λεκτική μονάδα. Χαροκόπειο Πανεπιστήμιο 6/63

7 Λεκτικές Μονάδες, Περιγραφές και Λεξήματα Token Sample Lexeme Informal Pattern Description const const const if if if relation <, <=,, <>, >, >= < ή <= ή = ή <> ή >= ή > id pi, count, d2 γράμμα ακολουθούμενο από γράμμα ή ψηφία num 3.14, 0, 6.02e23 οποιαδήποτε αριθμητική σταθερά literal "core dumped" οποιοσδήποτε χαρακτήρας μεταξύ " και " εκτός από " Οι λεκτικές μονάδες είναι τα τερματικά σύμβολα της γραμματικής του προγράμματος. Χαροκόπειο Πανεπιστήμιο 7/63

8 Λεκτικές Μονάδες και Γλώσσες Προγραμματισμού Στις περισσότερες γλώσσες προγραμματισμού τα παρακάτω είναι λεκτικές μονάδες: λέξεις κλειδιά (keywords) τελεστές (operators) αναγνωριστικά (identifiers) σταθερές (constants) συμβολοσειρές (string literals) παρενθέσεις, κόμμα, κ.τ.λ. (punctuation symbols) Χαροκόπειο Πανεπιστήμιο 8/63

9 Λεξήματα και Χαρακτηριστικά Γνωρίσματα Επειδή μια λεκτική μονάδα μπορεί να είναι οποιοδήποτε λέξημα που ακολουθεί την περιγραφή της λεκτικής μονάδας, χρειαζόμαστε έναν τρόπο να ξέρουμε σε τι πραγματικά αντιστοιχεί. π.χ η περιγραφή αριθμός num ισχύει και για την συμβολοσειρά 111 και για την 222. Για αυτό τον λόγο αντιστοιχούμε συνήθως την λεκτική μονάδα και με μια τιμή χαρακτηριστικού γνωρίσματος (attribute value). Χαροκόπειο Πανεπιστήμιο 9/63

10 Λεξήματα και Χαρακτηριστικά Γνωρίσματα Καθώς αναγνωρίζουμε λεκτικές μονάδες προσθέτουμε στοιχεία σε μια δομή που ονομάζεται πίνακας συμβόλων και επιστρέφουμε ζευγάρια λεξημάτων και δεικτών σε στοιχεία του πίνακα συμβόλων. E = M * C ** 2 η παραπάνω πρόταση σε Fortran θα γινόταν μετά τον λεκτικό αναλυτή (id, pointer to symbol-table for E) (assign_op,) (id, pointer to symbol-table for M) (mult_op,) (id, pointer to symbol-table for C) (exp_op,) (num, integer value 2) Επιπλέον πληροφορία μπορεί να είναι η γραμμή εμφάνισης ώστε να βοηθήσει στην εκτύπωση φιλικών μηνυμάτων λαθών. Χαροκόπειο Πανεπιστήμιο 10/63

11 Συμβολοσειρές Αλφάβητο Ένα αλφάβητο (alphabet) είναι ένα πεπερασμένο σύνολο συμβόλων. π.χ το {0, 1} είναι το δυαδικό αλφάβητο, ενώ το ASCII είναι ένα κλασσικό αλφάβητο στους υπολογιστές. Συμβολοσειρά Μια συμβολοσειρά (string) πάνω σε ένα αλφάβητο είναι μια πεπερασμένη ακολουθία συμβόλων από το αλφάβητο. Συμβολίζουμε με ϵ την κενή συμβολοσειρά. Για μια συμβολοσειρά s συμβολίζουμε το μήκος της με s. π.χ banana = 6 Χαροκόπειο Πανεπιστήμιο 11/63

12 Πράξεις σε Συμβολοσειρές παράθεση (concatenation) Εαν x και y είναι συμβολοσειρές, τότε η παράθεση τους xy είναι η συμβολοσειρά που προκύπτει προσθέτοντας την y στο τέλος της x. π.χ αν x=foo και y=bar τότε xy=foobar Χαροκόπειο Πανεπιστήμιο 12/63

13 Πράξεις σε Συμβολοσειρές παράθεση (concatenation) Εαν x και y είναι συμβολοσειρές, τότε η παράθεση τους xy είναι η συμβολοσειρά που προκύπτει προσθέτοντας την y στο τέλος της x. π.χ αν x=foo και y=bar τότε xy=foobar Εάν φανταστούμε την παράθεση ως πολλαπλασιασμό, μπορούμε να ορίσουμε την ύψωση σε δύναμη. Δυνάμεις s i = { ϵ αν i = 0, s i 1 s αν i > 0. και άρα s 0 = ϵ, s 1 = s, s 2 = ss, s 3 = sss, Χαροκόπειο Πανεπιστήμιο 12/63

14 Ορισμοί πρόθεμα (prefix) Ένα πρόθεμα μιας συμβολοσειράς s προκύπτει αφαιρώντας μηδέν ή περισσότερα σύμβολα από το τέλος της s. π.χ η συμβολοσειρά ban είναι πρόθεμα της banana επίθεμα (suffix) Ένα επίθεμα μιας συμβολοσειράς s προκύπτει αφαιρώντας μηδέν ή περισσότερα σύμβολα από την αρχή της s. π.χ η συμβολοσειρά nana είναι επίθεμα της banana Χαροκόπειο Πανεπιστήμιο 13/63

15 Ορισμοί υποσυμβολοσειρά (substring) Μια υποσυμβολοσειρά μιας συμβολοσειράς s προκύπτει αφαιρώντας ένα πρόθεμα και ένα επίθεμα από την s. γνήσιο πρόθεμα, επίθεμα ή υποσυμβολοσειρά Έστω x ένα πρόθεμα, επίθεμα ή υποσυμβολοσειρά μιας συμβολοσειράς s. Ονομάζετε γνήσιο(α) σε περίπτωση που x ϵ και x s. Χαροκόπειο Πανεπιστήμιο 14/63

16 Ορισμοί υποακολουθία (subsequence) Οποιαδήποτε συμβολοσειρά προκύπτει σβήνοντας μηδέν ή περισσότερα σύμβολα, όχι υποχρεωτικά συνεχόμενα, από την συμβολοσειρά s. π.χ η συμβολοσειρά baaa είναι υποακολουθία της banana Χαροκόπειο Πανεπιστήμιο 15/63

17 Γλώσσες Γλώσσα Οποιοδήποτε αριθμήσιμο σύνολο συμβολοσειρών ενός αλφαβήτου. παραδείγματα {} {ϵ} {foo, bar} Όλα τα συντακτικά σωστά προγράμματα Java Όλες οι γραμματικά σωστές προτάσεις αγγλικών Χαροκόπειο Πανεπιστήμιο 16/63

18 Γλώσσες ένωση γλωσσών (union) L 1 L 2 = {s s L 1 s L 2 } Χαροκόπειο Πανεπιστήμιο 17/63

19 Γλώσσες ένωση γλωσσών (union) L 1 L 2 = {s s L 1 s L 2 } παράθεση γλωσσών (concatenation) L 1L 2 = {st s L 1 t L 2} Χαροκόπειο Πανεπιστήμιο 17/63

20 Γλώσσες ένωση γλωσσών (union) L 1 L 2 = {s s L 1 s L 2 } παράθεση γλωσσών (concatenation) L 1L 2 = {st s L 1 t L 2} "δυνάμεις" L i = { {ϵ} αν i = 0, L i 1 L αν i > 0. Χαροκόπειο Πανεπιστήμιο 17/63

21 Γλώσσες ένωση γλωσσών (union) L 1 L 2 = {s s L 1 s L 2 } παράθεση γλωσσών (concatenation) L 1L 2 = {st s L 1 t L 2} "δυνάμεις" L i = { {ϵ} αν i = 0, L i 1 L αν i > 0. Κλειστότητα ή άστρο του Kleene (Kleene closure) L = L i i=0 Μηδέν ή περισσότερες παραθέσεις της γλώσσας L. Χαροκόπειο Πανεπιστήμιο 17/63

22 Γλώσσες ένωση γλωσσών (union) L 1 L 2 = {s s L 1 s L 2 } παράθεση γλωσσών (concatenation) L 1L 2 = {st s L 1 t L 2} "δυνάμεις" L i = { {ϵ} αν i = 0, L i 1 L αν i > 0. Κλειστότητα ή άστρο του Kleene (Kleene closure) L = L i i=0 Μηδέν ή περισσότερες παραθέσεις της γλώσσας L. Θετική κλειστότητα (positive closure) L + = L i i=1 Μία ή περισσότερες παραθέσεις της γλώσσας L, δηλαδή L + = LL. Χαροκόπειο Πανεπιστήμιο 17/63

23 Παραδείγματα με Γλώσσες Έστω L = {A, B,..., Z, a, b,..., z} και D = {0, 1,..., 9} L D είναι το σύνολο όλων των γραμμάτων και ψηφίων LD είναι το σύνολο όλων των συμβολοσειρών που αποτελούνται από ένα γράμμα ακολουθούμενο από ένα ψηφίο L 4 είναι το σύνολο όλων των συμβολοσειρών που αποτελούνται από 4 γράμματα L είναι το σύνολο όλων των συμβολοσειρών από γράμματα, συμπεριλαμβανομένου και της κενής συμβολοσειράς ϵ L(L D) είναι το σύνολο όλων των συμβολοσειρών από γράμματα και ψηφία που ξεκινούν από γράμμα D + είναι το σύνολο όλων των συμβολοσειρών από ένα ή περισσότερα ψηφία Χαροκόπειο Πανεπιστήμιο 18/63

24 Κανονικές Εκφράσεις και Γλώσσες Οι κανονικές εκφράσεις είναι ένας τρόπος αναπαράστασης των γλωσσών που ονομάζονται κανονικές γλώσσες. Έστω ένα αλφάβητο Σ. Οι παρακάτω κανόνες ορίζουν κανονικές εκφράσεις επάνω στο Σ. 1 ϵ είναι κανονική έκφραση για το σύνολο {ϵ} 2 εάν a Σ, τότε a είναι η κανονική έκφραση για το σύνολο {a}. 3 αν r και s είναι κανονικές εκφράσεις για τις γλώσσες R και S τότε 1 (r) (s) είναι κανονική έκφραση της γλώσσας R S 2 (r)(s) είναι κανονική έκφραση της γλώσσας RS 3 (r) είναι κανονική έκφραση της γλώσσας R 4 (r) είναι κανονική έκφραση της γλώσσας R Χαροκόπειο Πανεπιστήμιο 19/63

25 Κανονικές Εκφράσεις και Γλώσσες Ο ορισμός των κανονικών εκφράσεων είναι αναδρομικός. Για να μην χρησιμοποιούμε συνέχεια παρενθέσεις μπορούμε να υποθέσουμε τις εξής προτεραιότητες: 1 ο μοναδιαίος τελεστής έχει την μεγαλύτερη προτεραιότητα και είναι αριστερά προσεταιριστικός 2 η παράθεση έχει την δεύτερη υψηλότερη προτεραιότητα και είναι αριστερά προσεταιριστική 3 η πράξη έχει την χαμηλότερη προτεραίοτητα και είναι αριστερά προσεταιριστική π.χ αντί να γράψουμε (a) ((b) (c)) μπορούμε πλέον να γράψουμε a b c, δηλαδή το σύνολο των συμβολοσειρών που είναι είτε ένα a είτε μηδέν ή περισσότερα b ακολουθούμενα από ένα c. Χαροκόπειο Πανεπιστήμιο 20/63

26 Παραδείγματα Έστω Σ = {a, b}. 1 η κανονική έκφραση a b αναπαριστά το σύνολο {a, b} 2 η κανονική έκφραση (a b)(a b) αναπαριστά το σύνολο {aa, ab, ba, bb} 3 η κανονική έκφραση a αναπαριστά το σύνολο {ϵ, a, aa, aaa, } 4 η κανονική έκφραση (a b) αναπαριστά το σύνολο συμβολοσειρών που περιέχουν μηδέν ή περισσότερα a ή b Εάν δύο κανονικές εκφράσεις r και s αναπαριστούν την ίδια γλώσσα λέμε πως είναι ισοδύναμες και γράφουμε r = s. π.χ (a b) = (b a) Χαροκόπειο Πανεπιστήμιο 21/63

27 Αλγεβρικές Ιδιότητες Κανονικών Εκφράσεων r s = s r η είναι αντιμεταθετική r (s t) = (r s) t η είναι προσεταιριστική (rs)t = r(st) η παράθεση είναι προσεταιριστική r(s t) = rs rt επιμεριστική ιδιότητα παράθεσης (s t)r = sr tr ως προς την ϵr = r η ϵ είναι το ουδέτερο στοιχείο rϵ = r ως προς την παράθεση r = (r ϵ) η ϵ είναι υποχρεωτικά στην κλειστότητα r = r η είναι αυτοπαθητική Χαροκόπειο Πανεπιστήμιο 22/63

28 Κανονικοί Ορισμοί Για ευκολία θέλουμε να δίνουμε ονόματα σε κανονικές εκφράσεις και να χρησιμοποιούμε αυτά τα ονόματα ως σύμβολα ώστε να φτιάχνουμε πιο σύνθετες κανονικές εκφράσεις. Εάν Σ είναι ένα αλφάβητο από βασικά σύμβολα, ένας κανονικός ορισμός είναι μια σειρά από ορισμούς της μορφής d 1 r 1 d 2 r 2 d n r n όπου κάθε d i είναι ένα ξεχωριστό όνομα και κάθε r i είναι μια κανονική έκφραση με τα σύμβολα Σ {d 1,..., d i 1 }. Χαροκόπειο Πανεπιστήμιο 23/63

29 Κανονικοί Ορισμοί Παράδειγμα Για να εκφράσουμε προσδιοριστικά τα οποία είναι συμβολοσειρές που περιέχουν γράμματα και ψηφία και ξεκινούν με γράμμα letter A B Z a b z digit id letter ( letter digit ) * Χαροκόπειο Πανεπιστήμιο 24/63

30 Κανονικοί Ορισμοί Παράδειγμα Για να εκφράσουμε μη προσημασμένους αριθμούς της μορφής: e e 4 digit digits digit digit* optional_fraction. digits ϵ optional_exponent ( e ( + ϵ ) digits ) ϵ num digits optional_fraction optional_exponent Χαροκόπειο Πανεπιστήμιο 25/63

31 Συντομεύσεις Μερικές κατασκευές προκύπτουν τόσο συχνά που έχει νόημα να δημιουργήσουμε συντομεύσεις: 1 Ένα ή περισσότερα Αν r είναι μια κανονική έκφραση που περιγράφει την γλώσσα L(r) τότε r + περιγράφει την γλώσσα L(r) + 2 Μηδέν ή μια φορά Η έκφραση r? είναι συντόμευση για r ϵ 3 Κλάσεις χαρακτήρων Η έκφραση [abc] όπου a, b, c είναι σύμβολα του αλφαβήτου περιγράφουν την κανονική έκφραση a b c Η έκφραση [a z] περιγράφει την κανονική έκφραση a b z Με τον τρόπο αυτό τα προσδιοριστικά (identifiers) μπορούν να περιγραφούν ως [A Za z][a Za z0 9] Χαροκόπειο Πανεπιστήμιο 26/63

32 Μη Κανονικές Γλώσσες Δεν μπορούμε να περιγράψουμε όλες τις γλώσσες με κανονικές εκφράσεις. π.χ η γλώσσα L = {a n b n } όλων των συμβολοσειρών που περιέχουν έναν αριθμό από a που ακολουθείται από τον ίδιο αριθμό από b δεν μπορεί να περιγραφεί από μια κανονική έκφραση. Χαροκόπειο Πανεπιστήμιο 27/63

33 Παράδειγμα Αριθμητικές σταθερές χωρίς πρόσημο στην C. ακέραιο μέρος που δεν αρχίζει με μηδέν εκτός αν είναι μηδέν προαιρετικά υποδιαστολή και κλασματικό μέρος προαιρετικα εκθέτης με ή χωρίς πρόσημο ([1 9][0 9] 0)(.[0 9] + )?((E e)(+ )?[0 9] + )? Προσοχή, στις περισσότερες υλοποιήσεις των κανονικών εκφράσεων (regular expressions) η τελεία είναι ειδικός χαρακτήρας που συμβολίζει οποιοδήποτε χαρακτήρα. Σε τέτοια περίπτωση πρέπει να κάνουμε escape με \. Χαροκόπειο Πανεπιστήμιο 28/63

34 Αναγνώριση Γλωσσών Λέμε πως ένα πρόγραμμα αναγνωρίζει (recognizes) μια γλώσσα L εαν όταν πέρνει ως είσοδο μια συμβολοσειρά x L επιστρέφει "ναι" και αν x / L επιστρέφει "όχι". Χαροκόπειο Πανεπιστήμιο 29/63

35 Μη-ντετερμινιστικά Πεπερασμένα Αυτόματα Non-deterministic Finite Automata Ένα μη-ντετερμινιστικό πεπερασμένο αυτόματο (NFA) είναι ένα μαθηματικό μοντέλο με 1 ένα σύνολο καταστάσεων S (states) 2 ένα σύνολο συμβόλων εισόδου Σ (input symbol alphabet) 3 μια συνάρτηση μετάβασης που αντιστοιχεί ζευγάρια κατάστασης-συμβόλου σε σύνολα από καταστάσεις (transition function) 4 μια κατάσταση s 0 που ονομάζεται αρχική κατάσταση (start state) 5 ένα σύνολο καταστάσεων F που θεωρούνται καταστάσεις αποδοχής (accepting states) Χαροκόπειο Πανεπιστήμιο 30/63

36 Μη-ντετερμινιστικά Πεπερασμένα Αυτόματα Σχηματικά Ένα NFA μπορεί να περιγραφεί σχηματικά ως ένα κατευθυνόμενο γράφημα μετάβασης με ετικέτες (labels) στις ακμές. π.χ το γράφημα μετάβασης ενός NFA για την γλώσσα (a b) abb φαίνεται παρακάτω: a start a b b b Ένα NFA δέχεται (accepts) μια συμβολοσειρά εισόδου x αν και μόνο αν υπάρχει ένα μονοπάτι από την αρχική κατάσταση σε μια κατάσταση αποδοχής, τέτοιο ώστε οι ετικετών κατά μήκος των ακμών του μονοπατιού να δίνουν της συμβολοσειρά x. Χαροκόπειο Πανεπιστήμιο 31/63

37 Μη-ντετερμινιστικά Πεπερασμένα Αυτόματα Γλώσσα Αυτόματου Ένα NFA δέχεται (accepts) μια συμβολοσειρά εισόδου x αν και μόνο αν υπάρχει ένα μονοπάτι από την αρχική κατάσταση σε μια κατάσταση αποδοχής, τέτοιο ώστε οι ετικετών κατά μήκος των ακμών του μονοπατιού να δίνουν της συμβολοσειρά x. π.χ το γράφημα μετάβασης ενός NFA για την γλώσσα (a b) abb φαίνεται παρακάτω: a start a b b b Ένα αυτόματα ορίζει μια γλώσσα, το σύνολο των συμβολοσειρών που δέχεται το αυτόματο. Χαροκόπειο Πανεπιστήμιο 32/63

38 Μη-ντετερμινιστικά Πεπερασμένα Αυτόματα Παράδειγμα NFA που δέχεται την γλώσσα aa bb a ɛ a 1 2 start 0 ɛ b 3 4 b Χαροκόπειο Πανεπιστήμιο 33/63

39 Ντετερμινιστικά Πεπερασμένα Αυτόματα Deterministic Finite Automata Ένα ντετερμινιστικό πεπερασμένο αυτόματο (DFA) είναι μια ειδική περίπτωση ενός μη-ντετερμινιστικού πεπερασμένου αυτόματου όπου 1 δεν υπάρχουν ϵ-μεταβάσεις, δηλαδή στο γράφημα μετάβασης δεν υπάρχουν ακμές με ετικέτα ϵ 2 για κάθε κατάσταση s και σύμβολο εισόδου a, υπάρχει το πολύ μια εξερχόμενη ακμή από τον κόμβο s με ετικέτα a Είναι πολύ εύκολο να ελέγξουμε αν ένα DFA δέχεται μία συμβολοσειρά x μιας και το μονοπάτι που πρέπει να ακολουθήσουμε είναι μοναδικό. Χαροκόπειο Πανεπιστήμιο 34/63

40 Ντετερμινιστικά Πεπερασμένα Αυτόματα Παράδειγμα π.χ το γράφημα μετάβασης ενός DFA για την γλώσσα (a b) abb φαίνεται παρακάτω: b b start a b b a a a Χαροκόπειο Πανεπιστήμιο 35/63

41 Πεπερασμένα Αυτόματα, Κανονικές Εκφράσεις και Υπολογιστές Έχοντας ένα NFA μπορούμε να κατασκευάσουμε ένα DFA που αναγνωρίζει την ίδια γλώσσα (subset construction algorithm). Με αυτό τον τρόπο μπορούμε να υλοποιήσουμε ένα NFA στον υπολογιστή. Η ιδέα είναι να φτιάξουμε ένα καινούριο DFA όπου κάθε κατάσταση του να αντιστοιχεί σε ένα σύνολο καταστάσεων του αρχικού NFA. Το μέγεθος του DFA αυτού μπορεί να είναι εκθετικό σε σχέση με το μέγεθος του NFA. Συνήθως όμως στην πράξη δεν παρουσιάζεται η χειρότερη περίπτωση. Έχοντας ως είσοδο μια κανονική έκφραση r μπορούμε να κατασκευάσουμε ένα ισοδύναμο NFA (Thompson's construction). Χαροκόπειο Πανεπιστήμιο 36/63

42 Μετατροπή Κανονικών Εκφράσεων σε NFA Σπάμε μια κανονική έκφραση r σε μικρότερα μέρη και κατασκευάζουμε επιμέρους NFA. Για την έκφραση ϵ φτιάχνουμε το NFA start i ɛ f Για την έκφραση a Σ φτιάχνουμε το NFA start i a f Χαροκόπειο Πανεπιστήμιο 37/63

43 Μετατροπή Κανονικών Εκφράσεων σε NFA Σπάμε μια κανονική έκφραση r σε μικρότερα μέρη και κατασκευάζουμε επιμέρους NFA. Για την έκφραση r = s t κατασκευάζουμε τα NFAs N(s) και N(t) για τις κανονικές εκφράσεις s και t και τα συνδέουμε ως ɛ N(s) ɛ start i f ɛ ɛ N(t) Χαροκόπειο Πανεπιστήμιο 38/63

44 Μετατροπή Κανονικών Εκφράσεων σε NFA Σπάμε μια κανονική έκφραση r σε μικρότερα μέρη και κατασκευάζουμε επιμέρους NFA. Για την έκφραση r = st κατασκευάζουμε τα NFAs N(s) και N(t) για τις κανονικές εκφράσεις s και t και τα συνδέουμε ως start i N(s) N(t) f Χαροκόπειο Πανεπιστήμιο 39/63

45 Μετατροπή Κανονικών Εκφράσεων σε NFA Σπάμε μια κανονική έκφραση r σε μικρότερα μέρη και κατασκευάζουμε επιμέρους NFA. Για την έκφραση r = s κατασκευάζουμε το NFA N(s) ως ɛ start i ɛ N(s) ɛ f ɛ Χαροκόπειο Πανεπιστήμιο 40/63

46 Μετατροπή Κανονικών Εκφράσεων σε NFA Άσκηση Φτιάξτε ένα μη-ντετερμινιστικό αυτόματο (NFA) για την κανονική έκφραση r = (a b) abb. Χαροκόπειο Πανεπιστήμιο 41/63

47 Μετατροπή NFA σε DFA Subset Construction Algorithm Κεντρική Ιδέα Κάθε κατάσταση του DFA αντιστοιχεί σε ένα σύνολο καταστάσεων του NFA. Διαβάζοντας την είσοδο a 1 a 2 a n το DFA είναι σε μια κατάσταση που αντιστοιχεί στο σύνολο των καταστάσεων που θα μπορούσε να βρίσκεται το NFA. Ο αριθμός των καταστάσεων του DFA μπορεί να είναι εκθετικός ως προς τον αριθμό καταστάσεων του NFA. Στην περίπτωση της λεκτικής ανάλυσης όμως, το DFA έχει συνήθως το ίδιο περίπου μέγεθος με το NFA. Χαροκόπειο Πανεπιστήμιο 42/63

48 Μετατροπή NFA σε DFA Subset Construction Algorithm ϵ closure(s) ϵ closure(t) move(t, a) Σύνολο καταστάσεων του NFA που είναι προσβάσιμες από την κατάσταση s μόνο με ϵ-μεταβάσεις. Σύνολο καταστάσεων του NFA που είναι προσβάσιμες από την κατάσταση s T μόνο με ϵ-μεταβάσεις. Σύνολο καταστάσεων του NFA που υπάρχει μετάβαση μέσω του συμβόλου a από μια κατάσταση s T. Χαροκόπειο Πανεπιστήμιο 43/63

49 Μετατροπή NFA σε DFA Subset Construction Algorithm Αρχική κατάσταση Πριν διαβάσει κάποιο σύμβολο το NFA μπορεί να βρίσκεται στις καταστάσεις ϵ closure(s 0 ) όπου s 0 είναι η αρχική κατάσταση. Αρχική κατάσταση του DFA είναι το ϵ closure(s 0 ). Αναγωγή Έστω πως το NFA μπορεί να είναι στο σύνολο καταστάσεων T. Εαν διαβάσουμε το επόμενο σύμβολο a, τότε μπορεί να πάει στις καταστάσεις move(t, a). Μετά όμως μπορεί να κάνει και ϵ-μετάβαση και άρα μπορεί να πάει στις καταστάσεις ϵ closure(move(t, a)). Καταστάσεις Αποδοχής Καταστάσεις αποδοχής του DFA είναι όλες οι καταστάσεις που περιέχουν τουλάχιστον μία κατάσταση αποδοχής του NFA. Χαροκόπειο Πανεπιστήμιο 44/63

50 Εργαλεία Παραγωγής Λεκτικών Αναλυτών Η ύπαρξη όλων αυτών των θεωρητικών αποτελεσμάτων μας επιτρέπουν να κατασκευάσουμε εργαλεία που να αυτοματοποιούν την λειτουργία κατασκευής λεκτικών αναλυτών. Το πρόγραμμα lex είναι ένα πρόγραμμα παραγωγής λεκτικών αναλυτών (lexer ή scanner) Χαροκόπειο Πανεπιστήμιο 45/63

51 Lex Δέχεται ως είσοδο μια περιγραφή του λεκτικού αναλυτή στην μορφή p 1 {action 1 } p 1 {action 2 }.. p n {action n } όπου κάθε p i είναι μια κανονική έκφραση και κάθε action i είναι ένα κομμάτι προγράμματος που πρέπει να εκτελεστεί όταν ένα λέξημα που αντιστοιχεί στο p i βρίσκεται στην είσοδο. Εαν έχουμε πάνω από μια αναγνώριση τότε το μακρύτερο λέξημα επιλέγεται. Αν υπάρχουν δύο κανόνες που αναγνωρίζουν το μακρύτερο λέξημα, ο πρώτος εκτελείται. Χαροκόπειο Πανεπιστήμιο 46/63

52 Lex Lex specification Lex compiler transition table lexeme input buffer FA simulator transition table Χαροκόπειο Πανεπιστήμιο 47/63

53 Υλοποίηση Συντακτικού Αναλυτή με Lex Για τους σκοπούς του μαθήματος θα χρησιμοποιήσουμε Java και άρα θα μιλήσουμε για το εργαλείο JFlex που μπορείτε να κατεβάσετε από την διεύθυνση Ανεξάρτητα από την γλώσσα προγραμματισμού τα εργαλεία τύπου Lex λειτουργούν με τον ίδιο τρόπο. Χαροκόπειο Πανεπιστήμιο 48/63

54 Μορφή Προγράμματος JFLex User code %% Options and declarations %% Rules and actions Χαροκόπειο Πανεπιστήμιο 49/63

55 JFlex User code Το πρώτο μέρος περιέχει κώδικα που αντιγράφεται αυτούσιος πριν από τον κώδικα που παράγει αυτόματα ο JFlex. Με αυτό τον τρόπο μπορούμε να κάνουμε import βιβλιοθήκες, κ.τ.λ Χαροκόπειο Πανεπιστήμιο 50/63

56 JFlex 1ο Μέρος 1 / * HUA Compilers Course Lexer Example * / 2 3 import static java. lang. System. out ; 4 5 %% Χαροκόπειο Πανεπιστήμιο 51/63

57 JFlex Options and Declarations Στο δεύτερο μέρος μπορούμε να καθορίσουμε την λειτουργία του αναλυτή που θα δημιουργηθεί μέσω διαφόρων επιλογών να δηλώσουμε καταστάσεις (states) και να ορίσουμε macros Χαροκόπειο Πανεπιστήμιο 52/63

58 JFlex Options Μερικές επιλογές του JFlex είναι %class Lexer ονομάζει την κλάση που παράγει ως Lexer %unicode χρησιμοποιεί unicode για την κωδικοποίηση των χαρακτήρων %public η παραγώμενη κλάση είναι public %line ενεργοποιεί την μέτρηση γραμμών (yyline) %standalone δημιουργεί και main συνάρτηση %{... αντιγράφει αυτούσιο κώδικα μέσα στην κλάση %} Για περισσότερα διαβάστε το manual την ιστοσελίδα του JFlex. Χαροκόπειο Πανεπιστήμιο 53/63

59 Υλοποιήσεις Κανονικών Εκφράσεων Στις περισσότερες υλοποιήσεις κανονικών εκφράσεων υπάρχουν μερικές διαφοροποιήσεις σε σχέση με την θεωρία: a ο χαρακτήρας a. οποιοσδήποτε χαρακτήρας εκτός από την αλλαγή γραμμής \x αν x ένα από a, b, f, n, t, r, v ή 0 τότε όπως στην γλώσσα C, αλλιώς ο ίδιος ο χαρακτήρας x \123 ο χαρακτήρας ASCII με οκταδική τιμή 123 \x3f ο χαρακτήρας ASCII με δεκαεξαδική τιμή 3F "abc" συμβολοσειρά abc [abc] ένας από τους χαρακτήρες a, b, c [a z] ένας από τους χαρακτήρες a έως z [af kz] ένας από τους χαρακτήρες a, f έως k, z [ˆa z] ένας από τους χαρακτήρες εκτός όσων ανήκουν στην περιοχή a έως z {name} η κανονική έκφραση με όνομα name rs παράθεση των κανονικών εκφράσεων r και s r s διάζευξη των κανονικών εκφράσεων r και s (r) κανονική έκφραση r Χαροκόπειο Πανεπιστήμιο 54/63

60 Υλοποιήσεις Κανονικών Εκφράσεων Στις περισσότερες υλοποιήσεις κανονικών εκφράσεων υπάρχουν μερικές διαφοροποιήσεις σε σχέση με την θεωρία: r η r επαναλαμβάνεται μηδέν ή περισσότερες φορές r+ η r επαναλαμβάνεται μία ή περισσότερες φορές r? η r επαναλαμβάνεται μηδέν ή μια φορά (προαιρετική) r{3} η r επαναλαμβάνεται ακριβώς 3 φορές r{3, 5} η r επαναλαμβάνεται από 3 έως 5 φορές r{4, } η r επαναλαμβάνεται 4 ή περισσότερες φορές!r τα πάντα εκτός από την r r τα πάντα μέχρι και την πρώτη εμφάνιση (συμπεριλαμβανομένης) της r ˆr η r αλλά μόνο στην αρχή της γραμμής r$ η r αλλά μόνο στο τέλος της γραμμής << EOF >> τέλος του αρχείου εισόδου η κανονική έκφραση r αλλά μόνο αν ακολουθεί η κανονική r/s έκφραση s η κανονική έκφραση r αλλά μόνο αν η τρέχουσα αρχική < S > r κατάσταση είναι η S η κανονική έκφραση r αλλά μόνο αν η τρέχουσα αρχική < S 1, S 2, S 3 > r κατάσταση είναι μία από τις S 1, S 2, S 3 < > r η κανονική έκφραση r σε οποιαδήποτε αρχική κατάσταση Χαροκόπειο Πανεπιστήμιο 55/63

61 JFlex Declarations Μπορούμε να δηλώσουμε ονόματα για κανονικές εκφράσεις: LineTerminator = \ r \ n \ r \ n WhiteSpace = { LineTerminator } [ \ t \ f ] Identifier = [ : jletter : ] [ : jletterdigit : ] * DecIntegerLiteral = 0 [1 9][0 9]* και επίσης να ορίσουμε καταστάσεις (states) %state STRING Χαροκόπειο Πανεπιστήμιο 56/63

62 JFlex 2ο Μέρος 6 %class MyLexer 7 %unicode 8 %public 9 %line 10 %standalone %{ 13 StringBuffer string = new StringBuffer ( ) ; 14 %} LineTerminator = \ r \ n \ r \ n 17 WhiteSpace = { LineTerminator } [ \ t \ f ] Comment = "/*" [ ^ * ] ~"*/" "/*" "*"+ "/" Identifier = [ : jletter : ] [ : jletterdigit : ] * DecIntegerLiteral = 0 [1 9][0 9]* %state STRING %% Χαροκόπειο Πανεπιστήμιο 57/63

63 JFlex Rules and Actions Στο τρίτο μέρος μπορούμε να δώσουμε κανόνες και λειτουργίες που πρέπει να συμβούν κατά περίπτωση. Χαροκόπειο Πανεπιστήμιο 58/63

64 JFlex 3ο Μέρος 28 <YYINITIAL> "int" { out. println ( "INT" ) ; } 29 <YYINITIAL> "char" { out. println ( "CHAR" ) ; } 30 <YYINITIAL> "float" { out. println ( "FLOAT" ) ; } 31 <YYINITIAL> "return" { out. println ( "RETURN" ) ; } 32 <YYINITIAL> "break" { out. println ( "BREAK" ) ; } <YYINITIAL> { 35 { Identifier } { out. println ( "id:" + yytext ( ) ) ; } {DecIntegerLiteral } { out. println ( "decimal:" + yytext ( ) ) ; } \ " { string.setlength(0); yybegin(string); } "=" { out.println("assign"); } 42 "==" { out.println("equals"); } 43 "+" { out.println("plus"); } 44 " " { out.println("minus"); } 45 " ( " { out.println("left_parenthesis"); } 46 " ) " { out.println("right_parenthesis"); } 47 "," { out.println("comma"); } 48 "*" { out.println("star"); } 49 " [ " { out.println("left_square_bracket"); } 50 " ] " { out.println("right_square_bracket"); } 51 " { " { out.println("left_curly_bracket"); } 52 " } " { out.println("right_curly_bracket"); } 53 " ; " { out.println("semicolon"); } {Comment} { /* ignore */ } 56 {WhiteSpace} { /* ignore */ } 57 } Χαροκόπειο Πανεπιστήμιο 59/63

65 JFlex 3ο Μέρος 58 <STRING> { 59 \ " { yybegin(yyinitial); 60 out.println("string : " + string.tostring() ); 61 } [^\n\r\"\\]+ { string.append(yytext()); } 64 \\t { string.append('\t'); } 65 \\n { string.append('\n'); } \\r { string.append('\r'); } 68 \\\" { string.append('\"'); } 69 \\ { string.append('\\'); } 70 } \n { throw new Error("Illegal character <"+ 73 yytext()+">"); } 74 } Χαροκόπειο Πανεπιστήμιο 60/63

66 JFlex Παράδειγμα Αντιγράψτε τον κώδικα του παραδείγματος σε ένα αρχείο simple.flex και εκτελέστε τον JFlex. Reading "simple.flex" Constructing NFA : 150 states in NFA Converting NFA to DFA : states before minimization, 53 states in minimized DFA Writing code to "MyLexer.java" Παράγει πρώτα ένα NFA και στην συνέχεια το μετατρέπει σε DFA. Ο κώδικας που υλοποιεί αυτό το DFA είναι στο αρχείο MyLexer.java το οποίο μπορούμε να το κάνουμε compile με javac MyLexer.java Χαροκόπειο Πανεπιστήμιο 61/63

67 JFlex Παράδειγμα Εκτελώντας το scanner μας με το παρακάτω κομμάτι κώδικα / * This i s a comment * / int main ( int argc, char* argv [ ] ) { printf ( "Hello world!\n" ) ; } return 0 ; Χαροκόπειο Πανεπιστήμιο 62/63

68 JFlex Παράδειγμα Πέρνουμε στην έξοδο INT id:main LEFT_PARENTHESIS INT id:argc COMMA CHAR STAR id:argv LEFT_SQUARE_BRACKET RIGHT_SQUARE_BRACKET RIGHT_PARENTHESIS LEFT_CURLY_BRACKET id:printf LEFT_PARENTHESIS string:hello world! RIGHT_PARENTHESIS SEMICOLON RETURN decimal:0 SEMICOLON RIGHT_CURLY_BRACKET Χαροκόπειο Πανεπιστήμιο 63/63

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

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

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

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

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

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

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

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

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

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

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

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

Υλοποίηση ΛΑ με το flex

Υλοποίηση ΛΑ με το flex (i) Μεταεργαλείο flex: γεννήτορας ΛΑ Είσοδος: μεταπρόγραμμα που περιγράφει τις λεκτικές μονάδες Έξοδος: πρόγραμμα σε C Η συνάρτηση yylex υλοποιεί το ΛΑ Επιστρέφει τον κωδικό της λεκτικής μονάδας που αναγνωρίστηκε,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4)

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4) HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 1ο Εισαγωγή στο FLEX Ι ΑΣΚΩΝ Αντώνιος Σαββίδης Slide

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στο Flex. Μεταγλωττιστές, Χειμερινό εξάμηνο Εισαγωγή στο Flex Μεταγλωττιστές, Χειμερινό εξάμηνο 2014-2015 Ημερομηνίες Διαδικαστικά Παρουσίαση Flex 7 Νοεμβρίου 15:00 17:00 Παρουσίαση Bison 28 Νοεμβρίου 15:00 17:00 Στοιχεία επικοινωνίας Λίστα μαθήματος

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

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

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

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

HY340, 2009 Α. Σαββίδης Slide 2 / 26. HY340, 2009 Α. Σαββίδης Slide 3 / 26. HY340, 2009 Α. Σαββίδης Slide 4 / 26

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

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

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

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

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

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

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

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

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

Παρουσίαση του εργαλείου FLEX Παρουσίαση του εργαλείου FLEX Γεννήτρια Λεκτικών Αναλυτών Α Φάση Λεκτική Ανάλυση Χαρακτηριστικά του flex Γεννήτρια λεκτικών αναλυτών σε C/C++ (fast lexical analyzer generator). Βασισµένο στο εργαλείο του

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 Οικονόμου Βαγγέλησ Διάλεξη Νο 2 Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 1 Η έννοια τησ μεταβλητήσ έδωςε λύςη ςτο πρόβλημα τησ αναφοράσ ςτην κύρια μνήμη του υπολογιςτή. Οι γλώςςεσ προγραμματιςμού υποςτηρίζουν

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

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

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 3: Λεξική Ανάλυση Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

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

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

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

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

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

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Χαρακτήρες Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Χαρακτήρες - Εισαγωγή Έως τώρα έχουμε κατά κύριο λόγο χρησιμοποιήσει τους αριθμητικούς τύπους

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

Δομημένος Προγραμματισμός

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 2: Τύποι μεταβλητών Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

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

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 6: Αλγόριθμοι / Προγραμματισμός Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός

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

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 2: Μεταβλητές και Σταθερές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης

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

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

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

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

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

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

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

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

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

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

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

Θεωρία Υπολογισμού Αλφάβητα, Γλώσσες, Κανονικές Εκφράσεις

Θεωρία Υπολογισμού Αλφάβητα, Γλώσσες, Κανονικές Εκφράσεις 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Θεωρία Υπολογισμού Ενότητα 6 : Αλφάβητα, Γλώσσες, Κανονικές Εκφράσεις Αλέξανδρος Τζάλλας 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο Τμήμα Μηχανικών

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

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

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

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

Διαδικασία Ανάπτυξης Λογισμικού

Διαδικασία Ανάπτυξης Λογισμικού Διαδικασία Ανάπτυξης Λογισμικού Ανάλυση Απαιτήσεων (προϋποθέτει κατανόηση του προβλήματος και τη συλλογή πληροφοριών και των απαιτήσεων από το σύστημα) Σχεδιασμός (ορισμός διεργασιών για να ικανοποιηθούν

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Εισαγωγικά

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

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

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

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

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στην Πληροφορική & τον Προγραμματισμό Ενότητα 3 η : Κωδικοποίηση & Παράσταση Δεδομένων Ι. Ψαρομήλιγκος Χ. Κυτάγιας Τμήμα

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

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

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

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

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης Γ7.1 Επανάληψη ύλης Β Λυκείου Γ Λυκείου Κατεύθυνσης Απλά προγράμματα Ένα πρόγραμμα στη C++ που υπολογίζει το άθροισμα 2 ακέραιων αριθμών. // simple program #include using namespace std; int main(){

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

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

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

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

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

Εργαστήριο 3 Εισαγωγή στο Flex Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι Μεταγλωττιστές Εργαστήριο 3 Εισαγωγή στο Flex Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2015-1016 Μεταγλωττιστής (compiler - μεταφραστής) είναι ένα πρόγραμμα που μεταφράζει άλλα προγράμματα,

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

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

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

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

Εισαγωγή στον δομημένο προγραμματισμό

Εισαγωγή στον δομημένο προγραμματισμό Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στον δομημένο προγραμματισμό Ενότητα 2 η : Συντακτικό της γλώσσας C, Μεταβλητές Σταθερές Τύποι Δεδομένων Τελεστές Εκφράσεις Προτάσεις Αν. καθηγητής

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Νέο Πρόγραμμα

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

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS. Εισαγωγή στη JAVA Σύντομο Ιστορικό Η Java και το διαδίκτυο Το πρώτο απλό πρόγραμμα σε JAVA Μεταβλητές και σταθερές Παραστάσεις και εντολές Οι βασικοί τύποι δεδομένων στη Java Οι βασικοί Τελεστές στη Java

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

Εργαστήριο 4_1 Λεκτική Ανάλυση - Flex Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Εργαστήριο 4_1 Λεκτική Ανάλυση - Flex Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι Μεταγλωττιστές Εργαστήριο 4_1 Λεκτική Ανάλυση - Flex Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2015-1016 Start Condition Μόλις βρεί τα (quotation mark), αφαιρεί όλα τα text μέχρι να βρεί το

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

Γλωσσική Τεχνολογία. String Handling Regular Expressions

Γλωσσική Τεχνολογία. String Handling Regular Expressions Γλωσσική Τεχνολογία String Handling Regular Expressions Strings - Δήλωση Μπορείτε να γράψετε τα δικά σας string περικλείοντας απλά χαρακτήρες και αριθμούς μέσα σε μονά ('...') ή διπλά("...") αυτάκια. Strings

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

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

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

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προεπεξεργαστής Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαδικασία Μεταγλώττισης πρόγραµµα επεξεργασίας κειµένου if a

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

Εργασία Προγραµµατισµού

Εργασία Προγραµµατισµού ΠΛΗ 401 ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2006-2007 Τµήµα Ηλεκτρονικών ΠΟΛΥΤΕΧΝΕΙΟ Μηχανικών και ΚΡΗΤΗΣ Μηχανικών Υπολογιστών ΘΕΩΡΙΑ ΠΛΗ ΥΠΟΛΟΓΙΣΜΟΥ 401 Μιχαήλ ιδάσκων Γ. Λαγουδάκης Εργασία Προγραµµατισµού

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

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

Σειρά Προβλημάτων 4 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα { ww w {a,b}* }. (β) Να διατυπώσετε την τυπική περιγραφή

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 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. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include Η συνάρτηση εξόδου printf printf("συμβολοσειρά

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

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

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

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

Εργαστήριο 08 Δημιουργία 1 ου Συντακτικού Αναλυτή

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 8 : Αυτόματα NFA - DFA. Αλέξανδρος Τζάλλας

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 8 : Αυτόματα NFA - DFA. Αλέξανδρος Τζάλλας Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Θεωρία Υπολογισμού Ενότητα 8 : Αυτόματα NFA - DFA Αλέξανδρος Τζάλλας 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής

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

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

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

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

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C) Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C) ΚΑΤΑΛΟΓΟΣ ΕΡΩΤΗΣΕΩΝ ΕΡΩΤΗΣΕΙΣ ΕΙ ΙΚΩΝ ΓΝΩΣΕΩΝ (γλώσσα προγραµµατισµού

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 4 η Τελεστές Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

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

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

Σειρά Προβλημάτων 4 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα { w#z w, z {a,b}* και η z είναι υπολέξη της w}. Συγκεκριμένα,

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

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

Ασκήσεις από παλιές εξετάσεις

Ασκήσεις από παλιές εξετάσεις Άσκηση 2 - Τελική εξέταση 2012 Ασκήσεις από παλιές εξετάσεις (α) [10 μονάδες] Να μετατρέψετε το πιο κάτω NFA σε ένα ισοδύναμο DFA χρησιμοποιώντας την κατασκευή που μελετήσαμε στο μάθημα. a a q 0 a, ε q

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

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

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

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

Πληροφορική. Ενότητα 4 η : Κωδικοποίηση & Παράσταση Δεδομένων. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Πληροφορική. Ενότητα 4 η : Κωδικοποίηση & Παράσταση Δεδομένων. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Πληροφορική Ενότητα 4 η : Κωδικοποίηση & Παράσταση Δεδομένων Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής Άδειες Χρήσης

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

Αντικειµενοστρεφής Προγραµµατισµός

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

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

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

Σειρά Προβλημάτων 4 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα {w 1w 2 w 1 {0,1} * και w 2 = 0 k 1 m όπου k και m

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

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (1) Προβλήµατα και Γλώσσες. Σε αυτό το µάθηµα. ιαδικαστικά του Μαθήµατος.

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

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