Identificadores Nome de variáveis, constantes, métodos, etc...

Documentos relacionados
IV.2 Aspectos Léxicos Convencionais

V.2 Especificação Sintática de Linguagens de Programação

INE5421 LINGUAGENS FORMAIS E COMPILADORES

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Compiladores 02 Analise léxica

Compiladores - Análise Léxica

Compiladores. Análise Léxica

Compiladores Aula 3. Celso Olivete Júnior.

Compiladores. Análise Léxica

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.

Estrutura geral de um compilador programa-fonte

Analisador Léxico parte II

Compiladores - Análise Léxica

ALGORITMOS AULA 2. Profª Amanda Gondim

Tokens, Padroes e Lexemas

INFORMÁTICA APLICADA AULA 03 ALGORITMOS

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C

Compiladores 04 Analise léxica Jflex. Prof José Rui

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

Compilação da linguagem Panda

Introdução parte II. Compiladores. Mariella Berger

Compiladores. Introdução

Introdução à programação em PASCAL. Aula de 22/10/2001. Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Compiladores - JFlex. Fabio Mascarenhas

Introdução à Programação

Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl

Compiladores - JFlex. Fabio Mascarenhas Monday, April 15, 13

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação

Compiladores I Prof. Ricardo Santos (cap 1)

Prof. Adriano Maranhão COMPILADORES

Fábio Rodrigues / Israel Lucania

Linguagem Computacional

Função de um Analisador Léxico (Scanner)

FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS

Função de um Analisador Léxico (Scanner)

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

CAP. VI ANÁLISE SEMÂNTICA

1 d=

Aspectos do analisador sintático Usabilidade da Dias de atraso

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Análise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18

Papel do analisador léxico: ler o arquivo fonte em busca de unidades significativas (os tokens) instanciadas por lexemas ou átomos.

a * Expressões Regulares (ER) AF e ER Equivalências entre AFD, AFND, AF-, ER

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Especificações Gerais do Compilador e Definição de FRANKIE

Noções de algoritmos - Aula 1

Compiladores. Conceitos Básicos

Linguagens de Domínio Específico

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Conceitos de Linguagens de Programação

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

Introdução à Computação

Análise Léxica I. Eduardo Ferreira dos Santos. Março, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 31

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Pró-Reitoria Acadêmica Diretoria Acadêmica Assessoria Pedagógica da Diretoria Acadêmica

Linguagens de Programação

Grupo 3: 8,3 - Parte Léxica (2,0): 1,9 - Na parte I especificou tamanho de identificador com 512 caracteres, mas não tratou (-0,1) -Parte Sintática

Como construir um compilador utilizando ferramentas Java

Descrição da Linguagem Pascal Jr.

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Teoria e Implementação de Linguagens Computacionais. Especificação do projeto da disciplina (2006.1) Versão de 23/08/2006.

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Programação de Computadores II

Folha 3 - Análise léxica

Capítulo 1 Conceitos Básicos

Construção de um compilador para a linguagem Panda

Compiladores - Especificando Sintaxe

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.

Acadêmica: Karly Schubert Vargas Orientadora: Joyce Martins

Programação Estruturada Aula VisualG

Ciência da Computação. Prof. Dr. Leandro Alves Neves Prof. Dr. Adriano M. Cansian

Introdução. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo. Lógica e Algoritmo

Python e sua sintaxe LNCC UFRJ

Tratamento dos Erros de Sintaxe. Adriano Maranhão

Linguagens de Programação Aula 5

Análise Léxica. Função de um Analisador Léxico (AL) Erros Léxicos. Métodos para a Especificação e Reconhecimento dos tokens: ER e AF

CP Compiladores I Prof. Msc.. Carlos de Salles

Familiarização com a ferramenta JavaCC

Compiladores Aula 2. Celso Olivete Júnior.

Projeto de Compiladores

Desenvolvimento de programas

DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE

TECNOLOGIA EM REDES DE COMPUTADORES. computadores. Aula 5

Compiladores Prof. a Mariella Berger. Trabalho 3 Analisador Semântico

Compiladores Análise Semântica

INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:

Como construir um compilador utilizando ferramentas Java

INE5622 INTRODUÇÃO A COMPILADORES

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

FACULDADE LEÃO SAMPAIO

Descrição da Linguagem DECAF

Construção de Compiladores

Transcrição:

IV.2 Aspectos Léxicos Convencionais Classes de símbolos Genéricos Token genérico / Lei de formação bem definida Podem possuir limitações de tamanho e/ou valor Possuem valor semântico o token deve ser acompanhado por uma informação adicional: a representação/valor do símbolo reconhecido (lexeme) Exemplos: Constantes numéricas (inteira, real, ) literais (cadeias / sequências de caracteres) Identificadores Nome de variáveis, constantes, métodos, etc Específicos Token específico para cada símbolo não possuem valor semântico Exemplos: Símbolos especiais simples, duplos, triplos, pontuação, operadores, separadores palavras reservadas casos especiais de identificadores Sem valor sintático Não constituem token Devem ser reconhecidos, porém ignorados Exemplos: Comentários Espaços em branco Caracteres de controle 1

