Θέματα Εξετάσεων - Ιούλιος 1998

typewr.gif (10348 bytes)

Θέμα 1ο [15]

Για τη γραμματική που ακολουθεί, να βρεθεί ο πίνακας συντακτικής ανάλυσης LL(1). Τα σύμβολα με έντονα γράμματα είναι τερματικά σύμβολα.

  1. Ε -> Τ Ε’
  2. Ε’ -> + Τ
  3. Ε’ -> - Τ
  4. Ε’ -> ε
  5. Τ -> F T’
  6. T’ -> * F
  7. T’ -> / F
  8. T’ -> ε
  9. F -> ( E )
  10. F -> id
  11. F -> * F

Στη συνέχεια να περιγραφούν να βήματα που ακολουθεί ο συντακτικός αναλυτής LL(1) προκειμένου να αναγνωρίσει τη συμβολοσειρά:

id + (*id) / id

Λύση


Θέμα 2ο [20]

Να μεταγλωττιστεί χειρωνακτικά το παρακάτω πρόγραμμα Pascal. Ζητούνται ο ενδιάμεσος και ο τελικός κώδικας, καθώς και τα εγγραφήματα δραστηριοποίησης για όλες τις δομικές μονάδες.

	program main;
	var x,y,z : integer;
	procedure sub (p : integer , var q : integer)
	var x : integer;
	begin
		if  x * p > y  then  q := x
			        else   q := z
	end;
	begin
		sub (x+y,z)
	end.

Λύση


Θέμα 3ο [15]

Ζητείται ένα σχέδιο παραγωγής ενδιάμεσου κώδικα για την εντολή for της γλώσσας προγραμματισμού C. Υπενθυμίζεται ότι η σύνταξη της εντολής αυτής είναι:

for (expr1 ; expr2 ; expr3) stmt

όπου expr1,expr2 και expr3 είναι οποιεσδήποτε εκφράσεις και stmt οποιαδήποτε εντολή. Να θεωρηθεί δεδομένο το σχέδιο παραγωγής κώδικα για εκφράσεις και για τις άλλες εντολές. Επιπλέον, μια και η γλώσσα C δεν κάνει διάκριση μεταξύ ακεραίων και λογικών εκφράσεων, να θεωρηθεί ότι όλες οι εκφράσεις είναι λογικές και ότι χρησιμοποιείται για αυτές η παράσταση δύο εξόδων (λίστες TRUE και FALSE)

Λύση