Bardziej formalnie: niech wtedy:

Dla gramatyki G=(Σ,N,P,S):

zbiór FirstG,k(α) jest zbiorem wszystkich k-głów napisów dających się wyprowadzić w G z α, czyli FirstG,k(α) = {w | istnieje x∈Σ* taki że α ⇒* x, a w=k:x}; zbiór FollowG,k(α) zawiera wszystkie k-głowy które mogą wystąpić po α, czyli FollowG,k(α) = {w | istnieją μ, x takie że S ⇒* μαx, i w∈FirstG,k(x)}.

Jeśli nie prowadzi to do niejednoznaczności FirstG,k można skracać do Firstk, FollowG,k do Followk. Indeks k dla First i Follow można pominąć gdy ma wartość równą 1.

Obliczanie na podstawie definicji First Jeśli X jest symbolem terminalnym, wtedy FIRST(X) = {X} Jeśli jest produkcja X->eps, wtedy dodajemy epsilon do FIRST(X) Jeśli jest produkcja X-> Y1, Y2,..Yk, wtedy do FIRST(X) dodajemy wszystkie z FIRST(Y1) poza epsilonem jeśli FIRST(Y1) zawiera epsilon, dodajemy do FIRST(X) wszystkie z FIRST(Y2) poza epsilonem itd jeśli wszystkie zawierają epsilon, wtedy dodajemy epsilon do FIRST(X) Follow Jeśli S jest symbolem startowym dodajemy znak końca strumienia $ do FOLLOW(S) Jeśli jest produkcja A -> αΒβ wtedy dodajemy wszystko z FIRST(β) poza epsilonem do FOLLOW(Β) Jeśli jest produkcja A -> αΒ wtedy dodajemy wszystko z FOLLOW(A) do FOLLOW(B) Jeśli jest produkcja A -> αΒβ oraz FIRST(β) zawiera epislon, również wszystko z FOLLOW(A) do FOLLOW(B)