Mind map
Análise sintática top-down
Map content
Análise sintática top-down
Analisa se o código fonte está de acordo com as regras sintáticas e semânticas, e, assim, conclui-se a segunda etapa do processo de análise.
Como o analisador faz isso? Por meio da derivação da árvore sintática. Logo, construir um analisador sintático é desenvolver um algoritmo que nos permita construir uma árvore de derivação para qualquer sentença (estrutura de comando) que pertença à linguagem.
Processo de derivação
- Consiste em substituir a sentença, ou parte dela, no lado direito da produção da gramática, repetidas vezes, até alcançar os símbolos terminais, e, segundo Aho (2007), podemos aplicar repetidamente as produções, em qualquer ordem, a fim de obtermos uma sequência de substituições.
Arvore de derivação
- A derivação da árvore sintática, ou gramatical, pode ser vista como a representação gráfica da derivação. Como já visto, os nós têm sucessores, logo é um símbolo não-terminal e as folhas são os símbolos terminais.
- Assim, ao construirmos a árvore de derivação de uma sentença de acordo com a gramática de uma linguagem, aplicarmos sucessivamente as regras e alcançarmos as folhas para todos logo a sentença será gerada pela gramática.
Ascendentes
- que constroem a árvore gramatical das folhas para a raiz, chamados também de bottom-up, ou seja, de baixo para cima.
Descendentes
- que analisam a árvore gramatical da raiz para as folhas, isto é, de cima para baixo, também chamados de top-down.
- Esse é o método mais intuitivo e usual, e consiste em construir a árvore gramatical em pré-ordem (raiz-esquerda-direita)
- que analisam a árvore gramatical da raiz para as folhas, isto é, de cima para baixo, também chamados de top-down.
Algoritmo preditivo recursivo
- Os analisadores descendentes utilizam um modelo de algoritmo preditivo recursivo, que pode ser com retrocesso ou sem retrocesso. Um algoritmo preditivo é aquele que avança para ser capaz de tomar uma decisão agora, com base em uma informação que virá, mas se conhece previamente.
- Algoritmo de análise sintática com retrocesso
- Escolhe a 1ª opção e avança na construção da árvore gramatical, armazenando os dados em uma pilha até alcançar o final, mas se não reconhecer a sentença, retrocede, desempilhando os dados até o nó inicial, e reinicia o processo. Esse algoritmo é ineficiente do ponto de vista do tempo gasto na análise (o vai e volta), do tratamento da recuperação de erros e de análise semântica.
- Algoritmo de análise sintática sem retrocesso
- Não volta. Para que seja possível utilizar um algoritmo de análise sintática recursivo preditivo sem retrocesso, há uma condição: a gramática não pode ter recursão a esquerda. Assim, basta conhecer o primeiro token de entrada e a produção à frente, para expandir a árvore. Esse tipo de analisador é capaz de derivar a maioria das linguagens de programação, por serem do tipo livre de contexto.
Information
- Description
- Mind Map on Análise sintática top-down, created by Kykaze . on 28/04/2020.
- Created by
- Kykaze .
- Views
- 0
- Rating