• Nenhum resultado encontrado

opencourses.auth | Ανοικτά Ακαδημαϊκά Μαθήματα ΑΠΘ | Σχεδίαση γλωσσών προγραμματισμού... | Ανάκαμψη από Συντακτικά Λάθη

N/A
N/A
Protected

Academic year: 2023

Share "opencourses.auth | Ανοικτά Ακαδημαϊκά Μαθήματα ΑΠΘ | Σχεδίαση γλωσσών προγραμματισμού... | Ανάκαμψη από Συντακτικά Λάθη"

Copied!
24
0
0

Texto

(1)

Σχεδίαση Γλωσσών &

Μεταγλωττιστζς

Ενότητα 9: Ανάκαμψη από Συντακτικά Λάθη

Επ. Καθ. Π. Κατςαρόσ Τμήμα Πληροφορικήσ

(2)

• Το παρόν εκπαιδευτικό υλικό υπόκειται ςε άδειεσ χρήςησ Creative Commons.

• Για εκπαιδευτικό υλικό, όπωσ εικόνεσ, που

υπόκειται ςε άλλου τφπου άδεια χρήςησ, η

άδεια χρήςησ αναφζρεται ρητϊσ.

(3)

του εκπαιδευτικοφ ζργου του διδάςκοντα.

• Το ζργο «Ανοικτά Ακαδημαϊκά Μαθήματα ςτο Αριςτοτζλειο Πανεπιςτήμιο Θεςςαλονίκησ» ζχει χρηματοδοτήςει μόνο τη αναδιαμόρφωςη του εκπαιδευτικοφ υλικοφ.

• Το ζργο υλοποιείται ςτο πλαίςιο του Επιχειρηςιακοφ

Προγράμματοσ «Εκπαίδευςη και Δια Βίου Μάθηςη» και ςυγχρηματοδοτείται από την Ευρωπαϊκή Ζνωςη

(Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικοφσ πόρουσ.

(4)

Ανάνηυη λαθών Ι

Εληνπηζκόο ιάζνπο όζν ην δπλαηόλ πην έγθαηξα.

Επηινγή ζέζεο από όπνπ ζα ζπλερίδεηαη ε αλάιπζε.

Να εληνπίδνληαη κόλν ππαξθηά ιάζε θαη λα κελ εκθαλίδνληαη δηαδηδόκελα πιαζκαηηθά ιάζε.

Να απνθεύγεηαη ε κεηάπησζε ηνπ αλαιπηή ζε αηέξκνλεο βξόρνπο.

Σερληθέο αλάλεςεο ιαζώλ:

- αλάλεςε «παληθνύ»

- αλάλεςε ζε επίπεδν θξάζεο

- θαλόλεο παξαγσγήο γηα ιάζε

(5)

Σεηάξηε, 23 Ινπιίνπ 2014

Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 5

Ανάνηυη λαθών ΙΙ

Η αλάλεςε «παληθνύ» ζηελ πξνβιέπνπζα αλαδξνκηθή θαηάβαζε πινπνηείηαη κε ηνλ θαζνξηζκό κνλάδσλ ζπγρξνληζκνύ.

Όηαλ ν αλαιπηήο βξεη ιάζνο, ηόηε πξνζπεξλά ηηο επόκελεο κνλάδεο κέρξη λα εληνπίζεη κηα κνλάδα ζπγρξνληζκνύ από ηελ νπνία κπνξεί λα ζπλερίζεη ηελ αλάιπζεο. Κάζε κε ηεξκαηηθό ζύκβνιν έρεη ηηο δηθέο ηνπ κνλάδεο ζπγρξνληζκνύ. Οη κνλάδεο ζπγρξνληζκνύ επηιέγνληαη κέζα από ηα ζύλνια FOLLOW.

΢ηελ αλάιπζε LL(1) έρνπκε εληνπηζκό ιάζνπο, όηαλ ζηελ θνξπθή ηεο ζηνίβαο βξίζθεηαη έλα κε ηεξκαηηθό ζύκβνιν X, ηέηνην ώζηε ην ηξέρνλ ζύκβνιν εηζόδνπ λα κελ πεξηιακβάλεηαη ζην ζύλνιν

FIRST(X) θαη αλ απηό ζπκβαίλεη λα πεξηέρεη ην ε, νύηε ζην ζύλνιν FOLLOW(X).

(6)

Ανάνηυη «πανικού» ζηην ανάλσζη LL(1) I

Η αλάλεςε «παληθνύ» κπνξεί εύθνια λα πινπνηεζεί κε ηνλ πξνζδηνξηζκό ηεο θαηάιιειεο ελέξγεηαο, γηα θάζε πεξίπησζε θελήο ζέζεο, ζηνλ πίλαθα αλάιπζεο. Δηαθξίλνπκε ηξεηο πηζαλέο ελέξγεηεο αλάλεςεο:

ηελ αθαίξεζε ηνπ ζπκβόινπ Υ από ηε ζηνίβα (pop),

ην πξνζπέξαζκα ελόο αξηζκνύ ζπκβόισλ εηζόδνπ, κέρξη ηνλ εληνπηζκό κνλάδαο, πνπ κπνξεί λα ρξεζηκνπνηεζεί γηα ηελ επαλεθθίλεζε ηεο δηαδηθαζίαο αλάιπζεο (scan) θαη

ηελ ώζεζε ζηε ζηνίβα ελόο λένπ κε ηεξκαηηθνύ ζπκβόινπ.

(7)

Σεηάξηε, 23 Ινπιίνπ 2014

Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 7

Ανάνηυη «πανικού» ζηην ανάλσζη LL(1) II

Η pop εθηειείηαη, όηαλ ε ηξέρνπζα ιεμηθή κνλάδα είλαη ε $ ή όηαλ απηή αλήθεη ζην FOLLOW(X).

Η scan εθηειείηαη, όηαλ ε ηξέρνπζα ιεμηθή κνλάδα δελ είλαη ε $ θαη

δελ αλήθεη ζην .

Η push επηζηξαηεύεηαη, όηαλ ζπκβεί λα έρεη αδεηάζεη ε ζηνίβα, ελώ δελ έρεη νινθιεξσζεί αθόκε ε αλάγλσζε όισλ ησλ κνλάδσλ ηεο ζπκβνινζεηξάο εηζόδνπ. Σόηε σζείηαη ζηε ζηνίβα ην ζύκβνιν ηεο αξρήο ηεο γξακκαηηθήο θαη αγλννύληαη έλα πξνο έλα όια ηα

επόκελα ζύκβνια εηζόδνπ, κέρξη ηελ αλάγλσζε ζπκβόινπ, πνπ αλήθεη ζην ζύλνιν FIRST ηεο αξρήο.

) ( )

