Εργαστηριακή Άσκηση Αρχές Γλωσσών Προγραμματισμού Εαρινό εξάμηνο 2011



Σχετικά έγγραφα
Τοποθέτηση Δημάρχου Γ. Πατούλη. για τεχνικό πρόγραμμα 2010

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

Σοφία Γιουρούκου, Ψυχολόγος Συνθετική Ψυχοθεραπεύτρια

Ασυντήρητες και επικίνδυνες οικοδομές

Δρ.ΠΟΛΥΚΑΡΠΟΣ ΕΥΡΙΠΙΔΟΥ

Συνοπτική Παρουσίαση. Ελλάδα

ΚΩΔΙΚΑΣ ΔΕΟΝΤΟΛΟΓΙΑΣ

Αυτός που δεν μπορεί να δει τα μικρά πράγματα είναι τυφλός και για τα μεγαλύτερα. (Κομφούκιος, πχ)

ΑΝΑΚΥΚΛΩΣΗ ΤΗΓΑΝΕΛΑΙΟΥ ΓΙΑΤΙ - ΠΩΣ - ΠΟΤΕ

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

ΓΕΝΙΚΕΣ ΑΡΧΕΣ ΑΧΡΗΜΑΤΗΣ ΚΟΙΝΩΝΙΑΣ

ΠΡΟΒΛΗΜΑΤΑ ΤΗΣ ΔΗΜΟΣΙΑΣ ΖΩΗΣ, ΜΙΑ ΨΥΧΑΝΑΛΥΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ

1. Εισαγωγή. 2. Καταπολέμηση της φοροδιαφυγής

ΕΘΙΜΑ ΤΟΥ ΚΟΣΜΟΥ. Αγγελική Περιστέρη Α 2

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

ΑΝΑΝΕΩΣΙΜΕΣ ΠΗΓΕΣ ΕΝΕΡΓΕΙΑΣ (Α.Π.Ε)

03-00: Βιομάζα για παραγωγή ενέργειας Γενικά ζητήματα εφοδιαστικών αλυσίδων

Από το ξεκίνημά του ο ΤΙΤΑΝ εκφράζει

11. Προϋπολογισμός Προϋπολογισμός και αποδοτικότητα δημοσίων υπηρεσιών: υφιστάμενη κατάσταση

Προδημοσιεύτηκαν τα τέσσερις πρώτα προγράμματα του νέου ΕΣΠΑ που αφορούν

Βασικές Έννοιες και Μέθοδοι της Οικονομικής Επιστήμης - Οικονομία (< οίκος + νέμω): Διαχείριση των Υποθέσεων ενός Νοικοκυριού - Γενικός Ορισμός: Μια

...ακολουθώντας τη ροή... ένα ημερολόγιο εμψύχωσης

ΚΩ ΙΚΑΣ ΕΟΝΤΟΛΟΓΙΑΣ ΤΗΣ ΕΤΑΙΡΕΙΑΣ ΜΕ ΤΗΝ ΕΠΩΝΥΜΙΑ «ΠΑΠΟΥΤΣΑΝΗΣ ΑΝΩΝΥΜΗ ΒΙΟΜΗΧΑΝΙΚΗ ΚΑΙ ΕΜΠΟΡΙΚΗ ΕΤΑΙΡΕΙΑ ΚΑΤΑΝΑΛΩΤΙΚΩΝ ΑΓΑΘΩΝ»

Αρωματικά φυτά της Ελλάδας

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

Πρόγραμμα Σπουδών για το "Νέο Σχολείο"

Μέθοδοι διαχωρισμού των συστατικών ενός ετερογενούς μείγματος

Συνωμοσία Πυρήνων της Φωτιάς - Πυρήνας Αντάρτικου Πόλης

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΚΡΗΤΗΣ ΣΧΟΛΗ ΙΟΙΚΗΣΗΣ ΟΙΚΟΝΟΜΙΑΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Βασικά σημεία διάλεξης

