Compiladores, Aula Nº 5 João M. P. Cardoso

Slides:



Advertisements
Apresentações semelhantes
Compiladores, Aula Nº 5 João M. P. Cardoso
Advertisements

INTRODUÇÃO AO AMBIENTE DE PROGRAMAÇÃO MATLAB MINICURSO PET-POTÊNCIA WILK MAIA TURMA 1 AULA 7.
REPRESENTAÇÕES DE LINGUAGENS Adorilson Bezerra Santa Cruz - RN UNIVERSIDADE DO ESTADO DO RIO GRANDE DO NORTE CAMPUS AVANÇADO DO NATAL DEPARTAMENTO DE CIÊNCIA.
Ferramenta de apoio aos testes baseados em requisitos Acadêmico: Leandro da Cunha Orientador: Everaldo Artur Grahl.
Linguagem de Programação – Aula 03 Prof. Me. Ronnison Reges Vidal.
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Variáveis e Atribuições.
Controle de sistemas lineares Estabilidade. O que é estabilidade de um sistema de controle? Existem uma serie de definições de estabilidade, definida.
1) Defina sequências numéricas.
Introdução à Computação para Engenharia MAC2166
Professores: Cristiano Cassoli Lucilene Sebastião
Tópicos Preliminares Algorítmos I.
RODOLFO SOARES TEIXEIRA OBMEP NA ESCOLA
Medições – parte I: Precisão.
Conjuntos numéricos A história nos mostra que desde muito tempo o homem sempre teve a preocupação em contar objetos e ter registros numéricos. Seja através.
Teoremas de rede Prof. Luis S. B. Marques MINISTÉRIO DA EDUCAÇÃO
Fundamentos de Aritmética
Bioestatística e Epidemiologia Aula 3: Medidas de Tendência Central
Complementos de Engenharia de Software 2005/06
Módulo VII – O Sistema de Informações de Marketing (S.I.M)
ESTATÍSTICA . SÍNTESE DO 10.º ANO . RELAÇÕES BIDIMENSIONAIS (11.º ANO)
Progressão Aritmética Prof. Alisson Ferreira
Fábrica de Software.
Prof. Wellington Franco FUNDAMENTOS DE PROGRAMAÇÃO - T02
Módulo I Capítulo 3: Fluxo de Código e Operador Condicional
ALGUMAS FORMAS DE SE INICIAR UMA DISSERTAÇÃO
Prof. Wellington Franco
Geração automática de testes a partir de modelos UML
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
A.L. 1.0│Medição em Química.
PARIDADE Par ou ímpar?.
Vantagens e desvantagens da recursão
Congruência semântica
Algoritmos e Fluxogramas
Arquitetura de Computadores
Projeto e Análise de Algoritmos
FUNDAMENTO DE PROGRAMAÇÃO
IP – Repetições Prof. Eduardo Falcão.
Introdução à Análise Combinatória
Introdução à Programação
Diagramas de Sequência
Cálculo do clique maximal de um grafo
Programação.
Análise Sintática Botton Up Diomara M. R. Barros
Aula 02 – Produtos Notáveis
Binário, Hexadecimal, Decimal
Naturais (N) N = {0,1,2,3,4,...} Problemas do conjunto:
, operações, intervalos e desigualdades.
A.L. 1.0│Medição em Química.
Linguagem de Programação I
Sistemas Operacionais
Introdução instrumental às Linguagens Formais
Algorítmos e Técnicas de Programação
FUNDAMENTOS DA GESTÃO DE PROCESSOS Business Process Modeling Notation
Algoritmos Prof.: Carlos Alberto
AULA - 14 RADIOATIVIDADE.
AULA 4 ESTATÍSTICA DANIEL PÁDUA.
PROPRIEDADES dos LIMITES de SUCESSÕES
Programação Funcional
CT Fundamentos de Automata e Linguagens Formais
Manuais Administrativos
ANÁLISE COMBINATÓRIA Princípio Fundamental Da Contagem
ALGORITMOS.
Naturais (N) N = {0,1,2,3,4,...} Problemas do conjunto:
O que você deve saber sobre
Python: Comandos Básicos
FRAÇÕES DECIMAIS E NÚMEROS DECIMAIS
O TEXTO NA TV.
Introdução a progrmação Comandos condicionais: if e switch
Compiladores – AnáLise léxica
Introdução instrumental às Linguagens Formais
Transcrição da apresentação:

