Compiladores e Autômatos de Pilha: Definição e Estrutura
Classificado em Computação
Escrito em em
português com um tamanho de 2,98 KB
Definição de Compilador
- Um compilador é um programa que recebe como entrada um programa em uma linguagem de programação e o traduz para um programa equivalente em outra linguagem.
- Um papel importante do compilador é relatar quaisquer erros do programa-fonte durante o processo de tradução.
Estrutura de um Compilador
- Analisador Léxico (AL): Lê um fluxo de caracteres do programa-fonte e os agrupa em sequências significativas (lexemas).
- Analisador Sintático (AS): Utiliza os primeiros componentes dos tokens produzidos pelo analisador léxico para criar representações intermediárias em formato de árvore, que demonstram a estrutura gramatical da sequência de tokens.
- Analisador Semântico: Utiliza a árvore de sintaxe e as informações na tabela de símbolos para verificar a consistência semântica do programa-fonte.
Autômatos de Pilha (AP)
Linguagens Livres de Contexto são reconhecidas por Autômatos de Pilha.
- É um autômato finito não determinístico com ε-transições e uma memória auxiliar (a pilha).
- A manipulação (ler, push, pop) é permitida somente no topo da pilha (LIFO - Last-In, First-Out).
AP Determinísticos
- Aceitam todas as linguagens regulares.
- Aceitam um subconjunto próprio das Linguagens Livres de Contexto.
Versões de AP e Modos de Aceitação
Existem duas versões de AP, ambas equivalentes:
- Aceitação por estado final: Dizemos que um AP aceita por estado final se a entrada w é consumida e o autômato entra em um estado de aceitação.
- Aceitação por pilha vazia: Dizemos que um AP aceita por pilha vazia se ele esvazia a pilha a partir da configuração inicial, independentemente do estado em que se encontra.
Ambas as versões aceitam exatamente a classe das Linguagens Livres de Contexto (GLC) e são equivalentes.
Conversão de um Autômato de Pilha
- Para converter um AP com aceitação por pilha vazia para um com estado final, basta criar dois novos estados: um inicial (p₀) e um final (p_f).
- Para converter um AP com estado final para um que aceita por pilha vazia, basta criar dois novos estados: um inicial (p₀) e um de esvaziamento (p).
Um AP é determinístico quando nunca há mais de uma transição a ser executada em qualquer situação.
Condições para Não Determinismo
O não determinismo pode ocorrer em duas situações:
- Existe mais de uma transição para uma dada configuração, como em
δ(q, a, X). - Mesmo que a transição
δ(q, a, X)seja única, existe a possibilidade de um movimento com entrada vazia (ε), ou seja,δ(q, ε, X)também está definida.