- Codice:
S -> rAIStI
A -> aA | epsilon
I-> iI | epsilon
Dopo aver costruito tutti gli stati per LR(0), mi preparo ad analizzare tutti quelli che presentano conflitti di Riduzione/Spostamento all'interno dello stesso stato calcolando i Follow per le riduzioni e i First per gli spostamenti. Ad esempio uno stato che presenta questi conflitti è il seguente:
- Codice:
S -> r . AIStI
A-> . aA
A-> .
Adesso arriva il problema, calcolo per gli spostamenti:
- Codice:
First(AIStI) U First(aA) = {a}
Invece per la riduzione bisogna calcolare (secondo quello che conoscevo):
- Codice:
Follow(A) = First(I) = {i} U Follow(I) = {i} U First(S) U Follow(S) = {i} U {r} U {$,t} = {i,r,$,t}
se vado però a controllare lo svolgimento dell'esercizio vedo che come Follow(A) hanno considerato soltanto {i,r}, inoltre se utilizzo questi generatori automatici
http://galileo.dmi.unict.it/utenti/reve ... oreparser/
http://hackingoff.com/compilers/predict ... follow-set
il Follow di A viene calcolato in maniera diversa, per uno è soltanto {i} per l'altro è {i,r}. Quindi a questo punto sono entrato in confusione e non sapevo più a chi credere . Se qualcuno è in grado di aiutarmi mi faccia sapere.
Grazie e spero in qualche risposta.