Μεταγλωττιστές 2019 Θέμα εργασίας

Σχετικά έγγραφα
Μεταγλωττιστές 2018 Θέμα εργασίας

Μεταγλωττιστές 2017 Θέμα εργασίας

Η γλώσσα Edsger. Μεταγλωττιστές 2016 Θέμα εργασίας

Μεταγλωττιστές 2015 Θέμα εργασίας. Η γλώσσα Tony. Sir Charles Antony (Tony) Richard Hoare (1934 ) Prof. Emeritus, Oxford University.

Η γλώσσα Pazcal Μεταγλωττιστές

ΘΠ06 Μεταγλωττιστές. Εργασία Εξαμήνου: Υλοποίηση ενός Μεταγλωττιστή για τη Γλώσσα Floop2009

ΘΠ06 Μεταγλωττιστές. Εργασία Εξαµήνου: Υλοποίηση ενός Μεταγλωττιστή για τη γλώσσα προγραµµατισµού Robin

ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ Τμήμα Ηλεκτρονικών Μηχανικών & Μηχανικών Υπολογιστών Τομέας Πληροφορικής

ΜΑΗΣ ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

Η γλώσσα Llama Μεταγλωττιστές

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

Μεταγλωττιστές Βελτιστοποίηση

ΜΕΡΟΣ Α - Αποτελείται από δέκα (10) ερωτήσεις. Κάθε ερώτηση βαθμολογείται με έξι μονάδες.

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

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

Μεταγλωττιστές Βελτιστοποίηση

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014

ιαφάνειες παρουσίασης #7

Προγραμματισμός PASCAL

2009 :, :30 10: (10) . - (3) . . (10)

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

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

ιαφάνειες παρουσίασης #6

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013

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

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

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

Παράλληλη Επεξεργασία Κεφάλαιο 10 ο Αντίγραφα Εργαζομένων

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

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΚΑΙ ΕΞΕΤΑΣΤΕΑ ΥΛΗ. ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Με τις Γλώσσες Προγραμματισμού Pascal, C, C++, Java

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal Βασικοί τύποι δεδοµένων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ

Κεφάλαιο 1. Τι θα μάθουμε σήμερα: -AND, OR, NOT. -Ενσωματωμένες συναρτήσεις. -Μαθηματικοί τελεστές -ΤΕΛΕΣΤΕΣ DIV ΚΑΙ MOD. -Προτεραιότητα πράξεων

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

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

2/ (α) Να γράψετε τις αντίστοιχες εκφράσεις στη γλώσσα PASCAL για τις πιο κάτω µαθηµατικές εκφράσεις: (ι) z=

Προέλευση της Pazcal ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Αποτελέσματα προόδου

ιαφάνειες παρουσίασης #7

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

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

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

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

Απαντήσεις στο μάθημα Δομημένος Προγραμματισμός ΕΠΑΛ

Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

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

Προτεινόμενες λύσεις

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

Αλγόριθμοι. Α. Υπολογιστικά Προβλήματα. Β. Εισαγωγή στους Αλγόριθμους. Γ. ομή Αλγόριθμων. Δ. ομές εδομένων

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

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

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

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

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

Κεφάλαιο 13 : Τύποι Δεδοµένων

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ:

Γραπτές εξετάσεις στο μάθημα: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Θ) Εισηγητής: Γεωργίου Χρήστος ΘΕΜΑΤΑ & ΑΠΑΝΤΗΣΕΙΣ. Β. Χαρακτήρας(Αλφαριθμητικά)

Μαζέρας Αχιλλέας. Οι εντολές επανάληψης στην Pascal (While) Φυσικός Αυτοματιστής M.Sc. Νοέµβριος 2009

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

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

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

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

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

ΠΡΟΤΕΙΝΟΜΕΝΕΣ ΛΥΣΕΙΣ

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

ΑΠΑΝΤΗΣΕΙΣ. α- Σωστό β- Σωστό γ- Λάθος δ- Λάθος ε- Σωστό στ- Σωστό

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

ιαφάνειες παρουσίασης #8

ΜΑΗΣ ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΔΟΚΙΜΙΟΥ. Ενότητα Α - ΛΥΣΕΙΣ

Chapter 6 BLM Answers

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

Διαδικασίες ΙI. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 5

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

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