(X FOLLOW X FIRST

(8)

Ανάνηυη «πανικού» ζηην ανάλσζη LL(1) III

ΠΑΡΑΔΕΙΓΜΑ (αλάλεςε ιαζώλ ζηε γξακκαηηθή αξηζκεηηθώλ εθθξάζεσλ)

S = έθθξαζε.

έθθξαζε = όξνο ππ_όξνη.

ππ_όξνη = “+” όξνο ππ_όξνη

| “-” όξνο ππ_όξνη

| ε.

όξνο = παξάγνληαο ππ_παξαγ.

ππ_παξαγ = “*” παξάγνληαο ππ_παξαγ

| “/” παξάγνληαο ππ_παξαγ

| ε.

παξάγνληαο = “(”έθθξαζε “)”

| “αξηζκόο”.

(9)

Σεηάξηε, 23 Ινπιίνπ 2014

Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 9

Ανάνηυη «πανικού» ζηην ανάλσζη LL(1) IV

“αριθμός” “+” “-” “*” “/” “(” “)” $

έκθραζη όρος

σπ_όροι scan scan scan scan όρος σπ_όροι pop pop

σπ_όροι scan “+” όρος σπ_όροι “-” όρος σπ_όροι scan scan scan ε ε

όρος παράγονηας σπ_παραγ

pop pop scan scan παράγονηας

σπ_παραγ

pop pop

σπ_παραγ scan ε ε “*” παράγονηας

σπ_παραγ “/” παράγονηας

σπ_παραγ scan ε ε

παράγονηας “αριθμός” pop pop pop pop “(” έκθραζη “)” pop pop

M “αριθμός” “+” “-” “*” “/” “(” “)” $

έκθραζη όρος σπ_όροι όρος σπ_όροι

σπ_όροι “+” όρος σπ_όροι “-” όρος σπ_όροι ε ε

όρος παράγονηας σπ_παραγ

παράγονηας σπ_παραγ

σπ_παραγ ε ε “*” παράγονηας

σπ_παραγ

“/” παράγονηας σπ_παραγ

ε ε

παράγονηας “αριθμός” “(” έκθραζη “)”

ΠΙΝΑΚΑ΢ ΑΝΑΛΤ΢Η΢ ΥΧΡΙ΢ ΑΝΑΝΗΦΗ ΛΑΘΧΝ:

ΠΙΝΑΚΑ΢ ΑΝΑΛΤ΢Η΢ ΜΕ ΑΝΑΝΗΦΗ ΛΑΘΧΝ:

(10)

Ανάνηυη «πανικού» ζηην ανάλσζη LL(1) V

LL(1) ανάλσζη και ανάνηυη λαθών για ηη ζσμβολοζειρά (27-*)

΢ΣΟΙΒΑ ΢ΤΜ/ΕΙΡΑ ΠΑΡΑΓΩΓΗ

$ έκθραζη (27-*)$

$ σπ_όροι όρος (27-*)$ έκθραζη = όρος σπ_όροι.

$ σπ_όροι σπ_παραγ. παράγονηας (27-*)$ όρος = παράγονηας σπ_παραγ.

$ σπ_όροι σπ_παραγ. “)” έκθραζη “(” (27-*)$ παράγονηας = “(” έκθραζη “)”.

$ σπ_όροι σπ_παραγ. “)” έκθραζη 27-*)$

$ σπ_όροι σπ_παραγ. “)” σπ_όροι όρος 27-*)$ έκθραζη = όρος σπ_όροι.

$ σπ_όροι σπ_παραγ. “)” σπ_όροι σπ_παραγ. παράγονηας 27-*)$ όρος = παράγονηας σπ_παραγ.

$ σπ_όροι σπ_παραγ. “)” σπ_όροι σπ_παραγ. “αριθμός” 27-*)$ παράγονηας = “αριθμός”.

$ σπ_όροι σπ_παραγ. “)” σπ_όροι σπ_παραγ. -*)$

$ σπ_όροι σπ_παραγ. “)” σπ_όροι -*)$ σπ_παραγ. = ε.

$ σπ_όροι σπ_παραγ. “)” σπ_όροι όρος “-” -*)$ σπ_όροι = “-” όρος σπ_όροι.

$ σπ_όροι σπ_παραγ. “)” σπ_όροι όρος *)$

$ σπ_όροι σπ_παραγ. “)” σπ_όροι όρος )$ scan

$ σπ_όροι σπ_παραγ. “)” σπ_όροι )$ pop

$ σπ_όροι σπ_παραγ. “)” )$ σπ_όροι. = ε.

$ σπ_όροι σπ_παραγ. $

$ σπ_όροι $ σπ_παραγ. = ε.

(11)

Σεηάξηε, 23 Ινπιίνπ 2014

Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 11

Ενηοπιζμός λάθοσς ζηην ανάλσζη LR I

(1) έθθξαζε = έθθξαζε “+” όξνο.

(2) έθθξαζε = έθθξαζε “-” όξνο.

(3) έθθξαζε = όξνο.

(4) όξνο = όξνο “*” παξάγνληαο.

(5) όξνο = όξνο “/” παξάγνληαο.

(6) όξνο = παξάγνληαο.

