Kihagyás

BNF listák

  • Ha nil a vége
  • Tagjaik azonosítók és számok
  • Elválasztó a .
    • pl.: a.b.c.nil
  • Általános forma:
    • \(<\text{lista}>\,::=\;<\text{tag}>.<\text{lista}>|n\)
    • \(<\text{tag}>\;::=\;i\,|\,n\)

Számok

  • \(<\text{szám}>\,::=~~~<\text{szj}>\,|\,<\text{szj}><\text{szám}>\)
    • token: c
  • \(<\text{szj}>\,::=~~~0|1|2\ldots|9\)
    • token: i
  • \(<\text{azon}>\,::=~~~<\text{betű}>\,|\,<\text{betű}><\text{azon}>\,|\,<\text{betű}><\text{szám}>\)
  • \(<\text{betű}>\,::=~~~a|b\ldots|z\)
  • \(<\text{nil}>\,::=~~~nil\)
    • token: n
  • \(T=\{i,\,c,\,n,\,.\,\}\)

pl.: alma3.12.korte45.nil

ami tokenekkel: i.c.i.n


Feladat - 1

\[ [\text{alma},\text{körte},\text{szilva}] \]

\(T= \{n,c,e,v\}\)

\(u = nevevec\)

  • <lista>::= n<elemek>c | nc
  • <elemek>::= e | ev<elemek>

Don't forget to let KES to do it's job 😉

Szintaxiktikus levezetési fa

   S
  /|\
 / | \
n  E  c
  /|\
 / | \
e  v  E
     /|\
    / | \  
   e  v  E
         |
         e

Bővítés

[[a,b],c,[d,e],[]] esetén meg kell engedni a listákat listákban

A lépéseket mellőzve...

      S
     /|\
    / | \
   n  E  c
     /|\
    / | \
   /  |  \
  A   v   E
  |      /|\
  S     / | \  
 /|\   A  v  E
n E c  |    /|\ 
| | |  e   / | \ 
A v E     A  v  E   
|   |     |
e   A     S
    |     |
    e     nc

Feladat - 2

C stílusú deklarációs fájl

int main(int argc, char** argv);
char thing();
float floor(float n);
  • Terminálisok:
    • t Típus
    • f Flag(név)
    • v vessző
    • p pontosvessző
    • n nyitó zárójel
    • c csukó zárójel
  • Megoldás:
    • \(S\,\to\;\varepsilon\,|\,DpS\)
    • \(D\,\to\;tfnEc\;|\;tfnc\)
    • \(E\,\to\;tf|tfvE\)