• Keine Ergebnisse gefunden

Damit lassen sich folgende Deklarationen erzeugen:

N/A
N/A
Protected

Academic year: 2022

Aktie "Damit lassen sich folgende Deklarationen erzeugen:"

Copied!
6
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

UE zu ÜbersetzerbauFehlerbehandlung & LL(1)-Bedingung1

Bsp: Deklarationen

DeclPart= {ForwardDecl}"{" Body"}" . ForwardDecl = "void"ident"(" ")" ";" . Body = .... voidp1(); voidp2(); voidp3();

... {

... }

Damit lassen sich folgende Deklarationen erzeugen:

(2)

UE zu ÜbersetzerbauFehlerbehandlung & LL(1)-Bedingung2

Bsp: Fehler in ForwardDecl

ErkenneDeclPart next() ÆvoidKWErkenneForwardDecl voidKWerkannt next() Æidentidenterkannt next()ÆlbrackERROR: "(expected" ERROR: ")expected" ERROR: ";expected" ERROR: "{expected"

... ERROR: "}

expected"

void p [); { …}

(3)

UE zu ÜbersetzerbauFehlerbehandlung & LL(1)-Bedingung3

Bsp: First/Follow-BitSets

static BitSet firstFwdDecl= new BitSet(); static BitSet followFwdDecl= new BitSet(); firstFwdDecl.set(voidKW);

followFwdDecl.or(firstFwdDecl); followFwdDecl.set(lbrace); followFwdDecl.set(

eof);// Wichtig!!!

DeclPart= {ForwardDecl}"{" Body"}" . ForwardDecl = "void"ident"(" ")" ";" . Body = ....

First(ForwardDecl) = {voidKW} Follow(ForwardDecl) = First(ForwardDec

l) + {lbrace} = {voidKW, lbrace}

(4)

UE zu ÜbersetzerbauFehlerbehandlung & LL(1)-Bedingung4

Bsp: Fehler in ForwardDecl (2)

ErkenneDeclPart next() ÆvoidKWErkenneForwardDecl voidKWerkannt next() Æidentidenterkannt next()ÆlbrackERROR: "(expected" ERROR: ")expected" ERROR: ";expected" ERROR: "invalid forward declaration" next()Ærpar next()Æsemicolon next()Ælbracelbrace erkannt next()Æ...ErkenneBody ... next()Ærbracerbrace erkannt

void p [); { …}

(5)

UE zu ÜbersetzerbauFehlerbehandlung & LL(1)-Bedingung5

LL(1)-Bedingung • k eine Alternativen mit gl eichen terminalen Anfängen • k eine Linksrekursionen Bei Top-Down-Analyse: mit einem Vorgriffssymbol entscheiden, welche Alternative ausgewählt werden muss. • A bhilfen: • g leiche Anfänge Ö Faktorisieren • L inksrekursionen Ö Umwandlung in Iteration

(6)

UE zu ÜbersetzerbauFehlerbehandlung & LL(1)-Bedingung6

Regel Statement

Statement

= Assignment | ProcedureCall | Increment

| Decrement | ….

gut lesbar, aber nicht LL(1)

Statement = Designator ( "=" Expr

// Assignment

| "(" [ ActPars] ")"

// ProcedureCall

| "++" | "--"

// Increment | Decrement

) ";" | ….

, weil alle Alternativen mit

ident

beginnen Abhilfe: Faktorisieren

Referenzen

ÄHNLICHE DOKUMENTE

Das strategische Ziel von TMap ist die Berücksichtigung aller vier Wirtschaftlichkeits- merkmale auch beim Testen: Ergebnis, Kosten, Zeit, und Risiko.. Der strategische Ansatz zu

To date, most efforts to control zoonotic diseases have been reactive rather than proactive. COVID-19 has made us all aware that it’s time to change that. To prevent future

Was die WHO mit ihrem neuen Report versucht, abge- stützt auf die Arbeit von beauftragten Wissenschaftlern sowie die Daten aus insgesamt 114 Ländern und über jeglichen

„Bitte öfters solche Fortbildungen veran- stalten!“ Dies wünschten sich gleich meh- rere Teilnehmerinnen und Teilnehmer der Implant Wave 2018, einer Veranstaltung der Next e

wir haben sicher eine Menge Anlass, dann auf einen zurückliegenden Kon- gress anzustoßen, der auch für die jun- ge Implantologie-Generation ein Erleb- nis war!“ Er danke

Es ist immer ein Spagat zwischen ,gerade erst gelernt‘ und ,hat sich schon etab- liert‘ und den Anforderungen an eine verantwortungsvolle Patientenversor- gung.“ Die

Kombiniert man den Ausgangs- punkt von Bushs Vision einer Trans- formation des Mittleren Ostens – die Inakzeptanz des gegenwärtigen Sta- tus quo – mit der perzipierten Not-

Solo- Selbstständigkeit bedeutet einerseits ein hohes Gestaltungspotenzial durch die Person selbst, wodurch Solo-Selbstständige auch eine hohe eigene Verantwortung für