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

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

COMPILADORES 03 Prof. Marcos.

Apresentações semelhantes


Apresentação em tema: "COMPILADORES 03 Prof. Marcos."— Transcrição da apresentação:

1 COMPILADORES 03 Prof. Marcos

2 Analisando o Programa Fonte
COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de 3 fases: Análise Léxica ou Linear (scanner); Análise Sintática ou Hierárquica ou Gramatical; Análise Semântica.

3 COMPILADORES Análise Léxica
A análise léxica (scanner) é a parte da compilação responsável por ler caracteres do programa fonte e transformá-los em uma representação conveniente para o próximo Analisador, o sintático.

4 COMPILADORES Análise Léxica
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.

5 COMPILADORES Análise Léxica
O fluxo de caracteres que constitui um programa fonte é lido da esquerda para a direita e agrupado em TOKENS (seqüência de caracteres tendo um significado coletivo).

6 COMPILADORES Análise Léxica
Token Lexemas Exemplo Descrição informal do padrão if if if relação <, <=, =, >, >= < ou <= ou = ou > ou >= id pi, contador, varSoma Letra 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

7 COMPILADORES Análise Léxica
Por exemplo no enunciado: Montante = Inicial + Taxa * 60;

8 COMPILADORES Análise Léxica
São agrupados nos seguintes TOKENS: identificador: Montante símbolo de atribuição: = identificador: Inicial sinal: + identificador: Taxa sinal: * constante numérica: 60

9 COMPILADORES Análise Léxica
Os espaços que separam os caracteres desses TOKENS seriam eliminados durante a análise Léxica.

10 COMPILADORES Análise Léxica
Vantagens da divisão em análise Léxica e Sintática: 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.

11 COMPILADORES Análise Léxica
Vantagens da divisão em análise Léxica e Sintática: Melhorar a eficiência do compilador. Técnicas de otimização específicas para o analisador léxico. Melhor portabilidade. Particularidades da linguagem fonte podem ser tratadas diretamente pelo analisador léxico.

12 COMPILADORES Análise Léxica
Solicita novo token Programa fonte Analisador léxico Analisador sintático Envia token Tabela de símbolos

13 COMPILADORES Análise Léxica
ESPECIFICAÇÃO DOS TOKENS Cadeias e Linguagens Operações em Linguagens Expressões Regulares

14 COMPILADORES Análise Léxica
CADEIAS DE LINGUAGENS Alfabeto ou classe de caracteres: Qualquer conjunto finito de símbolos. Alfabeto binário {0,1} EBCDIC e ASCII.

15 COMPILADORES Análise Léxica
CADEIAS DE LINGUAGENS Cadeia, sentença ou palavra: nome dado a uma seqüência finita de símbolos retiradas de uma alfabeto Ex: banana, O comprimento de um palavra, corresponde ao número de símbolos requeridos para sua construção.

16 COMPILADORES Análise Léxica
CADEIAS DE LINGUAGENS Linguagem: engloba qualquer conjunto de cadeias sobre algum alfabeto fixo Ǿ, {€}, conjunto de todos os programas Pascal e sentenças sintaticamente corretas do português.

17 COMPILADORES Análise Léxica
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.

18 COMPILADORES Análise Léxica
OPERAÇÕES EM LINGUAGENS 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.

19 COMPILADORES Análise Léxica
OPERAÇÕES EM LINGUAGENS 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. Concatenação: LM = {st|s está em L e t está em M}.

20 COMPILADORES Análise Léxica
OPERAÇÕES EM LINGUAGENS Fechamento Kleene (L*): zero ou mais concatenações de L. Fechamento positivo (L+): uma ou mais concatenações de L.

21 COMPILADORES Análise Léxica
EXPRESSÕES REGULARES Notação especial para definição de cadeias de uma linguagem.

22 COMPILADORES Análise Léxica
EXPRESSÕES REGULARES Identificador 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, ...}.

23 COMPILADORES Análise Léxica
EXPRESSÕES REGULARES Se duas expressões regulares representam a mesma linguagem, dizemos que são equivalentes e representamos r=s. Ex: (a|b) = (b|a)

24 COMPILADORES Do Programa à Execução DÚVIDAS ???


Carregar ppt "COMPILADORES 03 Prof. Marcos."

Apresentações semelhantes


Anúncios Google