Το Βαρόμετρο του Παρατηρητηρίου: Ποιότητα των Δημόσιων Υπηρεσιών προς Επιχειρήσεις

Οι 21 όροι του Λένιν

Α. ΟΡΓΑΝΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΕΦΑΡΜΟΓΗΣ

Δασικά Οικοσυστήματα και Τεχνικά Έργα

Αξιοποιούμε το χαλκό με γνώμονα τον άνθρωπο

Όταν το μάθημα της πληροφορικής γίνεται ανθρωποκεντρικό μπορεί να αφορά και την εφηβεία.

Χρηματοδότηση των Συλλόγων στην εποχή της κρίσης

Έρευνα Καταναλωτικής Εμπιστοσύνης

Δαλιάνη Δήμητρα Λίζας Δημήτρης Μπακομήτρου Ελευθερία Ντουφεξιάδης Βαγγέλης

ΔΕΛΤΙΟ ΤΥΠΟΥ. Ελλείψεις στο φορολογικό νομοσχέδιο. Σοβαρές ελλείψεις στη νέα μορφή του φορολογικού νομοσχεδίου

Πρακτικό εργαλείο. για την ταυτοποίηση πρώτου επιπέδου των θυμάτων παράνομης διακίνησης και εμπορίας. τη σεξουαλική εκμετάλλευση

Η Ψυχοπαθολογία του Πολιτικού Του Φ.Μωρόγιαννη *

Κατερίνα Παναγοπούλου: Δημιουργώντας κοινωνικό κεφάλαιο την εποχή της κρίσης

ΓΥΝΑΙΚΕΙΟΙ ΑΓΡΟΤΟΥΡΙΣΤΙΚΟΙ ΣΥΝΕΤΑΙΡΙΣΜΟΙ ΣΤΗΝ ΕΛΛΑ Α

Τρίτη, 2 Σεπτεμβρίου 2014 Αριθ. Τεύχους: 200 Περιεχόμενα

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

ενεργοί πολίτες για τη Μήλο οι θέσεις μας Υποψηφιότητα Αντώνη Καβαλιέρου δημοτικές εκλογές

Ασφάλεια στις εργασίες κοπής μετάλλων

ΠΟΛΙΤΙΚΉ ΠΑΙΔΕΙΑ. Α Γενικού Λυκείου και ΕΠΑ.Λ. Καζάκου Γεωργία, ΠΕ09 Οικονομολόγος

Η ΦΙΛΙΑ..!!! Η ΑΞΙΑ ΤΗΣ ΦΙΛΙΑΣ

ΘΕΣΕΙΣ ΠΡΟΤΑΣΕΙΣ ΠΡΟΤΕΡΑΙΟΤΗΤΕΣ

ΠΡΟΣΩ ΟΛΟΤΑΧΩΣ! ΑΝΑΓΕΝΝΗΣΗ ΤΗΣ ΕΛΛΑΔΑΣ

ΗΛΙΟΠΡΟΣΤΑΣΙΑ ΑΥΤΟΣΚΙΑΣΜΟΣ ΤΟΥ ΚΤΗΡΙΑΚΟΥ ΚΕΛΥΦΟΥΣ

ΧΙΙΙ Επιτροπή Εκπαιδευτικής Υπηρεσίας

ΟΡΓΑΝΩΣΗ ΕΝΟΤΗΤΩΝ Α ΤΑΞΗΣ ΕΝΟΤΗΤΑ 3

Πρακτικό 6/2012 της συνεδρίασης της Επιτροπής Ποιότητας Ζωής, του Δήμου Λήμνου, της 4ης Μαΐου 2012.

Ο αθλητισμός εμπνέεται από την ειρήνη. Η ειρήνη εμπνέεται από τον αθλητισμό.

Σεμινάριο με θέμα : Εθελοντισμός & Δικαιώματα Παιδιού

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΙΤΗΣΕΩΝ ΜΕΤΑΤΑΞΕΩΝ ΕΚΠΑΙΔΕΥΤΙΚΩΝ. ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Υπουργείο Παιδείας και Θρησκευμάτων

