ANALISI Bottom up

La frase è una lista di parole vista come foresta di analisi.

Non deterministicamente si sceglie un albero di analisi, se esiste:

parto dalle parole della frase e controllo se esiste una regola il cui lato destro combaci con la parola considerata o con una categoria o con una conseguenza della frase.

Se c'è, sostituisco nella frase un nodo con la parte sinistra della regola fino ad ottenere la sostituzione dell'intera frase con S dove , a questo punto, a S è associato l'eventuale albero di analisi.

 

Function analisi_bottom_up (parole, grammatica) returns un'albero di analisi

foresta™ parole

loop do

if lunghezza(foresta)=1 and categoria(foresta[1])=inizio(grammatica) then

return foresta[1]

else

i™ choose in {1…lunghezza(foresta)}

rule™ choose in regole(grammatica)

n™ lunghezza(regola-rhs(regola))

sottosequenza™ sottosequenza(foresta,i,i+1-n)

if combacia(sottosequenza,regola-rhs(regola)) then

foresta[i…i+n-1]™ [fai-nodo(regola-lhs(regola),sottosequenza)]

else fail

end

Torna a Analisi sintattica