A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1/18/2014Comp - Prof. Paulemir Campos1 UPE – Caruaru – Sistemas de Informação Disciplina: Compiladores Prof.: Paulemir G. Campos Análise Léxica (Parte.

Apresentações semelhantes


Apresentação em tema: "1/18/2014Comp - Prof. Paulemir Campos1 UPE – Caruaru – Sistemas de Informação Disciplina: Compiladores Prof.: Paulemir G. Campos Análise Léxica (Parte."— Transcrição da apresentação:

1 1/18/2014Comp - Prof. Paulemir Campos1 UPE – Caruaru – Sistemas de Informação Disciplina: Compiladores Prof.: Paulemir G. Campos Análise Léxica (Parte 2)

2 1/18/2014Comp - Prof. Paulemir Campos2 Roteiro da Aula Expressões Regulares Autômato Finito Referências

3 1/18/2014Comp - Prof. Paulemir Campos3 Expressões Regulares

4 1/18/2014Comp - Prof. Paulemir Campos4 Introdução Uma linguagem é um conjunto de strings. Uma string é uma seqüência finita de símbolos ou caracteres. Os símbolos ou caracteres fazem parte do alfabeto finito de uma linguagem.

5 1/18/2014Comp - Prof. Paulemir Campos5 Introdução No caso de linguagens de programação, o alfabeto utilizado é o conjunto de caracteres ASCII. Para facilitar a especificação de uma linguagem de programação, utiliza-se a notação de expressões regulares.

6 1/18/2014Comp - Prof. Paulemir Campos6 Notação de Expressões Regulares Caracter: Para cada caracter a no alfabeto da linguagem, a expressão regular a indica que a linguagem contém apenas a string a;

7 1/18/2014Comp - Prof. Paulemir Campos7 Notação de Expressões Regulares Alternação: Dada duas expressões regulares M e N, o operador de alternação | permite a construção de uma nova expressão regular M | N. Ex.: A linguagem de a | b contém as duas string a e b.

8 1/18/2014Comp - Prof. Paulemir Campos8 Notação de Expressões Regulares Concatenação: Dada duas expressões regulares M e N, o operador de concatenação. permite a construção de uma nova expressão regular M. N. Ex.: A expressão regular (a | b). a contém as duas string aa e ba.

9 1/18/2014Comp - Prof. Paulemir Campos9 Notação de Expressões Regulares Epsilon: A expressão regular representa uma string vazia. Ex.: A expressão regular (a. b) | representa a linguagem {, ab }

10 1/18/2014Comp - Prof. Paulemir Campos10 Notação de Expressões Regulares Repetição: Dada uma expressão regular M, o fechamento de Kleene é representado por M*. Uma string está em M* se é a concatenação de nenhuma ou mais strings de M. Ex.: ((a | b). a)* representa o conjunto infinito {, aa, ba, aaaa, baba, aaaaaa, bababa,...}

11 1/18/2014Comp - Prof. Paulemir Campos11 Notação de Expressões Regulares Com esse conjunto básico de operadores (caracter, alternação, concatenação, epsilon e repetição), pode-se especificar o conjunto de caracteres ASCII correspondente aos tokens (símbolos) léxicos de uma linguagem de programação.

12 1/18/2014Comp - Prof. Paulemir Campos12 Notação de Expressões Regulares Na escrita de expressões regulares, algumas vezes pode-se omitir os símbolos de concatenação ou. Ex.: ab | c indica (a. b) | c (a |) indica (a | )

13 1/18/2014Comp - Prof. Paulemir Campos13 Notação de Expressões Regulares Algumas outras abreviações: [abcd] indica (a | b | c | d); [b-g] indica [bcdefg]; [b-gM-Qkr] indica [bcdefgMNOPQkr]; M? indica (M | ); M+ indica (M.M*).

14 1/18/2014Comp - Prof. Paulemir Campos14 Notação de Expressões Regulares Resumo: a indica um caracter a indica string vazia espaço em branco também pode representar a string vazia M | N indica alternação, escolha de M ou N M. N indica concatenação, M seguido de N

15 1/18/2014Comp - Prof. Paulemir Campos15 Notação de Expressões Regulares Resumo (Cont.): MN também indica concatenação M* indica repetição (zero ou mais vezes) M+ indica repetição (uma ou mais vezes) M? indica zero ou uma ocorrência de M [a-zA-Z] indica alternação de conjunto de caracteres

16 1/18/2014Comp - Prof. Paulemir Campos16 Notação de Expressões Regulares Resumo (Cont.):. indica qualquer caracter (q. c.) único, exceto símbolo de nova linha a.+* uma string entre aspas duplas indica a própria string

17 1/18/2014Comp - Prof. Paulemir Campos17 Notação de Expressões Regulares Exemplos: if retorne(palavra_res, if) [a-z][a-z0-9]* retorne(identificador, id) [0-9]+ retorne(inteiro, num_int) ([0-9]+.[0-9]*)|([0-9]*.[0-9]+) retorne (real, num_real)

18 1/18/2014Comp - Prof. Paulemir Campos18 Notação de Expressões Regulares Exemplos (Cont.): (--[a-z]*\n)|( | \n | \t )+ * não faça nada *. ou q.c. mostre(mensagem_erro)

19 1/18/2014Comp - Prof. Paulemir Campos19 Considerações Deve-se definir o critério para reconhecimento de caracteres do analisador léxico: Maior Símbolo Possível: Lê a maior cadeia de caracteres possível que pode bater com a expressão regular de um símbolo léxico; Regra de Prioridade: Lê caracteres até obter-se uma expressão regular de um símbolo léxico.

20 1/18/2014Comp - Prof. Paulemir Campos20 Considerações Exemplo: O símbolo if8 indica um identificador ou uma palavra reservada? Resposta: Depende do critério do analisador léxico. Pelo Maior Símbolo Possível, if8 indica um identificador, mas, pela Regra de Prioridade if indica uma palavra reservada.

21 1/18/2014Comp - Prof. Paulemir Campos21 Autômato Finito

22 1/18/2014Comp - Prof. Paulemir Campos22 Introdução Apesar de Expressões Regulares serem convenientes para especificar tokens léxicos, necessita-se de um formalismo que possa ser implementado como um programa de computador; Um Autômato Finito pode ser utilizado para esta finalidade.

23 1/18/2014Comp - Prof. Paulemir Campos23 Definição Um Autômato Finito tem: Um conjunto finito de estado; Arcos ou arestas fazem a ligação de um estado a outro; Cada arco é rotulado com um símbolo ou caracter; Há um estado inicial e determinados estados são rotulados de estados finais.

24 1/18/2014Comp - Prof. Paulemir Campos24 Exemplos de Autômatos Finitos if IF 12 2 a-z ID a-z, Num_Int Num_Real

25 1/18/2014Comp - Prof. Paulemir Campos25 Exemplos de Autômatos Finitos 12 2 q.c. – (a-z, 0-9,., -, ) Erros 13 - Espaço_Branco 2 - a-z 5, \n, \t 4 \n, \n, \t Comentário

26 1/18/2014Comp - Prof. Paulemir Campos26 Autômato Finito Determinístico Num Autômato Finito Determinístico (DFA – Deterministic Finite Automaton) nenhum dois arcos que saem de um mesmo estado são rotulados com um mesmo símbolo ou caracter.

27 1/18/2014Comp - Prof. Paulemir Campos27 Autômato Finito Determinístico Um DFA pode ser utilizado para aceitar ou rejeitar strings. A partir do estado inicial, para cada caracter da string de entrada igual ao rótulo do arco de saída, avança-se pro próximo estado;

28 1/18/2014Comp - Prof. Paulemir Campos28 Autômato Finito Determinístico Caso atinja-se o estado final de um símbolo léxico, aceita-se a string; Caso contrário, ou em algum ponto houver diferença entre caracter de entrada e rótulo do arco, rejeita-se a string.

29 1/18/2014Comp - Prof. Paulemir Campos29 Referências Appel, A. W. Modern Compiler Implementation in C. Cambridge University Press, (Capítulo 2, seções 2.2 e 2.3).


Carregar ppt "1/18/2014Comp - Prof. Paulemir Campos1 UPE – Caruaru – Sistemas de Informação Disciplina: Compiladores Prof.: Paulemir G. Campos Análise Léxica (Parte."

Apresentações semelhantes


Anúncios Google