Como construir um compilador utilizando ferramentas Java
|
|
- Walter Pacheco Prada
- 6 Há anos
- Visualizações:
Transcrição
1 Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 4 Análise Léxica Prof. Márcio Delamaro delamaro@icmc.usp.br
2 Como construir um compilador utilizando ferramentas Java p. 2/2 O que é a tarefa do analisador léxico é quebrar a entrada em símbolos que façam sentido para a definição da linguagem e para o analisador sintático. Para identificarmos quais são esses símbolos, basta olharmos na definição da linguagem sua gramática ou grafo sintático e identificarmos quais são os seus símbolos terminais. No contexto da análise léxica, costumamos chamar esses símbolos de tokens.
3 Como construir um compilador utilizando ferramentas Java p. 3/2 Linguagens e alfabetos Os símbolos terminais compõem o alfabeto sobre o qual a nossa linguagem é definida. Esse conjunto de símbolos pode ser definido como uma linguagem. Muito mais simples que a linguagem alvo. Modelos simples como AFD e ER.
4 Como construir um compilador utilizando ferramentas Java p. 4/2 Autômato Finito Determinístico Um autômato finito determinístico (AFD) é um modelo para definição de linguagens regulares composto de cinco elementos Σ,S,s 0,δ,F, onde: Σ é o alfabeto sobre o qual a linguagem é definida; S é um conjunto finito não vazio de estados; s 0 é o estado inicial, s 0 S; δ é a função de transição de estados, δ : S Σ S; F é o conjunto de estados finais, F S.
5 Como construir um compilador utilizando ferramentas Java p. 5/2 Máquina de reconhecer cadeias Recebe como entrada uma cadeia e diz se ela pertence ou não à linguagem desejada. a b a c d b c Aceita Controle Finito de Não Aceita Estados
6 Como construir um compilador utilizando ferramentas Java p. 6/2 Representações δ s 0 s 0 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 2 s 2 s 0 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 2
7 Como construir um compilador utilizando ferramentas Java p. 6/2 Representações δ s 0 s 0 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 2 s 2 s 0 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 2 0,3,6,9 0,3,6,9 1,4,7 S 0 2,5,8 S 1 2,5,8 1,4,7 1,4,7 2,5,8 S 2 0,3,6,9
8 Como construir um compilador utilizando ferramentas Java p. 7/2 Tabela de transição Uma das vantagens de se utilizar um AFD para definir quais são os tokens a serem reconhecidos pelo AL é que é fácil implementar um AL baseado na tabela de transição de estados. Tal analisador deve apenas ler uma letra da entrada e, baseado na tabela, fazer a mudança de estado. Se o estado em que o AFD se encontrar for um estado final, então a cadeia lida até aquele ponto é um token válido.
9 Como construir um compilador utilizando ferramentas Java p. 8/2 AFD com função parcial δ s 0 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 2 s 2 s 0 s 1 s 2 s 0 s 1 s 2 s 0 s 1 s 2 3,6,9 0,3,6,9 1,4,7 S 0 2,5,8 S 1 2,5,8 1,4,7 1,4,7 2,5,8 S 2 0,3,6,9
10 Como construir um compilador utilizando ferramentas Java p. 9/2 Execução do AL Cadeia longa de símbolos.
11 Como construir um compilador utilizando ferramentas Java p. 9/2 Execução do AL Cadeia longa de símbolos. A cada execução do AFD (analisador léxico), um símbolo é reconhecido.
12 Como construir um compilador utilizando ferramentas Java p. 9/2 Execução do AL Cadeia longa de símbolos. A cada execução do AFD (analisador léxico), um símbolo é reconhecido. O AFD é executado até que não haja mais nenhuma transição possível
13 Como construir um compilador utilizando ferramentas Java p. 9/2 Execução do AL Cadeia longa de símbolos. A cada execução do AFD (analisador léxico), um símbolo é reconhecido. O AFD é executado até que não haja mais nenhuma transição possível Se o último estado for final, o símbolo é válido.
14 Como construir um compilador utilizando ferramentas Java p. 9/2 Execução do AL Cadeia longa de símbolos. A cada execução do AFD (analisador léxico), um símbolo é reconhecido. O AFD é executado até que não haja mais nenhuma transição possível Se o último estado for final, o símbolo é válido. Se não, um erro ocorreu.
15 Como construir um compilador utilizando ferramentas Java p. 10/2 Exemplo branco 2 1 i f 3 4 letra - {f}, letra - {i} 5 letra, letra,
16 Como construir um compilador utilizando ferramentas Java p. 10/2 Exemplo branco 2 1 i f 3 4 letra - {f}, letra - {i} 5 letra, letra, i f 1234
17 Como construir um compilador utilizando ferramentas Java p. 10/2 Exemplo branco 2 1 i f 3 4 letra - {f}, letra - {i} 5 letra, letra, i f 1234 if 1234
18 Como construir um compilador utilizando ferramentas Java p. 10/2 Exemplo branco 2 1 i f 3 4 letra - {f}, letra - {i} 5 letra, letra, i f 1234 if 1234 if1234
19 Como construir um compilador utilizando ferramentas Java p. 10/2 Exemplo branco 2 1 i f 3 4 letra - {f}, letra - {i} 5 letra, letra, i f 1234 if 1234 if if1234
20 Como construir um compilador utilizando ferramentas Java p. 11/2 Tipo de símbolo branco 2 1 i f 3 4 letra - {f}, letra - {i} 5 letra, letra, Associar a cada nó um tipo de token.
21 Como construir um compilador utilizando ferramentas Java p. 11/2 Tipo de símbolo branco 2 1 i f 3 4 letra - {f}, letra - {i} 5 letra, letra, Associar a cada nó um tipo de token. Se execução termina no estado 2, um número foi reconhecido.
22 Como construir um compilador utilizando ferramentas Java p. 11/2 Tipo de símbolo branco 2 1 i f 3 4 letra - {f}, letra - {i} 5 letra, letra, Associar a cada nó um tipo de token. Se execução termina no estado 2, um número foi reconhecido. Se termina nos estados 3 ou 5, um identificador foi reconhecido
23 Como construir um compilador utilizando ferramentas Java p. 11/2 Tipo de símbolo branco 2 1 i f 3 4 letra - {f}, letra - {i} 5 letra, letra, Associar a cada nó um tipo de token. Se execução termina no estado 2, um número foi reconhecido. Se termina nos estados 3 ou 5, um identificador foi reconhecido Se termina no estado 4, um if foi reconhecido
24 Como construir um compilador utilizando ferramentas Java p. 12/2 Tabela de transição Estado Letra: próximo estado Tipo 1 branco:1 digito:2 i:3 letra-{i}:5 ERRO 2 digito:2 NÚMERO 3 f:4 letra:5 digito:5 IDENT 4 letra:5 digito:5 IF 5 letra:5 digito:5 IDENT Ver programa 3.1 pag 43
25 Como construir um compilador utilizando ferramentas Java p. 13/2 Complexidade de um AFD Na linguagem X ++, que é bastante simples, temos nada menos que 39 símbolos terminais. A construção do AFD pode se tornar bastante complexa. Uma das maneiras de diminuir essa dificuldade é utilizando um autômato finito não determinístico (AFND)
26 Como construir um compilador utilizando ferramentas Java p. 14/2 Autômato finito não determinístico A função de transição de estados é definida δ : S Σ conjunto de subconjuntos finitos de ρ(s) Pode existir mais de uma transição saindo de um estado para a mesma letra do alfabeto.
27 Como construir um compilador utilizando ferramentas Java p. 15/2 Exemplo de autômato finito não determinísti branco 2 1 i f 3 4 letra 5 letra, if12 {1} i {3, 5} f {4, 5} 1 {5} 2 {5} if {1} i {3, 5} f {4, 5}
28 Como construir um compilador utilizando ferramentas Java p. 16/2 AFND com estados vários iniciais Um AFND pode também ter diversos estados iniciais branco 1 2 branco i f branco letra 6 7 letra, if12 {1, 3, 6} i {4, 7} f {5, 7} 1 {7} 2 {7} if {1, 3, 6} i {4, 7} f {5, 7}
29 Como construir um compilador utilizando ferramentas Java p. 17/2 Observações AFND facilita a descrição da linguagem reconhecida pelo analisador léxico.
30 Como construir um compilador utilizando ferramentas Java p. 17/2 Observações AFND facilita a descrição da linguagem reconhecida pelo analisador léxico. Por outro lado é difícil de implementar.
31 Como construir um compilador utilizando ferramentas Java p. 17/2 Observações AFND facilita a descrição da linguagem reconhecida pelo analisador léxico. Por outro lado é difícil de implementar. Não adiciona nenhum poder extra aos AFDs
32 Como construir um compilador utilizando ferramentas Java p. 17/2 Observações AFND facilita a descrição da linguagem reconhecida pelo analisador léxico. Por outro lado é difícil de implementar. Não adiciona nenhum poder extra aos AFDs Portanto podemos sempre transformar um AFND em um AFD.
33 Como construir um compilador utilizando ferramentas Java p. 18/2 Expressões regulares Usa operadores para combinar as letras do alfabeto e formar linguagens.
34 Como construir um compilador utilizando ferramentas Java p. 18/2 Expressões regulares Usa operadores para combinar as letras do alfabeto e formar linguagens. União ( ): dadas as linguagens L 1 e L 2, sobre o alfabeto Σ, define-se L 1 L 2 como {x Σ x L 1 x L 2 };
35 Como construir um compilador utilizando ferramentas Java p. 18/2 Expressões regulares Usa operadores para combinar as letras do alfabeto e formar linguagens. União ( ): dadas as linguagens L 1 e L 2, sobre o alfabeto Σ, define-se L 1 L 2 como {x Σ x L 1 x L 2 }; Concatenação ( ): dadas as linguagens L 1 e L 2, sobre o alfabeto Σ, define-se L 1 L 2 como {x.y Σ x L 1 y L 2 };
36 Como construir um compilador utilizando ferramentas Java p. 18/2 Expressões regulares Usa operadores para combinar as letras do alfabeto e formar linguagens. União ( ): dadas as linguagens L 1 e L 2, sobre o alfabeto Σ, define-se L 1 L 2 como {x Σ x L 1 x L 2 }; Concatenação ( ): dadas as linguagens L 1 e L 2, sobre o alfabeto Σ, define-se L 1 L 2 como {x.y Σ x L 1 y L 2 }; Fecho de Kleene ( ): dada a linguagem L sobre o alfabeto Σ, define-se L como sendo λ L (L L) (L L L) (L L L L)...
37 Como construir um compilador utilizando ferramentas Java p. 19/2 ER e o analisador léxico Cada item léxico pode ser definido através de uma ER.
38 Como construir um compilador utilizando ferramentas Java p. 19/2 ER e o analisador léxico Cada item léxico pode ser definido através de uma ER. NUMERO: digito digito ;
39 Como construir um compilador utilizando ferramentas Java p. 19/2 ER e o analisador léxico Cada item léxico pode ser definido através de uma ER. NUMERO: digito digito ; IF: i f;
40 Como construir um compilador utilizando ferramentas Java p. 19/2 ER e o analisador léxico Cada item léxico pode ser definido através de uma ER. NUMERO: digito digito ; IF: i f; IDENTIFICADOR: letra (letra digito).
41 Como construir um compilador utilizando ferramentas Java p. 19/2 ER e o analisador léxico Cada item léxico pode ser definido através de uma ER. NUMERO: digito digito ; IF: i f; IDENTIFICADOR: letra (letra digito). Uma (ou diversas) ER pode ser transformada em um AFND.
42 Como construir um compilador utilizando ferramentas Java p. 20/2 Exercício 1) Identifique cada símbolo terminal na gramática de X ++ e construa, para cada um uma ER e um AFND. 2) Baixe o JavaCC ( e sua doc. ( e tente entender como funciona este gerador de compiladores, que será usado para construir nosso analisador léxico. Veja também o Apêndice B do livro.
Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011
Compiladores Prof. Bruno Moreno Aula 8 02/05/2011 RECONHECIMENTO DE TOKENS Reconhecimento de Tokens Até aqui aprendemos a identificar tokens Para reconhecimento, a única abordagem utilizada foi árvores
Leia maisCompiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador
Estrutura de um compilador programa fonte Compiladores Análise lexical () Expressões Regulares analisador léxico analisador sintático analisador semântico análise gerador de código intermediário otimizador
Leia maisFunção, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.
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. Pardo 1 Estrutura geral de um compilador programa-fonte analisador
Leia maisLinguagens Formais e Autômatos
Linguagens Formais e Autômatos Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa Introdução Problema: definir um conjunto de cadeias de símbolos; Prof. Yandre Maldonado - 2 Exemplo: conjunto
Leia maisLinguagens Formais e Autômatos
Linguagens Formais e Autômatos Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa Problema: definir um conjunto de cadeias de símbolos; Prof. Yandre Maldonado - 2 Exemplo: conjunto M dos
Leia maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 6 Análise Sintática Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir
Leia maisLinguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática
Linguagens Formais Aula 01 - Conceitos Básicos Prof. Othon Batista Mestre em Informática Sumário Introdução à Linguagem Alfabeto Cadeias de Símbolos, Palavras Tamanho de Palavra Prefixo, Sufixo ou Subpalavra
Leia maisLFA Aula 07. Equivalência entre AFD e AFND. Equivalência entre ER s e AF s Equivalência entre GR s e AF s. Linguagens Formais e Autômatos
LFA Aula 07 Equivalência entre AFD e AFND AFND: uma aplicação busca em textos Equivalência entre ER s e AF s Equivalência entre GR s e AF s Celso Olivete Júnior olivete@fct.unesp.br www.fct.unesp.br/docentes/dmec/olivete/lfa
Leia maisEstrutura geral de um compilador programa-fonte
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. Pardo 1 Estrutura geral de um compilador programa-fonte analisador
Leia maisCompiladores. Análise Léxica
Compiladores Análise Léxica Regras Léxicas Especificam o conjunto de caracteres que constituem o alfabeto da linguagem, bem como a maneira que eles podem ser combinados; Exemplo Pascal: letras maiúsculas
Leia maisCompiladores - Análise Ascendente
Compiladores - Análise Ascendente Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Descendente vs. Ascendente As técnicas de análise que vimos até agora (recursiva com retrocesso,
Leia mais1 Expressões Regulares e Linguagens
1 1 Expressões Regulares e Linguagens Linguagem de Programação o Pesquisa em Textos o Componentes de Compiladores Intimamente Relacionadas com AFNDs São capazes de definir todas e somente as linguagens
Leia maisCompiladores - Análise Ascendente
Compiladores - Análise Ascendente Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Análise Descendente vs. Ascendente As técnicas de análise que vimos até agora (recursiva com retrocesso,
Leia maisLINGUAGENS FORMAIS E AUTÔMATOS
LINGUAGENS FORMAIS E AUTÔMATOS O objetivo deste curso é formalizar a idéia de linguagem e definir os tipos de sintaxe e semântica. Para cada sintaxe, analisamos autômatos, ue são abstrações de algoritmos.
Leia maisFundamentos da Teoria da Computação
Fundamentos da Teoria da Computação Primeira Lista de Exercícios - Aula sobre dúvidas Sérgio Mariano Dias 1 1 Doutorando em Ciência da Computação Estagiário em docência II Departamento de Ciência da Computação
Leia maisAnálise Léxica. Fundamentos Teóricos. Autômatos Finitos e Conjuntos Regulares (cap. III da apostila de Linguagens Formais e Compiladores)
Análise Léxica Fundamentos Teóricos Autômatos Finitos e Conjuntos Regulares (cap. III da apostila de Linguagens Formais e Compiladores) Geradores X Reconhecedores Gramáticas Tipo 0 Máquinas de Turing G.
Leia maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 2 BNF e Grafo Sintático Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir
Leia maisCompiladores - Autômatos
Compiladores - Autômatos Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp Especificação x Implementação Usamos expressões regulares para dar a especificação léxica da linguagem Mas como podemos
Leia maisEXPRESSÃO REGULAR PARA UMA FUNÇÃO EQUIVALENTE EM PASCAL, UTILIZANDO DOIS ALGORITMOS BASEADOS NO TEOREMA DE KLEENE RONALD GLATZ
PROTÓTIPO TIPO PARA TRANSFORMAÇÃO DE UMA EXPRESSÃO REGULAR PARA UMA FUNÇÃO EQUIVALENTE EM PASCAL, UTILIZANDO DOIS ALGORITMOS BASEADOS NO TEOREMA DE KLEENE 1 OBJETIVO DESTE TRABALHO ALGUNS CONCEITOS BÁSICOS
Leia maisFundamentos da Teoria da Computação
Fundamentos da Teoria da Computação Primeira Lista de Exercícios - Aula sobre dúvidas da lista Sérgio Mariano Dias 1 1 UFMG/ICEx/DCC Entrega da 1 a lista: 31/03/2009 Sérgio Mariano Dias (UFMG) Fundamentos
Leia maisEditor de Autômatos Finitos. Acadêmica: Josiane Patrícia Morastoni Orientadora: Joyce Martins
Editor de Autômatos Finitos Acadêmica: Josiane Patrícia Morastoni Orientadora: Joyce Martins 0 1 0 0 Roteiro da Apresentação Introdução Autômatos Finitos Desenvolvimento trabalho Considerações finais 2/31
Leia maisUniversidade Federal de Alfenas
Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 04 Linguagens Formais humberto@bcc.unifal-mg.edu.br Última aula... Relação da teoria dos conjuntos com LFA; Relação dos grafos com LFA.
Leia maisCompiladores Aula 3. Celso Olivete Júnior.
Aula 3 Celso Olivete Júnior olivete@fct.unesp.br Na aula de hoje... Analisador léxico: tratamento de erros 2 Arquitetura básica de um compilador Análise Análise Léxica Análise Sintática Análise Semântica
Leia maisTRANSFORMAÇÃO DE GRAMÁTICAS LIVRES DO CONTEXTO PARA EXPRESSÕES REGULARES ESTENDIDAS
TRANSFORMAÇÃO DE GRAMÁTICAS LIVRES DO CONTEXTO PARA EXPRESSÕES REGULARES ESTENDIDAS Acadêmico: Cleison Vander Ambrosi Orientador: José Roque Voltolini da Silva Roteiro da Apresentação Introdução Motivação
Leia maisReduce: reduz o que está imediatamente à esquerda do foco usando uma produção
Shift e reduce Shift: move o foco uma posição à direita A B C x y z A B C x y z é uma ação shift Reduce: reduz o que está imediatamente à esquerda do foco usando uma produção Se A x y é uma produção, então
Leia maisConstrução de Compiladores Aula 16 - Análise Sintática
Construção de Compiladores Aula 16 - Análise Sintática Bruno Müller Junior Departamento de Informática UFPR 25 de Setembro de 2014 1 Introdução Hierarquia de Chomsky Reconhecedores Linguagens Livres de
Leia maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 1 - Introdução Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir um
Leia maisSCC Capítulo 1 Linguagens Regulares e Autômatos Finitos
SCC-505 - Capítulo 1 Linguagens Regulares e Autômatos Finitos João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo
Leia maisConcurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba
Questão 01 No processo de construção de compiladores, é essencial compreender e manipular as expressões regulares e suas equivalências. Dentro desse contexto, seja o alfabeto = {a, b, c, d, e} e a seguinte
Leia maisINE5317 Linguagens Formais e Compiladores AULA 6: Autômatos Finitos Com S aída
INE5317 Linguagens Formais e Compiladores AULA 6: Autômatos Finitos Com S aída baseado em material produzido pelo prof Paulo B auth Menezes e pelo prof Olinto Jos é Varela Furtado Ricardo Azambuja Silveira
Leia maisa n Sistemas de Estados Finitos AF Determinísticos
a n Sistemas de Estados Finitos AF Determinísticos 1 Relembrando Uma representação finita de uma linguagem L qualquer pode ser: 1. Um conjunto finito de cadeias (se L for finita); 2. Uma expressão de um
Leia maisOperações Fechadas sobre LR s Aplicações
a n Operações Fechadas sobre LR s Aplicações (H&U, 969),(H&U, 979), (H;M;U, 200) e (Menezes, 2002) (Sipser,997) Operações que preservam a propriedade de ser uma LR Existem muitas operações que, quando
Leia maisLinguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.
LFA Aula 02 Linguagens regulares - introdução 28/09/2015 Celso Olivete Júnior olivete@fct.unesp.br 1 Na aula passada... Visão geral Linguagens regulares expressões regulares autômatos finitos gramáticas
Leia maisCOMPILADORES. Revisão Linguagens formais Parte 01. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Revisão Linguagens formais Parte 01 geovanegriesang@unisc.br Legenda: = sigma (somatório) = delta ε = épsilon λ = lambda
Leia maisLINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam
Linguagens Naturais LINGUAGENS FORMAIS Definições Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam São muito ricas, mas também ambíguas e imprecisas. Ex.: João
Leia maisINE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos
INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: silveira@inf.ufsc.br URL: www.inf.ufsc.br/~silveira As Linguagens e os formalismos representacionais
Leia maisCompiladores - Análise Léxica
Compiladores - Análise Léxica Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Introdução Primeiro passo do front-end: reconhecer tokens Tokens são as palavras do programa O analisador léxico
Leia maisINE5317 Linguagens Formais e Compiladores AULA 6: Propriedades das Linguagens Regulares
INE5317 Linguagens Formais e Compiladores AULA 6: Propriedades das Linguagens Regulares baseado em material produzido pelo prof Paulo B auth Menezes e pelo prof Olinto Jos é Varela Furtado Ricardo Azambuja
Leia maisConstrução de Compiladores Aula 3 - Analisador Sintático
Construção de Compiladores Aula 3 - Analisador Sintático Bruno Müller Junior Departamento de Informática UFPR 20 de Agosto de 2014 Definição A análise sintática (parsing) é um processo que verifica se
Leia maisProf. Adriano Maranhão COMPILADORES
Prof. Adriano Maranhão COMPILADORES LINGUAGENS: INTERPRETADAS X COMPILADAS Resumo: Linguagem compilada: Se o método utilizado traduz todo o texto do programa, para só depois executar o programa, então
Leia maisLinguagens de Programação Aula 5
Aula 5 Celso Olivete Júnior olivete@fct.unesp.br Na aula anterior Ambiguidade Análise léxica Exercício calculadora 2/@ Na aula anterior AF calculadora 3/@ Na aula de hoje Análise léxica implementação Gramática
Leia maisLR's: Lema do Bombeamento e Propriedades de Fechamento
Linguagens Formais e Autômatos LR's: Lema do Bombeamento e Propriedades de Fechamento Andrei Rimsa Álvares Material extraído do livro e slides do Prof. Newton Vieira (hfp://dcc.ufmg.br/~nvieira) Introdução
Leia maisCompiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)
Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Análise Léxica A primeira fase da compilação Recebe os caracteres de entrada do programa e os converte em um fluxo de
Leia maisAutômatos Finitos Não Determinís5cos (AFN)
Linguagens Formais e Autômatos Autômatos Finitos Não Determinís5cos (AFN) Andrei Rimsa Álvares Material extraído do livro e slides do Prof. Newton Vieira (hdp://dcc.ufmg.br/~nvieira) Sumário Introdução
Leia maisCompiladores - Análise Recursiva
Compiladores - Análise Recursiva Fabio Mascarenhas 2015.2 http://www.dcc.ufrj.br/~fabiom/comp Geradores x Reconhecedores A definição formal de gramática dá um gerador para uma linguagem Para análise sintática,
Leia maisLFA Aula 05. AFND: com e sem movimentos 05/12/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.
LFA Aula 05 AFND: com e sem movimentos vazios 05/12/2016 Celso Olivete Júnior olivete@fct.unesp.br www.fct.unesp.br/docentes/dmec/olivete/lfa 1 Na aula passada... Reconhecedores genéricos Autômatos finitos
Leia maisa * Expressões Regulares (ER) AF e ER Equivalências entre AFD, AFND, AF-, ER
a * Expressões Regulares (ER) AF e ER Equivalências entre AFD, AFND, AF-, ER 1 Expressões Regulares (ER) Uma ER sobre um alfabeto é definida como: a) é uma ER e denota a linguagem vazia b) é uma ER e denota
Leia maisINCLUSÃO DO ALGORITMO DE TRANSFORMAÇÃO DE UM AUTÔMATO FINITO EM EXPRESSÃO REGULAR NO AMBIENTE EDITOR DE AUTÔMATOS FINITOS
INCLUSÃO DO ALGORITMO DE TRANSFORMAÇÃO DE UM AUTÔMATO FINITO EM EXPRESSÃO REGULAR NO AMBIENTE EDITOR DE AUTÔMATOS FINITOS Acadêmico: Fernando Rafael Piccini Orientador: José Roque Voltolini da Silva Roteiro
Leia maisAnálise sintática. Análise sintática ascendente. Bottom-up, ascendente ou redutiva. Analisadores de precedência de operadores Analisadores LR
Análise sintática Função, interação com o compilador Análise descendente e ascendente Especificação e reconhecimento de cadeias de tokens válidas Implementação Tratamento de erros Prof. Thiago A. S. Pardo
Leia maisCompiladores 04 Analise léxica Jflex. Prof José Rui
Compiladores 04 Analise léxica Jflex Prof José Rui Sumário Análise Léxica Definição: Lexema, tokens Tabela símbolos Expressões regulares, automatos JFlex Análise léxica Exemplo Soma = a + b * 40;
Leia maisCompiladores - Análise Léxica
Compiladores - Análise Léxica Fabio Mascarenhas 2017.2 http://www.dcc.ufrj.br/~fabiom/comp Introdução Primeiro passo do front-end: reconhecer tokens Tokens são as palavras do programa O analisador léxico
Leia maisAutômato com pilha. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz
Autômato com pilha IBM1088 Linguagens Formais e Teoria da Computação Evandro Eduardo Seron Ruiz evandro@usp.br Departmento de Computação e Matemática FFCLRP Universidade de São Paulo E.E.S Ruiz (DCM USP)
Leia maisExercicios. 7.2 Quais das seguintes afirmações são verdadeiras? Justifica. (d) abcd L((a(cd) b) )
Exercicios 7.1 Escreve expressões regulares para cada uma das seguintes linguagens de Σ = {a, b}: (a) palavras com não mais do que três as (b) palavras com um número de as divisível por três (c) palavras
Leia maisAnalisador Léxico parte II
Analisador Léxico parte II Compiladores Mariella Berger Sumário Definições Regulares Gerador de Analisador Léxico Flex Exemplos As fases de um Compilador Análise Léxica Análise Sintática ANÁLISE Análise
Leia maisSCC-ICMC-USP. Trabalho em Grupo 1 SCC-0205
Trabalho em Grupo 1 SCC-0205 2 o. Semestre de 2010 Professor: João Luís G. Rosa - e-mail: joaoluis@icmc.usp.br Monitor PAE: Fernando Alva - e-mail: falva@icmc.usp.br versão 1-23/8/2010 1 Objetivo Desenvolver
Leia maisLinguagens Formais e Autômatos 02/2016. LFA Aula 04 16/11/2016. Celso Olivete Júnior.
LFA Aula 04 Autômatos Finitos 16/11/2016 Celso Olivete Júnior olivete@fct.unesp.br 1 Classificação das Linguagens segundo Hierarquia de Chomsky Máquina de Turing Máquina de Turing com fita limitada Autômato
Leia maisUNIVERSIDADE DA BEIRA INTERIOR
UNIVERIDADE DA EIRA INTERIOR Teoria da Computação Eng. Informática 2º emestre Frequência 2 (7 valores) Resolução 30/maio/2017 A. Expressões regulares e autómatos finitos 1. [1.25] Usando o método de eliminação
Leia maisLinguagens Formais e Problemas de Decisão
Linguagens Formais e Problemas de Decisão Mário S. Alvim (msalvim@dcc.ufmg.br) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim (msalvim@dcc.ufmg.br) Linguagens Formais e Problemas
Leia maisCompiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C
ompiladores Análise Léxica Bruno Lopes Bruno Lopes ompiladores 1 / 31 Front-end Lida com a linguagem de entrada Teste de pertinência: código fonte linguagem fonte? Programa está bem formado? Sintaticamente?
Leia maisTeoria de Linguagens 2 o semestre de 2017 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 19/9/2017 Valor: 10 pontos
Departamento de Ciência da Computação ICEx/UFMG Teoria de Linguagens o semestre de 7 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 9/9/7 Valor: pontos. Uma versão do problema
Leia maisEspecificações Gerais do Compilador e Definição de FRANKIE
Especificações Gerais do Compilador e Definição de FRANKIE 1. Especificações Gerais do Compilador (Decisões de projeto) 2. Especificações da Linguagem Fonte Definição Informal Considerações Léxicas Considerações
Leia maisAF Não-determinísticos Equivalência entre AFDN e AFD Equivalência entre AF e GR (H&U, 1969 e 1979), (H;M;U, 2001) e (Menezes, 2002) 1
AF Não-determinísticos Equivalência entre AFDN e AFD Equivalência entre AF e GR (H&U, 1969 e 1979), (H;M;U, 2001) e (Menezes, 2002) 1 AF NÃO-Determinístico (AFND) Consideremos uma modificação no modelo
Leia maisTeoria de Linguagens 1 o semestre de 2018 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 17/4/2018 Valor: 10 pontos
Departamento de Ciência da Computação ICEx/UFMG Teoria de Linguagens o semestre de 8 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 7/4/8 Valor: pontos. Uma versão do problema
Leia maisLinguagens Formais e Autômatos
Linguagens Formais e Autômatos Conversão de Expressões Regulares (ER) para Autômatos Finitos Determinísticos (AFD) Cristiano Lehrer, M.Sc. Introdução A construção sistemática de um Autômato Finito para
Leia maisAF Não-determinísticos Equivalência entre AFDN e AFD Equivalência entre AF e GR (H&U, 1969 e 1979), (H;M;U, 2001) e (Menezes, 2002) 1
AF Não-determinísticos Equivalência entre AFDN e AFD Equivalência entre AF e GR (H&U, 1969 e 1979), (H;M;U, 2001) e (Menezes, 2002) 1 AF NÃO-Determinístico (AFND) Consideremos uma modificação no modelo
Leia maisConceitos Básicos. Vocabulário Cadeias Linguagens Problema
Conceitos Básicos Vocabulário Cadeias Linguagens Problema Alfabeto ou Vocabulário: Conjunto finito não vazio de símbolos. Símbolo é um elemento qualquer de um alfabeto. Ex: {A,B,C,.Z} alfabeto latino (maiúsculas)
Leia maisUniversidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação SCC-205 TEORIA DA COMPUTAÇÃO E LINGUAGENS FORMAIS Turma 1 2º. Semestre de 2012 Prof. João Luís
Leia maisSistemas de Estados Finitos AF Determinísticos. (H&U, 1979) e (H;M;U, 2001)
a n Sistemas de Estados Finitos AF Determinísticos (H&U, 1979) e (H;M;U, 2001) 1 Sistemas de Estados Finitos Uma máquina de estados finitos é um modelo matemático de um sistema com entradas e saídas discretas.
Leia maisLinguagens Formais e Autômatos. Apresentação do Plano de Ensino
Linguagens Formais e Autômatos Apresentação do Plano de Ensino Linguagens Formais e Autômatos LFA Código - CMP4145 Turma C01 Engenharia da Computação e Ciência da Computação Horário: Segunda e Quinta:
Leia maisLinguagens Regulares. Prof. Daniel Oliveira
Linguagens Regulares Prof. Daniel Oliveira Linguagens Regulares Linguagens Regulares ou Tipo 3 Hierarquia de Chomsky Linguagens Regulares Aborda-se os seguintes formalismos: Autômatos Finitos Expressões
Leia maisExpressões Regulares. Linguagens Formais e Autômatos. Andrei Rimsa Álvares
Linguagens Formais e Autômatos Expressões Regulares Andrei Rimsa Álvares Material extraído do livro e slides do Prof. Newton Vieira (hcp://dcc.ufmg.br/~nvieira) Expressões Regulares Até agora foram vistas
Leia maisCompiladores 02 Analise léxica
Compiladores 02 Analise léxica Sumário Análise Léxica Definição: Lexema, tokens Tabela símbolos Expressões regulares, automatos Relembrando O compilador é dividido em duas etapas Análise Síntese Análise
Leia maisTokens, Padroes e Lexemas
O Papel do Analisador Lexico A analise lexica e a primeira fase de um compilador e tem por objetivo fazer a leitura do programa fonte, caracter a caracter, e traduzi-lo para uma sequencia de símbolos lexicos
Leia maisMáquinas de Turing - Computabilidade
BCC244-Teoria da Computação Prof. Lucília Figueiredo Lista de Exercícios 03 DECOM ICEB - UFOP Máquinas de Turing - Computabilidade 1. Seja L uma linguagem não livre de contexto. Mostre que: (a) Se X uma
Leia maisFamiliarização com a ferramenta JavaCC
Ficha nº 2 Familiarização com a ferramenta JavaCC Estrutura do ficheiro JavaCC O JavaCC utiliza um ficheiro com a extensão.jj, onde são descritos, pelo utilizador, o léxico e a sintaxe da linguagem e gera
Leia maisCurso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 3. Autômatos Finitos
Curso: Ciência da Computação Turma: 6ª Série Aula 3 Autômatos Finitos Alfabeto Alfabeto Conjunto finito de símbolos; Normalmente descrito por ; Exemplos: ={a, b} ={1, 2, 3} ={00, 11} Ø Alfabeto romano
Leia maisCompiladores - Análise Recursiva
Compiladores - Análise Recursiva Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Analisador Recursivo Maneira mais simples de implementar um analisador sintático a partir de uma gramática,
Leia maisFolha 2 Autómatos e respectivas linguagens
Folha 2 Autómatos e respectivas linguagens 1. Considere a linguagem L formada por todas as sequências sobre o alfabeto { 0, 1, 2 } cujo somatório seja divisível por 3. Construa um autómato finito A que
Leia maisAula 3: Autômatos Finitos
Teoria da Computação Primeiro Semestre, 25 Aula 3: Autômatos Finitos DAINF-UTFPR Prof. Ricardo Dutra da Silva Um procedimento ue determina se uma string de entrada pertence à uma linguagem é um reconhecedor
Leia maisPrograma fonte token padrões lexema Tokens
Análise Léxica Analisador Léxico Primeira fase de um compilador. Objetivo: ler os caracteres de entrada e produzir como saída uma seqüência de tokens que o parser vai usar para análise sintática. Programa
Leia maisLinguagens Formais e Autômatos P. Blauth Menezes
Linguagens Formais e Autômatos P. Blauth Menezes blauth@inf.ufrgs.br Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens
Leia maisExpressões Regulares e Gramáticas Regulares
Universidade Católica de Pelotas Escola de informática 053212 Linguagens Formais e Autômatos TEXTO 2 Expressões Regulares e Gramáticas Regulares Prof. Luiz A M Palazzo Março de 2007 Definição de Expressão
Leia maisFunção de um Analisador Léxico (Scanner)
Análise Léxica Função de um Analisador Léxico (AL) Tarefas Secundárias do AL Vantagens da Separação entre Análise Léxica e Sintática Erros Léxicos Especificação e Reconhecimento dos tokens (ou átomos)
Leia maisUniversidade Federal de Alfenas
Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 10 Autômatos Finitos Não Determinísticos (AFN) humberto@bcc.unifal-mg.edu.br Determinismo... Quando uma máquina está em um estado e lê
Leia maisConceitos Básicos. Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem
Conceitos Básicos Vocabulário Cadeias Linguagens Expressões Regulares Problema X Linguagem Alfabeto ou Vocabulário: Conjunto finito não vazio de símbolos. Símbolo é um elemento qualquer de um alfabeto.
Leia maisUniversidade Federal de Alfenas
Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 08 Minimização de AFDs humberto@bcc.unifal-mg.edu.br Últimas aulas... Linguagens Formais vs Linguagens Naturais Últimas aulas... Linguagens
Leia maisLFA Aula 08. Minimização de AFD Autômatos Finitos com saídas 25/01/2017. Linguagens Formais e Autômatos. Celso Olivete Júnior.
LFA Aula 08 Minimização de AFD Autômatos Finitos com saídas 25/01/2017 Celso Olivete Júnior olivete@fct.unesp.br www.fct.unesp.br/docentes/dmec/olivete/lfa 1 Na aula de hoje Minimização de autômatos finitos
Leia maisHistórico e motivação
Expressões regulares 1. Histórico e motivação 2. Definição a) Sintaxe b) Semântica c) Precedência dos operadores 3. Exemplos 4. Leis algébricas 5. Dialetos 6. Aplicações 7. Exercícios Pré-requisito: básico
Leia maisCurso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 4. Autômatos Finitos
Curso: Ciência da Computação Turma: 6ª Série Aula 4 Autômatos Finitos Autômatos Finitos Não Determinísticos Um autômato finito não-determinístico (AFND, ou NFA do inglês) tem o poder de estar em vários
Leia maisLema do Bombeamento Operações Fechadas sobre LR s Aplicações
a n Lema do Bombeamento Operações Fechadas sobre LR s Aplicações (H&U, 969),(H&U, 979), (H;M;U, 2) e (Menezes, 22) Lema do Bombeamento para LR Como decidir que uma linguagem é ou não regular? Não bastaria
Leia maisCompiladores - Análise SLR
Compiladores - Análise SLR Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Um exemplo que funciona Todo estado com um item de redução e algum outro item causa conflito LR(0)! A técnica LR(0)
Leia maisCompiladores. Prof. Bruno Moreno
Compiladores Prof. Bruno Moreno Apresentação - Professor Bruno Neiva Moreno Graduado em Ciência da Computação (UFPB) 2004 a 2009 Bolsista PIBIC/CNPq LARHENA - Laboratório de Recursos Hídricos e Engenharia
Leia maisSCC 205 Teoria da Computação e Linguagens Formais
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação SCC 205 Teoria da Computação e Linguagens Formais Autômatos com pilha Lista 3 1. Dê um
Leia maisTeoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.
Pós-Graduação em Ciência da Computação DCC/ICEx/UFMG Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9. Observações: Pontos
Leia maisLFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.
LFA Aula 09 Gramáticas e Linguagens Livres de Contexto (Hopcroft, 2002) 18/01/2016 Celso Olivete Júnior olivete@fct.unesp.br www.fct.unesp.br/docentes/dmec/olivete/lfa 1 Classes Gramaticais Linguagens
Leia maisConstrução de Compiladores Aula 2 - Analisador Léxico
Construção de Compiladores Aula 2 - Analisador Léxico Bruno Müller Junior Departamento de Informática UFPR 8 de Agosto de 2014 1 Analisador Léxico 2 3 Método 1: Programa 4 Código Analisador Léxico 5 Método
Leia maisA. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)
DEP. INFORMÁTICA - UNIVERSIDADE DA BEIRA INTERIOR Teoria da Computação Eng. Informática 1º Semestre Exame 1ª chamada - Resolução 2h + 30min 31/Jan/2011 Pergunta A.1 A.2 A.3 B.1 B.2 B.3a B.3b C.1 C.2 D.1
Leia maisIdentificadores Nome de variáveis, constantes, métodos, etc...
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
Leia maisAlfabeto, Cadeias, Operações e Linguagens
Linguagens de Programação e Compiladores - Aula 3 1 Alfabeto, Cadeias, Operações e Linguagens 1.Conjuntos Para representar um determinado conjunto é necessário buscar uma notação para representá-lo e ter
Leia mais