You are on page 1of 16

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΕΑΠ – ΠΛΗ24

4η ΟΣΣ
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΚΑΝΟΝΙΚΕΣ ΕΚΦΡΑΣΕΙΣ

• Τυπικός τρόπος αναπαράστασης μιας


κανονικής γλώσσας
• Βασίζονται σε τρεις ‘κανονικές’ πράξεις:
– σύζευξη ()
– κλείσιμο (*)
– ένωση (| ή +)
• Παράδειγμα:
– η έκφραση
a | (b(a*)) ή πιο απλά a | ba*
είναι οι συμβολοσειρές που αποτελούνται είτε από το a είτε
από το b ακολουθούμενο από κανένα ή περισσότερα a

ΕΑΠ – ΠΛΗ24 2
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΠΕΠΕΡΑΣΜΕΝΑ ΑΥΤΟΜΑΤΑ
• Αφηρημένες μηχανές που είναι σε θέση να ‘αναγνωρίζουν’
γλώσσες που περιγράφονται με κανονικές εκφράσεις.

q o

0 q
Αναγνωρίζει τη γλώσσα που
συμπεριλαμβάνει τις λέξεις
2

1 1 1 1
που που έχουν άρτιο αριθμό
΄0΄ ή/και ΄1΄. Αναγνωρίζεται η
0 κενή λέξη;
q 1 q 3

ΕΑΠ – ΠΛΗ24 3
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΠΕΠΕΡΑΣΜΕΝΑ ΑΥΤΟΜΑΤΑ(2)

Αναγνωρίζει τη γλώσσα που


0 1
αποτελείται από το σύνολο
q
1
q
1
q
των λέξεων που δεν
περιέχουν δυο συνεχόμενες
0 1 2

0
0
0 μονάδες.
0

ψηφίο
Αναγνωρίζει τους φυσικούς
αριθμούς.
ψηφίο
Κ.Ε.: [0-9]+
διαχωριστής
αρχή φυσικός τέλος

ΕΑΠ – ΠΛΗ24 4
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΓΡΑΜΜΑΤΙΚΕΣ
• Εργαλεία περιγραφής γλωσσών
(ισχυρότερες από τις κανονικές εκφράσεις).
Η κανονική έκφραση
(a | b) (a | b | 0 | 1)*
είναι ισοδύναμη της γραμματικής
S  aA | bA
A  aA | bA | 0A | 1A | ε
π.χ. S  bA  b0A  b01A  b011A  b011ε  b011

ΕΑΠ – ΠΛΗ24 5
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Συντακτική Ανάλυση

• Είσοδος: ακολουθία tokens από τον Λεκτικό


Αναλυτή
• Σκοπός: να ελεγχθεί οτι η ακολουθία αυτή
είναι μια πρόταση της δοθείσας γραμματικής
• Βασικές Μέθοδοι: Bottom-up, Top-down
• Απαιτούνται κατάλληλες γραμματικές για
διευκόλυνση της B-U ή T-D συντακτικής
ανάλυσης

ΕΑΠ – ΠΛΗ24 6
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ
Bottom-up συντακτική ανάλυση
Shift-reduce
Από μια συμβολοσειρά εισόδου w προχωράμε
προς τη ρίζα. Παράδειγμα:
S  aΑcBe
A  Ab | b
Bd
w = abbcde
abbcde  aAbcde  aAcde  aAcBe  S
υλοποιείται με τη βοήθεια μιας στοίβας (stack)
Operator Precedence:
κατάλληλη για συντακτική ανάλυση
αριθμητικών εκφράσεων
ΕΑΠ – ΠΛΗ24 7
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ
Τop-down συντακτική ανάλυση
Recursive descent – Αναδρομική κατάβαση
Ξεκινώντας από την αρχική μεταβλητή της
γραμματικής προσπαθούμε να
δημιουργήσουμε τη συμβολοσειρά.
Παράδειγμα:
S  cΑd
A  ab | a
w = cad
S  cAd  cabd : backtracking
(1)
(1)  cad
Υλοποίηση: για κάθε τερματικό σύμβολο
μπορούμε να δημιουργήσουμε μια ρουτίνα
ΕΑΠ – ΠΛΗ24 8
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Προβλήματα Top-down ανίχνευσης

• Αριστερή Αναδρομή (left recursion) αν


