1. for i:=1 to n 2. begin 3. for j:=i-1 downto 1 do 4. begin 5. if(zgodne z gramatyka) 6. polacz slowo j jako nadrzedne do slowa i 7. if(zgodne z gramatyka) 8. polacz slowo j jako podrzedne do slowa i 9. end 10. end Algorytm LSUP (List-based search with uniqueness and projectivity) – zapewnia unikalność oraz „przyleganie” Pseudokod algorytmu LSUP:
1.Headlist := []; (słowa bez słów nadrzędnych) 2.Wordlist := []; (wszystkie dotychczas napotkane słowa) 3.repeat 4. (Odbierz słowo z listy argumentów algorytmu i dodaj je do headlist) 5. W := następne słowo do sparsowania 6. Wordlist := W + Wordlist; 7. (Szukaj słów podrzędnych słowu W; mogą nimi być kolejne słowa listy headlist poczynając od ostatnio dodanego) 8. for D := każdy element z HEADLIST zaczynając od pierwszego 9. begin 10. if (D może zależeć od W) then 11. begin 12. połącz D jako zależny od W; 13. usuń D z HEADLIST; 14. end 15. else 16. break; 17. end; 18. (Szukaj słów nadrzędnych słowu W; musi ono mieścić w sobie słowo poprzedzające W) 19. H := słowo bezpośrednio poprzedzające W w ciągu wejściowym; 20. loop 21. if (W może zależeć od H) then 22. begin 23. połącz W jako zależące od H; 24. zakończ pętlę; 25. end;