(7) παξάγνληαο = “(” έθθξαζε “)”.

(8) παξάγνληαο = “αξηζκόο”.

Πίνακας ενεργειών για ηη γραμμαηική αριθμηηικών εκθράζεφν

“αριθμός” “+” “-” “*” “/” “(” “)” $

καηάζηαζη 0 ώθηζη ώθηζη

καηάζηαζη 1 ώθηζη ώθηζη αποδοτή

καηάζηαζη 2 απλοπ (3) απλοπ (3) ώθηζη ώθηζη απλοπ (3) απλοπ (3) καηάζηαζη 3 απλοπ (6) απλοπ (6) απλοπ (6) απλοπ (6) απλοπ (6) απλοπ (6)

καηάζηαζη 4 ώθηζη ώθηζη

καηάζηαζη 5 απλοπ (8) απλοπ (8) απλοπ (8) απλοπ (8) απλοπ (8) απλοπ (8)

καηάζηαζη 6 ώθηζη ώθηζη

καηάζηαζη 7 ώθηζη ώθηζη

καηάζηαζη 8 ώθηζη ώθηζη

καηάζηαζη 9 ώθηζη ώθηζη

καηάζηαζη 10 ώθηζη ώθηζη ώθηζη

καηάζηαζη 11 απλοπ (1) απλοπ (1) ώθηζη ώθηζη απλοπ (1) απλοπ (1) καηάζηαζη 12 απλοπ (2) απλοπ (2) ώθηζη ώθηζη απλοπ (2) απλοπ (2) καηάζηαζη 13 απλοπ (4) απλοπ (4) απλοπ (4) απλοπ (4) απλοπ (4) απλοπ (4) καηάζηαζη 14 απλοπ (5) απλοπ (5) απλοπ (5) απλοπ (5) απλοπ (5) απλοπ (5) καηάζηαζη 15 απλοπ (7) απλοπ (7) απλοπ (7) απλοπ (7) απλοπ (7) απλοπ (7)

(12)

Ενηοπιζμός λάθοσς ζηην ανάλσζη LR II

Πίνακας μεηαβάζεφν για ηη γραμμαηική αριθμηηικών εκθράζεφν

“αριθμός” “+” “-” “*” “/” “(” “)” έκθραζη όρος παράγονηας

καηάζηαζη 0 5 4 1 2 3

καηάζηαζη 1 6 7

καηάζηαζη 2 8 9

καηάζηαζη 3

καηάζηαζη 4 5 4 10 2 3

καηάζηαζη 5

καηάζηαζη 6 5 4 11 3

καηάζηαζη 7 5 4 12 3

καηάζηαζη 8 5 4 13

καηάζηαζη 9 5 4 14

καηάζηαζη 10 6 7 15

καηάζηαζη 11 8 9

καηάζηαζη 12 8 9

καηάζηαζη 13 καηάζηαζη 14 καηάζηαζη 15

(13)

Σεηάξηε, 23 Ινπιίνπ 2014

Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 13

Ενηοπιζμός λάθοσς ζηην ανάλσζη LR III

