LL(1)
- gramática da esquerda para a direita
- de cima para baixo (top-down) ou bottom-up
- pega sempre o primeiro símbolo não terminal mais à esquerda
- não aceita recursão à esquerda
- o analisador utiliza uma estrutura de pilha para verificar a
entrada, além de uma tabela first-follow
- O sistema da pilha começa com um determinado símbolo de controle
($) e vai empilhando e desempilhando os caracteres conforme as
regras, a entrada é válida quando sobra apenas o caractere de
controle na pilha
First
- primeiro caractere que uma regra pode ter
S -> AB
A -> b | empty
B -> a
First - table
S | {a,b}
A | {b, empty}
B | {a}
repare que em S, não temos só o b, uma vez que A pode ser vazio também,
sendo assim, caso A seja vazio, o primeiro caractere será a
Follow
- próximo caractere após certo simbolo não terminal a direta
S -> AB
A -> b | empty
B -> a
S | {$}
A | {a}
B | {$}
De uma forma algoritmica, podemos representar o padrão do follow da
seguinte forma:
```
adicionar $ para o conjunto do simbolo inicial
para cada regra existente faça
se termina com o B (A -> αB) então
Follow de B tem tudo do Follow de A
senão (A -> αBβ)
Follow de B possui o First de β
se 'empty' está em First de β então
Follow de B tem tudo do Follow de A
```