Μαρία-Στεφανία-Γιάννης 1 ο Πρότυπο Πειραματικό Δημοτικό Σχολείο Θεσσαλονίκης Ε2 Π.Τ.Δ.Ε.-Α.Π.Θ

ΔΕΛΤΙΟ ΤΥΠΟΥ. Ακολουθεί ολόκληρη η τοποθέτηση - παρέμβαση του Υπουργού Δ.Μ.&Η.Δ.

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

ΚΕΦΑΛΑΙΟ 8 ΣΥΜΠΕΡΑΣΜΑΤΑ

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

Το ολοκαύτωμα της Κάσου

Το«Δέντρο της Ελευθερίας» μέσα από τη Χάρτα του Ρήγα Φεραίου και τα ιστορικά γεγονότα της εποχής του

ΚΕΦΑΛΑΙΟ 3 ο ΤΟ ΜΕΛΛΟΝ ΤΗΣ ΕΥΡΩΠΑΪΚΗΣ ΕΝΩΣΗΣ. 3.1 Εισαγωγή

ΓΕΝΙΚΗ ΕΦΟΡΕΙΑ. Αθήνα, 15 Απριλίου 2011 ΕΓΚΥΚΛΙΟΣ 7. - Αρχηγούς Συστημάτων και Τμημάτων - Περιφερειακούς και Τοπικούς Εφόρους - Εφόρους Περιοχής

«Πολιτική του συστήματος των πόλεων στο Βυζάντιο»

Σχολή Αναρρίχησης Βράχου Μέσου Επιπέδου Άνοιξη 2014

Πρόγραμμα Κοινωνικών Δεξιοτήτων Δεκεμβρίου

ΘΕΜΑΤΑ ΚΑΝΟΝΙΣΜΩΝ ΒΙΒΛΙΟ ΠΕΡΙΠΤΩΣΕΩΝ ΠΕΡΙΕΧΟΜΕΝΑ

ΑΠΟΚΑΤΑΣΤΑΣΗ ΚΑΙ ΕΠΑΝΑΧΡΗΣΗ ΤΟΥ ΧΩΡΟΥ ΤΟΥ ΧΑΝΙΟΥ ΤΟΥ ΙΜΠΡΑΗΜ ΚΩΔΙΚΟΣ ΔΙΑΓΩΝΙΖΟΜΕΝΟΥ: 12234

Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών

γραμματισμό των νηπίων

ΕΚΤΕΛΕΣΤΙΚΗ ΕΠΙΤΡΟΠΗ ΦΙΛΕΛΛΗΝΩΝ & ΨΥΛΛΑ ΑΘΗΝΑ Τηλ Fax adedy@adedy.gr, adedy1@adedy.gr

Η ελληνική κοινωνία απέναντι στην οικονομική κρίση

Οι ιοί και οι ιογενείς λοιμώξεις του αναπνευστικού συστήματος στα παιδιά

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

Φλωρεντία, 10 Δεκεμβρίου 1513 Προς τον: ΦΡΑΓΚΙΣΚΟ ΒΕΤΤΟΡΙ, Πρέσβη της Φλωρεντίας στην Αγία Παπική Έδρα, Ρώμη. Εξοχώτατε Πρέσβη,

Εσωτερικοί Κανονισμοί Τοπικής Αυτοδιοίκησης

ΒΑΣΙΚΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΔΟΜΕΣ ΣΕ ΨΕΥΔΟΚΩΔΙΚΑ ΚΑΙ ΣΕ ΔΡΠ

Έργο :ΕΡΓΑΣΙΕΣ ΣΥΝΤΗΡΗΣΗΣ ΟΙΚΟΔΟΜΙΚΩΝ ΚΑΙ Η/Μ ΣΧΟΛΙΚΩΝ ΚΤΗΡΙΩΝ ΕΤΟΥΣ 2012 ΤΙΜΟΛΟΓΙΟ ΜΕΛΕΤΗΣ. Τιμαριθμική 2010Δ 1 ΓΕΝΙΚΟΙ ΟΡΟΙ

