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

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

Análise Léxica. Correção exercícios aula passada.

Apresentações semelhantes


Apresentação em tema: "Análise Léxica. Correção exercícios aula passada."— Transcrição da apresentação:

1 Análise Léxica

2 Correção exercícios aula passada

3 Atualizar material aula passada

4 Introdução  É também conhecida como scanner ou leitura e é a primeira fase de um processo de compilação.  Sua função é fazer a leitura do programa fonte caractere a caractere e traduzi-lo para uma sequencia de conhecida como símbolos léxicos ou sequencia de tokens.  Os caracteres são agrupados em lexemas e produzem a sequencia de tokens  A sequencia de tokens é enviada para a próxima fase da compilação a análise sintática.  O analisador léxico deve interagir com a tabela de símbolos e inserir informações dos tokens, no caso os identificadores.

5 Introdução  Na implementação a análise léxica normalmente é uma sub-rotina da analise sintática.  A implementação da análise léxica pode ser dividida em duas etapas:  Escandimento : que varre o programa fonte removendo os comentários e compactando os espaços em branco.  Analise léxica : produz a sequencia de tokens.

6 Introdução  Termos relacionados a análise léxica:  Token : é uma par constituído de um nome e um valor. O nome de um token é um símbolo que representa uma unidade léxica. Ex: Palavras reservadas, identificadores, etc.  Padrão : é a forma que os lexemas de um token podem assumir. Ex : Palavras reservadas é a sequência de caracteres da palavra reservada, no caso de identificadores são os caracteres que formam nomes das variáveis, funções.  Lexema : é uma sequencia de caracteres reconhecidos por algum padrão de um token.

7 Tabela exemplo de termos TokenPadrãoLexemaDescrição const Sequência das palavras c, o, n, s, t. constPalavra reservada while Sequência das palavras w, h, i, l, e while, While, WHILEPalavra reservada if Sequência das palavras i, f If, IF, iF, IfPalavra reservada comparadores, =, ==, !===, != numero Dígitos numéricos0.6, 18, 0.009Constante numérica literal Caracteres entre “”“Olá Mundo”Constante literal id Nomes de variáveis, funções, parâmetros de funções. nomeCliente, descricaoProduto, calcularPreco() Nome de variável, nome de função atribuicao ==Comando de atribuição delimitador {, }, [, ] Delimitadores de início e fim

8 Identificação de termos printf (“Total = %d\n”, score ) printf e score são lexemas que casão com o padrão id e id é um token. “Total = %d\n” é um lexema que casa com o padrão literal, e literal é um token. const PI = const é um token que casa com o padrão const e também é um lexema. PI é um lexema que casa com o padrão id e id é um token. = é um lexema que casa com o padrão do token atribuicao é um lexema que casa com o padrão do token numero.

9 Tokens  Também conhecidos como símbolos léxicos, s ão unidade básicas do texto de um programa.  Cada token é representado por ter unidade de informações básicas.  Classe do token : é o tipo de token reconhecido. Ex: identificadores, constantes numéricas, cadeias de caracteres, palavras reservadas, operadores e separadores.  Valor do token : depende da classe do token, Ex: caso seja uma constante inteira representa o valor inteiro, no caso de identificadores um apontador para a tabela de símbolos.  Posição do token : Indica a linha e a coluna no texto onde ocorreu o token. É utilizado principalmente para indicar o local do erro.

10 Tokens  Os tokens são divididos em dois grupos.  Tokens simples : São tokens que não tem valor associado pois a classe do token já a descreve. Ex: palavras reservadas, operadores, delimitadores.  Tokens com argumento : são tokens que tem valor associado e corresponde a elementos da linguagem definidos pelo programador. Ex: identificadores, constantes numéricas.

11 Tokens  Estrutura de um token.  Nome do token : corresponde a classe do token.  Valor atributo : corresponde a um valor qualquer a ser atribuído ao valor do token,

12 Exemplo 01 – sequência de tokens  Código while indice < 10 do indice:= total + índice;  Sequência de tokens

13 Exemplo 02 – sequência de tokens  Código position = initial + rate * 60  Sequência de tokens

14 Exemplo 03 – sequência de tokens  Código a[index] =  Sequência de tokens

15 Exemplo 04 – decomposição  Código total = entrada * saida() + 2  Sequência de tokens

16 Exemplo 04 – decomposição  Para o token temos:  : apontador 15 da tabela de símbolos e token id.  operador de atribuição, sem necessidade de um valor para o atributo.  : apontador 20 da tabela de símbolos e token id.  : operador de multiplicação, sem necessidade de um valor para o atributo.  : apontador 20 da tabela de símbolos e token id.  : operador de soma, sem necessidade de um valor para o atributo.  : token numero, com valor para o atributo 2 indicado o valor do numero (constante numérica).

17 Tabela de símbolos  É uma estrutura de dados que gerada pelo compilador com o objetivo de armazenar informação sobre identificadores e outros nomes usado no programa fonte.  Exemplo: Variáveis; parâmetros de funções; procedimentos.  Informações: tipo de dados(inteiro, string); escopo de visibilidade; limite de parâmetros; tamanho da variável.  A tabela de símbolos normalmente é uma estrutura de tabela hash, árvores binárias ou listas lineares.  Nessa tabela pode ter informações sobre a posição(coluna, linha) do identificado no programa fonte.  As informações são usadas em todo o processo de compilação.

18 Erros léxicos  A análise léxica é muito prematura para identificar erros de compilação, veja o exemplo abaixo. fi (a == “123”)...  O analisador léxico não conseguira identificar o erro da instrução listada acima. Isso só pode ser feita na analise sintática.  Uma estratégia utilizada para a recuperação de erros léxicos e a modalidade pânico, que remove caracteres de entrada até encontrar um token bem formado (AHO, 2008).  Remover caracteres estranhos.  Inserir caracteres ausentes.  Substituir caracteres corretos por incorretos.

19 Exercícios e Prática


Carregar ppt "Análise Léxica. Correção exercícios aula passada."

Apresentações semelhantes


Anúncios Google