III – Análise sintáctica Geradores de parsers Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.9 LFA 1999/2000 - 1Jorge Morais.

Slides:



Advertisements
Apresentações semelhantes
Tópicos em Compiladores
Advertisements

Compiladores Claudio Benossi
II – Análise léxica DEI Papel do analisador léxico.
II – Análise léxica DEI Conversão de expressões regulares em autómatos finitos determinísticos mínimos Bibliografia aconselhada: Aho, Sethi e Ullman –
III – Análise sintáctica
III – Análise sintáctica
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:
III – Análise sintáctica
III – Análise sintáctica
III – Análise sintáctica Parsers ascendentes Instruções shift-reduce Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.5 LFA 1999/ Jorge.
III – Análise sintáctica
IV – Análise semântica DEI Associação de regras semânticas a produções
I - Noções dum compilador Partes dum compilador Ferramentas de construção de compiladores Bibliografia aconselhada: –Aho, Sethi e Ullman – Cap. 1 LFA 1999/2000.
III – Análise sintáctica
III – Análise sintáctica
V – Geração de código Chamada de funções Organização de memória Passagem de parâmetros Representação de código intermédio Bibliografia aconselhada: –Aho,
IV – Análise semântica DEI Implementação da tabela de símbolos
I - Noções dum compilador
Linguagens Formais e Autómatos
Compiladores I Cristiano Damiani Vasconcellos
INTRODUÇÃO AOS APLICATIVOS JAVA
Deyvisson, Rafael M.P., Renato, Robson C.F., Rodolfo
Prof. Heloise Manica Paris Teixeira
YACC.
Lex e Yacc.
Relações em uma Gramática
Linguagem de Prog. e Programas
Construção de Compiladores
Construção de Compiladores
Construção de Compiladores
5.6 – Complementos de Yacc – Usando Yacc com gramáticas ambíguas
Prof. Bruno Moreno Aula 4 – 11/03/2011
Lex Linguagem (e compilador) para especificar analisadores léxicos.
Ferramentas para a Construção de Compiladores: Lex & Yacc
Compiladores, Aula Nº 5 João M. P. Cardoso
Compiladores, Aula Nº 19 João M. P. Cardoso
Compiladores, Aula Nº 10 João M. P. Cardoso
Sintaxe e Semântica Prof.: Gláucya Carreiro Boechat
Análises léxica e sintática
Análise Léxica Primeira fase de um compilador
Mayerber Carvalho Neto
Operadores e Atribuições Capítulo 3
1 JavaCC Prof. Alexandre Monteiro Baseado em material cedido pelo Prof. Euclides Arcoverde Recife.
Análise Léxica.
Capítulo II Gramáticas e Linguagens
Análise Sintática LR Prof. Alexandre Monteiro
Análises léxica e sintática
Analisador Léxico Prof. Alexandre Monteiro
Algoritmos e Estrutura de Dados I Jean Carlo Mendes
Aula 12 1 Análise Sintáctica Compiladores, Aula Nº 12 João M. P. Cardoso.
Análise Sintática Prof. Alexandre Monteiro
Análise Léxica Prof. Alexandre Monteiro
Tradução Dirigida por Sintaxe
CES-41 COMPILADORES Aulas Práticas Capítulo II A Ferramenta Yacc.
Programação Funcional
Analisador Léxico.
Revisão Compiladores – AP2
CES-41 COMPILADORES Aulas Práticas
Análise Sintática de Descida Recursiva
Revisão Compiladores – AP1
Faculdade Pernambucana - FAPE Setembro/2007
COMPILADORES 04 Prof. Marcos.
Um Tradutor Dirigido por Sintaxe Simples
Geradores de analisadores léxicos
JavaCC.
Lex e Yacc Compiladores Giovani Rubert Librelotto
PLP – JavaCC Java Compiler Compiler
Analisador sintático: Tipos de análises sintáticas
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.
Transcrição da apresentação:

III – Análise sintáctica Geradores de parsers Bibliografia aconselhada: –Aho, Sethi e Ullman – secção 4.9 LFA 1999/ Jorge Morais

Yacc – gerador de parsers YACC – Yet Another Compiler-Compiler Tradução para um programa em C usando o método LALR fich.y compilador yacc y.tab.c y.tab.c compilador C a.out entrada a.out saída LFA 1999/ Jorge Morais

Programa em yacc Declarações % Regras de tradução % Rotinas em C LFA 1999/ Jorge Morais

Declarações Declarações em C entre %{ e %} – tradução directa para C: enum{FALSE,TRUE}; Declaração de tokens: %token INTEIRO REAL Precedência e associatividade de operadores LFA 1999/ Jorge Morais

Regras de tradução X Y 1 | Y 2 |... | Y n X:Y 1 { acção semântica 1 } |Y 2 { acção semântica 2 }... |Y n { acção semântica n } ; LFA 1999/ Jorge Morais

Terminais e não terminais Strings de letras e dígitos declarados como tokens são terminais Caracteres na forma c são terminais (correspondem a um token representado apenas pelo próprio carácter) Todas as outras strings são não terminais LFA 1999/ Jorge Morais

Valores de atributos $$ – valor de atributo do lado esquerdo da regra $i – valor de atributo do elemento de ordem i do lado direito Exemplo: Expr : expr + term { $$ = $1 + $3 } | term ; LFA 1999/ Jorge Morais

Interface com o analisador léxico O yacc comunica com o analisador léxico chamando a função yylex Os atributos são passados a partir da variável global yylval Usando o lex/flex podemos gerar o analisador léxico, que poderá ser usado fazendo #include lex.yy.c Compilação: gcc y.tab.c -ly -ll LFA 1999/ Jorge Morais

Resolução de conflitos Conflitos reduce/reduce – é usado o primeiro a ser listado na especificação do yacc Conflitos shift/reduce – é resolvido escolhendo o shift LFA 1999/ Jorge Morais

Associatividade e precedência Associatividade: %left + - %right ^ %noassoc < Precedência: %prec terminal LFA 1999/ Jorge Morais