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

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

II – Análise léxica Papel do analisador léxico. Diagnóstico e recuperação de erros léxicos Extensão de expressões regulares e definições regulares Reconhecimento.

Apresentações semelhantes


Apresentação em tema: "II – Análise léxica Papel do analisador léxico. Diagnóstico e recuperação de erros léxicos Extensão de expressões regulares e definições regulares Reconhecimento."— Transcrição da apresentação:

1 II – Análise léxica Papel do analisador léxico. Diagnóstico e recuperação de erros léxicos Extensão de expressões regulares e definições regulares Reconhecimento de tokens Bibliografia aconselhada: –Aho, Sethi e Ullman – secções 3.1 e 3.3 –Appel – secções 2.1, 2.2 e 2.3 LFA 1999/ Jorge Morais

2 Papel do analisador léxico LFA 1999/ Jorge Morais

3 Tokens, padrões e lexemas Token: representa um conjunto de sequências de caracteres com significado comum (número, identificador, etc...) Padrão: conjunto de sequências que resultam num mesmo token Lexema: sequência de caracteres que obedece a um padrão dum token LFA 1999/ Jorge Morais

4 Exemplo O token identificador tem como padrão uma sequência que começa numa letra seguida de letras e números. Alguns lexemas possíveis: –var, x1, LFA9900. Palavras reservadas –if, else, while, switch, int, long, etc... LFA 1999/ Jorge Morais

5 Atributos dos tokens Alguns tokens, como as palavras chave, só têm um lexema possível Quando existe mais do que um lexema possível é preciso guardar alguma informação suplementar: –um apontador para a tabela de símbolos, no caso dum identificador –o valor numérico, no caso dum número LFA 1999/ Jorge Morais

6 Erros léxicos Um erro léxico ocorre quando o analisador léxico não pode prosseguir porque nenhum dos padrões foi encontrado Muitas vezes é impossível na fase de análise léxica identificar alguns erros, porque o padrão encontrado e o pretendido são diferentes: a2 (identificador) / 2a (número seguido de identificador) LFA 1999/ Jorge Morais

7 Recuperação de erros léxicos Modo de pânico: apagar caracteres da entrada até conseguir um token válido Apagar um carácter estranho Inserir um carácter em falta Substituir um carácter incorrecto por um correcto Transposição de dois caracteres adjacentes LFA 1999/ Jorge Morais

8 Extensão de expressões regulares Vamos estender as definições anteriores: –a | b a + b –a + aa * –[abc] a + b + c a | b | c –[a-z] a + b z a | b |... | z –a? a + a | LFA 1999/ Jorge Morais

9 Definições regulares Por conveniência podemos definir nomes para algumas expressões regulares. Por exemplo: [0-9] representa um dígito. Uma definição regular tem a forma def er onde def é a definição e er a expressão regular, podendo esta usar símbolos do alfabeto ou definições anteriores LFA 1999/ Jorge Morais

10 Exemplo Definição dum identificador –letra [A-Za-z] –dígito [0-9] –identificador letra (letra | digito) * Definição dum número –dígito [0-9] –dígitos dígito + –parte_fraccionária (. dígitos)? –expoente (E [+-]? dígitos)? –num dígitos parte_fraccionária expoente LFA 1999/ Jorge Morais

11 Reconhecimento de tokens Espaços em branco – caracteres que não são considerados para a formação de tokens O carácter ' ' é desprezado quando se tenta determinar um token, mas é tido em conta quando se trata duma string Caracteres como os de tabulação e nova linha podem ser considerados espaços em branco LFA 1999/ Jorge Morais

12 Tokens e autómatos finitos Os autómatos finitos, como reconhecem linguagens regulares, são uma boa forma de reconhecer tokens Existem algoritmos que permitem transformar uma expressão regular num autómato finito determinístico LFA 1999/ Jorge Morais

13 Exemplo dum analisador léxico Vamos considerar um pequeno analisador léxico com: –espaços em branco: ' ', tabulação e nova linha –operadores relacionais:, >=, ==, != –identificadores: letra (letra | dígito) * –números: dígito + (. dígito + )? (E [+-]? dígito + )? LFA 1999/ Jorge Morais

14 Operadores relacionais LFA 1999/ Jorge Morais

15 Identificadores LFA 1999/ Jorge Morais

16 Números LFA 1999/ Jorge Morais

17 Implementação em C Código fonte: –ex1.c Comando: –ex1 – lê a partir do standard input –ex1 < fich LFA 1999/ Jorge Morais


Carregar ppt "II – Análise léxica Papel do analisador léxico. Diagnóstico e recuperação de erros léxicos Extensão de expressões regulares e definições regulares Reconhecimento."

Apresentações semelhantes


Anúncios Google