Sto cercando di implementare l'algoritmo di Warshall per calcolare rapidamente le chiusure LR (1).Come utilizzare l'algoritmo di Warshall per la chiusura transitiva per determinare le chiusure di parser LR (1) canoniche?
I pare capisco come funziona per LR (0):
- I nodi del grafo sono LR items, come
A → B • C
- I bordi sono "transizioni" a partire da
A → B • C
aC → • D
Il problema è che LR (1) richiede il calcolo dei lookaheads e non riesco a capire come incorporarli negli algori THM.
Mi sembra che anche se conosca la chiusura transitiva di un dato articolo LR I ancora necessità di passare attraverso lo stesso calcolo solo per capire quale sia il set di lookahead impostato per ciascun articolo.
È persino possibile utilizzare l'algoritmo di Warshall per calcolare le chiusure LR (1) canoniche, oppure è possibile solo per casi più limitati (come LR (0), SLR (1), ecc.)?
+1 grazie! In realtà (molto tempo dopo) ho finito per non utilizzare alcun algoritmo particolare perché più lo guardavo da tempo, meno spazio potenziale ho visto per il miglioramento. Ho finito per creare il mio generatore di parser LR (k), anche se è stato piuttosto doloroso! (Funziona per ogni k, ma potrebbe richiedere esponenzialmente lungo in k a seconda della grammatica.) – Mehrdad