LL(1): Grammatik First und Follow berechnen

Поделиться
HTML-код
  • Опубликовано: 13 окт 2024
  • Wie man die First- und Follow-Mengen für deterministisches LL(1)-Parsing berechnet.
    Korrektur:
    Da B rechts unter dem S steht, erbt B die Follow-Menge von S, also ist Follow(B) = {a, $, b}
    Quelle:
    Kallmeyer, Laura ; Roos, Magnus: Deterministic Top-Down Parsing: LL(k)-Parsing (Parsing). Düsseldorf, Sommersemester 2014. URL user.phil-fak.u... S. 5 ff.

Комментарии • 27

  • @janves
    @janves Год назад +4

    Danke für das Video! Hat mir auch Jahre später noch sehr geholfen :)

  • @l3Nerd
    @l3Nerd 8 лет назад +9

    Follow(B) muss doch, da am Ende von S, auch alle Follow(S) erben, also konkret: Follow(B)={a,$,b) (Beweis: S->aAB->aSB->aaABB->aaABb)

    • @SamyaDaleh
      @SamyaDaleh  8 лет назад +1

      +Lennart Kindermann Danke. Ich hab das als Anmerkung hinzugefügt.

    • @lasse261
      @lasse261 2 года назад

      Habe kurz an meinen Fähigkeiten gezweifelt, danke für den Kommentar :D

  • @enisalperkale5168
    @enisalperkale5168 3 года назад +1

    Handelt es sich nun um eine LL(1) Grammatik oder nicht?

    • @SamyaDaleh
      @SamyaDaleh  3 года назад +2

      Stimmt, das kommt nicht ganz im Video heraus. Die Grammatik ist LL(1), wenn
      1. Alle Produktionsregeln, die zu einem Nichtterminal gehören, paarweise disjunkt sind. First(aAB) und First (Ba) gehören beide zu S-Regeln und haben in der First-Menge beide das a. -> Kein LL(1).
      2. Wenn die First-Menge einer Produktionsregel das Epsilon enthält, dann muss man die First-Mengen auch mit allen Follow-Mengen vergleichen, die zu einem Nichtterminalen gehören. Hier hat B eine Epsilon-Produktion und damit Epsilon in der First-Menge. Follow (B) ist im Video falsch, das ist eigentlich {a, $, b} und hat ein gemeinsames Element mit First(b). Auch nach dem Kriterium ist es keine LL(1)-Grammatik. Es genügt aber, dass es am ersten Kriterium bereits scheitert und man müsste eigentlich keine Follow-Mengen berücksichtigen.

  • @NightcoreAsuna_music
    @NightcoreAsuna_music Месяц назад

    Bist du fertig mit dem Studium?

    • @SamyaDaleh
      @SamyaDaleh  Месяц назад

      Ich habe den Master abgeschlossen und arbeite jetzt am Doktor. :)

  • @Egoralex
    @Egoralex 10 лет назад +2

    First(Ba) -> { ba } ?? Oder doch First(Ba) -> { b , a }

    • @SamyaDaleh
      @SamyaDaleh  10 лет назад +4

      Ja, da hab ich ein Komma vergessen. Nur einzelne Zeichen sind First-Items.

    • @knallerdecks
      @knallerdecks 7 лет назад

      danke

    • @thrakiamaria
      @thrakiamaria 5 лет назад +1

      {b,a, ε} nicht nur {b, a} und wenn du mich fragst, warum, frag mal meine Professoren.

  • @friedrichwilhelmhufnagel3577
    @friedrichwilhelmhufnagel3577 5 лет назад +1

    * falschen Post editiert. Ich hatte gesagt, dass epsilon auch noch zu First(S) gehört.

    • @SamyaDaleh
      @SamyaDaleh  5 лет назад

      Du sagst gerade, dass S die Menge ist, die aus a, b und Epsilon besteht. S ist das Startsymbol und keine Menge.
      Angenommen du meinst First(S): Du willst wissen, welches Terminal (bei Lookahead der Länge 1) als erstes erzeugt werden kann, wenn dir ein S vorliegt. Epsilon ist kein Terminal, sondern das leere Wort mit Länge 0. Wenn im Fall S => Ba das B zu Epsilon expandiert, welches Terminal steht dann an erster Stelle?

    • @friedrichwilhelmhufnagel3577
      @friedrichwilhelmhufnagel3577 5 лет назад

      Ja Du hast Recht, natürlich meine ich First(S). Und das kann nicht epsilon produzieren? Obwohl die eine Alternative B ist und dieses epsilon produzieren kann?
      Viele Grüße

    • @friedrichwilhelmhufnagel3577
      @friedrichwilhelmhufnagel3577 5 лет назад

      Und wofür muss man die First-Mengen der RHS's berechnen?

    • @friedrichwilhelmhufnagel3577
      @friedrichwilhelmhufnagel3577 5 лет назад

      a würde ich sagen

    • @SamyaDaleh
      @SamyaDaleh  5 лет назад +1

      @@friedrichwilhelmhufnagel3577 Du musst die ganze RHS betrachten. Dann kann S kein Epsilon produzieren. Wenn es eine Regel S -> B gäbe ohne irgendwas dahinter, wäre das wieder was Anderes. Du brauchst die First-Mengen, damit du beim Parsen entscheiden kannst, welche Regel du als nächstes verwendest. Z. B. hast du gerade ein S in der Ableitung und das nächste Eingabezeichen ist b. Dann weißt du anhand der First-Mengen, dass du nur S -> Ba gebrauchen kannst. Den Rest brauchst du dir nicht anzugucken.

  • @se1yagyn
    @se1yagyn 5 лет назад +3

    sau gute videos. top

  • @clover6480
    @clover6480 4 месяца назад

    hammer. !

  • @JeyDnox
    @JeyDnox 9 лет назад +1

    sorry wenn ich so frage aber wie alt bist du o.O du hast eine sehr junge stimme :D

    • @SamyaDaleh
      @SamyaDaleh  9 лет назад +9

      Ich bin 25. Nein, ich bin kein kleiner Junge. :P

    • @TheTavaro11
      @TheTavaro11 7 лет назад +8

      Bist du männlich oder weiblich?

    • @anonymous1177
      @anonymous1177 6 лет назад +25

      Bist du dumm?

    • @janves
      @janves Год назад

      @@TheTavaro11 Ist doch offensichtlich oder?

    • @ea8455
      @ea8455 7 месяцев назад +2

      ​@@SamyaDalehund heute bist du 34. Wie die Zeit fliegt...