c ompiladores a nÁlise l Éxica antonio felicio netto 2015-2
TRANSCRIPT
![Page 1: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/1.jpg)
COMPILADORES ANÁLISE LÉXICA
Antonio Felicio Netto2015-2
![Page 2: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/2.jpg)
COMPILADORES - FASES
Analisador léxico
Analisador sintático
Analisador semânticoGerador de
código intermediário
Otimizador de código
Gerador de código
código fonte
código alvo
Tratador de erros
Gerador tabela de símbolos
![Page 3: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/3.jpg)
INTRODUÇÃO O analisador léxico (scanner) é a parte do compilador
responsável por ler caracteres do programa fonte e transformá-los em uma representação conveniente para o analisador sintático.
O analisador léxico lê o programa fonte caractere a caractere, agrupando os caracteres lidos para formar os símbolos básicos (tokens) da linguagem Identificadores, palavras-chaves, operadores, parêntesis e
sinais de pontuação; Sempre levando em consideração os terminadores definidos; Usa-se uma tabela de símbolos pré-definida para o
funcionamento da linguagem;
![Page 4: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/4.jpg)
INTRODUÇÃO O Analisador léxico é a primeira fase da execução do
compilador, tendo uma iteração contínua com o Analisador Sintático;
Enquanto o Léxico identifica os tokens, o Sintático trata de avaliar se os tokens estão em um sequenciamento legível, isso é, possibilitam a execução de uma operação;
![Page 5: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/5.jpg)
CENÁRIO
Analisador léxico
Analisador sintático
Programa fonte
Envia token
Solicita novo token
Tabela de símbolos
![Page 6: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/6.jpg)
VANTAGEM NA DIVISÃO EM LÉXICO E SINTÁTICO Projeto mais simples; Diminui a complexidade do analisador sintático que não
precisa mais lidar com estruturas foras de seu escopo como tratamento de caracteres vazios;
Melhora a eficiência do compilador; Permite técnicas de otimização específicas para o
analisador léxico/sintático; Melhor portabilidade de fases; Particularidades da linguagem fonte podem ser tratadas
diretamente pelo analisador léxico.
![Page 7: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/7.jpg)
PRIMEIO PASSO: ESPECIFICAÇÃO DOS TOKENS
Identificação:Cadeias e LinguagensOperações em LinguagensExpressões Regulares
Token Lexemas Exemplo
Descrição informal do padrão
if if ifrelação <, <=, =, >, >= < ou <= ou = ou > ou >=id pi, contador,
varSomaLetra seguida por letras ou dígitos
num 3.1416, 0, 6.02E23
Qualquer constante numérica
string “string qualquer” Quaisquer caracteres entre aspas, exceto aspas
![Page 8: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/8.jpg)
CADEIAS E LINGUAGENS Alfabeto ou classe de caracteres: qualquer conjunto
finito de símbolos. Alfabeto binário {0,1} EBCDIC e ASCII
Cadeia, sentença ou palavra: nome dada a uma seqüência finita de símbolos retiradas de uma alfabeto Ex: banana, 010101000001 O comprimento de um palavra, denotado por |s|,
corresponde ao número de símbolos requeridos para sua construção
Linguagem: denota qualquer conjunto de cadeias sobre algum alfabeto fixo Conjunto de todos os programas Pascal ;sentenças
sintaticamente corretas do português, etc
![Page 9: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/9.jpg)
OPERAÇÕES EM LINGUAGENS Prefixo: cadeia obtida pela remoção de zero ou mais
símbolos no fim da cadeia. Ex: ban é um prefixo de banana.
Sufixo: cadeia obtida pela remoção de zero ou mais símbolos no inicio da cadeia. Ex: nana é um sufixo de banana.
Subcadeia: cadeia obtida pela remoção de um prefixo e de um sufixo. Ex: nan.
Subseqüência: cadeia formada pela remoção de símbolos, não necessariamente contíguos. Ex: baaa é uma subseqüência de banana.
União: qualquer cadeia pertencente a um dos dois conjuntos. L U M = { s|s está em L ou s está em M} sendo L e M linguagens duas qualquer.
![Page 10: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/10.jpg)
OPERAÇÕES EM LINGUAGENS É o trabalho realizado com expressões regulares
para a identificação de tokens que não podem ser fixos da linguagem, como nome de variáveis, números, nome de funções, métodos, entre outros.
São tratados através de regras pré-definidas: Concatenação: LM = {st|s está em L e t está em M} Fechamento Kleene (L*): zero ou mais
concatenações de L. Fechamento positivo (L+): uma ou mais
concatenações de L.
![Page 11: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/11.jpg)
OPERAÇÕES EM LINGUAGENS - EXEMPLOS
L U D
LD
L4
L*
L (L U D)*
D+
Conjunto de letras e dígitos.
Conjunto de cadeias formadas por uma letra seguida por um dígito. Ex: a1
Conjunto de cadeias formadas por 4 letras. Ex: abcd
Conjunto de cadeias formadas por zero ou mais letras. Ex: a, ab, bb, bbc, ...
Conjunto de todas as cadeias de letras e dígitos que comecem com uma letra
Conjunto de todas as cadeias de um ou mais dígitos
![Page 12: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/12.jpg)
EXPRESSÕES REGULARES Notação especial para definição de cadeias de uma
linguagem Identificador Pascall
letra (letra|dígito)* Caractere | é igual a ou * significa zero ou mais instâncias A justaposição de letras significa concatenação destas Ex:
a|b {a,b} (a|b)(a|b) {aa, ab, ba, bb} a* {ε, a, aa, aaa, ...} (a|b)*
Se duas expressões regulares denotam a mesma linguagem, dizemos que são equivalentes e representamos r=s. Ex: (a|b) = (b|a)
![Page 13: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/13.jpg)
EXPRESSÕES REGULARES Definições regulares
Expressões regulares podem ser nomeadas e estes nomes podem ser utilizados para definição de novas expressões
Ex:letra : A|B|...|Z|a|b|...|zdigito : 0|1|...|9id : letra(letra|digito)*
![Page 14: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/14.jpg)
![Page 15: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/15.jpg)
![Page 16: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/16.jpg)
RECONHECIMENTO DE TOKENS if → início de uma condicional then → início da condicional verdadeira else → início da condicional false <|<=|=|<>|>|>=| → Operadores Lógicos letra (letra|dígito)* → Identificador dígito+ (.dígito + )?(E(+|-)?dígito +)? → Número branco|tabulação|avanço de linha → delimitarores
![Page 17: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/17.jpg)
DIAGRAMAS DE TRANSIÇÕES - AUTÔMATO Utilizado para determinar a seqüência de ações
executadas pelo analisador léxico no processo de reconhecimento de um token;
As posições no diagrama são representadas através de um círculo e são chamadas de estado;
Os estados são conectados por setas, denominadas lados;
Os lados são rotulados com caracteres que indicam as possíveis entrada que podem aparecer após o diagrama de estado ter atingido um dado estado;
O rótulo outro se refere a qualquer caractere de entrada que não seja o indicado pelos demais rótulos que deixam o estado;
Um círculo duplo determina um estado de aceitação;
![Page 18: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/18.jpg)
TÉCNICA PARA RECONHECIMENTO DE PALAVRAS-CHAVES
0 1 2letra delimitadorestado de partida
letra ou dígito
A partir de uma entrada avaliar o token para verificar se é um identificador:
Um identificador inicia por letras e deve ser seguida por letras ou números: L (L | N)*
![Page 19: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/19.jpg)
DIAGRAMA DE TRANSIÇÕES Em geral pode haver mais de um diagrama de
transições. Quando ocorre o erro no reconhecimento utilizando um diagrama o reconhecimento do token é reinicializado utilizando outro diagrama
O lexema para um dado token deve ser o mais longo possível. Ex: 12.3E4
Sempre que possível deve-se procurar primeiramente pelos tokens de maior incidência. Ex: espaço em branco
![Page 20: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/20.jpg)
12 13 14dígito . 15 16 17
dígito + ou -partida18 19
dígito dígito
E dígitodígito
outro *
E dígito
20 21 22dígito . 23 24
dígito
dígito dígito
E
25 26 27dígito outro
dígito
*
*
partida
partida
![Page 21: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/21.jpg)
REFERÊNCIASMaterial dos Professores: Guilherme Amaral Avelino; Silvio Fernandes;
Livros:AHO, Alfred V.; SETHI, Ravi; LAM, Monica S.. Compiladores : princípios, técnicas e ferramentas. 2ª ed. São Paulo: Pearson - Longman, 2008; MENEZES, Paulo Fernando Blauth. Linguagens Formais e Automatos. 5ª ed. Porto Alegre: Sagra Luzzatto, 2005
![Page 22: C OMPILADORES A NÁLISE L ÉXICA Antonio Felicio Netto 2015-2](https://reader035.vdocuments.pub/reader035/viewer/2022062522/570638601a28abb8238ff5e7/html5/thumbnails/22.jpg)
ESTUDO PARA PRÓXMA AULA - ATPS Quais são os tokes (símbolos) fixos definidos para a
linguagem de programação;
Avaliação dos tokens variáveis para a linguagem de programação;
Identificação das Expressões Regulares para os tokens variáveis;