COMPILADORES 03 Prof. Marcos.

Slides:



Advertisements
Apresentações semelhantes
TEORIA DA COMPUTAÇÃO Parte I  Introdução  Linguagens Regulares
Advertisements

FAPE - Curso de Ciência da Computação
Matemática Computacional
Tópicos em Compiladores
gerador de código intermediário
Compiladores Claudio Benossi
Linguagem Fabrício Dias
II – Análise léxica DEI Papel do analisador léxico.
II – Análise léxica DEI lex: linguagem de especificação para analisadores léxicos Implementação de simuladores de autómatos finitos Bibliografia aconselhada:
I - Noções dum compilador
I - Noções dum compilador
Compiladores I Cristiano Damiani Vasconcellos
Linguagens Formais e Autômatos
Deyvisson, Rafael M.P., Renato, Robson C.F., Rodolfo
Análise Léxica (Parte 2)
TEORIA DOS AUTÓMATOS FINITOS E DAS SUAS LINGUAGENS
Software Básico Silvio Fernandes
Compiladores Prof. Yandre Maldonado Compiladores - Prof. Yandre - 1.
Prof. Heloise Manica Paris Teixeira
Linguagens Livres de Contexto
Strings, Linguagens, Autômatos
Linguagens e Máquinas WILSON ROSA DE OLIVEIRA DEPARTAMENTO DE INFORMÁTICA UFPE
autômatos finitos com transições e
Relações em uma Gramática
Linguagem de Prog. e Programas
Análise Léxica Supondo o trecho de programa abaixo:
Construção de Compiladores
Construção de Compiladores
Alfabetos, Palavras e Linguagens
André Luis Meneses Silva
Unidades de Armazenamento
Prof. Msc. Raul Paradeda Aula 3 Fundamentos
Prof. Bruno Moreno Aula 4 – 11/03/2011
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Compiladores, Aula Nº 5 João M. P. Cardoso
Compiladores, Aula Nº 7 João M. P. Cardoso
Introdução a Programação
Ling. Formais e Autômatos AFN-ε
Sintaxe e Semântica Prof.: Gláucya Carreiro Boechat
Expressões e Instrução de Atribuição
Análise Léxica Primeira fase de um compilador
Teoria da Computação Aula 1 Prof. Fabiano Sabha.
Expressões Regulares e Gramáticas
Análise Léxica.
Capítulo II Gramáticas e Linguagens
Analise sintática aula-07-analise-sintática.pdf.
Analise Semântica aula-10-analise-semântica.pdf.
Compiladores Análise Léxica
Algumas notas sobre a linguagem de programação C
Linguagens Formais e Compiladores
COMPILADORES 04 Prof. Marcos.
Fundamentos de linguagens de programação
Linguagem C.
Linguagens Formais - aula 02
Programação de Computadores - 1
Computabilidade e Linguagens Formais
Computabilidade e Linguagens Formais
Engenharia/Ciência da Computação
Sintaxe de uma Linguagem
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
Faculdade Pernambuca - FAPE
tópicostópicos itens 01. Terminologia 02. Operações básicas 03. Representação de linguagens 04. Formalização de gramáticas 05. Processo de derivação 06.
Analisador sintático: Tipos de análises sintáticas
Compiladores Análise Léxica
Compilador Software que traduz o texto (linguagem fonte) que representa um programa para código máquina(linguagem alvo) capaz de ser executado pelo.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
Sistemas para Internet Algoritmos e Lógica de Programação
Transcrição da apresentação:

COMPILADORES 03 Prof. Marcos

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.

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.

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.

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

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

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

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

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

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.

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.

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

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

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.

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, 010101000001. O comprimento de um palavra, corresponde ao número de símbolos requeridos para sua construção.

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.

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.

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.

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

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.

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

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

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)

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