Questionário para prova 2
Segue em anexo uma lista de exercícios correspondente à segunda parta da matéria, que cai na segunda prova de compiladores.
Atenciosamente,
Johann
Exercícios sobre segunda parte do conteúdo de compiladores:
1) O que é a Árvore de Sintaxe Abstrata (AST)?
Árvores sintáticas abstratas, assim como as árvore de análise sintática, são estruturas de dados em árvore que representam estruturas sintáticas de cadeias, de acordo com alguma gramática formal, porém os nós são diretamente valorados em seus símbolos terminais, não havendo portanto a representação das derivações por meio dos símbolos não terminais.
É uma representação abstrata (simplificada) da estrutura semântica de um código fonte escrito em uma certa linguagem de programação. Cada nó da árvore denota um construtor no código fonte. A sintaxe é abstrata no sentido que ela não representa cada detalhe que aparece na sintaxe real. Por exemplo, agrupar parênteses está implícito na estrutura da árvore, e uma construção sintática como um condicional SE cond ENTÃO expr pode ser denotada por um simples nós com suas ramificações.
2) Quando a AST é indispensável?
Quando existem propriedades ainda não inicializadas em tempo de compilação e que só estarão disponíveis a partir da fase de ligação.
3) O que é tradução dirigida por sintaxe?
Utilizada para traduzir linguagens dirigidas por gramáticas livre de contexto.
É uma técnica que permite realizar tradução (geração de código) concomitantemente com a análise sintática. Ações semânticas são associadas às regras de produção da gramática de modo que, quando uma dada produção é processada (por derivação ou redução de uma forma sentencial no processo de reconhecimento), essas ações sejam executadas. A execução dessas ações pode gerar ou interpretar código, armazenar informações na tabela de símbolos, emitir mensagens de erro, etc.
4) O que é uma árvore de derivação anotada (ou decorada) e o que são atributos? Livro do dragão pág 196 Livro série didática