Os Compiladores
Por: Luis Saback • 17/6/2018 • Pesquisas Acadêmicas • 660 Palavras (3 Páginas) • 240 Visualizações
1. O que é um compilador e para que serve?
Compilador é um mecanismo que converte um código em linguagem de alto nível para linguagem de máquina, porém esse código convertido não poderá ser interpretado diretamente pelo hardware é necessário o uso do Assembler interpretador para traduzir o código convertido.
2. Defina as ferramentas para a construção de um compilador.
Geradores de Scanners: Produzem analisadores léxicos a partir de uma descrição de expressões regulares. Ex.: Lex, Flex.
Geradores de parsers: Produzem automaticamente analisadores sintáticos a partir de uma descrição da gramática da linguagem. Ex.: Bison, JavaCC.
Tradutores dirigidos por sintaxe: Produzem rotinas para manipular árvores sintáticas e gerar código intermediário.
Gerador de código: Produzem um gerador de código a partir de uma coleção de regras para traduzir cada operação da linguagem intermediária na linguagem de máquina para uma máquina alvo.
Mecanismo de análise de fluxo de dados: Coletam informações sobre como os valores são transmitidos dentro do código.
3. Defina Tabela de Símbolos. Cite os modos mais comuns para organizar e acessar as tabelas de símbolos.
É uma estrutura de dados gerada pelo computador com o objetivo de armazenar informações sobre os nomes (identificadores de variáveis, de parâmetros, de funções, de procedimentos). Ela começa a ser construída na fase léxica quando os identificadores são reconhecidos.
Modos de organizar uma tabela.:
Listas lineares mais simples
Árvores binárias
Tabela Hash
4. Quais os tipos de gramáticas segundo a hierarquia de Chomsky?
Tipos de Gramáticas:
Gramáticas irrestritas - Tipo 0
Gramáticas sensíveis ao contexto - Tipo 1
Gramáticas livres de contexto - Tipo 2
Gramáticas Regulares - Tipo 3
5. Defina:
a) Padrões: É uma descrição da forma que os lexemas de um token podem assumir. Para palavras-chave, é bem simples, exemplo, IF. Agora para identificadores e outros, o padrão é mais complexo.
b) Lexema: É uma sequência de caracteres no programa fonte que casa com o padrão para um token e é identificado pelo analisador léxico como uma instância de token.
c) Diagrama de Transição: Representa os padrões de tokens. Eles são compostos de estados e arestas. Estados representam o que sabemos a respeito daquele token (os caracteres que estão entre os ponteiros lexemeBegin e forward).
6. Dê exemplos de símbolos léxicos (tokens).
Palavras reservadas: int, char, varchar, float, bool, if, else.
Delimitadores: ponto e vírgula ( ; ).
7.
...