Compiladores, Aula Nº 5 João M. P. Cardoso Análise Lexical Compiladores, Aula Nº 5 João M. P. Cardoso Aula 5

Linguagens Formais Linguagem natural Linguagem (artificial) formal Ambígua problema no processamento das linguagens dependência do contexto permite mensagens mais curtas Linguagem (artificial) formal Obedece a regras apresentadas rigorosamente através do recurso a formalismos apropriados Regras garantem a não ambiguidade da linguagem Aula 5

Linguagens formais e definição da linguagem Necessidade de definir precisamente uma linguagem Estrutura por camadas na definição da linguagem Começar por um conjunto de símbolos da linguagem Estrutura lexical - identifica “palavras” na linguagem (cada palavra é uma sequência de símbolos) Estrutura Sintáctica - identifica “frases” na linguagem (cada frase é uma sequência de palavras) Semântica – significado do programa (especifica que resultados deverão ser obtidos para as entradas) Aula 5

Especificação Formal de Linguagens Expressões regulares (método generativo) Existem casos que não se podem descrever por expressões regulares Autómatos finitos (método por reconhecimento) Não deterministas (NFAs) Deterministas (DFAs) Implementam qualquer expressão regular Aula 5

Especificação de Estruturas Lexicais utilizando Expressões regulares Dado um vocabulário/alfabeto  = conjunto de símbolos Expressões regulares são construídas com:  - string vazia Qualquer símbolo do alfabeto  r1r2 – expressão regular r1 seguida de r2 (sequência): concatenação (às vezes utiliza-se o .) r1| r2 – expressão regular r1 ou r2 (selecção) r* - sequência iterativa ou selecção  | r | rr | … Parêntesis para indicar precedências Prioridade: *, ., | Aula 5

Expressões regulares Reescrever a expressão regular até se obter apenas uma sequência de letras (string) Exemplo (0 | 1)*”.”(0 | 1)* (0 | 1)(0 | 1)*”.”(0 | 1)* 1(0 | 1)*”.”(0 | 1)* 1”.”(0 | 1)* 1”.”(0 | 1)(0 | 1)* 1”.”(0 | 1) 1”.”0 Regras gerais 1) r1| r2  r1 2) r1| r2  r2 3) r*  rr* 4) r*   Aula 5

Não determinismo na geração Diferente aplicação de regras pode conduzir a resultados finais diferentes Exemplo 1 (0 | 1)*”.”(0 | 1)* (0 | 1)(0 | 1)*”.”(0 | 1)* 1(0 | 1)*”.”(0 | 1)* 1”.”(0 | 1)* 1”.”(0 | 1)(0 | 1)* 1”.”(0 | 1) 1”.”0 Exemplo 2 (0 | 1)*”.”(0 | 1)* (0 | 1)(0 | 1)*”.”(0 | 1)* 0(0 | 1)*”.”(0 | 1)* 0”.”(0 | 1)* 0”.”(0 | 1)(0 | 1)* 0”.”(0 | 1) 0”.”1 Aula 5

Linguagem gerada por expressões regulares Conjunto de todas as strings geradas pela expressão regular é uma linguagem de expressões regulares Em geral, uma linguagem pode ser infinita String na linguagem é chamada de token Aula 5

Linguagens e Expressões Regulares Exemplos:  = {0, 1, “.” } (0 | 1)*”.”(0 | 1)* - números binários de vírgula flutuante (00)* - strings de zeros com comprimento par (1*01*01*)* - strings com um número ímpar de zeros  = {a, b, c, 0, 1, 2 } (a | b | c)(a | b | c | 0 | 1 | 2)* - identificadores alfanuméricos (0|1|2)* - números ternários Aula 5

Expressões Regulares Outras construções: r+ - uma ou mais ocorrências de r: r | rr | rrr ... Equivalente a: r.r* r? – zero ou uma ocorrência de r: (r | ) [ ] – classes de símbolos: [ac] o mesmo que: (a | c) [a-c] o mesmo que: (a | b | c) Aula 5

Expressões Regulares Especifique a linguagem de Inteiros Especifique a linguagem de identificadores (uma letra seguida de sequências de letras e algarismos) Enumere propriedades algébricas das expressões regulares Dê exemplos de linguagens que não podem ser especificadas por expressões regulares Aula 5