Διάγνφζη λάθοσς ζηη ζσμβολοζειρά (27-5*8

΢ΣΟΙΒΑ ΢ΤΜΒΟΛΟ΢ΕΙΡΑ ΕΝΕΡΓΕΙΑ

$0 (27-5*8$ ώθηζη

$0 “(”4 27-5*8$ ώθηζη

$0 “(”4 “αριθμός”5 -5*8$ απλοποίηζη καηά (8)

$0 “(”4 παράγονηας3 -5*8$ απλοποίηζη καηά (6)

$0 “(”4 όρος2 -5*8$ απλοποίηζη καηά (3)

$0 “(”4 έκθραζη10 -5*8$ ώθηζη

$0 “(”4 έκθραζη10 “-”7 5*8$ ώθηζη

$0 “(”4 έκθραζη10 “-”7 “αριθμός”5 *8$ απλοποίηζη καηά (8)

$0 “(”4 έκθραζη10 “-”7 παράγονηας3 *8$ απλοποίηζη καηά (6)

$0 “(”4 έκθραζη10 “-”7 όρος12 *8$ ώθηζη

$0 “(”4 έκθραζη10 “-”7 όρος12 “*”8 8$ ώθηζη

$0 “(”4 έκθραζη10 “-”7 όρος12 “*”8 “αριθμός”5 $ απλοποίηζη καηά (8)

$0 “(”4 έκθραζη10 “-”7 όρος12 “*”8 παράγονηας13 $ απλοποίηζη καηά (4)

$0 “(”4 έκθραζη10 “-”7 όρος12 $ απλοποίηζη καηά (2)

$0 “(”4 έκθραζη10 $ ΛΑΘΟΣ

(“Missing parenthesis”)

(14)

Ενηοπιζμός λάθοσς ζηην ανάλσζη LR IV

Αλαγλώξηζε ιάζνπο γίλεηαη όηαλ ν αιγόξηζκνο πεξηέιζεη ζε θαηάζηαζε, πνπ ζηνλ πίλαθα ελεξγεηώλ δελ αληηζηνηρεί

ζπγθεθξηκέλε ελέξγεηα γηα ην ηεξκαηηθό εηζόδνπ, πνπ αθνινπζεί.

Σν δηαγλσζηηθό κήλπκα ιάζνπο πνπ πξέπεη λα ηππσζεί κπνξεί λα επηιεγεί αλ εμεηάζνπκε ηα πεξηερόκελα ηεο ζηνίβαο.

Διάγνφζη λάθοσς ζηη ζσμβολοζειρά 27-*8

΢ΣΟΙΒΑ ΢ΤΜΒΟΛΟ΢ΕΙΡΑ ΕΝΕΡΓΕΙΑ

$0 27-*8$ ώθηζη

$0 “αριθμός”5 -*8$ απλοποίηζη καηά (8)

$0 παράγονηας3 -*8$ απλοποίηζη καηά (6)

$0 όρος2 -*8$ απλοποίηζη καηά (3)

(15)

Σεηάξηε, 23 Ινπιίνπ 2014

Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 15

Ενηοπιζμός λάθοσς ζηην ανάλσζη LR V

Αλάλεςε «παληθνύ»:

Καζνξίδεηαη έλα ζύλνιν κνλάδσλ ζπγρξνληζκνύ πνπ

ζπλήζσο απνηειείηαη από δηαρσξηζηέο πνπ δειώλνπλ ηέινο εληνιώλ ή άιισλ δνκεκέλσλ ζηνηρείσλ ηεο γιώζζαο

Όηαλ εληνπίδεηαη ιάζνο, ηόηε ζπλερίδεηαη ε αλάγλσζε ησλ ιεμηθώλ κνλάδσλ εηζόδνπ, κέρξη ηνλ εληνπηζκό θάπνηαο κνλάδαο ζπγρξνληζκνύ.

Αθνινπζεί ε ζηαδηαθή αθαίξεζε ζπκβόισλ από ηε ζηνίβα κέρξη απηή λα πεξηέιζεη ζε θαηάζηαζε από ηελ νπνία

νξίδεηαη ζπγθεθξηκέλε ελέξγεηα γηα ην ζύκβνιν ζπγρξνληζκνύ πνπ εληνπίζηεθε.

Μεηά ηελ εθηέιεζε ηεο ελέξγεηαο απηήο ν έιεγρνο

επαλέξρεηαη ζηνλ αλαιπηή γηα ηε ζπλέρηζε ηεο δηαδηθαζίαο.

(16)

Ενηοπιζμός λάθοσς ζηην ανάλσζη LR VΙ

Αλάλεςε ζε επίπεδν θξάζεο:

Πξέπεη όρη απιά λα εληνπηζζεί ην ιάζνο, αιιά λα γίλεη θαη αλαγλώξηζε ηνπ ιάζνπο πνπ εληνπίζζεθε.

Η αλάλεςε απνβιέπεη είηε ζηελ ηξνπνπνίεζε ηεο θνξπθήο ηεο ζηνίβαο, είηε ζηελ ηξνπνπνίεζε ησλ ζπκβόισλ εηζόδνπ πνπ πξνεγνύληαη, γηα ηελ απξόζθνπηε ζπλέρηζε ηεο αλάιπζεο.

Μία πξνζέγγηζε απηνύ ηνπ ηύπνπ ραξαθηεξίδεηαη από ην ξίζθν λα πεξηέιζεη ε αλάιπζε ζε αηέξκνλα βξόρν.

΢πληζηώληαη ηερληθέο:

πνπ εγγπώληαη ηελ αθαίξεζε από ηε ζπκβνινζεηξά εηζόδνπ ή ηελ ώζεζε ζηε ζηνίβα ηνπιάρηζην κηαο ιεμηθήο κνλάδαο

εγγπώληαη ην άδεηαζκα ηεο ζηνίβαο κε ηελ νινθιήξσζε ηεο αλάγλσζεο ηεο ζπκβνινζεηξάο

(17)

Σεηάξηε, 23 Ινπιίνπ 2014

Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 17

Ενηοπιζμός λάθοσς ζηην ανάλσζη LR VΙΙ

Αλάλεςε ιαζώλ ζε αλαιπηέο ηνπ byacc:

Σξνπνπνηνύκε ηε γξακκαηηθή πξνζζέηνληαο θαλόλεο παξαγσγήο γηα ιάζε, ηεο κνξθήο:

κε ηεξκαηηθό: error κνλάδεο_ζπγρξνληζκνύ όπνπ error ε ςεπδνκνλάδα ιάζνπο ηνπ byacc.

Μεηά ηνλ εληνπηζκό ιάζνπο (θελή ζέζε ζηνλ πίλαθα ελεξγεηώλ) ην byacc αθαηξεί από ηε ζηνίβα όζα ζύκβνια ρξεηάδεηαη, ώζηε απηή λα πεξηέιζεη ζε θαηάζηαζε, πνπ πεξηέρεη έλα ηνπιάρηζην ζηνηρείν πξνεξρόκελν από θαλόλα ιάζνπο, κε ηελ ηειεία ηνπνζεηεκέλε ζηα αξηζηεξά ηεο ςεπδνκνλάδαο error.

΢ηε ζπλέρεηα ν αλαιπηήο σζεί ζηε ζηνίβα ηε κνλάδα error, σο αλ απηή ήηαλ κηα ηππηθή πεξίπησζε ζπκβόινπ εηζόδνπ.

Αλ ζηνλ θαλόλα ιάζνπο δελ έρεη δεισζεί θάπνηα κνλάδα ζπγρξνληζκνύ, ηόηε ν αλαιπηήο πξνρσξάεη άκεζα ζε απινπνίεζε ζύκθσλα κε απηόλ θαη εθηειεί ηηο ελέξγεηεο πνπ ην ζπλνδεύνπλ.

Η δηαδηθαζία ζπλερίδεη αγλνώληαο έλα ή πεξηζζόηεξα ζύκβνια εηζόδνπ, κέρξη ηνλ εληνπηζκό εθείλνπ, γηα ην νπνίν ν πίλαθαο ελεξγεηώλ νξίδεη ηλ επόκελε ελέξγεηα ηεο αλάιπζεο.

(18)

Ενηοπιζμός λάθοσς ζηην ανάλσζη LR VΙΙΙ

(1) έθθξαζε = έθθξαζε “+” όξνο.

(2) έθθξαζε = έθθξαζε “-” όξνο.

(3) έθθξαζε = όξνο.

(4) όξνο = όξνο “*” παξάγνληαο.

(5) όξνο = όξνο “/” παξάγνληαο.

(6) όξνο = παξάγνληαο.

(7) παξάγνληαο = “(” έθθξαζε “)”.

(8) παξάγνληαο = “αξηζκόο”.

ΠΑΡΑΔΕΙΓΜΑ: ΓΡΑΜΜΑΣΙΚΗ ΑΡΙΘΜΗΣΙΚΧΝ ΕΚΦΡΑ΢ΕΧΝ

Γξάθνπκε ηνλ ηειεπηαίν θαλόλα ηεο γξακκαηηθή κέζα ζην byacc σο εμήο:

paragontas : ARITHMOS {$$=$1;}

| „(‟ ekfrasi „)‟ {$$=$2;}

| error {$$=0;}

(19)

Σεηάξηε, 23 Ινπιίνπ 2014

Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 19

Ενηοπιζμός λάθοσς ζηην ανάλσζη LR IX

ΠΑΡΑΔΕΙΓΜΑ: ΓΡΑΜΜΑΣΙΚΗ ΑΡΙΘΜΗΣΙΚΧΝ ΕΚΦΡΑ΢ΕΧΝ (ζπλέρεηα)

ζεκείσζε: ζηην παραπάνφ ανάλσζη οι πίνακες ηης ανάλσζης είναι οι LALR(1) πίνακες ποσ παράγει ηο byacc και ότι ασηοί ποσ τρηζιμοποιήζαμε ζε προηγούμενα παραδείγμαηα

Ανάνηυη λάθοσς ζηην ανάλσζη ηης ζσμβολοζειράς 27-*8

΢ΣΟΙΒΑ ΢ΤΜΒΟΛΟ΢ΕΙΡΑ ΕΝΕΡΓΕΙΑ

$0 27-*8$ ώθηζη

$0 “αριθμός”2 -*8$ απλοποίηζη καηά (8)

$0 παράγονηας6 -*8$ απλοποίηζη καηά (6)

$0 όρος5 -*8$ απλοποίηζη καηά (3)

$0 έκθραζη4 -*8$ ώθηζη

$0 έκθραζη4 “-”9 *8$ ΛΑΘΟΣ - ώθηζη

(“syntax error”)

$0 έκθραζη4 “-”9 error1 *8$ απλοποίηζη καηά (9)

$0 έκθραζη4 “-”9 παράγονηας6 *8$ απλοποίηζη καηά (6)

$0 έκθραζη4 “-”9 όρος14 *8$ ώθηζη

$0 έκθραζη4 “-”9 όρος14 “*”10 8$ ώθηζη

$0 έκθραζη4 “-”9 όρος14 “*”10 “αριθμός”2 $ απλοποίηζη καηά (8)

$0 έκθραζη4 “-”9 όρος14 “*”10 παράγονηας15 $ απλοποίηζη καηά (4)

$0 έκθραζη4 “-”9 όρος14 $ απλοποίηζη καηά (2)

$0 έκθραζη4 $ αποδοτή

(20)

Ενηοπιζμός λάθοσς ζηην ανάλσζη LR X

ζεκαληηθή ιεπηνκέξεηα:

Μεηά ηελ εθηέιεζε απινπνίεζεο ζύκθσλα κε θαλόλα ιάζνπο ν αλαιπηήο δελ εληνπίδεη άιιν ιάζνο (αγλνεί ηε ςεπδνκνλάδα error) αλ πξνεγνπκέλσο δελ έρεη εθηειέζεη ηξεηο δηαδνρηθέο ελέξγεηεο ώζεζεο ζε θαλνληθή ιεηηνπξγία.

Απηό γίλεηαη γηα λα απνθεύγεηαη ν εληνπηζκόο δηαδηδόκελσλ (πιαζκαηηθώλ) ιαζώλ θαη ιέκε όηη ηόηε ν αλαιπηήο ζπλερίδεη ηε ιεηηνπξγία ηνπ ζε θαηάζηαζε ιάζνπο.

Πξέπεη ε δηαρείξηζε ιαζώλ λα γίλεηαη κε ηέηνην ηξόπν ώζηε ε επαλαθνξά ηνπ κεηαγισηηηζηή ζε θαλνληθή ιεηηνπξγία λα γίλεηαη κεηά από αλάγλσζε ελόο εύινγνπ αξηζκνύ ζπκβόισλ θαη όρη αθνύ έρεη δηαβαζζεί έλα κεγάιν κέξνο ηνπ πξνγξάκκαηνο ρσξίο

νπζηαζηηθά ν αλαιπηήο λα έρεη ηε δπλαηόηεηα εληνπηζκνύ ιαζώλ.

Όηαλ δελ ππάξρεη θίλδπλνο εληνπηζκνύ δηαδηδόκελσλ ιαζώλ κπνξείηε λα ρξεζηκνπνηείηε ην macro yyerrok, πνπ επαλαθέξεη

(21)

Σεηάξηε, 23 Ινπιίνπ 2014

Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 21

Ενηοπιζμός λάθοσς ζηην ανάλσζη LR XΙ

ΠΡΟ΢ΟΥΗ:

Αλ ζην πξνεγνύκελν παξάδεηγκα γξάθακ

paragontas : ARITHMOS {$$=$1;}

| „(‟ ekfrasi „)‟ {$$=$2;}

| error

{

yyerrok;

$$=0;

}

;

ηόηε ε αλάιπζε ηεο ζπκβνινζεηξάο 27 8 νδεγείηαη ζε έλαλ αηέξκνλα βξόρν εθηύπσζεο ηνπ κελύκαηνο

syntax error

(22)

Ενηοπιζμός λάθοσς ζηην ανάλσζη LR X

πεξίπησζε πνπ ε ρξήζε ηνπ yyerrok είλαη επσθειήο:

while_statement : WHILE expr DO statement DONE

{

$$=exec_do_while($2,$4);

}

| error DONE

{

yyerror(“Bad WHILE syntax”);

yyerrok;

$$=NULL;

}

;

άιιε δπλαηόηεηα: λα αγλνεζεί ην ζύκβνιν εηζόδνπ, πνπ

πξνθαιεί ηνλ εληνπηζκό ιάζνπο θαη λα ζπλερηζζεί ε αλάιπζε κε

(23)

Σεηάξηε, 23 Ινπιίνπ 2014

Σκ. Πιεξνθνξηθήο, Α.Π.Θ. 23

Ενηοπιζμός λάθοσς ζηην ανάλσζη LR XI

΢ην παξάδεηγκα ηεο πξνεγνύκελεο δηαθάλεηαο ν θαλόλαο

ιάζνπο ζπλνδεύεηαη από κνλάδα ζπγρξνληζκνύ. Πσο αληηδξά ν αλαιπηήο ζε κία ηέηνηα πεξίπησζε;

Σν byacc αγλνεί όζα ζύκβνια εηζόδνπ ρξεηάδεηαη, κέρξη ηνλ εληνπηζκό θάπνηνπ πνπ είηε είλαη κία από ηηο κνλάδεο

ζπγρξνληζκνύ, είηε κπνξεί δπλεηηθά λα απινπνηεζεί ζε θάπνην απ΄

απηά (αλ απηό είλαη κε ηεξκαηηθό).

Σόηε ην ζπγθεθξηκέλν ζύκβνιν σζείηαη ζηε ζηνίβα, νπόηε ε αλάιπζε κπνξεί (ζε έλα ή πεξηζζόηεξα βήκαηα) λα εθηειέζεη

απινπνίεζε ζύκθσλα κε ηνλ θαλόλα ηνπ ιάζνπο θαη λα ζπλερίζεη ηελ πνξεία ηεο.

(24)

Τζλος ενότητας

Επεξεργαςία: Εμμανουζλα Στάχτιαρη

Θεςςαλονίκη, 21/07/2014

Referências

Documentos relacionados

26 θαη 27 Ζ απνζήθεπζε ηεο μχιηλεο ζπιινγήο πξηλ θαη κεηά ην RE-ORG 4.2.3 Σν όθεινο γηα ηελ πνιηηηζηηθή θιεξνλνκηά ηεο Διιάδαο από ηελ εθαξκνγή ηνπ πξνγξάκκαηνο θαη ηε ζπλεξγαζία κε