Você está na página 1de 20

Captulo IV - Anlise Lxica

IV.1 Fundamentos Tericos Autmatos Finitos e Conjuntos Regulares


(cap. III da apostila de Linguagens Formais e Compiladores)

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)

IV.1.1 Autmatos Finitos Determinsticos (AFD)


Definio formal : M = (K, , , qo, F), onde:

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

Sentenas Aceitas (reconhecidas) por M:

(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

IV.1.3 Transformao de AFND para AFD


Teorema 3.1: Se L um conjunto aceito por um A.F.N.D., ento um A.F.D. que aceita L Prova: Seja M = (K, , , qo, F) um A.F.N.D.. Construa um A.F.D. M = (K, , , qo, F) como segue: 1 K = {(k)} 2 qo = [qo] 3 F = {(K) | (K) F } 4 Para cada (K) K faa ((K),a) = (K), onde (K) = {p | para algum q (K), (q, a) = p};
Exemplo: Seja M um A.F.N.D. definido por: qo q1 q2 *q3 a qo,q1 ------b qo q2 q3 ---

IV.1.4 - Relao entre GR e AF


Teorema 3.2: Se G = (Vn, VT, P, S) uma G.R., ento um A.F. M = (K, , , qo, F) | T(M) = L(G). Prova: a Mostrar que M existe b Mostrar que T(M) = L(G) a) Defina M, como segue: 1 K = Vn {A}, onde A um smbolo novo 2 = VT 3 qo = S 4 F = {A, S} se S P {A} se S P 5 Construa de acordo com as regras a, b e c. a) Se B a P (B, a) = A b) Se B a C P (B, a) = C c) Para todo a VT, (A, a) = - (indefinido)

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

2) S b A | a B | b | AbA|aB|b BbB|aC CbC|aA|a

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 -

IV.1.5 - Minimizao de Autmatos Finitos


Definio: Um AFD M = (K, , , qo, F) mnimo se: 1 No possui estados inacessveis; 2 No possui estados mortos; 3 No possui estados equivalentes. Alg. para Construo das Classes de Equivalncia

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]

Exemplo: Minimize o seguinte A.F.D. * A B C * D E F *G H a G F C A E B G H b B E G H A C F D

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

IV.1.6 Conjuntos e Expresses Regulares


Conjuntos Regulares (C.R.)
1 (* definio matemtica (primitiva) *) Seja um alfabeto qualquer. Definimos um C.R. sobre , como segue: a um C.R. sobre ; b {} um C.R. sobre ; c {a}, para todo a , um C.R. sobre ; d Se P e Q so C.R. sobre , ento: 1PQ (unio), 2 P.Q (ou PQ) (concatenao), * 3P (fechamento). Tambm so C.R. sobre ; e Nada mais C.R. 2 Linguagens geradas por Gramticas Regulares. 3 Linguagens reconhecidas por Autmatos Finitos. 4 Linguagens denotados por Expresses Regulares.

Expresses Regulares (E.R.)


Definio:
1 uma E.R. e denota o C.R. 2 uma E.R. e denota o C.R. {} 3 a , uma E.R. e denota o C.R. { a } 4 Se p e q so E.R. denotando P e Q, ento: a (p | q) uma E.R. denotando P Q b (p.q) ou (pq) uma E.R. denotando PQ c (p)* uma E.R. denotando P* 5 Nada mais E.R.. Observaes: 1 ordem de precedncia: 1) * 2) . 3) | 2 abreviaturas usuais: p+ = pp* p? = p | pq = p(qp)* Relao entre E.R. e C.R. 1 Para todo C.R. uma E.R. que o denota 2 Para toda E.R. possvel construir seu C.R. 3 E1 E2 elas denotam o mesmo C.R..

10

IV.1.1.7 - Implementao de Autmatos Finitos


Formas bsicas para implementao de A.F.: - Implementao Especfica - Implementao Geral (ou genrica);

IV.1.8 Propriedades e Prob. de Deciso de CR


Propriedades Bsicas de C.R.
1 Unio 2 Concatenao 3 Complemento: Se L1 * CR * - L1 tambm CR 4 Interseco: Se L1 e L2 so CR L1 L2 tambm CR Problemas de Deciso sobre C.R. 1 Membership : x T(M)? 2 Emptiness : T(M) = ? 3 Finiteness : T(M) finita? 4 Containment : T(M1) T(M2)? 5 Equivalencia : T(M1) = T(M2)? 6 Interseco Vazia : T(M1) T(M2) = ?

IV.1.9 Aplicaes de A.F. e E.R.


1 Compiladores Anlise Lxica 2 Editores de texto busca/substituio 3 Reconhecimento de padres 4 Outras: S.O, Redes, Hipertexto, Robtica, Criptografia, ...

11

IV.2 Aspectos Lxicos Convencionais


Classes de smbolos Genricos
- token genrico - necessitam de uma informao adicional - a representao ou o valor explcito do smbolo reconhecido (usado para fins semnticos e de GC) - lei de formao bem definida - Podem ter limitaes de tamanho e/ou valor

Constantes

numricas (inteira, real ,...) literais (sequncias de caracteres) palavras reservadas

Identificadores

Especficos
- Token especfico para cada smbolo - no possuem valor semntico Smbolos especiais

simples, duplos, triplos , ... pontuao, operadores, separadores ...

Sem valor sinttico


No constituem token Devem ser reconhecidos, porm ignorados Comentrios Espao em branco Caracteres de controle
12

IV.3 Especificao dos aspectos Lxicos


Informal descrio textual Formal Usando GR, A.F. e/ou E.R

Escolha do Mecanismo de Especificao

Uso de geradores automticos


O gerador usado determina o mecanismo de especificao (geralmente E.R. ou variaes) Exemplos de Geradores: LEX, GALS, Micro-LEX, GALEX

Programao Manual do A.L.


Qualquer mecanismo Usado mais como documentao Normalmente usa-se: E.R. para notao A.F. para reconhecimento informal (textual) para excees

IV.4 Analisador Lxico


13

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.

Tokens Reconhecidos program 1 - PR exemplo 2 - ID ; 3 - SE var 4 - PR A 2 - ID , 5 - SE ... ... end 37 - PR . 38 - SE

14

IV.4.2 - Estratgias de Implementao Procedimento Independente


Analisa o programa fonte inteiro Gera arquivo (lista) de TOKENS Constitui um PASSO do proc. de Compilao

Funo do Analisador Sinttico


A cada ativao, reconhece um smbolo e retorna o token correspondente (juntamente com sua representao literal e sua localizao dentro do programa fonte)

15

IV.4.3 Especificao Lxica da LSI03-2 Identificadores


caracteres vlidos : letras, digitos - e _ regras de formao:
comea com letra ou com _ Se comear com _ este deve ser seguido por uma letra no pode terminar com _ e nem com - no possui dois _ consecutivos no possui dois - consecutivos - e _ no podem aparecer em seqncia (em nenhuma ordem). No existe limite de tamanho

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

IV.4.4 Implementao do Anal. Lxico


Estrutura Livre escolha
Procedimento independente Funo do Analisador Sinttico

Forma de reconhecimento

baseada em E.R. e A.F. Uso de um Gerador Automtico (GALS)

Linguagem para implementao

livre escolha (o GALS gera Delphi, Java, C+ +)

Equipes : 2 ou 3 alunos Prazo de entrega


Junto com o analisador sinttico

Leitura complementar
Captulo sobre anlise lxica de, pelo menos, um dos livros indicados na bibliografia da disciplina.

19

LEX Gerador de Analisadores Lxicos


(Lesk & Schmith, 1975)

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

Você também pode gostar