υπάρχει κανόνας της μορφής Α  Αα
– (οδηγεί σε ατελείωτη ανακύκλωση)
• Backtracking: χρονοβόρα διαδικασία
– Επηρεάζεται από τη σειρά εφαρμογής των
κανόνων.

ΕΑΠ – ΠΛΗ24 9
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ
Όροι καταλληλότητας μιας γραμματικής
για αναδρομική κατάβαση
• Να μην είναι διφορούμενη
• Να μην υπάρχουν αριστερές
αναδρομές
• Κάθε κανόνας που περιέχει Ν
εναλλακτικά δεξιά μέρη να ξαναγραφεί
έτσι ώστε τουλάχιστον τα Ν-1 να
αρχίζουν με τερματικό σύμβολο
• Να είναι παραγοντοποιημένη

ΕΑΠ – ΠΛΗ24 10
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ
Μετασχηματισμός Γραμματικών
Αντικατάσταση
Αν έχουμε
Αα|γ|δ
ΒβΑζ
τότε μπορούμε να κάνουμε τον
μετασχηματισμό
Β  βαζ | βγζ | βδζ
• Παράδειγμα:
Y -> 2 | 3 | 4 T -> 121 | 131 | 141
T -> 1 L 1
ΕΑΠ – ΠΛΗ24 11
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Απαλοιφή αριστερής αναδρομής


Α  Αα | β, όπου β δεν αρχίζει με Α:
Α  βΑ’
Α’  αΑ’ | ε
• Παράδειγμα:
S -> A | aS
A -> Sb | Ab | c

Έμμεση αναδρομή
A -> Sb => A -> Ab | aSb | c

Άμεση Αναδρομή A -> Ab

A -> aSbB | cB
B -> bB | ε

ΕΑΠ – ΠΛΗ24 12
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Αριστερά παραγοντοποίηση
Η απαλοιφή αριστερών αναδρομών δεν αρκεί:
S  if C then S else S
| if C then S
Ο μεταγλωττιστής δεν θα ήξερε ποιός κανόνας
είναι προτιμότερος:
Γενική μορφή παραγοντοποίησης
Α  αβ | αγ γίνεται Α  αΑ’
Α’  β | γ
Παράδειγμα 4.7:
S  iCtS | iCtSeS | a γίνεται S  iCtSS’ | a
S’  eS | ε

ΕΑΠ – ΠΛΗ24 13
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Συντακτικά Κατευθυνόμενη Μετάφραση (Τετράδες)


• PLACE:Θέση όπου βρίσκεται αποθηκευμένη η τιμή μιας l-value ή
μιας r-value
• TYPE: Ο τύπος μιας l-value ή μιας r-value
• ΝΕΧΤ: Λίστα από ετικέτες τετράδων που περιέχουν άλματα στην
επόμενη εντολή
• TRUE,FALSE:Λίστα από ετικέτες τετράδων που περιέχουν άλματα
στον κώδικα που πρέπει να εκτελεστεί, αν μια συνθήκη είναι αληθής
ή ψευδής
• NEXTQUAD():Επιστρέφει τον αριθμό της επόμενης τετράδας
• GENQUAD(op,x,y,z):Γεννά την επόμενη τετράδα op,x,y,z
• ΝΕWTEMP(t): Δημιουργεί μια νέα προσωρινή μεταβλητή τύπου t
• EMPTYLIST(): Δημιουργεί μια κενή λίστα ετικετών τετράδων

ΕΑΠ – ΠΛΗ24 14
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ
Εμβέλεια Μεταβλητών (1)

ΕΑΠ – ΠΛΗ24 15
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Εμβέλεια μεταβλητών (2)

PROCEDURE main;
TYPE t = FLOAT; Ετικέτα Είδος Τύπος
VAR x,y,z:INTEGER; main Ρουτίνα
PROCEDURE sub1; x ΜεταβλητήINTEGER
TYPE t = STRING; sub1 Ρουτίνα
VAR a,y,z : BOOLEAN;
t Τύπος (= STRING)
PROCEDURE sub2;
VAR a,b,z: t;
y Μεταβλητή BOOLEAN
BEGIN sub2 Ρουτίνα
(* body of sub2 *) a Μεταβλητή t (= STRING)
END b Μεταβλητή t (= STRING)
BEGIN z Μεταβλητή t (= STRING)
(* body of sub1 *)
END
ΒEGIN
(* body of main *)
END

ΕΑΠ – ΠΛΗ24 16

You might also like