Escolar Documentos
Profissional Documentos
Cultura Documentos
Geradores X Reconhecedores
Gramticas Tipo Gramticas S. Gramticas L.C. Gramticas Regulares Mquinas de Turing Aut. Limitados Lineares Autmatos de Pilha Autmatos Finitos
Autmatos Finitos
So reconhecedores de linguagens regulares Tipos de Autmatos Finitos:
Autmato Finito Determinstico (AFD) Autmato Finito No Determinstico(AFND)
K um conjunto finito no vazio de Estados; um Alfabeto, finito, de entrada; Funo de Mapeamento (ou de transio) definida em: K x K qo K, o Estado Inicial F K, o conjunto de Estados Finais
Exemplo: Seja M = (K, , , qo, F), onde: K = {q0, q1} = { a, b} = {(q0, a)=q0, (q0, b)=q1, (q1, b)= q1, (q1, a)= - } qo = q0 F = {q1}
Representaes de AF
Alem da representao formal, um AF pode tambm ser representado por: o Diagrama de Transio o Tabela de Transies
(qo, x) = p | p F
Linguagem Aceita por M:
T(M) = { x | (qo, x) = p p F }
IV.1.2 - A.F.N.D.
Definio: M = (K, , , qo, F), onde: K, , qo, F mesma definio dos AFD K x = (K) , onde (K) K
Vantagem
AFD Implementao Trivial AFND Representao mais natural de algumas LR
Desvantagem
Representao menos natural de algumas L.R. Implementao complexa
Exemplos: Construa um AFND M | a) T(M) = { ( a, b )*abb } b) T(M) = { ( 0, 1 )* ( 00 | 11) ( 0, 1 )*} c) Construa AFD AFND dos itens a) e b)
3
b) Para mostrar que T(M)=L(G), deve-se mostrar: 1 L(G) T(M) 2 T(M) L(G)
Exemplos: 1) S a S | b B
BbB|c
Teorema 3.3: Se M = (K, , , qo, F) um A. F., ento uma G.R. G = (Vn, Vt, P, S) | L(G) = T(M) Prova: a Mostrar que G existe b Mostrar que L(G) = T(M) a) Seja M = (K, , , qo, F) um A.F.D.. Construa uma G.R. G=(Vn, VT, P, S), como 1 Vn = K 2 Vt = 3 S = qo 4 Defina P, como segue: segue:
a) Se (B, a) = C ento adicione B aC em P b) Se (B, a) = C C F, adicione B a em P c) Se qo F, ento T(M). Neste caso, L(G) = T(M) {}, portanto, construa uma GR G1 | L(G1) = L(G) U {} Seno, T(M) e L(G) = T(M)
b) Para mostrar que L(G) = T(M), devemos mostrar que: 1 T(M) L(G) 2 L(G) T(M)
Exemplos :
* S A B C a A S C B b B C S A S B A a S b B B b A -
1 Crie, um estado para representar as indefinies; 2 Divida K em duas CE : F e K-F; 3 Aplique a lei de formao de CE, at que nenhuma nova CE seja formada
Algoritmo para construo do A.F. Mnimo
Entrada: Um A.F.D. M = (K, , , qo, F); Sada: Um AFD Mnimo M = (K, , , qo, F) | M M; Mtodo: 1 Elimine os estados Inacessveis; 2 Elimine os estados Mortos; 3 Construa todas as CE de M. 4 Construa M, como segue: a) K = { CE } b) qo = CE que contiver qo; c) F = { [q] | p F em [q] } d) = ([p], a) = [q] (p1, a) = q1 est em M p1 [p] q1 [q]
Exerccios:
1) * S A B C *F a A S,F A S,F b B,F C c S,F A B,S,F A,C 2) S A B C D *E 4) a q1 q3 q3 q4 b q2 q4 q3 q4 * S *A *B *C *D a A,C A A C C b A,D A A D c B,C B C C 0 A,D A,B B A,B B,D E 1 E C,E C E
3) q0 q1 q2 *q3 *q4
10
11
Constantes
Identificadores
Especficos
- Token especfico para cada smbolo - no possuem valor semntico Smbolos especiais
IV.4.1 - Funes
Ler o programa fonte Agrupar caracteres em itens lxicos (tokens)
Identificadores Palavras Reservadas Constantes (numricas e literais) Smbolos especiais (pontuao, operadores, etc)
Ignorar brancos, comentrios e car. de controle Detectar e diagnosticar erros lxicos Exemplo:
Smbolos invlidos Tam. invlido de constantes, literais e identificadores
Programa Fonte program exemplo; var A, B : integer; begin (* Inicio do programa *) read ( A ); B := A + 2.5; ... end.
14
15
E.R. A.F.
Palavras reservadas
casos especiais de identificadores usar pesquisa binria na implementao (quando implementado manualmente)
programa, var, caracter, cadeia, procedimento, inicio, fim, inteiro, booleano, funo, se, entao, senao, leia, escreva, ou, e, no, falso, verdadeiro, de, faa, real, vetor, enquanto
OBS. Este conjunto poder ser alterado quando da definio sinttica da linguagem
16
Constantes numricas
Inteiras e reais (com ou sem exponencial) Usar E ou e para denotar exponencial fornecer tokens distintos (para inteiros e reais) Nmeros reais devem poder comear ou terminar com . E.R. A.F.
Constantes literais
Usar (caracter aspa simples) como delimitador tamanho mximo = 256 representar o caracter (aspa) dentro de um literal por (duas aspas consecutivas) permitir continuao de um literal em outra linha literais no fechados = erro lxico
E.R. A.F.
17
Comentrios
notao: comentrio de linha: inicia com // e vale at o final da linha comentrio de bloco qualquer sequncia de caracteres entre os delimitadores /* e */ no analisar sequncias de caracteres internas sem limite de tamanho comentrio no fechado = erro lxico
E.R. A.F.
Smbolos especiais
token especfico para cada smbolo Smbolos simples: ; , . > < = ( ) [ ] + - * / : Smbolos duplos: := .. <> <= >= ** (lista a ser completada especificao sinttica) quando da
18
Forma de reconhecimento
Leitura complementar
Captulo sobre anlise lxica de, pelo menos, um dos livros indicados na bibliografia da disciplina.
19
Linguagem de especificao: Definies %% Regras de traduo %% Procedimento auxiliares Exemplo de uma especificao:
letra A | B | C | ... | Z ou [A-Z] digito %% = := ( return (1) return (2) return (3) ::: letra {letra | digito} {Se epal-reservada (id, token) ento return (token) senao insere-ts(id); return(20)}); dgito {digito} {insere-tc (num); return (21)} %% epal-reservada (...) insere-ts (...) insere-tc (...) 0 | 1 | 2 | ... | 9 ou [0-9]
GALS
20