Συντακτική Ανάλυση
description
Transcript of Συντακτική Ανάλυση
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-1
Συντακτική Ανάλυση• Βασικοί ορισμοί• Γραμματικές Χωρίς
Συμφραζόμενα (Context-Free Grammars ή CFGs)
• Παραγωγές (derivations)• Συντακτικά δένδρα (parse trees)• Συντακτική ανάλυση από πάνω-
προς-τα-κάτω (top-down)• Συντακτική ανάλυση από κάτω-
προς-τα-πάνω (bottom-up)• Διφορούμενες γραμματικές
Lexica l Analyzer
Source Program
T arget P rogram
Syntax Ana lyzer
Sem antic Analyzer
In term ediate codegenerator
Code optim izer
C ode generator
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-2
Συντακτική Ανάλυση, Ορισμός• Συντακτική ανάλυση (parsing): η διαδικασία με
την οποία προσδιορίζουμε αν η συμβολοσειρά εισόδου ακολουθεί τους κανόνες σύνταξης της γλώσσας, καθώς και τη λειτουργία κάθε λεκτικής μονάδας.
“I gave him the book”sentence
subject: I verb:gave object: himindirect object
noun phrase
article: the noun: book
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-3
Συντακτική Ανάλυση ΠρογράμματοςSource code(character stream)
Token stream
Syntax tree
if ( b ) a = b ;==
{if (b == (0)) a = b;while (a != 1) printf(“%I “,I--);
}
{
if_stmtexpr
variableb
constant0
blockwhile_stmt
expr== != variable constant
block
1a...
0
Lexical Analysis
Syntax Analysis
expr
variablea b
= variable
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-4
Λειτουργία της Συντακτικής Ανάλυσης• Είσοδος ΣΑ : ροή λεκτικών μονάδων (token
stream)• Έξοδος ΣΑ : συντακτικό δένδρο που προσδιορίζει
τις σχέσεις ανάμεσα στις ΛΜ και/ή ένδειξη ορθότητας του προγράμματος
• Η συντακτική ανάλυση δεν ελέγχει πολλές παραμέτρους όπως π.χ. την συμφωνία ορισμάτων-τελεστών, την αρχικοποίηση των μεταβλητών κ.α.int x = true; int y; z = f(y);
• Τα παραπάνω παραπέμπονται στη σημασιολογική ανάλυση
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-5
Προσδιορισμός του συντακτικού με ΚΕ• Οι κανονικές εκφράσεις είναι εύκολες να κατανοηθούν και
να υλοποιηθούν με ΝΠΑ. Δυστυχώς δεν μπορούν να εκφράσουν το συντακτικό των γλωσσών προγραμματισμού. Π.χ. Η γλώσσα που περιέχει όλες τις συμβολοσειρές με ισορροπημένες (balanced) παρενθέσεις:
() (()) ()()() (())()((()()))Καθώς οι ΚΕ ισοδυναμούν με ΝΠΑ, θα έπρεπε να
κατασκευάσουμε αυτόματο με άπειρες καταστάσεις για να αναγνωρίσουμε όλες τις συμβολοσειρές της γλώσσας.
( ( ( ( (
)))))
Π.χ. για μέχρι πέντε φωλιασμένες παρενθέσεις απαιτείται: S
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-6
Γραμματικές• Μοντέλο παραγωγής (αντί αναγνώρισης) των
συμβολοσειρών που ανήκουν σε μία γλώσσα.• Οι γραμματικές ορίζουν το συντακτικό και όχι τη σημασιολογία της γλώσσας.
• Γενικά, οι γραμματικές δίνονται σαν ένα σύνολο κανόνων “παραγωγής”, π.χ.stmt if expr then stmt else stmtexpr expr + expr | expr * exprΟι κανόνες περιέχουν τερματικά (δηλ. τις λεκτικές μονάδες της γλώσσας) και μη τερματικά σύμβολα (terminals & non-terminals).
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-7
Γραμματικές : ορισμός• Ως γραμματική G ορίζεται η τετράδα:
G = { VN, VT, P, S}, όπουVN : αλφάβητο συμβόλων που ονομάζονται μη τερματικάVT : αλφάβητο συμβόλων που ονομάζονται τερματικάP : σύνολο συντακτικών κανόνων ή κανόνων παραγωγής της μορφής α β όπου αV+ και β V* όπου V = VN VT .S: το αρχικό σύμβολο της γραμματικής VN
Ισχύει ότι VN VT =
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-8
Επεξήγηση• Τερματικά σύμβολα: βασικές δομικές μονάδες
από τις οποίες κατασκευάζουμε μία γλώσσα.• Μη-τερματικά σύμβολα : αναπαριστούν ομάδες
συμβόλων• Κανόνες παραγωγής : καθορίζουν το πώς
συνδυάζονται τα τερματικά και μη σύμβολα της γραμματικής για την κατασκευή της γλώσσας
• Αρχικό σύμβολο : σημείο εκκίνησης για την κατασκευή των συμβολοσειρών της γλώσσας.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-9
Είδη γραμματικών• Ανάλογα με την μορφή των κανόνων παραγωγής
οι γραμματικές διακρίνονται σε τέσσερις τύπους. Οι σημαντικότερες από αυτές είναι:– Τύπου 2 ή Γραμματικές χωρίς συμφραζόμενα (Context
Free Grammars ή CFG):Α = xόπου Α VN και x V* .– Τύπου 3 ή Κανονικές Γραμματικές (Regular
Grammars):Α = α | α, Βόπου Α, Β VN και a VT .
• Οι κανονικές γραμματικές ισοδυναμούν με ΝΠΑ.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-10
Γλώσσες με συμφραζόμενα• L1={wcw | όπου w (a|b)*}
που αποτελεί παράδειγμα της υποχρεωτικής δήλωσης των μεταβλητών πριν τη χρήση τους
• L2={anbmcndm | όπου n1, m 1}παράδειγμα κλήσης διαδικασιών, όπου ο αριθμός των παραμέτρων πρέπει να ταιριάζει με όσες έχουν δηλωθεί στις αντίστοιχες δήλωσεις.
• L3={anbncn | όπου n 0} • Λύση : έλεγχος των χαρακτηριστικών που δεν
μπορούν να περιγραφούν από γλώσσες χωρίς συμφραζόμενα, κατά την σημασιολογική ανάλυση.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-11
Σύγκριση ΚΕ - CFG• Οι κανονικές εκφράσεις ισοδυναμούν με ΝΠΑ.• Τα ΝΠΑ είναι ισοδύναμα με κανονικές γραμματικές.• Οι κανονικές γραμματικές είναι υποσύνολο των CFG.• Άρα γιατί δεν χρησιμοποιούμε CFG και για την περιγραφή
των λεκτικών μονάδων;– Η περιγραφή CFG είναι πολύ πιο ισχυρή από ότι απαιτείται
για τη λεκτική ανάλυση– Οι ΚΕ είναι εύκολες στην κατανόηση– Η υλοποίηση της λεκτική ανάλυσης μέσω ΝΠΑ είναι πολύ
πιο αποδοτική.– Ο διαχωρισμός της λεκτικής από την συντακτική ανάλυση
βοηθά στην εύκολη συντήρηση του μεταγλωττιστή.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-12
Παραγωγή (derivation)• Μία συμβολοσειρά ανήκει σε μία γλώσσα G αν μπορούμε
να την κατασκευάσουμε ξεκινώντας από το αρχικό σύμβολο της G και εφαρμόζοντας τους κανόνες παραγωγής. Μία τέτοια συμβολοσειρά ονομάζεται “προτασιακός τύπος” (sentential form). Π.χ., έστωexpr = expr, “+” , expr | expr, “*” , expr |
“(”, expr, “)” | “-” , expr | ID ;Μία παραγωγή (δημιουργία συμβολοσειράς) μπορεί να είναι: expr expr , “+” , expr ID , “+”, expr ID , “+” , ID ;
: παραγωγή σε ένα βήμα: παραγωγή σε μηδέν ή περισσότερα βήματα: παραγωγή σε ένα ή περισσότερα βήματα
*
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-13
Παραγωγή (συνέχεια)• Δύο γραμματικές ονομάζονται ισοδύναμες αν
παράγουν την ίδια γλώσσα. Π.χ.
S = A,B ;
A = “a”,A | “” ;
B = “b”,B | “” ;
S = “a”, S | “a” | “b” | Β | “” ;
B = “b”,B | “” ;
παράγουν τη γλώσσα {ambn, όπου m,n 0}
Επιλογές κατά την παραγωγή μίας συμβολοσειράς:– Ποιό μη-τερματικό σύμβολο να αντικαταστήσουμε;– Ποιό κανόνα παραγωγής να επιλέξουμε;
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-14
Αριστερότερη - Δεξιότερη Παραγωγή• Αριστερότερη Παραγωγή (leftmost derivation): σε
κάθε βήμα αντικαθιστούμε το μη-τερματικό σύμβολο που βρίσκεται πιο αριστερά.
• Δεξιότερη Παραγωγή (rightmost derivation): σε κάθε βήμα αντικαθιστούμε το μη-τερματικό σύμβολο που βρίσκεται πιο δεξιά. Αποκαλείται επίσης και κανονική παραγωγή.
• Σε κάθε προτασιακή μορφή μίας γλώσσας είναι δυνατό να αντιστοιχούν πλήθος παραγωγών, τόσο αριστερότερων όσο και δεξιότερων.
R
L
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-15
Συντακτικό δένδρο (parse tree)• Συντακτικό δένδρο : δένδρο το οποίο κατασκευάζεται
συνδέοντας τα σύμβολα που προκύπτουν από μία παραγωγή με το σύμβολο από το οποίο προήλθαν. Π.χ.expr = expr, “+” , expr | expr, “*” , expr |
“(”, expr, “)” | “-” , expr | ID ;
Η προτασιακή μορφή ID, “+”, ID, “*”, ID μπορεί να προκύψει ως εξής:
expr expr, “+”, expr expr, “+”, expr , “*” , expr expr, “+”, expr , “*” , ID expr, “+”, ID , “*” , ID ID, “+”, ID , “*” , ID
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-16
Συντακτικό δένδρο (συνέχεια)• Eναλλακτικά μπορεί να χρησιμοποιηθεί και η ακόλουθη
επίσης δεξιότερη παραγωγή:
expr expr, “*”, expr expr, “*”, ID expr, “+”, expr , “*” , ID expr,
“+”,ID,“*”,ID ID, “+”, ID , “*” , ID
expr
"*" exprexpr
ID"+" exprexpr
ID ID
expr
"+" exprexpr
ID "*" exprexpr
ID ID
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών 4-17
Διφορούμενες γραμματικές• Τα φύλλα ενός συντακτικού δένδρου είναι τα
τερματικά σύμβολα της γραμματικής ενώ οι εσωτερικοί του κόμβοι είναι μη-τερματικά σύμβολα.
• Διφορούμενη (ambiguous) γραμματική : ονομάζεται μία γραμματική όταν υπάρχει προτασιακή μορφή της για την οποία υπάρχουν περισσότερα του ενός συντακτικά δένδρα.
• Επιλύεται η ασάφεια (ambiguity);