autômato <- novo autômato vazio
estado_inicial <- [{produção: produção_inicial, posição: 0, lookahead: {'$'}}]
closurelr1(estado_inicial)
adicionar estado_inicial ao autômato
pilha_estados <- {estado_inicial}
enquanto pilha_estados não estiver vazia:
estado_atual <- topo da pilha_estados
para cada símbolo b em alfabeto:
novo_estado <- conjunto vazio
para cada item em estado_atual:
se b corresponde ao próximo símbolo da produção do item:
adicionar {produção: produção do item, posição: posição do item + 1, lookahead: lookahead do item} a novo_estado
closurelr1(novo_estado)
se novo_estado já existe no autômato:
adicionar transição de estado_atual para o estado existente com b
senão:
adicionar novo_estado ao autômato
adicionar novo_estado à pilha_estados
adicionar transição de estado_atual para novo_estado com b
remover topo da pilha_estados