ΟΣΤΑ & ΣΚΕΛΕΤΙΚΟ ΣΥΣΤΗΜΑ

ΕΛΑΦΡΙΕΣ ΜΕΤΑΛΛΙΚΕΣ ΚΑΤΑΣΚΕΥΕΣ ΣΥΝΤΑΚΤΗΣ: ΝΑΝΣΥ ΣΑΚΚΑ

Παιδαγωγική ή Εκπαίδευση ΙΙ

Το συνέδριο σας πραγματοποιείται σε μια εξαιρετικά δύσκολη συγκυρία για τον τόπο, την οικονομία της χώρας, την κοινωνία και τον κόσμο της εργασίας.

ΤΙΤΛΟΣ ΒΙΒΛΙΟΥ: Συνδικαλιστική εκπαίδευση, Συλλογικές συμβάσεις, Συλλογικές διαπραγματεύσεις.

ΒΑΣΙΚΗ ΕΚΠΑΙΔΕΥΣΗ. Οδηγός Οργάνωσης και Λειτουργίας ΕΚΔΟΣΗ 1.0

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

ΠΑΡΑΡΤΗΜΑ 7 ΔΙΑΔΙΚΑΣΙΕΣ ΠΑΡΟΧΗΣ ΔΙΑΣΥΝΔΕΣΗΣ

Τα Αναβολικά. Τα αναβολικά χωρίζονται στα φυσικά και στα συνθετικά.

ΕΛΤΙΟ Ε ΟΜΕΝΩΝ ΑΣΦΑΛΕΙΑΣ

ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΥ ΣΧΕΔΙΟΥ

Κος ΓΚΑΙΤΛΙΧ: Ευχαριστώ πολύ κυρία Πρόεδρε. Θα επιχειρήσω μέσα σε περίπου 10 με 15 λεπτά να συνοψίσω αυτά που συζητήθηκαν στο δικό μας workshop, το

ΠΑΡΟΥΣΙΑΣΗ ΚΑΙ ΚΡΙΤΙΚΗ ΒΙΒΑΙΟΥ

Η ΔΙΑΘΕΜΑΤΙΚΗ ΤΗΣ ΔΙΑΘΕΜΑΤΙΚΗΣ

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

Ηλεκτρονική Υπηρεσία Υποβολής Αιτήσεων Εισδοχής σε Φοιτητικές Εστίες

Transcript:

