Stosowany jest algorytm: inicjujemy wszystkie zbiory dla symboli nieterminalnych jako puste z wyjątkiem symbolu startowego Z zawierającego znak końca strumienia w głównej pętli ustawiamy changed na false po wszystkich nieterminalnych po wszystkich produkcjach jeśli jest produkcja A → αBβ wtedy wołamy add_rule_first od pozycji β z wynikowym B

set [ilosc_nieterminalnych]Follow; //tablica zbiorów Follow dla każdego symbolu nieterminalnego //w konkretnej implementacji set może być klasą zawierającą zbiór symboli terminalnych plus //znak końca strumienia, w odróżnieniu od typu zbioru dla First gdzie zamiast tego miał obsługiwać epsilon inicjujemy wszystkie zbiory Follow jako puste z wyjątkiem zbioru Follow[Startowy] inicjowany na $//punkt 1 void make_Follow_sets(First) { bool changed; //w jednym przebiegu pętli zostały dodane nowe symbole do

changed = false; for (A po wszystkich symbolach nieterminalnych)

for (po regułach produkcji dla tego symbolu nieterminalnego)

for (B po symbolach nieterminalnych prawej strony produkcji)