BNF listák
- Ha nil a vége
- Tagjaik azonosítók és számok
- Elválasztó a
.- pl.:
a.b.c.nil
- pl.:
- Á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
- token:
- \(<\text{szj}>\,::=~~~0|1|2\ldots|9\)
- token:
i
- token:
- \(<\text{azon}>\,::=~~~<\text{betű}>\,|\,<\text{betű}><\text{azon}>\,|\,<\text{betű}><\text{szám}>\)
- \(<\text{betű}>\,::=~~~a|b\ldots|z\)
- \(<\text{nil}>\,::=~~~nil\)
- token:
n
- token:
- \(T=\{i,\,c,\,n,\,.\,\}\)
pl.:
alma3.12.korte45.nilami 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
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
- Terminálisok:
tTípusfFlag(név)vvesszőppontosvesszőnnyitó zárójelccsukó zárójel
- Megoldás:
- \(S\,\to\;\varepsilon\,|\,DpS\)
- \(D\,\to\;tfnEc\;|\;tfnc\)
- \(E\,\to\;tf|tfvE\)