ΕΛΛΗΝΙΚΗ ΕΤΑΙΡΕΙΑ ΕΠΙΣΤΗΜΟΝΩΝ ΚΑΙ ΕΠΑΓΓΕΛΜΑΤΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΛΟΣ IFIP, IOI Org. GREEK COMPUTER SOCIETY MEMBER OF IFIP, IOI Org.

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

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

Review Exercises for Chapter 7

Ενότητα 5: «Εισαγωγή στον Προγραμματισμό. Απλές ασκήσεις με γλώσσα C»

Προγραμματισμός PASCAL

Παράλληλη Επεξεργασία Κεφάλαιο 2 Παραλληλισμός Δεδομένων

Προτεινόμενες λύσεις

ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α A1. 2-Λάθος 3-Λάθος 4-Σωστό 5-Λάθος A2. integer. real. Boolean. char. string A3.

Παράλληλη Επεξεργασία Κεφάλαιο 9 ο Επιµερισµός εδοµένων

Παράλληλη Επεξεργασία Κεφάλαιο 8 ο Προγράμματα Περάσματος Μηνυμάτων

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

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος

ιαφάνειες παρουσίασης #11

ιαφάνειες παρουσίασης #5

Transcript:

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Μεταγλωττιστές 0 Θέμα εργασίας ( ) https://courses.softlab.ntua.gr/compilers/ Αθήνα, Φεβρουάριος 0

PCL flexml-lexocamllexalex bisonml-yaccocamlyacchappy JavaCC real

0 0 0 PCL PCL PCL foo Foo FOO 0 0000.0.e 0.0e+ 000.0e- \ \

\n \t \r \0 \\ \ \ \ 0 0 a \n \ abc Route Hello world!\n Name:\t\ Douglas Adams\ \nvalue:\t\n ^ @ PCL (* *) PCL integer boolean char real PCL

0 0 0 array [n] of t n t n t array of t t t ^t t t array [0] of integer array of ^integer ^array of array [0] of boolean integer real t PCL PCL integer boolean false = 0 true = char real array [ n ] of t n t ^t PCL program p; p PCL

var var var i : integer; x, y : real; var s : array [0] of char; 0 0 PCL var procedure p (); procedure p (n : integer); procedure p (a, b : integer; var b : boolean); function f (x : real) : real; function f (var s : array of char) : integer; function f (n : integer; x : real) : ^array of real; forward 0 PCL 0 nil

0 0 0 0 array [n] of char n \0 PCL l array [n] of t array of t e integer l[e] t e n n l n e ^t e^ t e t result t PCL integer true false boolean real char nil ^t t PCL ^ PCL ^ PCL

PCL [ ] @ ^ + - not * / div mod and + - or = > < <= >= <> 0 0 0 @ l t @l ^t l + - not boolean + - * / div mod + - * integer integer real / real div mod integer integer = <> boolean < > <= >= boolean and or boolean PCL f t f(e,..., e n ) t n

0 0 0 f t t t t t ^t ^t PCL l := e l t e t t t integer real ^array [n] of t ^array of t ; end if e then s else s e boolean s s else while e do s e boolean s I:s I s goto I I return new new l l ^t t l t

0 new [e] l l ^array of t e integer e n l array [n] of t dispose new dispose l l ^t t l new l dispose [] l l ^array of t l new l PCL PCL 0 0 procedure writeinteger (n : integer); procedure writeboolean (b : boolean); procedure writechar (c : char); procedure writereal (r : real); procedure writestring (var s : array of char); PCL function readinteger () : integer; function readboolean () : boolean; function readchar () : char; function readreal () : real; procedure readstring (size : integer; var s : array of char); PCL readstring \0 0 function abs (n : integer) : integer; function fabs (r : real) : real;

0 function sqrt (r : real) : real; function sin (r : real) : real; function cos (r : real) : real; function tan (r : real) : real; function arctan (r : real) : real; function exp (r : real) : real; function ln (r : real) : real; function pi () : real; π function trunc (r : real) : integer; function round (r : real) : integer; trunc r round function ord (c : char) : integer; function chr (n : integer) : char; PCL 0 ::= program ;. ::= ( ) ::= var ( (, ) : ; ) + label (, ) ; ; ; forward ; ::= procedure ( [ ( ; ) ] ) function ( [ ( ; ) ] ) : ::= [ var ] (, ) : ::= integer real boolean char array [ [ ] ] of ^ ::= ( ; ) end ::= ϵ := if then [ else ] while do : goto return new [ [ ] ] dispose [ [ ] ] ::=