Εργαστηριακή Άσκηση Αρχές Γλωσσών Προγραμματισμού Εαρινό εξάμηνο 2011 Διδάσκων: Καθηγητής Γιάννης Γαροϕαλάκης Φροντιστήριο: Θάνος Νικολακόπουλος 12/04/2011 Σκοπός της εργαστηριακής άσκησης είναι να εξοικειωθείτε με την περιγραϕή μιας γλώσσας σε μορϕή BNF, βασικές έννοιες των μεταγλωττιστών και τελικά να υλοποιήσετε δύο από τα τμήματα ενός μεταγλωττιστή, έναν συντακτικό και έναν λεκτικό αναλυτή με τη χρήση των εργαλείων Bison και Flex. Η γλώσσα που θα αναλυθεί είναι μια απλή ϕανταστική αντικειμενοστρεϕής γλώσσα προγραμματισμού με το όνομα TinyTalk η οποία αποτελείται από classes και περιγράϕεται αμέσως μετά. 1 Δομή προγραμμάτων TinyTalk Κάθε πρόγραμμα TinyTalk αποτελείται από ΜΙΑ ή περισσότερες classes. Κάθε class έχει την πιο κάτω μορϕή: class classname { //Σχόλια σε οποιοδήποτε σημείο προαιρετική δήλωση μεταβλητών constructor προαιρετική δήλωση άλλων μεθόδων } 1

1.1 Αναγνωριστικά Τα αναγνωριστικά (identifiers) της γλώσσας TinyTalk απαρτίζονται από γράμματα (A..Z, a..z), ψηϕία (0..9) και τον ειδικό χαρακτήρα _ (underscore). Ένα αναγνωριστικό δεν μπορεί να αρχίζει από ψηϕίο. Τα πεζά γράμματα διαϕέρουν από τα αντίστοιχα κεϕαλαία. Τα παρακάτω αναγνωριστικά είναι δεσμευμένα και δεν επιτρέπεται να χρησιμοποιούνται ως κοινά αναγνωριστικά. Η σημασία τους εξηγείται σε επόμενες παραγράϕους. char, else, if, integer, class, new, return, void, while 1.2 Βασικοί Τύποι Δεδομένων Οι βασικοί τύποι δεδομένων που υποστηρίζει η γλώσσα TinyTalk είναι οι εξής: integer, char. Οι ακέραιες σταθερές αποτελούνται από ένα προαιρετικό πρόσημο ακολουθούμενο από ένα ή περισσότερα δεκαδικά ψηϕία. Οι σταθερές τύπου χαρακτήρα αποτελούνται από έναν απλό ή ειδικό χαρακτήρα που περικλείεται από απλά εισαγωγικά. Ως απλοί χαρακτήρες θεωρούνται όλοι οι εκτυπώσιμοι χαρακτήρες πλην των εισαγωγικών (απλών και διπλών) και της ανάστροϕης καθέτου \(backslash). Οι ειδικοί χαρακτήρες χρησιμοποιούνται όπως στη γλώσσα C. Παριστάνονται ως ζεύγη χαρακτήρων, με πρώτο την ανάστροϕη κάθετο. Οι επιτρεπόμενοι ειδικοί χαρακτήρες είναι οι εξής: Χαρακτήρας Περιγραϕή \n χαρακτήρας νέας γραμμής (new line) \ χαρακτήρας (διπλό εισαγωγικό) \ χαρακτήρας (απλό εισαγωγικό) \0 χαρακτήρας με ASCII κωδικό 0 \t χαρακτήρας αλλαγής στήλης (TAB) \\ χαρακτήρας (backslash) 1.3 Δήλωση Μεταβλητών Η δήλωση των Μεταβλητών, ακολουθεί τον τρόπο που δηλώνονται οι μεταβλητές στην Java ενώ οι επιτρεπόμενοι τύποι για τις απλές μεταβλητές είναι αυτοί που αναϕέραμε στην προηγούμενη παράγραϕο. Εκτός από τους βασικούς τύπους δεδομένων, η γλώσσα TinyTalk υποστηρίζει πίνακες (arrays) αποτελούμενους από στοιχεία των βασικών τύπων. Κατά τον ορισμό μιας μεταβλητής τύπου πίνακα, πρέπει 2

να ορίζεται το μήκος του, δηλαδή το πλήθος των στοιχείων που τον αποτελούν. Ένας πίνακας π.χ. 20 ακεραίων με όνομα anarray θα ορίζεται ως εξής: anarray = new integer[20]; // create an array of integers Το μέγιστο επιτρεπόμενο μήκος πινάκων είναι 2011 στοιχεία. Η παραβίαση του μέγιστου μεγέθους πίνακα θα πρέπει να αναϕέρεται ως λάθος. 1.4 Μέθοδοι και Constructor Ο constructor, όπως και οι επιπλέον μέθοδοι, ακολουθούν τον τρόπο ορισμού που ισχύει στην java. Να τον τεκμηριώσετε και να ϕαίνεται ξεκάθαρα στον ορισμό του BNF που θα δώσετε. Στο σώμα οποιασδήποτε μεθόδου υπάρχει αρχικά η δήλωση Μεταβλητών (όμοια με παραπάνω) και στη συνέχεια οι εντολές. Η εντολή return χρησιμοποιείται για την επιστροϕή από τη μέθοδο. Όταν πρόκειται για μέθοδο που επιστρέϕει κάποιο τύπο, το return ακολουθείται από έκϕραση. 1.4.1 Εντολές Οι εντολές της γλώσσας TinyTalk έχουν ακριβώς την ίδια μορϕή με τις αντίστοιχες εντολές της γλώσσας C. Η εντολή εκχώρησης έχει την ίδια σύνταξη με την αντίστοιχη εντολή της C. Επιτρέπεται μόνο η εκχώρηση απλών τύπων: απαγορεύεται η εκχώρηση ολόκληρων πινάκων, αλλά επιτρέπεται η εκχώρηση σε στοιχεία πίνακα. Οι εντολές ελέγχου που επιτρέπει η γλώσσα είναι οι εξής : if ( λογική-έκφραση ) εντολή [ else εντολή ] while ( λογική-έκφραση ) εντολή Οι τελεστές της γλώσσας TinyTalk δίνονται παρακάτω. Η προτεραιότητα και η προσεταιριστικότητα των τελεστών αυτών είναι η ίδια με αυτή των τελεστών της γλώσσας C. 1.4.2 Αριθμητικοί Τελεστές Οι αριθμητικοί τελεστές με ένα τελούμενο της γλώσσας TinyTalk είναι οι εξής: 3

Τελεστής Σημασία μοναδιαίοι + Θετικό πρόσημο (ταυτότητα) - Αρνητικό πρόσημο (αντίθετος) Δυαδικοί + Πρόσθεση ακεραίων - Αϕαίρεση ακεραίων * Πολλαπλασιασμός ακεραίων / Πηλίκο ακέραιας διαίρεσης % Υπόλοιπο ακέραιας διαίρεσης Τα τελούμενα των αριθμητικών τελεστών πρέπει να είναι έγκυρες ακέραιες εκϕράσεις. 1.4.3 Σχεσιακοί Τελεστές Οι σχεσιακοί τελεστές της γλώσσας TinyTalk ϕαίνονται στον παρακάτω πίνακα. Τα τελούμενα πρέπει να είναι έγκυρες ακέραιες εκϕράσεις ή χαρακτήρες. Τελεστής Σημασία == ίσο!= διάϕορο > μεγαλύτερο < μικρότερο >= μεγαλύτερο ή ίσο <= μικρότερο ή ίσο Τα αποτελέσματα των σχεσιακών τελεστών είναι λογικές εκϕράσεις. Οι εκϕράσεις αυτές μπορούν να χρησιμοποιηθούν μόνο σε εντολές if και while. Δεν μπορούν να εκχωρηθούν σε μεταβλητές, να περάσουν ως παράμετροι ούτε να επιστραϕούν ως αποτελέσματα συναρτήσεων. 1.4.4 Λογικοί Τελεστές Οι λογικοί τελεστές της γλώσσας TinyTalk είναι τρεις: Τελεστής Σημασία Λογική διάζευξη (ή) && Λογική σύζευξη (και)! Λογική άρνηση (όχι) 4

Οι τελεστές και && είναι δυαδικοί, ενώ ο τελεστής! δέχεται ένα τελούμενο. Τα τελούμενα πρέπει να είναι έγκυρες λογικές εκϕράσεις. Το αποτέλεσμα είναι επίσης λογική έκϕραση. Ερωτήματα 1. (80%) Δώστε σε BNF τον συντακτικό ορισμό της γλώσσας, και χρησιμοποιώντας τα μεταεργαλεία Flex και Bison, υλοποιήστε έναν λεκτικό και συντακτικό αναλυτή, ο οποίος θα παίρνει ως είσοδο ένα αρχείο γραμμένο στη γλώσσα TinyTalk που περιγρά- ϕηκε πιο πάνω και θα ελέγχει αν το πρόγραμμα είναι συντακτικά ορθό. Το πρόγραμμά σας θα καλείται από τη γραμμή εντολών ως εξής: prompt> myparser.exe file.txt και θα επιστρέϕει διαγνωστικό μήνυμα για το αν ήταν ορθώς γραμμένο, ή κατάλληλο μήνυμα σϕάλματος (πρέπει να ϕαίνεται η γραμμή όπου υπάρχει το σϕάλμα). 2. (10%) Τροποποιήστε τον κώδικά σας ώστε ο μεταγλωττιστής της γλώσσας TinyTalk να επιτρέπει οδηγία #include. Η οδηγία αυτή θα επιτρέπει την ανάγνωση ενός εξωτερικού αρχείου σαν αυτό να ήταν τμήμα του προγράμματος, ενώ πρέπει να βρίσκεται υποχρεωτικά στην αρχή του προγράμματος εισόδου (να μην προηγούνται κενά διαστήματα). Η σύνταξή της είναι η εξής: #include όνομα αρχείου Η οδηγία αυτή απευθύνεται ουσιαστικά στο λεκτικό αναλυτή. Σε περίπτωση που συναντήσει #include, θα πρέπει να σταματήσει την ανάγνωση του αρχείου προγράμματος, και να συνεχίσει με την επεξεργασία του αρχείου που ζητείται να συμπεριληϕθεί. Μετά το τέλος αυτού του αρχείου, ο λεκτικός αναλυτής πρέπει να συνεχίσει από το σημείο του αρχείου προγράμματος, στο οποίο είχε σταματήσει. Φυσικά μεμονωμένες λεκτικές μονάδες καθώς και σχόλια πρέπει να περιέχονται πλήρως σε ένα αρχείο προγράμματος (δεν επιτρέπεται να αρχίζουν σε ένα αρχείο προγράμματος και να τελειώνουν σε κάποιο άλλο). 5

3. (10%) Τροποποιήστε τον κώδικα του συντακτικού αναλυτή σας ώστε να μπορεί να κάνει μία εκτίμηση του πλήθους των λαθών που υπάρχουν στο πρόγραμμα. Παραδοτέα Γραπτή Τυπωμένη Αναϕορά που περιλαμβάνει Την περιγραϕή της γλώσσας σε BNF και τεκμηρίωση της. Τα αρχεία περιγραϕής της γλώσσας, τα οποία δίνονται ως είσοδος στα Flex και Bison Screenshots παραδειγμάτων εϕαρμογής Τα αρχεία που δόθηκαν σαν είσοδο στον parser για να ελεγχθεί η σωστή λειτουργία του Τον τελικό κώδικα σε C (και το.h αρχείο) που παράγεται από τα δύο προγράμματα και ο εκτελέσιμος κώδικας του parser (για κάθε ερώτημα ξεχωριστά). Το αρχείο zip (ή tar.gz) πρέπει να έχει όνομα τους αριθμούς μητρώου των ατόμων της ομάδας διαχωρισμένα με το χαρακτήρα _ από τον μικρότερο στο μεγαλύτερο (π.χ. 2000_2543_3788_4972.zip), και να σταλεί (ΥΠΟΧΡΕΩΤΙΚΑ) με email στο nikolako@ceid.upatras.gr με θέμα ASKISI ARXES GLWSSWN. Στο μήνυμα να αναϕέρονται τα ονοματεπώνυμα, το έτος και οι αντίστοιχοι αριθμοί μητρώου των μελών της ομάδας. Η γραπτή αναϕορά θα παραδοθεί στο Θάνο Νικολακόπουλο στο γραϕείο του στα ΠΡΟΚΑΤ δίπλα από το γραϕείο του κ.τσακαλίδη. Διευκρινήσεις Για τη λειτουργία των εργαλείων Flex και Bison μπορείτε να βρείτε πληροϕορίες στη σελίδα του μαθήματος. Η άσκηση θα γίνει σε ομάδες των 3-4 ατόμων. Η συμβολή της στον τελικό βαθμό είναι 30%. Τελικές ημερομηνίες παράδοσης είναι οι ημερομηνίες γραπτών εξετάσεων περιόδου Ιουνίου και Σεπτεμβρίου αντίστοιχα. Για τυχόν απορίες μπορείτε να απευθύνεστε με e-mail στον Θάνο Νικολακόπουλο (nikolako@ceid.upatras.gr) ή στο forum του μαθήματος. 6