Funzione FIRST (parsing predittivo)
Chiedo il vostro aiuto.
Il problema riguarda la costruzione della tabella di parsing per un compilatore.
La funzione FIRST è definita come:
data una gramamtica G, alfa una stringa di terminali e non terminali, FIRST(alfa) è l'insieme dei
terminali con cui possono iniziare le stringhe derivate da alfa.
NON capisco come applicare la definizione.
Per esempio:
data la grammatica (eps sta per epsilon = stringa vuota)
S--> Ac|Ba FIRST(S)={a,b,c}
A-->eps|a FIRST(A)={eps,a}
B-->b FIRST(B)={b,}
C-->a|Cb FIRST(C)={a}
D-->eps|d|Db FIRST(D)={eps,d,b}
NON capisco come è possibile ottenere FIRST(S)={a,b,c} ed anche FIRST(D)={eps,d,b}
Qualcuno puo' spiegarmi passo per passo come calcoalre FIRST data una grammatica?
A maggiore ragione non capisco proprio come calcolare FIRST data la seguente grammatica:
E--> TE'
E'--> +TE'|eps
T--> FT'
T'--> xFT'|eps
F--> a| (E)
Come calcolo : FIRST(E), FIRST(E'), FIRST(T), FIRST(T'), FIRST(F) ?
Come faccio a capire quali sono i non terminali ed i terminali?
Grazie in anticipo a coloro che mi aiuteranno a capire.
Il problema riguarda la costruzione della tabella di parsing per un compilatore.
La funzione FIRST è definita come:
data una gramamtica G, alfa una stringa di terminali e non terminali, FIRST(alfa) è l'insieme dei
terminali con cui possono iniziare le stringhe derivate da alfa.
NON capisco come applicare la definizione.
Per esempio:
data la grammatica (eps sta per epsilon = stringa vuota)
S--> Ac|Ba FIRST(S)={a,b,c}
A-->eps|a FIRST(A)={eps,a}
B-->b FIRST(B)={b,}
C-->a|Cb FIRST(C)={a}
D-->eps|d|Db FIRST(D)={eps,d,b}
NON capisco come è possibile ottenere FIRST(S)={a,b,c} ed anche FIRST(D)={eps,d,b}
Qualcuno puo' spiegarmi passo per passo come calcoalre FIRST data una grammatica?
A maggiore ragione non capisco proprio come calcolare FIRST data la seguente grammatica:
E--> TE'
E'--> +TE'|eps
T--> FT'
T'--> xFT'|eps
F--> a| (E)
Come calcolo : FIRST(E), FIRST(E'), FIRST(T), FIRST(T'), FIRST(F) ?
Come faccio a capire quali sono i non terminali ed i terminali?
Grazie in anticipo a coloro che mi aiuteranno a capire.
Risposte
Dà un'occhiata agli appunti di L. Tesei (mi sembrava di averli già segnalati...)
http://www.cs.unicam.it/tesei/didattica ... 4Total.pdf
http://www.cs.unicam.it/tesei/didattica ... 4Total.pdf