Você está na página 1de 2

Avaliação 4

Compiladores
Professora Tatiane Fernandes

Nome: Erik Bernardo Da Silva - 482148


Nome: Francisco Keven Almeida Da Silva - 500699

Resumo: Análise Sintática


Aula - 11
Na aula é introduzido o conceito de análise sintática em um processo de
compilação, destacando que a análise sintática é a segunda fase desse processo e
é mais complexa do que a análise léxica, apesar de ter um tempo de compilação
mais rápido. A análise sintática lida com a estrutura gramatical de um código-fonte e
verifica se ele está formatado corretamente de acordo com a linguagem de
programação definida. A gramática é fundamental para definir a estrutura correta
das frases na linguagem de programação. Na aula é feita a comparação da análise
sintática com o reconhecimento de padrões em frases em linguagens humanas,
onde o vocabulário e a gramática são usados para compor o sentido das palavras.
Da mesma forma, na análise sintática, a gramática da linguagem de programação é
usada para reconhecer as estruturas corretas do código-fonte.
Introduz a ideia de árvores sintáticas, que são estruturas que representam a
hierarquia das estruturas da linguagem de programação. Essas árvores auxiliam no
reconhecimento da estrutura correta do código-fonte e também destaca a
importância das linguagens livres de contexto na análise sintática, pois elas
permitem a definição de regras gramaticais mais flexíveis e poderosas. Ele
menciona que as linguagens regulares não são adequadas para lidar com a
complexidade das linguagens de programação devido à falta de capacidade de
contar e manter a coerência das estruturas. Como também é mencionado que a
análise sintática é fundamental para o processo de compilação, pois ajuda a
verificar se o código-fonte está bem estruturado de acordo com a gramática da
linguagem de programação. Além disso, ele destaca que a análise semântica é a
próxima etapa, que lida com o significado das ações no código.
Aula - 12
Na aula, comenta sobre a importância da árvore sintática na compreensão da
estrutura do código e na identificação de erros sintáticos. Também é explorada a
diferença entre uma árvore sintática concreta, que inclui todos os detalhes
gramaticais, e uma árvore sintática abstrata, que simplifica a representação,
tornando-a mais próxima do entendimento humano. e por fim, é destacado a
importância da análise semântica, que trata de erros de significado no código, e
mencionamos que a fase de geração de código intermediário e otimização são
próximas etapas após a análise sintática na compilação de código. A análise
sintática é um passo crucial na compilação de código, onde a estrutura gramatical
do programa é verificada e representada por uma árvore sintática para facilitar a
compreensão e a detecção de erros sintáticos. Essa árvore pode ser concreta ou
abstrata, dependendo do nível de detalhamento desejado, e serve como base para
as fases subsequentes do processo de compilação.
Aula - 13
Na aula foi mostrado a definição de ambiguidade e o quão crítico é esse
problema em uma gramática, também foram mostradas exemplos das árvores de
derivação onde possuem a ambiguidade, ou seja possuem mais de uma forma de
derivar uma gramática, dessa forma é gerado mais de uma árvore de derivação.
Alguns exemplos foram mostrados na aula como por exemplo, formas de eliminar a
ambiguidade quando possível, associando mais à direita ou à esquerda. Com essa
formas de derivação apareceu o problema das precedências, onde teriam casos que
a soma viria antes da multiplicação, foi mostrado formas de contornar esse
problema, onde foi aplicado uma cascata de regras que teria como foco resolver
esse problema.

Pergunta 01: Sobre os algoritmos de análise sintática mencionados nas aulas,


como eles diferem em termos de reconhecimento da estrutura de código?
Pergunta 02: Por que as gramáticas livres de contexto são escolhidas como a base
para a análise sintática em linguagens de programação?
Pergunta 03: Quais os principais problemas, uma árvore que seja ambígua gera ?

Você também pode gostar