compiladores 03 prof. marcos. compiladores analisando o programa fonte a compilação é dividida em...

24
COMPILADORES 03 Prof. Marcos

Upload: juliana-guterres-malheiro

Post on 07-Apr-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORES

03

Prof. Marcos

Page 2: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnalisando 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.

Page 3: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnálise Léxica

A análise léxica (scanner) é a parte dacompilação responsável por ler caracteresdo programa fonte e transformá-los em umarepresentação conveniente para o próximoAnalisador, o sintático.

Page 4: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnálise Léxica

O analisador léxico lê o programa fontecaractere a caractere, agrupando oscaracteres lidos para formar os símbolosbásicos (tokens) da linguagem:

identificadores, palavras-chaves, operadores, parêntesis e sinais de pontuação.

Page 5: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnálise Léxica

O fluxo de caracteres que constitui umprograma fonte é lido da esquerda para adireita e agrupado em TOKENS (seqüênciade caracteres tendo um significadocoletivo).

Page 6: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnálise Léxica

Token Lexemas Exemplo

Descrição informal do padrão

if if ifrelaçã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

Page 7: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnálise Léxica

Por exemplo no enunciado:

Montante = Inicial + Taxa * 60;

Page 8: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnálise Léxica

São agrupados nos seguintes TOKENS:identificador: Montantesímbolo de atribuição: =identificador: Inicialsinal: +identificador: Taxasinal: *constante numérica: 60

Page 9: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnálise Léxica

Os espaços que separam os caracteresdesses TOKENS seriam eliminados durantea análise Léxica.

Page 10: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnálise Léxica

Vantagens da divisão em análise Léxica eSintá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.

Page 11: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnálise Léxica

Vantagens da divisão em análise Léxica eSintá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.

Page 12: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnálise Léxica

Analisador léxico

Analisador sintático

Programa

fonte

Envia token

Solicita novo token

Tabela de símbolos

Page 13: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnálise Léxica

ESPECIFICAÇÃO DOS TOKENS

Cadeias e Linguagens Operações em Linguagens Expressões Regulares

Page 14: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAná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.

Page 15: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAná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, 010101000001. O comprimento de um palavra,

corresponde ao número de símbolos requeridos para sua construção.

Page 16: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAná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.

Page 17: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAná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.

Page 18: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAná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.

Page 19: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAná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}.

Page 20: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAná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.

Page 21: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnálise Léxica

EXPRESSÕES REGULARES Notação especial para definição de cadeias de uma linguagem.

Page 22: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAná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, ...}.

Page 23: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESAnálise Léxica

EXPRESSÕES REGULARESSe duas expressões regulares representam a mesma linguagem, dizemos que são equivalentes e representamos r=s. Ex: (a|b) = (b|a)

Page 24: COMPILADORES 03 Prof. Marcos. COMPILADORES Analisando o Programa Fonte A compilação é dividida em duas etapas: Análise e Síntese A análise consiste de

COMPILADORESDo Programa à Execução

DÚVIDAS ???