← zpět

Gramatiky

Lekce 12

Úlohy

Postfix (5b)

V složce této lekce na GitLabu máte parser implementovaný v Pythonu. Infixový parser už hotový je, ale programátor byl líný, a na implementaci toho postfixového zapomněl. Doimplementujte ho za něj.


Na tyto úkoly máte dva týdny, tedy do 12. 12. 2024.

Závorky (6b)

Proměnné (9b)

Co jsme dnes probrali

Gramatika

E => S
S => S + P
S => P
P => P * N
P => N
N => number

Příklad parsování

Pojďme zkusit rozparsovat výraz 1 + 3 + 2.

  1. Tento výraz je E.
  2. Aplikujeme pravidlo E => S.
  3. Pro první + aplikujeme S => S + P
    • Číslo 1 transformuje jako S => P => N => number
    • Číslo 3 transformuje jako P => N => number
    • Máme (1 + 3)
  4. Pro druhé + aplikujeme S => S + P
    • Levou stranu máme: (1 + 3)
    • Pravá strana, číslo 2, se transformuje jako P => N => number
    • Tím dostaneme ((1 + 3) + 2)

Poznámka: závorky nejsou symboly z gramatiky, znázorňují pouze postup parsování (a asociativitu sčítání z něj plynoucí).