Funzione FIRST (parsing predittivo)

fausto_1
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.

Risposte
Rggb1
Dà un'occhiata agli appunti di L. Tesei (mi sembrava di averli già segnalati...)
http://www.cs.unicam.it/tesei/didattica ... 4Total.pdf

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.