1 / 75

Syntaktische Analyse – Bottom-up

Syntaktische Analyse – Bottom-up. Im Rahmen des Seminars „Übersetzung von künstlichen Sprachen“. Gliederung. 1. Grundlagen der Bottom-Up-Syntaxanalyse 2. Operator-Precedence-Syntaxanalyse 3. LR-Syntaxanalyse 3.1 LR-Syntaxanalysealgorithmus 3.2 LR(0) 3.3 SLR(1)

brac
Télécharger la présentation

Syntaktische Analyse – Bottom-up

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Syntaktische Analyse – Bottom-up Im Rahmen des Seminars „Übersetzung von künstlichen Sprachen“

  2. Gliederung 1. Grundlagen der Bottom-Up-Syntaxanalyse 2. Operator-Precedence-Syntaxanalyse 3. LR-Syntaxanalyse 3.1 LR-Syntaxanalysealgorithmus 3.2 LR(0) 3.3 SLR(1) 3.4 LR(1) 3.5 LALR(1) 4. Zusammenfassung

  3. Regel 1: S → aABe Regel 3: B → d Regel 2: A → Abc Regel 2: A → b Einführung in die Bottom-Up-Syntaxanalyse • Ziel: Anwendung von Reduktionsschritten, um von der Eingabe auf das Startsymbol S zu reduzieren

  4. Einführung in die Bottom-Up-Syntaxanalyse Anwendung einer umgekehrten Rechtsableitung Problem: Bestimmung von Handles (rechte Seiten von Regeln, die reduziert werden können, um vorhergehenden Schritt der Rechtsableitung zu erhalten) S S→ aABe B B→ d A A → Abc A Idee: Nutzung eines Stacks A → b a b b c d e

  5. Syntaxanalyse mit einem Stack

  6. Syntaxanalyse mit einem Stack Shift: Inputsymbol auf den Stack schieben (bis Handle erscheint)

  7. Syntaxanalyse mit einem Stack Reduce: reduzieren des Handle

  8. Syntaxanalyse mit einem Stack

  9. Syntaxanalyse mit einem Stack

  10. Syntaxanalyse mit einem Stack

  11. Syntaxanalyse mit einem Stack

  12. Syntaxanalyse mit einem Stack

  13. Syntaxanalyse mit einem Stack

  14. Syntaxanalyse mit einem Stack

  15. Syntaxanalyse mit einem Stack

  16. Syntaxanalyse mit einem Stack

  17. Syntaxanalyse mit einem Stack

  18. Syntaxanalyse mit einem Stack

  19. Syntaxanalyse mit einem Stack

  20. Syntaxanalyse mit einem Stack Accept: Eingabe entsprach der Grammatik  erfolgreiches Ende

  21. Operator-Precedence-Syntaxanalyse • Definition von Relationen zwischen dem obersten Stackelement und dem ersten Eingabesymbol (begrenzt auf Terminalsymbole) • Vorgehen: • < oder =: Shift • >: Reduce • Handles werden erkannt: • <: linke Markierung des Handle • >: rechte Markierung des Handle $ <• id •> + <• id •> * <• id•> $ Erstes Handle

  22. Ablauf OP-Parser Input Stack

  23. Ablauf OP-Parser Input Stack

  24. Ablauf OP-Parser Input Stack

  25. Ablauf OP-Parser Input Stack

  26. Ablauf OP-Parser Input Stack

  27. Ablauf OP-Parser Input Stack

  28. Ablauf OP-Parser Input Stack

  29. Ablauf OP-Parser Input Stack

  30. Ablauf OP-Parser Input Stack

  31. Ablauf OP-Parser Input Stack

  32. Ablauf OP-Parser Input Stack

  33. Operator-Grammatik • Grammatik muss folgende Bedingungen erfüllen, damit sie mit OP-Parser behandelt werden kann: • Keine zwei aufeinander folgenden Nichtterminale auf der rechten Seite einer Produktion. • Keine Produktion mit gleicher rechter Seite. • Keine ε-Produktionen.  sehr schwaches Verfahren!

  34. LR-Syntaxanalyse • LR(k)-Syntaxanalyse: • L: left-to-right-parse • R: rightmost derivation: Rechtsableitung • k: k-token lookahead: Anzahl im Voraus betrachteter Inputsymbole Quelle: Appel, Palsberg (2002).

  35. Modell eines LR-Parsers Syntaxanalyse-tabelle Action[sm,ai] = shift s | reduce A  β | accept | error. Goto[s‘, A] Input Syntaxbaum Terminalsymbole Output LR-Syntaxanalyse-Programm Stack

  36. Ablauf LR-Parser

  37. Ablauf LR-Parser

  38. Ablauf LR-Parser

  39. Ablauf LR-Parser

  40. Ablauf LR-Parser

  41. Ablauf LR-Parser

  42. Ablauf LR-Parser

  43. Ablauf LR-Parser

  44. Ablauf LR-Parser

  45. Ablauf LR-Parser

  46. LR-Syntaxanalysetabelle-Konstruktion • Allgemeines Vorgehen: • Erstellen von: • „Dummy-Produktion“: S‘  S (S ist altes Startsymbol). • Endlichem Automat. • Syntaxanalysetabelle.

  47. Erstellen eines Zustandsübergangsgraphen Grundbegriffe: • Items: Produktionen mit Markierungspunkt auf rechter Seite; zeigt an wie weit man im Parseprozess vorangeschritten ist. • A  •XYZ • A  X•YZ • A  XY•Z • A  XYZ• • Closure-Operation: fügt weitere Items zu einer Menge von Items hinzu. • Goto-Operation: Definiert Zustandsübergänge zwischen Mengen von Items/Zuständen des Automaten.

  48. E  •E+T E  •T Erstellen eines Zustandsübergangsgraphen Closure-Operation anwenden! S  •E S  E• S  E+ •T E  E•+T T  •id E + T  •id I0 I1 I4 id id T T E  T• E E+T• T  id• I2 I3 I5

  49. Erstellen einer LR(0)-Syntaxanalysetabelle • Punkt am rechten Ende eines Items • Falls Dummy-Item: Accept • Sonst Reduce • I  J, mit X Terminalsymbol: Shift • I  J, mit X Nichtterminalsymbol: Goto

  50. E  •E+T E  •T Erstellen der LR(0)-Syntaxanalysetabelle S  •E S  E• S  E+ •T E  E•+T T  •id E + T  •id I0 I1 I4 id id T T E  T• E E+T• T  id• I2 I3 I5

More Related