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