• Keine Ergebnisse gefunden

Beispiel zur Fehlerbehandlung mit Bottom-Up-Parsing

N/A
N/A
Protected

Academic year: 2022

Aktie "Beispiel zur Fehlerbehandlung mit Bottom-Up-Parsing"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Beispiel zur Fehlerbehandlung mit Bottom-Up-Parsing

Grammatik:

Expr = Term { '+' Term } . Term = Factor { '*' Factor } .

Factor = ident | ident '.' ident | '(' Expr ')' . Umformen in BNF und Startzustand S':

(0) S' = Expr #.

(1) Expr = Term.

(2) Expr = Expr '+' Term.

(3) Term = Factor.

(4) Term = Term '*' Factor.

(5) Factor = ident.

(6) Factor = ident '.' ident.

(7) Factor = '(' Expr ')'.

Parsertabelle:

ident . + * ( ) # Expr Term Factor guide

0 s4 s5 s1 s2 s3 id

1 s6 acc #

2 r(1) s7 r(1) r(1) #

3 r(3) r(3) r(3) r(3) #

4 s8 r(5) r(5) r(5) r(5) #

5 s4 s5 s9 s2 s3 id

6 s4 s5 s10 s3 id

7 s4 s5 s11 id

8 s12 id

9 s6 s13 )

10 r(2) s7 r(2) r(2) #

11 r(4) r(4) r(4) r(4) #

12 r(6) r(6) r(6) r(6) #

13 r(7) r(7) r(7) r(7) #

(2)

Simulation der Analyse

Beispieleingabe: a.+b)

Umwandlung in Tokenstrom: ident . + ident ) # Analyse:

Keller Eingabe Aktion

0 ident . + ident ) # s4

0 4 . + ident ) # s8

0 4 8 + ident ) # error!

Fluchtwegsuche:

Keller Guide Aktion Anker

0 4 8 ident s12 ident

0 4 8 12 # r(6), s3 +, *, ), #

0 3 # r(3), s2 +, *, ), #

0 2 # r(1), s1 +, *, ), #

0 1 # acc #, +

Ankermenge am Fluchtweg: ident, +, *, ), #

Eingabe überlesen bis zu einem Zeichen der Ankermenge: nicht notwendig, nächstes Zeichen '+' im Eingabestrom ist in der Ankermenge.

Symbole einfügen, bis Wiederaufsatz mit der Eingabe möglich ist:

Keller Guide Aktion eingefügt

0 4 8 ident s12 ident

0 4 8 12

Wiederaufsatz abgeschlossen ('+' gültig in Zustand 12), fortsetzen der Analyse:

Keller Eingabe Aktion

0 4 8 12 + ident ) # r(6)

0 Factor + ident ) # s3

0 3 + ident ) # r(3)

0 Term + ident ) # s2

0 2 + ident ) # r(1)

0 Expr + ident ) # s1

(3)

0 1 + ident ) # s6

0 1 6 ident ) # s4

0 1 6 4 ) # r(5)

0 1 6 Factor ident ) # s3

0 1 6 3 ) # r(3)

0 1 6 Term ) # s10

0 1 6 10 ) # r(2)

0 Expr ) # s1

0 1 ) # error!

Fluchtwegsuche:

Keller Guide Aktion Anker

0 1 # acc #, +

Ankermenge am Fluchtweg: #, +

Eingabe überlesen bis zu einem Zeichen in der Ankermenge: ) #

Symbole einfügen: nicht notwendig, nächstes Eingabesymbol # ist gültig in Zustand 1 Fortsetzen der Analyse:

Keller Eingabe Aktion

0 1 # acc

Analyse abgeschlossen, korrigierte Eingabe: ident . ident + ident ) #

Referenzen

ÄHNLICHE DOKUMENTE

Wenn  bei  einer  Reihe  von  aufeinander  folgenden  Deklarationen  (ConstDecl,  VarDecl,  ClassDecl)  ein  Fehler  auftritt,  soll  unmittelbar  nach  der 

Wenn  bei  einer  Reihe  von  aufeinander  folgenden  Deklarationen  (ConstDecl,  VarDecl,  ClassDecl)  ein  Fehler  auftritt,  soll  unmittelbar  nach  der 

findField() sucht nach einem Namen in einer Klasse, deren Struct in der Schnittstelle mitgegeben wird, wird der Name nicht gefunden muss der semantische

findField() sucht nach einem Namen in einer Klasse, deren Struct in der Schnittstelle mitgegeben wird, wird der Name nicht gefunden muss der semantische

Als Hauptresu1tat der zwei ersten Dreijahresperioden des "Soil Conservation Research Project" (SCRP) konnte im Laufe von 1985/86 in Zusammenarbeit mit den

Es liegt nahe, dass eine Unterstützung durch eine geeignete Software, in der die entsprechenden Vorlagen bereits hinterlegt sind und alle Informationen in geeigneter Weise

Oder sollen Investitionen in Legacy-Systeme geschützt werden, indem bestehende Anwendungen optimiert und durch den Einsatz von Services modernisiert werden, um Systeme wieder

For all its shortcomings, I think that some generalized consumpt.ion measure (including perhaps physical constraints of the kind used by the Bariloche group and correcting for