IV.3 Especificação dos aspectos Léxicos Informal descrição textual Formal Usando GR, A.F. e/ou E.R Escolha do Mecanismo de Especificação Depende da forma de implementação do A. Léxico Quando o AL é gerado automaticamente O gerador usado determina o mecanismo de especificação (geralmente E.R. ou variações) Exemplos de Geradores: LEX, GALS, Micro-LEX, GALEX Quando o AL é programado manualmente Qualquer mecanismo Especificação usada como documentação Normalmente usa-se: E.R. para notação A.F. como base para reconhecimento Descrição Informal (textual) para exceções 2

IV.4 Analisador Léxico IV.4.1 - Funções Ler o programa fonte Agrupar caracteres em itens léxicos (tokens) Identificadores / Palavras Reservadas Constantes (numéricas e literais) Símbolos especiais (pontuação, operadores, etc) Ignorar brancos, comentários e car. de controle Detectar e diagnosticar erros léxicos Símbolos (caracteres) inválidos Identificadores, constantes, literais etc. mal formados Tamanho/valor inválido de constantes Exemplo: program exemplo; var a, b : integer; Programa Fonte begin (* Inicio do programa *) b := 2.5 + a; escreva ( tot =, B ); end. Tokens Reconhecidos program exemplo ; var a, begin b := 2.5 end. 1 - PR 2 - ID 3 - SEsp 4 - PR 2 - ID 5 - SEsp 6 - PR 2 ID 7 SEsp duplo 8 Cte Real 9 PR 10 - SEsp 3

IV.4.2 - Estratégias de Implementação do AL Procedimento Independente Analisa o programa fonte inteiro Gera arquivo (lista) de TOKENS Constitui um PASSO do processo de Compilação Função do Analisador Sintático A cada ativação, reconhece um símbolo e retorna o token correspondente (juntamente com sua representação literal e sua localização dentro do programa fonte) 4

IV.4.3 Especificação Léxica da LSI- 13/2 Identificadores caracteres válidos - letras, digitos e os caracteres especiais: @, # e _ regras de formação: começa com letra ou com @ não pode terminar com @, # e _ não possui caracteres especiais consecutivos não possui limite de tamanho Palavras reservadas casos especiais de identificadores programa, var, caracter, cadeia, procedimento, inicio, fim, inteiro, booleano, funcao, se, entao, senao, leia, escreva, ou, e, nao, falso, verdadeiro, de, faca, real, vetor, enquanto OBS.: Esta relação deverá ser atualizada quando da especificação sintática da LSI-13/2 Constantes numéricas Inteiras e reais sem sinal (com ou sem parte exponencial) Parte exponencial composta por: E ou e, sinal opcional ( + ou - ) e pelo menos 1 dígito Tokens distintos para constantes inteiras e reais Constantes inteiras números sem ponto decimal Constantes reais números com ponto decimal (no início, no fim ou no meio) 5

Constantes literais Usar (caracter aspa) como delimitador Sem limite de tamanho No meio de um string, o caracter (aspa) deve ser representado por duas aspas simples justapostas Ex. pato d agua Permitir continuação em outra linha Literal não fechado erro léxico Literais podem conter quaisquer caracteres (mesmo os caracteres inválidos para outros fins) Comentários de linha Começa com // Termina no final da linha Comentários de bloco notação: qualquer sequência de caracteres entre os delimitadores /* e */ não analisar sequências de caracteres internas sem limite de tamanho comentário não fechado = erro léxico Símbolos especiais (lista a ser atualizada posteriormente) Token específico para cada símbolo Simples: ;,. > < = ( ) [ ] + - * / : Duplos: :=.. <> <= >= 6

IV.4.4 Implementação do Anal. Léxico Especificação Formal Através de E.R. Implementação uso de um Gerador Automático (GALS) interface gráfica (para integrar as várias fases) Estratégia Livre escolha procedimento independente função do Analisador Sintático Linguagem para implementação livre escolha GALS gera Java, C++ e Delphi Equipes : 2 alunos Prazo de entrega junto com o analisador sintático (a ser definido) Leitura complementar capítulo sobre análise léxica de, pelo menos, um dos livros indicados na bibliografia da disciplina. 7

IV.4.5 Implementação do Compilador Criar um Módulo de Integração, usando Interface Gráfica, conforme exemplo abaixo: Observações gerais: Permitir a edição, leitura e gravação de programas (permitir qualquer extensao) Permitir a ativação independente de cada analisador Fornecer mensagens de erro em uma janela separada Posicionar o cursor na posição do token que causou o erro Substituir as mensagens de erro padrão do gerador por mensagens personalizadas adequadas Documentar o programa fonte adequadamente Registrar data/autor em todos os módulos/classes 8

LEX Gerador de Analisadores Léxicos (Lesk & Schmith, 1975) Linguagem de especificação: Definições %% Regras de tradução %% Procedimento auxiliares Exemplo de uma especificação: letra A B C Z ou [A-Z] digito 0 1 2 9 ou [0-9] %% = return (1) := return (2) ( return (3) : : : letra {letra digito} {Se epal-reservada (id, token) então return (token) senao insere-ts(id); return(20)}); dígito {digito} {insere-tc (num); return (21)} %% epal-reservada () insere-ts () insere-tc () 9

GALS 10