Apostila antiga - The Cyan Programming Language
Apostila antiga - The Cyan Programming Language
Apostila antiga - The Cyan Programming Language
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Chapter 3<br />
Análise Sintática Descendente Não<br />
Recursiva<br />
3.1 Introdução<br />
Um analisador descendente não recursivo utiliza uma pilha e uma tabela durante a análise. 1 A tabela<br />
é preenchida antes da análise de acordo com um método que será estudado posteriormente. A pilha<br />
contém, durante a análise, símbolos terminais e não terminais.<br />
Um único analisador, mostrado na Figura 3.1, é utilizado para todas as linguagens, embora a<br />
tabela seja dependente da gramática. Dada a gramática<br />
1. E ::= T E ′ 2. E ′ ::= + T E ′ 3. E ′ ::= ɛ<br />
4. T ::= F T ′ 5. T ′ ::= ∗ F T ′ 6. T ′ ::= ɛ<br />
7. F ::= ( E ) 8. F ::= id<br />
onde +, ∗, (, ) e id são terminais, a tabela associada, que chamaremos de M, é<br />
id ( ) + ∗ eof<br />
E 1 1 − − − −<br />
E ′ − − 3 2 − 3<br />
T 4 4 − − − −<br />
T ′ − − 6 6 5 6<br />
F 8 7 − − − −<br />
O símbolo − deve ser lido 0 (zero).<br />
O algoritmo da Figura 3.1 será utilizado a seguir para analisar a sentença<br />
id + (id ∗ id)<br />
A cada passo da análise, mostraremos a pilha, os elementos da entrada ainda não analisados e a<br />
ação a ser tomada. Na pilha, o topo é colocado mais à esquerda. Assim, T estará no topo se a pilha<br />
for<br />
E ′ T<br />
Após uma operação desempilha, teremos<br />
E ′<br />
1 Parte do texto e os exemplos deste capítulo foram retirados de [6] e [4].<br />
24