Σύνταξη & Συντακτική Ανάλυση
|
|
- Υγίνος Μίδας Μακρής
- 8 χρόνια πριν
- Προβολές:
Transcript
1 Μια γραμματική για τα Αγγλικά Σύνταξη & Συντακτική Ανάλυση Rene Mgritte, Le Seize Septemre Μια πρόταση αποτελείται από μια ουσιαστική φράση, ένα ρήμα, και μια ουσιαστική φράση Μια ουσιαστική φράση αποτελείται από ένα άρθρο και ένα ουσιαστικό Ρήματα είναι τα εξής Άρθρα είναι τα εξής Ουσιαστικά είναι τα εξής... <S> ::= <NP> <V> <NP> <NP> ::= <A> <N> <V> ::= loves htes ets <A> ::= the <N> ::= dog t rt Κωστής Σαγώνας <kostis@s.ntu.gr> Σύνταξη και Συντακτική Ανάλυση 2 Πως δουλεύει μια γραμματική Γραμματική για αριθμητικές εκφράσεις Μια γραμματική είναι ένα σύνολο κανόνων που ορίζουν το πως κατασκευάζεται ένα συντακτικό δένδρο Ξεκινάμε βάζοντας το <S> στη ρίζα του δένδρου Οι κανόνες της γραμματικής λένε πως μπορούμε να προσθέσουμε παιδιά σε κάθε σημείο του δένδρου Για παράδειγμα, ο κανόνας <S> ::= <NP> <V> <NP> λέει ότι μπορούμε να προσθέσουμε κόμβους <NP>, <V>, και <NP>, με αυτή τη σειρά, ως παιδιά του κόμβου <S> <expr> ::= <expr> + <expr> <expr> * <expr> ( <expr> ) Η παραπάνω γραμματική ορίζει ότι μια αριθμητική έκφραση μπορεί να είναι το άθροισμα δύο άλλων εκφράσεων, ή το γινόμενο δύο εκφράσεων, ή μια έκφραση που περικλείεται από παρενθέσεις, ή κάποια από τις μεταβλητές,, ή Σύνταξη και Συντακτική Ανάλυση 3 Σύνταξη και Συντακτική Ανάλυση 4
2 Συντακτικό δένδρο Συστατικά μιας γραμματικής <expr> ( <expr> ) <expr> * <expr> ( <expr> ) <expr> + <expr> αρχικό σύμβολο κανόνας παραγωγής μη τερματικά σύμβολα <S> ::= <NP> <V> <NP> <NP> ::= <A> <N> <V> ::= loves htes ets <A> ::= the <N> ::= dog t rt Σύνταξη και Συντακτική Ανάλυση 5 τερματικά σύμβολα (λεκτικές μονάδες) Σύνταξη και Συντακτική Ανάλυση 6 Ορισμός γραμματικών σε μορφή Bkus-Nur Μια γραμματική σε μορφή Bkus-Nur αποτελείται από Ένα σύνολο από λεκτικές μονάδες (tokens) Συμβολοσειρές που αποτελούν τα μικρότερα αδιαίρετα κομμάτια της σύνταξης του προγράμματος Ένα σύνολο από μη τερματικά σύμβολα (non-terminls) Συμβολοσειρές που εγκλείονται σε αγκύλες, π.χ. <NP>, και αντιπροσωπεύουν κομμάτια του συντακτικού της γλώσσας Δε συναντιούνται στο πρόγραμμα, αλλά είναι σύμβολα που βρίσκονται στο αριστερό μέρος κάποιων κανόνων της γραμματικής Το αρχικό σύμβολο (strt symol) της γραμματικής Ένα συγκεκριμένο μη τερματικό σύμβολο που αποτελεί τη ρίζα του συντακτικού δένδρου για κάθε αποδεκτό από τη γλώσσα πρόγραμμα Ένα σύνολο από κανόνες παραγωγής (prodution rules) Κανόνες παραγωγής Οι κανόνες παραγωγής χρησιμοποιούνται για την κατασκευή του συντακτικού δένδρου Κάθε κανόνας έχει τη μορφή Α ::= Δ Το αριστερό μέρος Α αποτελείται από ένα μη τερματικό σύμβολο Το δεξί μέρος Δ είναι μια ακολουθία από τερματικά (λεκτικές μονάδες) και μη τερματικά σύμβολα Κάθε κανόνας προσδιορίζει έναν πιθανό τρόπο κατασκευής του συντακτικού υποδένδρου που έχει ως ρίζα του το μη τερματικό σύμβολο στο αριστερό μέρος Α του κανόνα και έχει ως παιδιά αυτής της ρίζας (με την ίδια σειρά εμφάνισης) τα σύμβολα στο δεξί μέρος Δ του κανόνα Σύνταξη και Συντακτική Ανάλυση 7 Σύνταξη και Συντακτική Ανάλυση 8
3 Επιλογές στη γραφή των κανόνων παραγωγής Όταν υπάρχουν περισσότεροι από ένας κανόνες παραγωγής με το ίδιο αριστερό μέρος, μπορούμε να κάνουμε χρήση της παρακάτω συντομογραφίας Στη BNF γραμματική μπορούμε να δώσουμε το αριστερό μέρος, το διαχωριστή ::=, και μετά μια ακολουθία από δεξιά μέρη που διαχωρίζονται από το ειδικό σύμβολο Οι δύο γραμματικές είναι ίδιες <expr> ::= <expr> + <expr> <expr> * <expr> ( <expr> ) <expr> ::= <expr> + <expr> <expr> ::= <expr> * <expr> <expr> ::= ( <expr> ) <expr> ::= <expr> ::= <expr> ::= Σύνταξη και Συντακτική Ανάλυση 9 Κανόνεςπαραγωγήςτουκενού Το ειδικό μη τερματικό <empty> χρησιμοποιείται σε περιπτώσεις που θέλουμε κάποιος κανόνας να μην παράγει τίποτα Για παράδειγμα, οι παρακάτω κανόνες ορίζουν τη δομή if-then των περισσοτέρων γλωσσών, η οποία επιτρέπει την ύπαρξη ενός προαιρετικού else <if-stmt> ::= if <expr> then <stmt> <else-prt> <else-prt> ::= else <stmt> <empty> Σύνταξη και Συντακτική Ανάλυση 10 Κατασκευή συντακτικών δένδρων Αρχίζουμε την κατασκευή βάζοντας το αρχικό σύμβολο της γραμματικής στη ρίζα του δένδρου Προσθέτουμε παιδιά σε κάθε μη τερματικό σύμβολο, χρησιμοποιώντας κάποιον από τους κανόνες παραγωγής της γλώσσας για το συγκεκριμένο μη τερματικό Η διαδικασία τερματίζει όταν όλα τα φύλλα του δένδρου αποτελούνται από λεκτικές μονάδες Η συμβολοσειρά που αντιστοιχεί στο δένδρο που κατασκευάσαμε βρίσκεται διαβάζοντας τα φύλλα του δένδρου από αριστερά προς τα δεξιά Σύνταξη και Συντακτική Ανάλυση 11 Παραδείγματα <expr> ::= <expr> + <expr> <expr> * <expr> ( <expr> ) Τα συντακτικά δένδρα για τις παρακάτω εκφράσεις + (+) (+()) +* Η κατασκευή των συντακτικών δένδρων είναι η δουλειά του συντακτικού αναλυτή ενός μεταγλωττιστή Υπάρχουν διάφοροι αποδοτικοί αλγόριθμοι και εργαλεία για ημιαυτόματη κατασκευή του συντακτικού αναλυτή Σύνταξη και Συντακτική Ανάλυση 12
4 Τυπικός ορισμός σύνταξης γλωσσών Παράδειγμα κατασκευής γραμματικής (1) Για να ορίσουμε τη σύνταξη των γλωσσών προγραμματισμού χρησιμοποιούμε γραμματικές Η γλώσσα που ορίζεται από μια γραμματική είναι το σύνολο των συμβολοσειρών για τα οποία η γραμματική μπορεί να παράξει συντακτικά δένδρα Τις περισσότερες φορές το σύνολο αυτό είναι άπειρο (παρόλο που η γραμματική είναι πεπερασμένη) Η κατασκευή μιας γραμματικής για μια γλώσσα μοιάζει λίγο με προγραμματισμό... Σύνταξη και Συντακτική Ανάλυση 13 Συνήθως γίνεται με χρήση της τεχνικής διαίρει και βασίλευε (divide nd onquer) Παράδειγμα: κατασκευή της γλώσσας των δηλώσεων της Jv (η οποία είναι παρόμοια με αυτή της C): αρχικά, η δήλωση έχει ένα όνομα τύπου στη συνέχεια μια ακολουθία από μεταβλητές που διαχωρίζονται με κόμματα (όπου κάθε μεταβλητή μπορεί να πάρει μια αρχική τιμή) και στο τέλος ένα ερωτηματικό (semiolon) flot ; oolen,, ; int = 1,, = 1 + 2; Σύνταξη και Συντακτική Ανάλυση 14 Παράδειγμα κατασκευής γραμματικής (2) Παράδειγμα κατασκευής γραμματικής (3) Αρχικά ας αγνοήσουμε την πιθανή ύπαρξη αρχικοποιητών: <vr-del> ::= <type-nme> <delrtor-list> ; Ο κανόνας για τα ονόματα των πρωτόγονων τύπων (primitive types) της Jv είναι απλούστατος: <type-nme> ::= oolen yte short int long hr flot doule Η ακολουθία των μεταβλητών που διαχωρίζονται με κόμματα έχει ως εξής: <delrtor-list> ::= <delrtor> <delrtor>, <delrtor-list> Όπου ξανά, έχουμε προς το παρόν αγνοήσει τους πιθανούς αρχικοποιητές των μεταβλητών Σημείωση: δεν παίρνουμε υπόψη κατασκευασμένους τύπους (onstruted types): ονόματα κλάσεων, ονόματα διεπαφών (interfes), και τύπους πινάκων Σύνταξη και Συντακτική Ανάλυση 15 Σύνταξη και Συντακτική Ανάλυση 16
5 Παράδειγμα κατασκευής γραμματικής (4) Οι δηλωτές μεταβλητών, με ή χωρίς αρχικοποιήσεις, ορίζονται ως: <delrtor> ::= <vrile-nme> <vrile-nme> = <expr> Για ολόκληρη τη Jv: Πρέπει να επιτρέψουμε και ζεύγη από αγκύλες μετά το όνομα των μεταβλητών για τη δήλωση των πινάκων Πρέπει επίσης να ορίσουμε και τη σύνταξη των αρχικοποιητών πινάκων (Φυσικά θέλουμε και ορισμούς για τα μη τερματικά σύμβολα <vrile-nme> και <expr>) Τί αποτελεί λεκτική μονάδα (token); Όποια κομμάτια της γλώσσας επιλέξουμε να θεωρήσουμε ως μη κατασκευαζόμενα από μικρότερα κομμάτια Μεταβλητές (i, j), λέξεις κλειδιά (if), τελεστές (==,++), σταθερές (123.4), κ.λπ. Οι γραμματικές που έχουμε ορίσει δίνουν τη δομή των φράσεων (phrse struture): πως το πρόγραμμα κατασκευάζεται από μια σειρά λεκτικών μονάδων Πρέπει επιπλέον να ορίσουμε και τη λεκτική δομή (lexil struture): πως ένα αρχείο χωρίζεται σε λεκτικές μονάδες Σύνταξη και Συντακτική Ανάλυση 17 Σύνταξη και Συντακτική Ανάλυση 18 Δύο επιλογές ορισμού της λεκτικής δομής Με μια κοινή γραμματική Οι χαρακτήρες είναι οι μοναδικές λεκτικές μονάδες Συνήθως δεν ακολουθείται αυτή η επιλογή: κενά και σχόλια περιπλέκουν αρκετά τη γραμματική και την καθιστούν μη αναγνώσιμη Με ξεχωριστές γραμματικές 1. Μία που ορίζει πώς προκύπτουν οι λεκτικές μονάδες από ένα αρχείο με χαρακτήρες Η γραμματική αυτή συνήθως είναι μια κανονική γραμματική (regulr grmmr) και χρησιμοποιείται από το λεκτικό αναλυτή (snner) 2. Μία που ορίζει πως προκύπτουν τα συντακτικά δένδρα από μία ακολουθία λεκτικών μονάδων Η γραμματική αυτή συνήθως είναι μια γραμματική ελεύθερη συμφραζομένων (ontext-free grmmr) και χρησιμοποιείται από το συντακτικό αναλυτή (prser) Σύνταξη και Συντακτική Ανάλυση 19 Ιστορικές σημειώσεις (1) Παλιά, κάποιες γλώσσες προγραμματισμού δε διαχώριζαν τη λεκτική από την φραστική δομή Παλιές εκδόσεις της Fortrn και της Algol επέτρεπαν κενά σε οποιοδήποτε σημείο, ακόμα και στο μέσο μιας λέξης κλειδί! Άλλες γλώσσες, π.χ. η PL/I, επιτρέπουν τη χρήση λέξεων κλειδιών ως μεταβλητές (Το ίδιο συμβαίνει και στην ML, αλλά εκεί δεν αποτελεί πρόβλημα.) Τα παραπάνω προσθέτουν δυσκολία στην λεκτική και συντακτική ανάλυση και μειώνουν την αναγνωσιμότητα των προγραμμάτων Σύνταξη και Συντακτική Ανάλυση 20
6 Ιστορικές σημειώσεις (2) Κάποιες γλώσσες έχουν λεκτική δομή σταθερής μορφής (fixed-formt ) τα κενά είναι σημαντικά Μία εντολή ανά γραμμή (π.χ. της διάτρητης κάρτας) Οι πρώτες 7 θέσεις κάθε γραμμής για την ταμπέλα (lel) Οι πρώτες διάλεκτοι της Fortrn, Cool, και της Bsi Σχεδόν οι περισσότερες μοντέρνες γλώσσες είναι ελεύθερης μορφής (free-formt ): τα κενά αγνοούνται Π.χ. Algol, Psl, Jv Μερικές άλλες (C, C++) διαφέρουν λίγο λόγω του προεπεξεργαστή Σύνταξη και Συντακτική Ανάλυση 21 Άλλες μορφές γραμματικών Μικρές διαφοροποιήσεις της μορφής Bkus-Nur (BNF) Χρήση ή = αντί για ::= Όχι <> αλλά κάποιο ειδικό font ή χρήση αποστρόφων για τις λεκτικές μονάδες ώστε να ξεχωρίζονται εύκολα από τα μη τερματικά σύμβολα Επεκτάσεις της μορφής Bkus-Nur (EBNF) Πρόσθετος συμβολισμός για την απλοποίηση κάποιων κανόνων: {x} υποδηλώνει μηδέν ή περισσότερες επαναλήψεις του x [x] υποδηλώνει ότι το x είναι προαιρετικό (δηλαδή x <empty>) () για ομαδοποίηση οπουδήποτε για να υποδηλώσει επιλογή Αποστρόφους γύρω από τις λεκτικές μονάδες ούτως ώστε να ξεχωρίζονται από τα παραπάνω μετασύμβολα Συντακτικά διαγράμματα Σύνταξη και Συντακτική Ανάλυση 22 Παραδείγματα EBNF <if-stmt> ::= if <expr> then <stmt> [else <stmt>] <stmt-list> ::= {<stmt> ;} <thing-list> ::= { (<stmt> <delrtion>) ;} Συντακτικά διαγράμματα (1) Έστω ότι έχουμε μια γραμματική σε EBNF Ο κάθε κανόνας παραγωγής μετατρέπεται σε μια σειρά από κουτιά Ορθογώνια για τα μη τερματικά σύμβολα Οβάλ για τα τερματικά σύμβολα Τα παραπάνω ενώνονται με βέλη (Πιθανώς κάποια βέλη να παρακάμπτουν κάποια από τα κουτιά.) <if-stmt> ::= if <expr> then <stmt> [ else <stmt> ] if-stmt if then else expr stmt stmt Σύνταξη και Συντακτική Ανάλυση 23 Σύνταξη και Συντακτική Ανάλυση 24
7 Συντακτικά διαγράμματα (2) Παράδειγμα διαφορετικού συμβολισμού EBNF Πολλαπλοί κανόνες παραγωγής χρησιμοποιούν διακλαδώσεις (rnhing) exp exp + exp exp * exp ( exp ) WhileSttement: while ( Expression ) Sttement DoSttement: do Sttement while ( Expression ); ForSttement: for ( ForInit opt ; Expression opt ; ForUpdte opt ) Sttement Η επανάληψη υποδηλώνεται με χρήση βρόχων <exp> ::= <ddend> {+ <ddend>} exp ddend + από το βιβλίο The Jv Lnguge Speifition, Jmes Gosling et l. Σύνταξη και Συντακτική Ανάλυση 25 Σύνταξη και Συντακτική Ανάλυση 26 Τρεις ισοδύναμες γραμματικές G1: <suexp> ::= <suexp> - <suexp> Από τη Σύνταξη προς τη Σημασιολογία G2: <suexp> ::= <vr> - <suexp> <vr> <vr> ::= G3: <suexp> ::= <suexp> - <vr> <vr> <vr> ::= Και οι τρεις γραμματικές ορίζουν την ίδια γλώσσα: τη γλώσσα όλων των συμβολοσειρών που περιλαμβάνουν ένα ή περισσότερα,, ή τα οποία διαχωρίζονται από ένα μείον. Αλλά... Σύνταξη και Συντακτική Ανάλυση 27 Σύνταξη και Συντακτική Ανάλυση 28
8 <suexp> Γιατί είναι σημαντικά τα συντακτικά δένδρα; G2 prse tree: <vr> - <suexp> <vr> - <suexp> Θέλουμε η δομή του συντακτικού δένδρου να αντικατοπτρίζει τη σημασιολογία της συμβολοσειράς <vr> που αντιπροσωπεύει Αυτό κάνει το σχεδιασμό της γλώσσας πιο δύσκολο: <suexp> ενδιαφερόμαστε για τη δομή του κάθε συντακτικού δένδρου όχι μόνο για τη συμβολοσειρά των φύλλων του <suexp> - <vr> G3 prse tree: <suexp> - <vr> Τα συντακτικά δένδρα είναι το μέρος που η σύνταξη <vr> αρχίζει να συναντά τη σημασιολογία των γλωσσών Σύνταξη και Συντακτική Ανάλυση 29 Σύνταξη και Συντακτική Ανάλυση 30 Τελεστές (opertors) Προτεραιότητα (preedene) τελεστών Τελεστές χρησιμοποιούνται για λειτουργίες που γίνονται συχνά, π.χ. πρόσθεση, αφαίρεση, πολλαπλασιασμό, Ο όρος τελεστής αναφέρεται τόσο στη λεκτική μονάδα (π.χ. +, *) όσο και στη λειτουργία αυτή καθ αυτή Μοναδιαίοι τελεστές δέχονται ένα όρισμα: -1 Δυαδικοί τελεστές δέχονται δύο ορίσματα: 1+2 Τριαδικοί τελεστές δέχονται τρία ορίσματα:?: Στις περισσότερες γλώσσες Οι δυαδικοί τελεστές γράφονται σε infix μορφή: π.χ. 1+2 Οι μοναδιαίοι τελεστές γράφονται σε prefix (-2) ή σεpostfix μορφή (i++) Σύνταξη και Συντακτική Ανάλυση 31 Έστω η γραμματική G4: Ένα συντακτικό δένδρο για τη συμβολοσειρά +* είναι το <exp> ::= <exp> + <exp> <exp> * <exp> ( <exp> ) <exp> <exp> * <exp> <exp> + <exp> Στο δένδρο αυτό η πρόσθεση γίνεται πριν από τον πολλαπλασιασμό, κάτι που δεν είναι σε αρμονία με τις συνήθεις προτεραιότητες των τελεστών + και * Σύνταξη και Συντακτική Ανάλυση 32
9 Προτεραιότητα τελεστών στη γραμματική Για να έχουμε τη σωστή προτεραιότητα τελεστών, αλλάζουμε τη γραμματική με τέτοιο τρόπο ώστε ο τελεστής με την μεγαλύτερη προτεραιότητα να καταλήγει πιο κάτω στο συντακτικό δένδρο G5: <exp> ::= <exp> + <exp> <mulexp> <mulexp> ::= <mulexp> * <mulexp> ( <exp> ) Παραδείγματα προτεραιότητας τελεστών C (15 επίπεδα προτεραιότητας πάρα πολλά;) = <? * p + * : 1 << d () Psl (5 επίπεδα όχι αρκετά;) <= 0 or 100 <= Συντακτικό λάθος! Smlltlk (1 επίπεδο για όλους τους δυαδικούς τελεστές) + * Σύνταξη και Συντακτική Ανάλυση 33 Σύνταξη και Συντακτική Ανάλυση 34 Συντακτικό δένδρο με σωστή προτεραιότητα Προσεταιριστικότητα (ssoitivity) τελεστών <exp> <exp> <exp> G5 prse tree: <exp> + <exp> <mulexp> <mulexp> <exp> + <exp> <mulexp> <exp> + <exp> <mulexp> <mulexp> <exp> + <exp> <exp> + <exp> <mulexp> <mulexp> <mulexp> <mulexp> * <mulexp> Η γραμματική G5 παράγει μόνο αυτό το δένδρο για +* Αναγνωρίζει την ίδια γλώσσα με τη G4, αλλά δεν παράγει πλέον δένδρα με λάθος προτεραιότητα τελεστών Σύνταξη και Συντακτική Ανάλυση 35 Η γραμματική G5 παράγει τα παραπάνω δένδρα για ++ Το πρώτο από αυτά δεν αντικατοπτρίζει τη συνήθη προσεταιριστικότητα του τελεστή + Σύνταξη και Συντακτική Ανάλυση 36
10 Προσεταιριστικότητα τελεστών Έχουν χρησιμότητα όταν η σειρά της αποτίμησης δεν καθορίζεται από παρενθέσεις ή προτεραιότητα τελεστών Οι αριστερά προσεταιριστικοί τελεστές ομαδοποιούν από αριστερά προς τα δεξιά: +++d = ((+)+)+d Οι δεξιά προσεταιριστικοί τελεστές ομαδοποιούν από δεξιά προς τα αριστερά: +++d = +(+(+d)) Στις περισσότερες γλώσσες, οι περισσότεροι τελεστές είναι αριστερά προσεταιριστικοί, αλλά υπάρχουν και εξαιρέσεις Παραδείγματα προσεταιριστικότητας C ML <<<< ==0 Fortrn τελεστές είναι αριστερά προσεταιριστικοί δεξιά προσεταιριστικός (ανάθεση) τελεστές είναι αριστερά προσεταιριστικοί 1::2::nil δεξιά προσεταιριστικός (κατασκευή λίστας) /* **** τελεστές είναι αριστερά προσεταιριστικοί δεξιά προσεταιριστικός (ύψωση σε δύναμη) Σύνταξη και Συντακτική Ανάλυση 37 Σύνταξη και Συντακτική Ανάλυση 38 Προσεταιριστικότητα στη γραμματική G5: <exp> ::= <exp> + <exp> <mulexp> <mulexp> ::= <mulexp> * <mulexp> ( <exp> ) Για να διορθώσουμε το πρόβλημα, τροποποιούμε τη γραμματική ώστε να κάνουμε δένδρα με τελεστές + να μεγαλώνουν προς τα αριστερά (παρόμοια για τον *) Δένδρο με σωστή προσεταιριστικότητα <exp> <mulexp> <rootexp> <exp> <exp> + <mulexp> + <mulexp> <rootexp> <rootexp> G6: <exp> ::= <exp> + <mulexp> <mulexp> <mulexp> ::= <mulexp> * <rootexp> <rootexp> <rootexp> ::= ( <exp> ) Η γραμματική G6 παράγει μόνο αυτό το δένδρο για ++ Παράγει την ίδια γλώσσα με τη G5, αλλά δεν παράγει πλέον δένδρα με λάθος προσεταιριστικότητα τελεστών Σύνταξη και Συντακτική Ανάλυση 39 Σύνταξη και Συντακτική Ανάλυση 40
11 Πρακτική άσκηση Ξεκινώντας από τη γραμματική G6: <exp> ::= <exp> + <mulexp> <mulexp> <mulexp> ::= <mulexp> * <rootexp> <rootexp> <rootexp> ::= ( <exp> ) 1. Προσθέστε έναν αριστερά προσεταιριστικό τελεστή &, με προτεραιότητα μικρότερη από όλους τους άλλους 2. Στη συνέχεια προσθέστε ένα δεξιά προσεταιριστικό τελεστή **, με προτεραιότητα μεγαλύτερη από όλους τους άλλους Διφορούμενη ερμηνεία (miguity) Η γραμματική G4 είναι διφορούμενη (miguous): παράγει περισσότερα από ένα συντακτικά δένδρα για την ίδια συμβολοσειρά Όμως η επιδιόρθωση των προβλημάτων προτεραιότητας και προσεταιριστικότητας των τελεστών εξαφάνισε όλη την ασάφεια στη συγκεκριμένη γραμματική Αυτό είναι επιθυμητό: το συντακτικό δένδρο υποδηλώνει τη σημασιολογία του προγράμματος και δε θέλουμε αυτή να είναι διφορούμενη Όμως υπάρχουν και άλλοι λόγοι που μια γραμματική είναι διφορούμενη, όχι μόνο λόγοι σχετικοί με τους τελεστές Σύνταξη και Συντακτική Ανάλυση 41 Σύνταξη και Συντακτική Ανάλυση 42 Το πρόβλημα του ξεκρέμαστου else <stmt> ::= <if-stmt> s1 s2 <if-stmt> ::= if <expr> then <stmt> else <stmt> if <expr> then <stmt> <expr> ::= e1 e2 Η γραμματική αυτή είναι διφορούμενη ως προς τo ξεκρέμαστο else ( dngling-else miguity ). Η παρακάτω εντολή if e1 then if e2 then s1 else s2 έχει δύο συντακτικά δένδρα Σύνταξη και Συντακτική Ανάλυση 43 <if-stmt> if <ex p> then <stmt> else <stmt> e1 if <ex p> then <stmt> e2 <if-stmt> s1 <if-stmt> if <ex p> then <stmt> e1 if <ex p> then <stmt> else <stmt> e2 <if-stmt> s1 s2 s2 Οι περισσότερες γλώσσες που έχουν αυτό το πρόβλημα επιλέγουν το κάτω συντακτικό δένδρο: το else πηγαίνει με το κοντινότερο αταίριαστο then Σύνταξη και Συντακτική Ανάλυση 44
12 Διόρθωση του προβλήματος (1) <stmt> ::= <if-stmt> s1 s2 <if-stmt> ::= if <expr> then <stmt> else <stmt> if <expr> then <stmt> <expr> ::= e1 e2 Θέλουμε να επιβάλλουμε ότι εάν αυτό επεκταθεί σε ένα if, τότε το if πρέπει ήδη να έχει το δικό του else. Πρώτα, δημιουργούμε ένα νέο μη τερματικό <full-stmt> που παράγει όλες τις εντολές που παράγονται από το <stmt>, αλλά απαγορεύει τις if εντολές χωρίς else Διόρθωση του προβλήματος (2) Μετά χρησιμοποιούμε το νέο μη τερματικό εδώ <stmt> ::= <if-stmt> s1 s2 <if-stmt> ::= if <expr> then <full-stmt> else <stmt> if <expr> then <stmt> <expr> ::= e1 e2 Το αποτέλεσμα είναι ότι η παραπάνω γραμματική μπορεί να ταιριάξει ένα else με ένα if μόνο όταν όλα τα κοντινά if έχουν ήδη κάποιο else ως ταίρι τους. <full-stmt> ::= <full-if> s1 s2 <full-if> ::= if <expr> then <full-stmt> else <full-stmt> Σύνταξη και Συντακτική Ανάλυση 45 Σύνταξη και Συντακτική Ανάλυση 46 Τώρα παράγουμε μόνο το συντακτικό δένδρο Ξεκρέμαστα else και αναγνωσιμότητα <if-stmt> if <exp> then <stmt> e1 <if-stmt> Διορθώσαμε τη γραμματική, αλλά Το πρόβλημα στη γραμματική αντικατοπτρίζει κάποιο πρόβλημα στη γλώσσα, την οποία δεν αλλάξαμε Μια ακολουθία από if-then-else δεν είναι εύκολα αναγνώσιμη, ειδικά εάν κάποια από τα else λείπουν if <exp> then <full-stmt> else <stmt> e2 s1 s2 int =0; if (0==0) if (0==1) =17; else =42; Ποια είναι η τιμή του μετά την εκτέλεση του προγράμματος; Σύνταξη και Συντακτική Ανάλυση 47 Σύνταξη και Συντακτική Ανάλυση 48
13 Καλύτερα στυλ προγραμματισμού Γλώσσες χωρίς ξεκρέμαστα else int =0; if (0==0) if (0==1) =17; else =42; int =0; if (0==0) { if (0==1) =17; else =42; } Καλύτερο: σωστή στοίχιση Ακόμα καλύτερο: ηχρήση μπλοκ δείχνει καθαρά τη δομή του κώδικα Μερικές γλώσσες ορίζουν τα if-then-else με τρόπο τέτοιο που να επιβάλλει τη σαφήνεια στη χρήση τους Η Algol δεν επιτρέπει μέσα στο then να αρχίζει άμεσα κάποιο άλλο if (αλλά μπορεί να αρχίζει ένα μπλοκ με ένα άλλο if) Η Algol 68 επιβάλλει σε κάθε if να τερματίζεται με ένα fi (υπάρχουν επίσης do-od και se-es) Η Ad επιβάλλει σε κάθε if να τερματίζεται με ένα end if Σύνταξη και Συντακτική Ανάλυση 49 Σύνταξη και Συντακτική Ανάλυση 50 Γραμματική για ολόκληρη τη γλώσσα Κάθε ρεαλιστική γλώσσα περιέχει πολλά μη τερματικά σύμβολα Ειδικά εάν από τη γραμματική έχει εξαλειφθεί η ασάφεια Τα επιπλέον μη τερματικά καθορίζουν τον τρόπο με τον οποίο προκύπτει ένα μοναδικό συντακτικό δένδρο Όταν κατασκευαστεί το συντακτικό δένδρο, τα επιπλέον μη τερματικά δεν έχουν κάποια χρησιμότητα πλέον Οι υλοποιήσεις των γλωσσών συνήθως αποθηκεύουν μια συνεπτυγμένη μορφή του συντακτικού δένδρου, η οποία ονομάζεται αφηρημένο συντακτικό δένδρο Σύνταξη και Συντακτική Ανάλυση 51 Συγκεκριμένο συντακτικό δένδρο <exp> <exp> + <mulexp> <exp> + <mulexp> <rootexp> <mulexp> <rootexp> <rootexp> + + Αφηρημένο συντακτικό δένδρο Σύνταξη και Συντακτική Ανάλυση 52
14 Συμπερασματικά Για τον ορισμό του συντακτικού (και όχι μόνο!) των γλωσσών προγραμματισμού χρησιμοποιούμε γραμματικές Οι γραμματικές ορίζουν το ποια είναι τα επιτρεπτά προγράμματα μιας γλώσσας, αλλά και το συντακτικό δένδρο για αυτά τα προγράμματα το δένδρο με τη σειρά του ορίζει τη σειρά εκτέλεσης των εντολών και κατά συνέπεια συνεισφέρει στον ορισμό της σημασιολογίας Υπάρχει ισχυρή σύνδεση μεταξύ θεωρίας και πράξης Δύο γραμματικές, δύο μέρη του μεταγλωττιστή (ompiler) Σημείωση: Υπάρχουν προγράμματα, γεννήτριες συντακτικών αναλυτών (prser genertors), που μπορούν να δημιουργήσουν αυτόματα τον κώδικα του λεκτικού και του συντακτικού αναλυτή απότηγραμματικήμιαςγλώσσας Σύνταξη και Συντακτική Ανάλυση 53
Σύνταξη & Συντακτική Ανάλυση
Σύνταξη & Συντακτική Ανάλυση Μια γραμματική για τα Αγγλικά Μια πρόταση αποτελείται από μια ουσιαστική φράση, ένα ρήμα, και μια ουσιαστική φράση ::= Μια ουσιαστική φράση αποτελείται από
Διαβάστε περισσότεραΣύνταξη & Συντακτική Ανάλυση
Σύνταξη & Συντακτική Ανάλυση Μια γραµµατική για τα Αγγλικά Μια πρόταση αποτελείται από µια ουσιαστική φράση, ένα ρήµα, και µια ουσιαστική φράση ::= Rene Mgritte, Le Seize Septemre Μια
Διαβάστε περισσότεραΚεφάλαιο 2: Τυπικές γλώσσες
Κεφάλαιο 2: Τυπικές γλώσσες (μέρος 2ο) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 47 / 216 Γλώσσες χωρίς συμφραζόμενα (i) Γραμματικές χωρίς συμφραζόμενα: Σε κάθε παραγωγή ένα μη τερματικό
Διαβάστε περισσότεραΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων
ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 2 Ο Εργαστηριακό Μάθημα Λεξική Ανάλυση Σκοπός: Το μάθημα αυτό αναφέρεται: Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση Στη δήλωση ορισμό κανονικών εκφράσεων Θεωρία Πρόλογος
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε
Διαβάστε περισσότεραΣχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση ΙII. Εαρινό Εξάμηνο Lec 11 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής
Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση ΙII Εαρινό Εξάμηνο 2018-2019 Lec 11 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Γραμματικές Μία γραμματική ονομάζεται αναδρομική εφόσον επιτρέπει παραγωγές
Διαβάστε περισσότερα2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων
2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει
Διαβάστε περισσότεραΕισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο
Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2014-2015 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα
Διαβάστε περισσότεραΜεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Γιώργος Δημητρίου Μάθημα 2 ο Αλφάβητα και Γλώσσες Αλφάβητο: Ένα μη κενό και πεπερασμένο σύνολο συμβόλων Γλώσσα: Ένα οποιοδήποτε υποσύνολο των συμβολοσειρών ενός αλφαβήτου (οι προτάσεις της γλώσσας, πχ.
Διαβάστε περισσότεραΣχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13
Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13 ΙΣΤΟΡΙΚΑ Παρουσιάστηκε το 1970 από το Niklaus Wirth Προγενέστερη γλώσσα ήταν η Algol 60 Είναι δομημένη γλώσσα προγραμματισμού υψηλού
Διαβάστε περισσότεραΜεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Γιώργος Δημητρίου Μάθημα 1 ο Γλώσσα - Μετάφραση Γλώσσα προγραμματισμού = Αναπαράσταση αλγορίθμων Ευκολία χρήσης Ακρίβεια και πληρότητα περιγραφής, όχι διφορούμενη! Μία περιγραφή για όλες τις μηχανές Μετάφραση
Διαβάστε περισσότεραΜεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Μεταγλωττιστές Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανοδική Κατασκευή Συντακτικού Δέντρου κατασκευή δέντρου
Διαβάστε περισσότεραΕισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο
Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2016-2017 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής
Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Δεύτερη Σειρά Ασκήσεων 22 Νοεμβρίου 2016 (χειρόγραφη και ηλεκτρονική παράδοση 9 Δεκεμβρίου) Άσκηση 1: Θεωρήστε τη γραμματική με κανόνες: Α B a A a c B B b A b
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού Strange
Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού Strange Η Strange είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική αυτή γλώσσα περιέχει
Διαβάστε περισσότεραΜεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Γιώργος Δημητρίου Μάθημα 8 ο Μετάφραση Οδηγούμενη από τη Σύνταξη Ο ΣΑ καλεί τις ρουτίνες που εκτελούν τη σημασιολογική ανάλυση και παράγουν τον ενδιάμεσο κώδικα Σημασιολογικές πληροφορίες μπορούν να μεταφέρονται
Διαβάστε περισσότερα3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)
Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.
Διαβάστε περισσότεραΈστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την
Βοηθητικές έννοιες (i) Σύνολα FIRST Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την Αν a τότε a FIRST Αν τότε FIRST Νίκος Παπασπύρου,
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις
Διαβάστε περισσότεραΜεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ
Μεταγλωττιστές Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΠροβλήματα, αλγόριθμοι, ψευδοκώδικας
Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι
Διαβάστε περισσότεραΤεχνητή Νοημοσύνη. 21η διάλεξη ( ) Ίων Ανδρουτσόπουλος.
Τεχνητή Νοημοσύνη 21η διάλεξη (2016-17) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία: «Artificial Intelligence A Modern Approach» των. Russel
Διαβάστε περισσότεραΣχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ.
Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι Εαρινό Εξάμηνο 2018-2019 Lec 05 & 06 25 & 26 /02/2019 Διδάσκων: Γεώργιος Χρ. Μακρής Φάσεις μεταγλώττισης Αρχικό Πρόγραμμα Λεκτική Ανάλυση λεκτικές μονάδες
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python
ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής
Διαβάστε περισσότεραΜεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι
Μεταγλωττιστές Εργαστήριο 9 Σημασιολογική Ανάλυση Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2016-2017 Σύνταξη και Σημασιολογία Σε οποιαδήποτε γλώσσα (προγραμματισμού ή μη) υπάρχουν δύο βασικές
Διαβάστε περισσότεραΣτόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή
Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές
Διαβάστε περισσότεραΕισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C
Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL
8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to
Διαβάστε περισσότεραΣτοιχειώδης προγραμματισμός σε C++
Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.
Διαβάστε περισσότεραΜεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Συντακτική Ανάλυση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Μεταγλωττιστές Συντακτική Ανάλυση Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Συντακτική Ανάλυση Το συντακτικό μιας γλώσσας καθορίζει ποιες συμβολοσειρές
Διαβάστε περισσότεραΑνάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο
Διαβάστε περισσότεραΔυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client
ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις
Διαβάστε περισσότεραΓλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση με το Εργαλείο BISON
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση με το Εργαλείο BISON Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Γεννήτριες Συντακτικών Αναλυτών Bison/yacc
Διαβάστε περισσότεραΜεταγλωττιστές. Εργαστήριο 5. Εισαγωγή στο BISON. Γεννήτρια Συντακτικών Αναλυτών. 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση
Μεταγλωττιστές Εργαστήριο 5 Εισαγωγή στο BISON Γεννήτρια Συντακτικών Αναλυτών 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2015-1016 Φάσεις Μεταγλώττισης
Διαβάστε περισσότεραΚεφάλαιο 2: Τυπικές γλώσσες. Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος / 216
Κεφάλαιο 2: Τυπικές γλώσσες Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 13 / 216 Τυπικές γλώσσες (i) Βασικές έννοιες Αλφάβητο Σύμβολο Συμβολοσειρά Μήκος συμβολοσειράς Σύνολο συμβολοσειρών
Διαβάστε περισσότεραΜεταγλωττιστές. Ενότητα 7: Συντακτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ
Μεταγλωττιστές Ενότητα 7: Συντακτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 4 η Τελεστές Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης
Διαβάστε περισσότεραΔιασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1
Διασυνδεδεμένες Δομές Δυαδικά Δέντρα Προγραμματισμός II 1 lalis@inf.uth.gr Δέντρα Τα δέντρα είναι κλασικές αναδρομικές δομές Ένα δέντρο αποτελείται από υποδέντρα, καθένα από τα οποία μπορεί να θεωρηθεί
Διαβάστε περισσότεραΜεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 3 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής
Γιώργος Δημητρίου Μάθημα 3 ο Λεκτική Ανάλυση και Λεκτικοί Αναλυτές Γενικά για τη λεκτική ανάλυση Έννοιες που χρειαζόμαστε Τεχνικές λεκτικής ανάλυσης Πίνακας συμβόλων και διαχείριση λαθών Σχεδίαση λεκτικού
Διαβάστε περισσότεραΜέρος 2 Κατασκευή Συντακτικού Αναλυτή
Αντίρριο, 05/04/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» To δεύτερο μέρος της εργασίας έχει ως στόχο την ανάπτυξη του συντακτικού αναλυτή με χρήση του bison / byacc. Στο
Διαβάστε περισσότεραΚεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού
Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Εισαγωγή Γνώση γλώσσας από τη σκοπιά Του συντακτικού (syntax) Περιγραφή με γραμματικές
Διαβάστε περισσότερα3. Εκφράσεις και έλεγχος ροής
3. Εκφράσεις και έλεγχος ροής Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να διακρίνετε ανάμεσα σε μεταβλητές μέλη και αυτόματες μεταβλητές Να περιγράφετε την αρχικοποίηση των μεταβλητών μελών Να αναγνωρίζετε
Διαβάστε περισσότεραΚεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας
Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Εισαγωγή - 1 Μία κλασσική γλώσσα προγραμματισμού αποτελείται από: Εκφράσεις (των
Διαβάστε περισσότεραΓλώσσες Προγραμματισμού Μεταγλωττιστές
Γλώσσες Προγραμματισμού Μεταγλωττιστές Παραγωγή Ενδιάμεσου Κώδικα Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Παραγωγή ενδιάμεσου κώδικα. Ενδιάμεσες γλώσσες. Αφηρημένα
Διαβάστε περισσότεραΒασικές έννοιες προγραμματισμού
Βασικές έννοιες προγραμματισμού Αλφάβητο Γράμματα Κεφαλαία Ελληνικά ( Α Ω ) Πεζά Ελληνικά ( α ω ) Κεφαλαία Λατινικά ( A Z ) Πεζά Ελληνικά ( a z) Ψηφία 0-9 Ειδικοί χαρακτήρες ( +, -, *,/, =,.,,!, κενό )
Διαβάστε περισσότεραΣύντομες εισαγωγικές σημειώσεις για την. Matlab
Σύντομες εισαγωγικές σημειώσεις για την Matlab Δήλωση Μεταβλητών Για να εισάγει κανείς δεδομένα στη Matlab υπάρχουν πολλοί τρόποι. Ο πιο απλός είναι στη γραμμή εντολών να εισάγουμε αυτό που θέλουμε και
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού EEL
Προγραμματιστική άσκηση: Η γλώσσα προγραμματισμού EEL Η EEL (Early Experimental Language) είναι μια μικρή γλώσσα προγραμματισμού. Παρόλο που οι προγραμματιστικές της ικανότητες είναι μικρές, η εκπαιδευτική
Διαβάστε περισσότεραΠρογραμματισμός Ι (HY120)
Προγραμματισμός Ι (HY120) #6 εκτέλεση σε επανάληψη 1 Σπύρος Λάλης Εκτέλεση σε επανάληψη: while while () lexpr body true false Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται σε μια τιμή
Διαβάστε περισσότεραΛειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών
Λειτουργικά Αριστείδης Ηλίας Συστήματα Ι Φ ρ ο ν τ ι σ τ ή ρ ι ο Shell Scripting Εισαγωγή Ένα shell script είναι μια λίστα εντολών που εκτελούνται ακολουθιακά Εκτελούνται ανάλογα με το κέλυφος και για
Διαβάστε περισσότεραΚεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει
Διαβάστε περισσότεραΠίνακας Περιεχοµένων Πρόλογος Κεφάλαιο Βασικές εισαγωγικές έννοιες
Πίνακας Περιεχοµένων Πρόλογος...vii Κεφάλαιο 1:Βασικές εισαγωγικές έννοιες...1 1.1 Η δοµή του µεταγλωττιστή...2 1.2 Η διαδικασία µεταγλώττισης...3 1.2.1 Η Λεξική Ανάλυση...6 1.2.2 Η Συντακτική Ανάλυση...6
Διαβάστε περισσότεραΠανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Δεύτερη Σειρά Ασκήσεων 22 Νοεμβρίου 2016 Μέρος Α. (χειρόγραφη και ηλεκτρονική παράδοση 9 Δεκεμβρίου) Άσκηση 1: Θεωρήστε τη
Διαβάστε περισσότεραΑρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση
Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2011-2012 Γιάννης Γαροφαλάκης, Καθηγητής Αθανάσιος Ν.Νικολακόπουλος, Υποψήφιος Διδάκτορας 28 Μαρτίου 2012 Περίληψη Σκοπός της παρούσας
Διαβάστε περισσότεραa = 10; a = k; int a,b,c; a = b = c = 10;
C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2
Διαβάστε περισσότεραΣτη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:
Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.
ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Σύνολο χαρακτήρων της Pascal Για
Διαβάστε περισσότερα2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός
Διαβάστε περισσότεραΕργαστήριο 08 Εισαγωγή στo Yacc
Εργαστήριο 08 Εισαγωγή στo Yacc Θεωρία Σκοπός: Το μάθημα αυτό αναφέρεται: Στο εργαλείο κατασκευής συντακτικών αναλυτών, Yacc, στις δομές και συναρτήσεις που προσφέρει. Στη σύνταξη των αρχείων περιγραφής
Διαβάστε περισσότεραΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου
Λογισμικό Συστήματος Κλειώ Σγουροπούλου Λογισμικό συστήματος Λειτουργικό σύστημα Μεταφραστές γλώσσας (translators) Διερμηνείς (interpreters) Μεταγλωττιστές (compilers) Εκδότες (editors) Φορτωτές (loaders)
Διαβάστε περισσότερα2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ
ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)
Διαβάστε περισσότεραΣτοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές
Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ο. Τελέλης Πανεπιστήµιο Πειραιώς Θεωρία Υπολογισµού 1 /
Διαβάστε περισσότεραΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY
ΜΕΡΙΚΑ ΣΤΟΙΧΕΙΑ ΓΙΑ ΤΙΣ ΓΛΩΣΣEΣ ΠPOΓPAMMATIΣMOY Mία γλώσσα προγραμματισμού συνίσταται από ένα περιορισμένο υποσύνολο της αγγλικής γλώσσας και το οποίο αποτελείται από εκφράσεις σαφώς ορισμένες, χωρίς παρερμηνεία.
Διαβάστε περισσότεραΠαρουσίαση του εργαλείου BISON
Παρουσίαση του εργαλείου BISON Γεννήτρια Συντακτικών Αναλυτών Β Φάση Συντακτική Ανάλυση Χαρακτηριστικά του bison Γεννήτρια συντακτικών αναλυτών σε C/C++. Συµβατό µε το εργαλείο του Unixyacc. Σχετικά εύκολο
Διαβάστε περισσότεραΠοιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί);
Μοντελοποίηση του Υπολογισµού Στοιχεία Θεωρίας Υπολογισµού (): Τυπικές Γλώσσες, Γραµµατικές Ορέστης Τελέλης telelis@unipi.gr Τµήµα Ψηφιακών Συστηµάτων, Πανεπιστήµιο Πειραιώς Ποιές οι θεµελιώδεις δυνατότητες
Διαβάστε περισσότεραΔιαδικασιακός Προγραμματισμός
Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα
Διαβάστε περισσότεραΠρόβλημα 29 / σελίδα 28
Πρόβλημα 29 / σελίδα 28 Πρόβλημα 30 / σελίδα 28 Αντιμετάθεση / σελίδα 10 Να γράψετε αλγόριθμο, οποίος θα διαβάζει τα περιεχόμενα δύο μεταβλητών Α και Β, στη συνέχεια να αντιμεταθέτει τα περιεχόμενά τους
Διαβάστε περισσότερα5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ
5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος
Διαβάστε περισσότεραΑντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»
Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές» Η εργασία έχει ως στόχο τον σχεδιασμό και την υλοποίηση ενός μεταγλωττιστή για την γλώσσα Ciscal, χρησιμοποιώντας
Διαβάστε περισσότεραΑρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013
Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση 2012-2013 27 Μαρτίου 2013 Περίληψη Σκοπός της παρούσας εργασίας είναι η εξοικείωσή σας με τις θεμελιώδεις θεωρητικές και πρακτικές πτυχές
Διαβάστε περισσότεραΑυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6
Εισαγωγή στην Επιστήμη των Υπολογιστών 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές http://www.corelab.ece.ntua.gr/courses/ Αυτόματα Τρόπος κωδικοποίησης αλγορίθμων. Τρόπος περιγραφής συστημάτων πεπερασμένων
Διαβάστε περισσότεραΘέματα Μεταγλωττιστών
Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 1 η : Parsers Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Συντακτική Ανάλυση για ΓΧΣ Οι τεχνικές συντακτικής ανάλυσης κατηγοριοποιούνται
Διαβάστε περισσότεραΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης
ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ Πρώτα να δούμε τι ακριβώς συμπεριλαμβάνει μια μεταβλητή τύπος Καθορίζει το μέγεθος στην μνήμη σε Bytes τιμή Η αριθμητική τιμή που αποθηκεύεται στην
Διαβάστε περισσότεραΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού»
ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραµµατισµού 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας 1 6.1 Γενιές γλωσσών προγραµµατισµού 2 Δεύτερη γενιά: γλώσσα assembly Ένα µνηµονικό σύστηµα για την αναπαράσταση προγραµµάτων
Διαβάστε περισσότεραΓλώσσες Προγραμματισμού Μεταγλωττιστές. Σημασιολογική Ανάλυση
Γλώσσες Προγραμματισμού Μεταγλωττιστές Σημασιολογική Ανάλυση Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου Δομή Σημασιολογικής Ανάλυσης Στατική και Δυναμική Σημασιολογία Σημασιολογικοί
Διαβάστε περισσότεραΘέματα Μεταγλωττιστών
Γιώργος Δημητρίου Ενότητα 1 η : Parsers Συντακτική Ανάλυση για ΓΧΣ Οι τεχνικές συντακτικής ανάλυσης κατηγοριοποιούνται με βάση διάφορα κριτήρια: Κατεύθυνση ανάλυσης μη τερματικών συμβόλων Σειρά επιλογής
Διαβάστε περισσότεραΣειρά Προβλημάτων 3 Λύσεις
Άσκηση 1 Σειρά Προβλημάτων 3 Λύσεις Να δώσετε ασυμφραστικές γραμματικές που να παράγουν τις πιο κάτω γλώσσες: (α) { a m b n c p m,n,p 0 και είτε m + n = p είτε m = n + p } (β) { xx rev yy rev x, y {a,b}
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως
Διαβάστε περισσότεραΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών
ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ 1 Τύποι δεδομένων Η γλώσσα προγραμματισμού C++ υποστηρίζει τους παρακάτω τύπους δεδομένων: 1) Ακέραιοι αριθμοί (int). 2) Πραγματικοί αριθμοί διπλής ακρίβειας
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2008 ΔΙΔΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙΔΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Παράδοση: Πέμπτη 10 Απριλίου 2008, 24:00 (μεσάνυχτα)
Διαβάστε περισσότεραΕισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου
ΕΣΔ 516 Τεχνολογίες Διαδικτύου Εισαγωγή στην PHP Περιεχόμενα Περιεχόμενα PHP και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις Παράδειγματα 1 Βιβλιογραφία Ενότητας Βιβλιογραφία [Lane 2004]: Chapter
Διαβάστε περισσότεραΛογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ
ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ Λογικός τύπος ( ) Ο τύπος είναι κατάλληλoς για την αναπαράσταση ποσοτήτων που μπορούν να πάρουν δύο μόνο τιμές (π.χ. ναι/όχι, αληθές/ψευδές, ). Τιμές ή Δήλωση Εκχώρηση Ισοδυναμία με ακέραιους
Διαβάστε περισσότεραΜοντελοποίηση Υπολογισμού. Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις
Μοντελοποίηση Υπολογισμού Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις Προβλήματα - Υπολογιστές Δεδομένου ενός προβλήματος υπάρχουν 2 σημαντικά ερωτήματα: Μπορεί να επιλυθεί με χρήση υπολογιστή;
Διαβάστε περισσότεραΠρόβλημα 37 / σελίδα 207
Πρόβλημα 37 / σελίδα 207 2.5. Ôåóô áõôïáîéïëüãçóçò Δίνονται οι παρακάτω ομάδες προτάσεων. Σε κάθε μία από αυτές, να κάνετε τις απαραίτητες διορθώσεις ώστε να ισχύουν οι προτάσεις 1. Η αναπαράσταση
Διαβάστε περισσότεραΤυπικές χρήσεις της Matlab
Matlab Μάθημα 1 Τι είναι η Matlab Ολοκληρωμένο Περιβάλλον Περιβάλλον ανάπτυξης Διερμηνευμένη γλώσσα Υψηλή επίδοση Ευρύτητα εφαρμογών Ευκολία διατύπωσης Cross platform (Wintel, Unix, Mac) Τυπικές χρήσεις
Διαβάστε περισσότεραΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ
ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός
Διαβάστε περισσότεραΑπάντηση: (func endfunc)-([a-za-z])+
Γλώσσες Προγραμματισμού Μεταγλωττιστές Ασκήσεις Επανάληψης ) Περιγράψτε τις κανονικές εκφράσεις που υποστηρίζουν (i) συμβολοσειρές που ξεκινούν με το πρόθεμα "func" ή "endfunc" ακολουθούμενο το σύμβολο
Διαβάστε περισσότεραΦυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος
Φυσικές και τεχνητές γλώσσες. Το αλφάβητο της ΓΛΩΣΣΑΣ, Τύποι Δεδομένων. Σταθερές, Μεταβλητές, Τελεστές, Συναρτήσεις, Δομή Προγράμματος Ενότητες βιβλίου: 6.3, 7.1-7.6, 7.10, 8.1 Ώρες διδασκαλίας: 2 Φυσικές
Διαβάστε περισσότεραΕνότητα 5: ΜΕΤΑΒΛΗΤΕΣ
Ενότητα 5: ΜΕΤΑΒΛΗΤΕΣ Οι Μεταβλητές στον Προγραμματισμό Οι μεταβλητές είναι θέσεις μνήμης που έχουν κάποιο όνομα. Όταν δίνω τιμή σε μία μεταβλητή, ουσιαστικά, αποθηκεύουμε στη μνήμη αυτή τον αριθμό που
Διαβάστε περισσότεραΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου
ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου Σκοπός και περίγραμμα της Ενότητας 4 Σκοπός της παρουσίασης Να μελετήσουμε τις συναρτήσεις που ελέγχουν την ροή και την εκτέλεση ενός προγράμματος Σύνοψη
Διαβάστε περισσότεραΣημαντικές δυνατότητες των σύγχρονων υπολογιστικών μηχανών: Αξιόπιστη καταγραφή πολύ μεγάλου όγκου δεδομένων
Σημαντικές δυνατότητες των σύγχρονων υπολογιστικών μηχανών: Γρήγορες προσθέσεις αριθμών Γρήγορες συγκρίσεις αριθμών Αξιόπιστη καταγραφή πολύ μεγάλου όγκου δεδομένων Σχετικά γρήγορη μετάδοση και πρόσληψη
Διαβάστε περισσότερα3 Αλληλεπίδραση Αντικειμένων
Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή
Διαβάστε περισσότεραΜεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ
Μεταγλωττιστές Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΔιάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους
Διαβάστε περισσότεραΕισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.
Εισαγωγή στη JAVA Σύντομο Ιστορικό Η Java και το διαδίκτυο Το πρώτο απλό πρόγραμμα σε JAVA Μεταβλητές και σταθερές Παραστάσεις και εντολές Οι βασικοί τύποι δεδομένων στη Java Οι βασικοί Τελεστές στη Java
Διαβάστε περισσότεραΕισαγωγή στην Επιστήμη των Υπολογιστών
Εισαγωγή στην Επιστήμη των Υπολογιστών 3η ενότητα: Αυτόματα και Τυπικές Γραμματικές http://www.corelab.ece.ntua.gr/courses/ Αυτόματα Τρόπος κωδικοποίησης αλγορίθμων. Τρόπος περιγραφής συστημάτων πεπερασμένων
Διαβάστε περισσότεραΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex.
ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ 5 Ο Εργαστηριακό Μάθημα Δημιουργία Νέων Λεξικών Αναλυτών Σκοπός: Το μάθημα αυτό αναφέρεται: Στην εξοικείωση με τη διαδικασία κατασκευής ενός Λεξικού Αναλυτή κάνοντας χρήση του lex. Στην
Διαβάστε περισσότεραΨευδοκώδικας. November 7, 2011
Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε
Διαβάστε περισσότερα