left middle right ::= result [ ] ^ ( ) ::= true false ( ) nil @ 0 ::= ( [ (, ) ] ) ::= not + - ::= + - * / div mod or and = <> < <= > >= PCL PCL program hello; writestring( Hello world!\n ) end. n

hanoi 0 0 0 program solve; var numberofrings : integer; procedure hanoi (var source, target, auxiliary : array of char; rings : integer); procedure move (var source, target : array of char); writestring( Move from ); writestring(source); writestring( to ); writestring(target); writestring(.\n ) if rings >= then hanoi(source, auxiliary, target, rings-); move(source, target); hanoi(auxiliary, target, source, rings-) end writestring( Please, give the number of rings : ); numberofrings := readinteger(); writestring( \nhere is the solution :\n\n ); hanoi( left, right, middle, numberofrings) end. n n k ± k t := n t t + t t < 0 t

t < t t = t t t i := t/ t i t t PCL 0 0 0 0 program primes; var limit, number, counter : integer; function prime (n : integer) : boolean; var i : integer; if n < 0 then result := prime(-n) else if n < then result := false else if n = then result := true else if n mod = 0 then result := false else i := ; while i <= n div do if n mod i = 0 then result := false; return i := i+ end result := true writestring( Please, give the upper limit : ); limit := readinteger(); writestring( Prime numbers between 0 and ); writeinteger(limit); writestring( \n\n ); counter := 0; if limit >= then counter := counter + ; writestring( \n ) if limit >= then counter := counter + ; writestring( \n ); number := ;

0 0 while number <= limit do if prime(number-) then counter := counter + ; writeinteger(number-); writestring( \n ) if (number <> limit) and prime(number+) then counter := counter + ; writeinteger(number+); writestring( \n ); number := number + writestring( \n ); writeinteger(counter); writestring( prime number(s) were found.\n ) end. 0 0 program reverse; function strlen (var s : array of char) : integer; result := 0; while s[result]!= \0 do result := result + var r : array [] of char; procedure reverse (var s : array of char); var i, l : integer; l := strlen(s); i := 0; while i < l do r[i] := s[l-i-]; i := i+ r[i] := \0 reverse( \n!dlrow olleh ); writestring(r) end. PCL

x n PCL x[0] x[]... x[n ] i n x[i] > x[i + ] x[i] x[i + ] x PCL 0 0 0 0 program bsort; procedure BubbleSort (var x : array of integer; n : integer); var i : integer; changed : boolean; procedure swap (var x, y : integer); var t : integer; t := x; x := y; y := t changed := true; while changed do i := 0; changed := false; while i < n- do if x[i] > x[i+] then swap(x[i], x[i+]); changed := true i := i+ end end procedure PrintArray (var msg : array of char; var x : array of integer; n : integer); var i : integer; writestring(msg); i := 0; while i < n do if i > 0 then writestring(, ); writeinteger(x[i]);

0 0 i := i+ writestring( \n ); var i : integer; x : array [] of integer; seed : integer; i := 0; seed := ; while i < do seed := (seed * + + i) mod 0; x[i] := seed; i := i + PrintArray( Initial array:, x, ); BubbleSort(x, ); PrintArray( Sorted array:, x, ) end. n n k 0 0 program mean; var n, k, i, seed : integer; sum : real; writestring( Give n: ); n := readinteger(); writestring( Give k: ); k := readinteger(); i := 0; sum := 0.0; seed := ; while i < k do seed := (seed * + + i) mod n; sum := sum + seed; i := i + if k > 0 then writestring( Mean: ); writereal(sum / k); writestring( \n ) end end.

(n )/ k -f -i *.pcl *.imm *.asm /tmp/hello.pcl /tmp/hello.imm /tmp/hello.asm -Ο -f -i Makefile make make clean bison flex make distclean Μakefile flex bison CC=gcc CFLAGS=-Wall compiler: compiler.lex.o compiler.tab.o symbol.o symbolc.o $(CC) $(CFLAGS) -o compiler compiler.lex.o compiler.tab.o \ symbol.o symbolc.o compiler.lex.c: compiler.l compiler.tab.h flex -it compiler.l > compiler.lex.c compiler.tab.c compiler.tab.h: compiler.y bison -dv compiler.y clean: $(RM) *.o compiler.tab.c compiler.tab.h compiler.lex.c core distclean: clean $(RM) compiler