Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - First & Follow
Forum - Altri Linguaggi - First & Follow

Avatar
carmelolg (Normal User)
Rookie


Messaggi: 23
Iscritto: 14/12/2010

Segnala al moderatore
Postato alle 19:21
Mercoledì, 13/07/2011
Qualche magnanimo potrebbe spigarmi come si calcolano first e follow ( ma sopratutto follow) di una grammatica?
Nel modo piu semplice possibile perché ho letto fino troppo cose incomprensibili. :D

PM
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Up
1
Down
V
Segnala al moderatore
Postato alle 20:29
Mercoledì, 13/07/2011
Data una grammatica:

Testo quotato


A --> Bc
B --> d
B --> (vuota)



Il first è l'insieme dei terminali che puoi trovare all'inizio di un non-terminale.

Ad esempio, se prendi A:
- A può andare a B.
- B va a d. d è quindi un terminale che sta all'inizio di A e va inserito nel first.
- B va a (vuota). (vuota) va quindi anche inserito nel first.
- Siccome B può essere (vuota), "c" è un terminale che è all'inizio di A. Quindi anche c va inserito nel first.

First(A) = {c, d, (vuota) }

Il follow in maniera simile, è l'insieme dei terminali che seguono un non-terminale (che sono alla fine):

Ad esempio se prendi A:
- c è alla fine di A, quindi c è nell'insieme.

Follow(a) = {c}

Per B:
- b è alla fine di B. Quindi b è nell'insieme.
- (vuota) è alla fine di B. Quindi (vuota) è nell'insieme.
- Dopo B può esserci c. Quindi c è nell'insieme.

Follow(b) = {b, (vuota), c}

In parole semplici... l'insieme first è dato da tutti i terminali che si possono trovare all'inizio di un non-terminale.

L'insieme follow è dato da tutti i terminali che si possono trovare alla fine di un non-terminale.


Ultima modifica effettuata da pierotofy il 13/07/2011 alle 21:34
Ma il Follow(B) non dovrebbe essere c ? questa parte non ho capito bene - carmelolg - 13/07/11 20:45
Si, hai ragione, anche c è parte del follow(b). Ho corretto il post. E' facile commettere errori calcolando questi insiemi. Per questo esistono tools che li calcolano in automatico. - pierotofy - 13/07/11 20:59
capito, ma purtroppo il mio esame è scritto e devo calcolarlo io :S - carmelolg - 14/07/11 08:49
eheh, si ho dovuto farlo a mano pure io. Ho anche dovuto scrivere la risultante tabella SLR, LR e LARL di parsing. Ugh. Buona fortuna. - pierotofy - 14/07/11 18:16


Il mio blog: https://piero.dev
PM