Linguagens Formais e Compiladores
Carlos Alberto [email protected]
http://fragapimentel.googlepages.com
*Parte dos slides gentilmente cedidos pela prof Laís (Unifacs)
Ementa Gramáticas e automatos Gramáticas livres de contexto Gramáticas sensíveis ao contexto Introdução à arquitetura de
compiladores Análise Léxica, sintática e semântica Geração de código intermediário e
otimização
Habilidades Conceituar gramáticas e automatos Habilidade para diferenciar os diversos
tipos de gramáticas e automatos Compreender as diversas fases de um
compilador Habilidade para implementar um
tradutor Compreender como as diversas técnicas
de programação influenciam no desempenho dos programas gerados.
Pré-requisitos
Conhecimentos básicos em teoria dos conjuntos e lógica matemática
Conteúdo programático
Bibliografia HOPCROFT, J., MOTOWANI, R. ULLMAN, J. Introduction to
Automata Theory, Languages and Computational. Addison- Wesley, 2001.
AHO, A., SETHI, R. ULLMAN, J. Compilers. Addison Wesley, 2006.
LEWIS, H., PAPADIMITRIOU, C., Elements of the theory of computational. Prentice Hall, 2004.
MENEZES, P., Linguagens formais e automatos. Sagra Luzzato, 2005. http://teia.inf.ufrgs.br/
PRICE, A. TOSCANI, S. Implementação de linguagens de programação. Sagra Luzzato, 2005.
RAVI SETHI JEFFREY D. ULLMAN ET AL. Compiladores: Princípios, Técnicos e Ferramentas.
Linguagens formais e automatos
Originalmente desenvolvida em 1950 como estudo relacionado as linguagens naturais, posteriormente linguagens “artificiais”.
Emprego na análise léxica e sintática das linguagens de programação.
Sintaxe e semântica
Linguagens formais preocupa-se com a análise sintática.
A teoria da sintaxe possui modelos matemáticos bem definidos. Ex.: gramáticas de Chomsky
Linguagem: Uma entidade livre X entidade com significado
Sintaxe e semântica
Sintaxe – Trata das propriedades livres da linguagem. Ex.: Verificação gramatical
Semântica – Objetiva dar uma interpretação ou significado para o programa
Alfabetos, palavras, linguagens, gramáticas
Para o dicionário Aurélio um linguagem é “O uso da palavra articulada ou escrita como meio de expressão e comunicação entre pessoas”
Precisamos de um formalismo matemático.
Alfabeto
Um conjunto finito de símbolos. {a, b, c, d, e, ..., z} {0, 1} {0, 1, 2, ..., 9, A, B, C, D, E, F}
Palavra, cadeia de caracteres ou sentença Uma seqüência finita de símbolos
justapostos. Palavra vazia ε Se denota um alfabeto * denota o conjunto de todas as
palavras sobre o alfabeto + denota o conjunto de todas as
palavras exceto palavra vazia. Exemplos???
Tamanho ou comprimento de uma palavra Sendo w uma palavra, o comprimento
da palavra é dado por |w|. O comprimento é dado em número de
símbolos |ε| = 0 |casa|=4 |pé|=2 |compilador|=?
Prefixo, sufixo, subpalavra
Prefixo – subconjunto inicial de símbolos de uma palavra
Sufixo – subconjunto final de símbolos de uma palavra
Subpalavra – qualquer subconjunto de símbolos de uma palavra.
Abcb é uma palavra do alfabeto {a, b, c}
Exemplos de prefixo e sufixo????
Linguagem formal Um conjunto de palavras sobre um
alfabeto. Exemplo de linguagem: O
conjunto de palíndromos sobre um determinado alfabeto
{}<>{ε}
Concatenação
Justaposição de símbolos que representam as palavras componentes
Propriedades: Associativa – v(wt) = (vw)t Elemento neutro a esquerda e direita
εw=w=wε Exemplos????
Concatenação sucessiva Uma palavra e concatenada
sucessivamente com ela mesma. wn – Sendo w uma palavra e n a
quantidade de contatenações. Assim: w0=ε wn= wn-1w, para n > 0 Ex.: A5=AAAAA Concatenação da palavra vazia??????
Gramática Uma gramática é uma quádrupla
ordenada G=(V, T, P, S)
V – Conjunto finito de símbolos não terminais T – Conjunto finito de símbolos terminais P – Conjunto finito de pares, denominados
regras de produção. S – Elemento de V, denominado variável
inicial
Regra de produção Definem as condições de geração
das palavras da linguagem. 1| 2 | 3| .... | n
Para descobrir se uma cadeia x T* é gerada pela gramática basta fazer um processo de derivação começando do símbolo inicial S até obter a cadeia desejada.
Gramáticas Um exemplo inicial:<frase> <sujeito> <verbo> <predicado> <sujeito> O homem <sujeito> A mulher<verbo> leu <verbo> escreveu <predicado> um <adjetivo> livro <adjetivo> ótimo <adjetivo> péssimo <adjetivo>
Exemplo de gramática
A gramática gera a seguinte linguagem {ww | w é palavra de {a, b}*}
Gramática {ww | w é palavra de {a, b}*}
G={V, T, P, S} V={S, X, Y, A, B, F} T={a, b} P={S→XY,
X→XaA | XbB | F,Aa→aA, Ab→bA, AY→Ya,Ba→aB, Bb→bB, BY→Yb,Fa→aF, Fb→bF,FY→ }
S={S}
Exemplo de derivação da gramática {ww | w é palavra de {a, b}*}
S=>XY=>XaAY=>XaYa=>XbBaYa=>XbaBYa=>FbaYba=>bFaYba=>baFYba
=>baba
{ww | w é palavra de {a, b}*}
A gramática apresentada gera o primeiro w após X e o segundo w após Y, como segue: A cada símbolo terminal gerado após X, é
gerada uma variável correspondente; Esta variável “caminha” na palavra até passar
por Y, quando devira o correspondente terminal;
Para encerrar, X devira a variável F a qual “caminha” até encontrar Y quando FY deriva a palavra vazia.
Exercício (Media de eficiência)
Dada a gramática anterior da ling. {ww | w é palavra de {a, b}*}
Gerar duas palavras de comprimento |WW| = 4 e uma palavra de comprimento |WW| = 6.
Mostrar que a palavra bbaa não pode ser derivada da gramática.
Individual ou em dupla
Gramáticas equivalentes
Duas gramáticas G1 e G2 são ditas Gramáticas equivalentes se, e somente se, GERA(G1) = GERA(G2)
Exercício (Media de eficiência)
Desenvolver uma gramática que gere expressões aritméticas com parênteses balanceados, dois operadores (representados por * e +) e um operando (representado por x), Por exemplo, x, x*(x+x) e ((((x)))) são expressões aritméticas válidas.
No máximo 3 pessoas por equipe
Linguagens Regulares ou do tipo 3
De acordo com a Hierarquia de Chomsky, trata-se da classe de linguagens mais simples, sendo possível desenvolver algoritmos de reconhecimento ou de geração de pouca complexidade, grande eficiência e de fácil implementação.
Propriedades das linguagens regulares LR podem ser representadas por
formalismos pouca complexidade grande eficiência fácil implementação
Entretanto, por ser uma classe relativamente simples é restrita e limitada
Linguagem Regular ou tipo 3
Uma das principais características das linguagens regulares é o fato de serem representadas for formalismos de pouca complexidade, grande eficiência e fácil implementação. Entretanto, por serem de uma classe relativamente simples, é restrita e limitada.
De acordo com a Hierarquia de Chomsky
LR (tipo 3)
LEF (tipo 0)
LSC (tipo 1)
LLC(tipo 2)
Tradução dos formalismos das linguagens regulares
Sistema de estados finitos
É um modelo matemático de um sistema com entradas e saídas discretas. Pode assumir um número pré-definido de estados. Cada estado resume somente informações do estado passado para determinar as ações da próxima entrada.
Exemplo de sistema de estados finitos Um exemplo clássico e simples é o
elevador. Trata-se de um sistema que não memoriza as requisições anteriores. Cada “estado” sumariza as informações “andar corrente” e “direção de movimento”. As entradas para o sistema são requisições pendentes.
Ou exemplo, analisadores léxicos e alguns processadores de texto, memorizam apenas a estrutura do prefixo das palavras
Teoria dos AutômatosAutômatos Finitos
- Autômatos finitos (AF): modelo restrito para o computador são dispositivos de reconhecimento de linguagens tem capacidade finita fixa de informação sem memória auxiliar sem saída de dados
- Pode-se dizer que é uma máquina abstrata que reconhece linguagens. Supondo-se uma linguagem L e fornecendo ao AF uma seqüência de caracteres w, ele responderá se w L ou w L.
Teoria dos AutômatosAutômatos Finitos
Um autômato finito possui: Fita de entrada – armazena os símbolos da
cadeia de entrada; Controle finito - extrai símbolos da fita de
entrada através de um sensor de leitura; Função de transição – decide qual deverá
ser o próximo estado do autômato, com base no símbolo lido e no estado anterior;
Número finito de estados.
A Fita
É finita a esquerda e a direita, dividida em células onde cada uma armazena um símbolo.
Não é possível gravar sobre a fita e não existe memória auxiliar
Inicialmente a cadeia a ser processada ocupa toda fita
Unidade de controle Possui um número finito de
estados pré-definido. A unidade lê um símbolo da fita de cada vez e move a cabeça para a direita
Inicialmente a cabeça é posicionada mais a esquerda da fita.
Importante – O autômato Finito não possui memória de trabalho.
Autômatos finitos equivalentes
Dois autômatos finitos M1 e M2 são ditos equivalente se, e somente se: ACEITAM(M1) = ACEITAM(M2)
Linguagem regular ou do tipo 3
Uma linguagem aceita por um autômato finito determinístico é uma linguagem regular
Teoria dos AutômatosAutômatos Finitos
- Graficamente um AF pode ser representado por
a a b b
ControleFinito
fita com a cadeia w de entrada
Cabeçade leitura
Início do processo de reconhecimento pelo estado inicial qo
Teoria dos AutômatosAutômatos Finitos
O Autômato Finito consegue ler, através da cabeça de leitura, os símbolos da fita seqüencialmente sempre da esquerda para a direita.
O AF é uma máquina que sempre pára retornando uma resposta sim (cadeia reconhecida) ou não (cadeia não conhecida).
Podem ser classificados em:- Autômatos Finitos Determinísticos (AFD)- Autômatos Finitos Não-Determinísticos (AFND)
Teoria dos AutômatosAutômatos Finitos Determinísticos
Definição formal de um Autômato Finito Determinístico:
Um Autômato Finito Determinístico (AFD) ou simplesmente Autômato Finito (AF) M é uma 5-upla:
M = (, Q, , q0, F), onde
: alfabeto de símbolos de entrada;
Q: conjunto finito de estados do autômato;
: função programa ou função de transição (parcial) : Q Q
q0: estado inicial (q0Q)
F: conjunto de estados finais ou estados de aceitação (FQ)
Teoria dos AutômatosAutômatos Finitos Determinísticos
Representação Gráfica:
Teoria dos AutômatosAutômatos Finitos Determinísticos
Exemplo: Autômato que reconhece a linguagem de números binários com quantidade ímpar de 1s.
M = (∑, Q, , qo, F)
Q = { qo, q1 }, ∑ = { 0, 1 }, F = { q1 }
Forma Tabular : Forma Gráfica :
0 1
qo
q1
qo
q1
q1
qo
qo q1
01
1
0
Teoria dos AutômatosAutômatos Finitos Determinísticos
Um Autômato Finito nunca entra em “loop” infinito, pois como qualquer cadeia a ser processada pelo AF é finita e como um novo símbolo da entrada é lido a cada aplicação da função programa, o processo de reconhecimento de qualquer cadeia pára de duas maneiras:
Aceitando ou; rejeitando uma entrada .
Teoria dos AutômatosAutômatos Finitos Determinísticos
As condições de parada são as seguintes: Após processar o último símbolo da fita, o Autômato
Finito assume um estado final: o autômato pára e a entrada é aceita;
Após processar o último símbolo da fita, o AF assume um estado não final: o autômato pára e a entrada é rejeitada;
A função programa é indefinida para o argumento (estado corrente, símbolo lido): a máquina pára e a palavra de entrada é rejeitada.
Teoria dos AutômatosAutômatos Finitos Determinísticos
Definição: Autômatos Finitos equivalentes. Dois autômatos finitos M1 e M2 são ditos
equivalentes se, e somente se: L(M1) = L(M2);
Definição: Um linguagem aceita por um autômato finito determinístico é uma linguagem regular ou Tipo 3.
Teoria dos AutômatosAutômatos Finitos Determinísticos
Exemplo: Autômato que reconhece a linguagem de números binários com quantidade ímpar de 1s.
M = (∑, Q, , qo, F)
Q = { qo, q1 }, ∑ = { 0, 1 }, F = { q1 }
Forma Tabular : Forma Gráfica : 0 1
qo
q1
qo
q1
q1
qo
qo q1
01
1
0
Teoria dos AutômatosAutômatos Finitos Determinísticos
Definição: Processo de reconhecimento de uma dada cadeia w por um AF.
O autômato é inicializado com a cabeça no símbolo mais a esquerda e no estado inicial qo. Se um AF M=(∑, Q, , qo, F) está no estado p e a cabeça de leitura da fita olha o símbolo a ∑, então o AF vai para o estado (p, a) = q e move a cabeça um símbolo à direita.
Se w ∑* então M aceita w se M computa w e depois de ler o último símbolo de w entra em um estado final F.
Teoria dos AutômatosAutômatos Finitos Determinísticos
Seja a cadeia w = 01110. Deseja-se verificar se w é reconhecida pelo AFD do exemplo anterior.
Como ao final da leitura da cadeia w o estado que o AFD assumiu foi q1 F então a cadeia w é reconhecida pelo autômato, ou seja, w é aceita como uma cadeia da linguagem reconhecida pelo AFD.
0 1 1 1 0
ControleFinito
Cabeçade leitura
q1 F
0 1 1 1 0
ControleFinito
(q0, 0) = q0
Cabeçade leitura Início do
AFD em q0
0 1 1 1 0
ControleFinito
(q0, 1) = q1
Cabeçade leitura
q0
0 1 1 1 0
ControleFinito
(q1, 1) = q0
Cabeçade leitura
q1
0 1 1 1 0
ControleFinito
(q0, 1) = q1
Cabeçade leitura
q0
0 1 1 1 0
ControleFinito
(q1, 0) = q1
Cabeçade leitura
q1
Teoria dos AutômatosAutômatos Finitos Determinísticos
Exemplo 1: Construir um AFD que reconhece a linguagem a*.
M = (∑, Q, , qo, F)
Q = { qo }, ∑ = { a }, F = { q0 }
Forma Tabular : Forma Gráfica :
a
qo qo qo
a
Teoria dos AutômatosAutômatos Finitos Determinísticos
Exemplo 2: Construir um AFD que reconhece a linguagem aa* .
M = (∑, Q, , qo, F)
Q = { qo, q1 }, ∑ = { a }, F = { q1 }
Forma Tabular : Forma Gráfica : a
qo
q1
q1
q1
qo q1
a a
Teoria dos AutômatosAutômatos Finitos Determinísticos
Exemplo 3: Construir um AFD que reconhece a linguagem (abb*a)* .
M = (∑, Q, , qo, F)
Q = { qo, q1, q2 }, ∑ = { a, b }, F = { q0 }
Forma Tabular : Forma Gráfica :
Obs.: qrej é o estado que representa a rejeição de um símbolo de uma dada cadeia w, ou seja, w Linguagem reconhecida pelo AFD.
qo q1
a
b
q2
b
a
a b
qo
q1
q1
qrej
qrej
q2
q2 q0 q2
Exercícios Construa um autômato finito determinístico e uma
expressão regular para cada umas da linguagens a seguir:
A) A linguagem dos identificadores do pascal Ex. válidos: a, _, media, M23af, c311 Ex. inválidos: 2, 45media, 3csa
B) Os números inteiros Ex. válidos: 1, -1, +1, +45, 77, -44, 4564894, -459456 Ex. inválidos: +, -, 55+5, 8989-4, --65, ++5
C) Os números reais Ex. válidos: 1, -1, +1, +45.05, 77.5, -44.5554, 4564.894, -459456 Ex. inválidos: +, -, 55+5, 8..989-4, --65, ++5, .56, +.45, .564, -
+532
Teoria dos AutômatosExpressões Regulares
A expressão regular é a maneira mais compacta e mais simples de descrever conjuntos regulares, e é usada com essa finalidade em construção de compiladores, editores, sistemas operacionais, protocolos, etc.
É um formalismo denotacional, também considerado gerador.
Expressão Regular ER
Toda linguagem regular pode ser descrita por uma expressão regular simples, denominada Expressão regular.
Trata-se de um formalismo denotacional, também considerado gerador, pois pode-se inferir como construir (“gerar”) as palavras de uma linguagem.
Como saber se uma linguagem é regular Basta representá-la com pelo menos
um dos seguintes formalismos {autômato finito | Expressão Regular |
Gramática Regular} Para mostrar que uma linguagem não é
regular é preciso mostrar que ele não poder ser representada por nenhum dos formalismos. Pode-se usar o Lema do bombeamento.
Expressão Regular ER
A omissão de parênteses em uma ER sobre um alfabeto é indutivamente definida como se segue:
Uma linguagem gerada por uma ER r é representada por L(r) ou GERA(r).
Expressões Regulares
Definição: Uma Expressão Regular (ER) sobre um alfabeto é definida como segue:
é uma ER (linguagem vazia) é uma ER (linguagem contendo somente a
cadeia vazia ) para cada a , a é uma ER se e são ER´s, então | é uma ER. ( OU –
alternância) se e são ER´s, então é uma ER.
(concatenação) se é uma ER, então ()* é uma ER
(exponenciação)
Teoria dos AutômatosExpressões Regulares
*: | | | |..... +: | | |..... + = *
ordem de precedência(decrescente): exponenciação concatenação alternância
Teoria dos AutômatosExpressões Regulares
Expressão regular Linguagem representada
aa Somente a palavra aa
ba* Todas as palavras que começam com b, seguido por zero ou mais a´s
(a|b)* Todas as palavras sobre {a, b}
(a|b)* aa (a|b) * Todas as palavras que contém aa como subpalavra
a* ba* ba* Todas as palavras contendo exatamente 2 b´s
(a|b)* (aa| bb ) Todas as palavras que terminam com aa ou bb
(a| ) (b | ba)* Todas as palavras que não possuem 2 a´s consecutivos
Exercício
Desenvolva Autômatos Finitos Determinísticos, que reconheçam as seguintes linguagens:
A) sobre o alfabeto {a, b, c} {w | aa ou bb é subpalavra e cccc é
sufixo de w}
Exercícios
b) Sobre o alfabeto {a, b} b1) {W1W2W1 | W2 é qualquer e |W1| =
3} b2) {W | o décimo símbolo da direita
para a esquerda de w é a}
Autômato finito não determinístico
O não determinismo é uma importante generalização dos modelos de máquinas, sendo e fundamental importância no estudo da teoria da computação e na teoria das linguagens formais.
Autômato finito não determinístico – AFN ou AFND
Nem sempre a facilidade do não-determinísmo aumenta o poder de reconhecimento de linguagens de uma classe de autômatos
Importante
Qualquer autômato finito não-determinístico pode ser simulado por um autômato finito determinístico.
Assim, para cada AFN é possível construir um AFD equivalente que realiza o mesmo processamento.
A facilidade do não determinismo
A função programa, ao processar uma entrada composta pelo estado corrente e símbolo lido, tem como resultado um conjunto de novos estados.
O não-determinísmo. Ilustração: Filme “O Vidente”
Aceitação do AFN Um linguagem é aceita pelo
autômato finito não determinístico é denotada por ACEITAM(M) ou L(M), é o conjunto de todas as palavras pertencentes a * tais que existe pelo menos um caminho alternativo que aceita a palavra.
Autômato finito com movimentos vazios AFNε Movimentos vazios constituem uma
generalização dos modelos de máquinas não-determinísticas.
Um movimento vazio é uma transição sem transição.
Uma das vantagens dos momentos vazios é que facilita algumas demonstrações relacionadas com os autômatos.
A facilidade dos momentos vazios não aumentam o poder de reconhecimento
Equivalência entre ER e AFD
Gramática linear Seja G=(V, T, P, S) uma gramática e
sejam A e B elementos de V e w uma palavra de T*. Então G é uma: Gramática Linear à direita (GLD). Se todas
as regras de produção são da forma: A→wB ou A→w
Gramática Linear à esquerda (GLE). Se todas as regras de produção são da forma:
A→Bw ou A→w
Gramática linear Gramática Linear Unitária à direita
(GLUD). Se todas as regras de produção são da forma:
A→wB ou A→w, adicionalmente |w|<=1 Gramática Linear à esquerda (GLUE).
Se todas as regras de produção são da forma:
A→Bw ou A→w, adicionalmente |w|<=1
Equivalência das gramáticas lineares As diversas gramáticas lineares são
formalismos equivalentes: Seja L uma linguagem então:
L é gerada por uma GLD se, e somente se,
L é gerada por uma GLE se, e somente se,
L é gerada por uma GLUD se, e somente se,
L é gerada por uma GLUE.
Ex. de gramáticas lineares equivalentes para a linguagem a(ba)*
GLD para a linguagem a(ba)*
G={{S,A}, {a,b}, P, S} P={S→aA, A→baA|
GLE para a linguagem a(ba)*
G={{S}, {a,b}, P, S} P={S→Sba|a
GLUD para a linguagem a(ba)*
G={{S,A, B}, {a,b}, P, S} P={S→aA, A→bB|B→aA
GLUE para a linguagem a(ba)*
G={{S,A}, {a,b}, P, S} P={S→Aa|a, A→Sb}
Teorema
1 - Se L é uma Linguagem gerada por uma gramática regular, então L é uma linguagem regular
2 - Se L é uma linguagem regular, então existe uma gramática regular G que gera L.
Linguagens Livres de Contexto
Segundo a classificação realizada por Chomsky nem todas as linguagens livres de contexto são regulares. Isto ocorre porque elas possuem cadeias com construções contendo “aninhamento sintático”.
Linguagens Livres de Contexto
Possuem aninhamento Sintático. Exemplo: L = { w | w conjunto de
cadeias com número balanceado de parênteses escritos em ordem correta }
x = (( )( ))( ), y = ((( ))), z = ( )(( )( ))(( ))
Linguagens Livres de Contexto Compreende um universo mais amplo
de linguagens (comparativamente com as regulares) tratando, adequadamente, parênteses balanceados, construções bloco-estruturadas, dentre outras
Os conceitos da LLC são aplicados aos analisadores sintáticos, tradutores de linguagens e processadores de texto em geral
Gramática Livre de contexto
Gramática onde as regras de produção são definidas de forma mais livre que na Gramática Regular.
São entidades geradoras de Linguagens Livres de Contexto
Autômato com pilha
Autômato cuja estrutura básica é análoga à do Autômato Finito, adicionando uma memória auxiliar tipo pilha (a qual pode ser lida ou gravada)
O autômato com pilha pode ser Determinístico ou não-Determinístico
De acordo com a Hierarquia de Chomsky
LR (tipo 3)
LEF (tipo 0)
LSC (tipo 1)
LLC(tipo 2)
Exemplos de linguagens livres de contextoa) L = { wwr, onde w é uma seqüência de
símbolos do Vt, e wr é o inverso de w }, Ex.: Vt={ a, b}, x = abba, y = abbaaaabba, z = bbabbabb
b) L = { wcwr, onde w é uma seqüência de símbolos de Vt, e c Vt }, Ex.: Vt={ a, b, c}, x = abcba, y = abbaacaabba, z = bbabcbabb
c) L = { anbn, n >= 0 }, Ex.: x = aabb, y = aaaaabbbbb, z =
d) L = { w { a, b }*, com o mesmo no de a´s e b´s }, Ex.: x = abaabb, y = aabb, z = bbaaab
Problema
Pensando nas cadeias geradas pelas Linguagens Livres de contexto não regulares parece que qualquer dispositivo que as reconheça, necessita “lembrar” de características da cadeia analisada.
No exemplo do item b, supondo Vt = { a, b, c } e a cadeia de entrada
aabbbacabbbaadeve existir um esquema para “lembrar” a
primeira metade da cadeia de entrada (antes de c) para poder verificar a outra metade na ordem inversa.
Constatação: O Autômato Finito não possui este recurso !!! Análise:
Se a máquina fosse capaz de acumular os símbolos da cadeia de entrada, utilizando uma MEMÓRIA auxiliar, à medida que a cadeia é lida e pudesse retirar estes símbolos da MEMÓRIA quando necessário o processo de reconhecimento seria resolvido.
Solução: O dispositivo que soluciona parte deste
problema é uma PILHA, funcionando como MEMÓRIA, que permite o acesso de leitura (pop) e gravação (push).
Graficamente um Autômato de Pilha pode ser representado por:
fita com a cadeia w de entrada
Início do processo de reconhecimento pelo estado inicial qo
a a b b b a c b
ControleFinito
qi
Cabeçade leitura
b b a a
a
a
b
b
Pilha
Cabeçade leitura e gravação
a
Autômato com pilha
O Autômato de Pilha (AP) consegue ler, através da cabeça de leitura, os símbolos da fita seqüencialmente sempre da esquerda para a direita, armazenar (push) e retirar (pop) símbolos da Pilha.
Pilha do Autômato
O Autômato de Pilha (AP) é uma 7-upla: O Autômato de Pilha (AP) é uma sétupla:
M = (E, Q, P, F, q0, z0, V) Onde:
E é o alfabeto dos símbolos de entrada que podem formar a cadeia w є V* da fita
Q é um conjunto finito (não vazio) de estados. P função programa ou função transição q0 é o estado no qual o autômato é iniciado, q0 є Q. F é o conjunto de estados finais (reconhecedores). z0 é o símbolo inicial da pilha. V é o alfabeto de símbolos finito da pilha.
{anbn | n>= 0}
{WWr | w pertence a {a, b}*}
{anbman+m | n >= 0, m>= 0}