Distinguir
Árvore concreta, AST e suas finalidades.
AST e tabela de símbolos · Semana 6 · teoria
Árvore concreta, AST e suas finalidades.
Nós, relações, precedência e travessias.
Entradas e escopos da tabela de símbolos.
Flex, Bison, AST e análise semântica.
Tokens e regras precisam se transformar em estruturas que o compilador possa percorrer e anotar.
O parser normalmente constrói a AST; o analisador semântico percorre e anota essa árvore enquanto cria e consulta símbolos.
A AST elimina detalhes sintáticos que não alteram o significado estrutural do programa.
Qual operador ocupa a raiz da AST de a + b * 2?
Uma estrutura hierárquica que representa o significado sintático essencial do programa.
Operadores, operandos e precedência.
Tipo, identificador e inicialização.
Atribuição, seleção, repetição e retorno.
Blocos, listas, funções e chamadas.
A árvore de a + b * 2 evidencia que a multiplicação é agrupada antes da soma.
Qual elemento normalmente não precisa aparecer na AST de uma chamada de função?
int soma = a + b * 2;
Número, identificador, operação, declaração ou comando.
Valor, nome, operador, tipo ou posição no código.
Referências para operandos, corpo, condição ou lista.
Tipo inferido, símbolo resolvido ou informação de geração.
NO_NUMERO e NO_IDENTIFICADOR.
NO_OPERACAO e NO_CHAMADA.
NO_DECLARACAO e NO_PARAMETRO.
NO_ATRIBUICAO, NO_IF e NO_WHILE.
Processa o nó antes dos filhos.
Útil em árvores binárias de expressões.
Processa os filhos antes do nó.
Tipos, impressão, liberação e geração de código.
A estrutura que conecta nomes do programa às suas declarações e propriedades.
Registrar identificadores e impedir redeclarações inválidas.
Confirmar que um nome foi declarado e está visível.
Recuperar o tipo para verificar expressões e atribuições.
Associar endereços, deslocamentos ou informações de destino.
Criar ou ativar um novo contexto.
Registrar a declaração no escopo atual.
Consultar do escopo interno para o externo.
Descartar ou desativar o contexto local.
Busca média rápida e implementação comum.
Uma tabela por escopo ativo.
Preserva relações pai–filho.
Simples, mas menos eficiente em tabelas grandes.
Uma declaração local pode ocultar temporariamente outra declaração com o mesmo nome em um escopo externo.
Qual informação é indispensável para validar o uso de um identificador?
Ao buscar um identificador, qual escopo deve ser consultado primeiro?
Ações do Bison constroem a AST; a análise semântica resolve símbolos e anota os nós.
Os valores semânticos atravessam o parser e se transformam em nós conectados da AST.
Cada redução pode produzir um nó e devolver seu endereço como valor semântico da produção.
Em uma ação do Bison, o que representa $$?
Uso de identificador ausente nos escopos visíveis.
Novo símbolo incompatível no mesmo escopo.
Operação ou atribuição entre tipos inválidos.
Leitura antes de inicialização ou definição.
Alocar nós e verificar falhas de malloc.
Definir quem é responsável por cada string e nó.
Usar funções recursivas defensivas.
Desalocar AST, símbolos e estruturas auxiliares.
A AST organiza o significado estrutural do programa; a tabela de símbolos resolve nomes, tipos e escopos. Juntas, sustentam a análise semântica e as etapas posteriores.