SlideShare una empresa de Scribd logo
1 de 95
Descargar para leer sin conexión
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Ferramentas Lex & YACC
Compiladores
Ailton Felix :: Bruno Normande :: Michel Alves
Universidade Federal de Alagoas, Campus A. C. Simões
Tabuleiro do Martins - Maceió - AL, CEP: 57072-970
Docente Responsável: Prof. Msc. Alcino Dall’Igna Júnior
11 de Dezembro 2010
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Sumário
Tópicos Centrais da Explanação
Lex/Flex.
YACC/Bison.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Sumário
Tópicos Centrais da Explanação
Lex/Flex.
YACC/Bison.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Sumário
Tópicos Centrais da Explanação
Lex/Flex.
YACC/Bison.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Gerador de Analisadores Léxicos
Ferramentas no estilo Lex utilizam uma especificação
baseada em expressões regulares.
A partir dessa definição, Lex gera automaticamente um
programa que simula o comportamento de autômatos
equivalentes às expressões fornecidas.
O programa lê uma entrada e verifica se essa entrada
está no formato especificado.
Enquanto verifica a entrada, pode executar algumas
ações (trechos de programa) desejadas.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Gerador de Analisadores Léxicos
Ferramentas no estilo Lex utilizam uma especificação
baseada em expressões regulares.
A partir dessa definição, Lex gera automaticamente um
programa que simula o comportamento de autômatos
equivalentes às expressões fornecidas.
O programa lê uma entrada e verifica se essa entrada
está no formato especificado.
Enquanto verifica a entrada, pode executar algumas
ações (trechos de programa) desejadas.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Gerador de Analisadores Léxicos
Ferramentas no estilo Lex utilizam uma especificação
baseada em expressões regulares.
A partir dessa definição, Lex gera automaticamente um
programa que simula o comportamento de autômatos
equivalentes às expressões fornecidas.
O programa lê uma entrada e verifica se essa entrada
está no formato especificado.
Enquanto verifica a entrada, pode executar algumas
ações (trechos de programa) desejadas.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Gerador de Analisadores Léxicos
Ferramentas no estilo Lex utilizam uma especificação
baseada em expressões regulares.
A partir dessa definição, Lex gera automaticamente um
programa que simula o comportamento de autômatos
equivalentes às expressões fornecidas.
O programa lê uma entrada e verifica se essa entrada
está no formato especificado.
Enquanto verifica a entrada, pode executar algumas
ações (trechos de programa) desejadas.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Gerador de Analisadores Léxicos
Ferramentas no estilo Lex utilizam uma especificação
baseada em expressões regulares.
A partir dessa definição, Lex gera automaticamente um
programa que simula o comportamento de autômatos
equivalentes às expressões fornecidas.
O programa lê uma entrada e verifica se essa entrada
está no formato especificado.
Enquanto verifica a entrada, pode executar algumas
ações (trechos de programa) desejadas.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Principais Utilizações
Transformações simples e extração de padrões em
textos.
Separação da entrada em unidades léxicas, como
preparação para um analisador sintático.
Os exemplos utilizados nesta apresentação seguirão o
formato do programa Flex.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Principais Utilizações
Transformações simples e extração de padrões em
textos.
Separação da entrada em unidades léxicas, como
preparação para um analisador sintático.
Os exemplos utilizados nesta apresentação seguirão o
formato do programa Flex.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Principais Utilizações
Transformações simples e extração de padrões em
textos.
Separação da entrada em unidades léxicas, como
preparação para um analisador sintático.
Os exemplos utilizados nesta apresentação seguirão o
formato do programa Flex.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Principais Utilizações
Transformações simples e extração de padrões em
textos.
Separação da entrada em unidades léxicas, como
preparação para um analisador sintático.
Os exemplos utilizados nesta apresentação seguirão o
formato do programa Flex.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para LEX é composto de:
Lista de expressões regulares;
Fragmentos de programa associados a cada expressão.
Quando o fonte é submetido ao LEX, um programa é
automaticamente gerado. Esse programa:
Lê um arquivo de entrada;
Particiona a entrada em cadeias que “casam” com as
expressões regulares definidas;
Executa os fragmentos de programa associados às expressões
“casadas” e escreve no arquivo de saída.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para LEX é composto de:
Lista de expressões regulares;
Fragmentos de programa associados a cada expressão.
Quando o fonte é submetido ao LEX, um programa é
automaticamente gerado. Esse programa:
Lê um arquivo de entrada;
Particiona a entrada em cadeias que “casam” com as
expressões regulares definidas;
Executa os fragmentos de programa associados às expressões
“casadas” e escreve no arquivo de saída.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para LEX é composto de:
Lista de expressões regulares;
Fragmentos de programa associados a cada expressão.
Quando o fonte é submetido ao LEX, um programa é
automaticamente gerado. Esse programa:
Lê um arquivo de entrada;
Particiona a entrada em cadeias que “casam” com as
expressões regulares definidas;
Executa os fragmentos de programa associados às expressões
“casadas” e escreve no arquivo de saída.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para LEX é composto de:
Lista de expressões regulares;
Fragmentos de programa associados a cada expressão.
Quando o fonte é submetido ao LEX, um programa é
automaticamente gerado. Esse programa:
Lê um arquivo de entrada;
Particiona a entrada em cadeias que “casam” com as
expressões regulares definidas;
Executa os fragmentos de programa associados às expressões
“casadas” e escreve no arquivo de saída.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para LEX é composto de:
Lista de expressões regulares;
Fragmentos de programa associados a cada expressão.
Quando o fonte é submetido ao LEX, um programa é
automaticamente gerado. Esse programa:
Lê um arquivo de entrada;
Particiona a entrada em cadeias que “casam” com as
expressões regulares definidas;
Executa os fragmentos de programa associados às expressões
“casadas” e escreve no arquivo de saída.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para LEX é composto de:
Lista de expressões regulares;
Fragmentos de programa associados a cada expressão.
Quando o fonte é submetido ao LEX, um programa é
automaticamente gerado. Esse programa:
Lê um arquivo de entrada;
Particiona a entrada em cadeias que “casam” com as
expressões regulares definidas;
Executa os fragmentos de programa associados às expressões
“casadas” e escreve no arquivo de saída.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para LEX é composto de:
Lista de expressões regulares;
Fragmentos de programa associados a cada expressão.
Quando o fonte é submetido ao LEX, um programa é
automaticamente gerado. Esse programa:
Lê um arquivo de entrada;
Particiona a entrada em cadeias que “casam” com as
expressões regulares definidas;
Executa os fragmentos de programa associados às expressões
“casadas” e escreve no arquivo de saída.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Funcionamento
Esquema de Funcionamento
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Exemplo com Flex
Um Exemplo Usando o Gerador Flex
O fonte é dividido em três seções separadas por “%%”:
definições, regras e subrotinas.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Exemplo com Flex
Um Exemplo Usando o Gerador Flex
O fonte é dividido em três seções separadas por “%%”:
definições, regras e subrotinas.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC/Bison
Geradores de Analisadores Sintáticos
O YACC/BISON serve para gerar automaticamente
programas para análise sintática (usualmente em “C”)
de códigos fonte de uma linguagem específica qualquer.
Estas ferramentas possuem como entrada uma descrição de
uma gramática, que especifica uma determinada linguagem,
e gera como saída um programa em C ou C++ que será o
parser desta linguagem.
O parser gerado pelo YACC/BISON permite realizar apenas a
validação do código fonte, indicando se está correto
sintaticamente ou não.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC/Bison
Geradores de Analisadores Sintáticos
O YACC/BISON serve para gerar automaticamente
programas para análise sintática (usualmente em “C”)
de códigos fonte de uma linguagem específica qualquer.
Estas ferramentas possuem como entrada uma descrição de
uma gramática, que especifica uma determinada linguagem,
e gera como saída um programa em C ou C++ que será o
parser desta linguagem.
O parser gerado pelo YACC/BISON permite realizar apenas a
validação do código fonte, indicando se está correto
sintaticamente ou não.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC/Bison
Geradores de Analisadores Sintáticos
O YACC/BISON serve para gerar automaticamente
programas para análise sintática (usualmente em “C”)
de códigos fonte de uma linguagem específica qualquer.
Estas ferramentas possuem como entrada uma descrição de
uma gramática, que especifica uma determinada linguagem,
e gera como saída um programa em C ou C++ que será o
parser desta linguagem.
O parser gerado pelo YACC/BISON permite realizar apenas a
validação do código fonte, indicando se está correto
sintaticamente ou não.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC/Bison
Geradores de Analisadores Sintáticos
O YACC/BISON serve para gerar automaticamente
programas para análise sintática (usualmente em “C”)
de códigos fonte de uma linguagem específica qualquer.
Estas ferramentas possuem como entrada uma descrição de
uma gramática, que especifica uma determinada linguagem,
e gera como saída um programa em C ou C++ que será o
parser desta linguagem.
O parser gerado pelo YACC/BISON permite realizar apenas a
validação do código fonte, indicando se está correto
sintaticamente ou não.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC/Bison
Flex & Bison Integrados
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compilers
Produz um parser bottom-up para uma dada
gramática;
Usado para produzir compiladores para Pascal, C,
C++ entre outras;
Além disso, foi usado no desenvolvimento de:
bc(calculadora);
eqn & pic;
verificador de sintaxe SQL(minisql);
Lex.
bison: Versão GNU.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compilers
Produz um parser bottom-up para uma dada
gramática;
Usado para produzir compiladores para Pascal, C,
C++ entre outras;
Além disso, foi usado no desenvolvimento de:
bc(calculadora);
eqn & pic;
verificador de sintaxe SQL(minisql);
Lex.
bison: Versão GNU.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compilers
Produz um parser bottom-up para uma dada
gramática;
Usado para produzir compiladores para Pascal, C,
C++ entre outras;
Além disso, foi usado no desenvolvimento de:
bc(calculadora);
eqn & pic;
verificador de sintaxe SQL(minisql);
Lex.
bison: Versão GNU.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compilers
Produz um parser bottom-up para uma dada
gramática;
Usado para produzir compiladores para Pascal, C,
C++ entre outras;
Além disso, foi usado no desenvolvimento de:
bc(calculadora);
eqn & pic;
verificador de sintaxe SQL(minisql);
Lex.
bison: Versão GNU.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compilers
Produz um parser bottom-up para uma dada
gramática;
Usado para produzir compiladores para Pascal, C,
C++ entre outras;
Além disso, foi usado no desenvolvimento de:
bc(calculadora);
eqn & pic;
verificador de sintaxe SQL(minisql);
Lex.
bison: Versão GNU.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compilers
Produz um parser bottom-up para uma dada
gramática;
Usado para produzir compiladores para Pascal, C,
C++ entre outras;
Além disso, foi usado no desenvolvimento de:
bc(calculadora);
eqn & pic;
verificador de sintaxe SQL(minisql);
Lex.
bison: Versão GNU.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compilers
Produz um parser bottom-up para uma dada
gramática;
Usado para produzir compiladores para Pascal, C,
C++ entre outras;
Além disso, foi usado no desenvolvimento de:
bc(calculadora);
eqn & pic;
verificador de sintaxe SQL(minisql);
Lex.
bison: Versão GNU.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compilers
Produz um parser bottom-up para uma dada
gramática;
Usado para produzir compiladores para Pascal, C,
C++ entre outras;
Além disso, foi usado no desenvolvimento de:
bc(calculadora);
eqn & pic;
verificador de sintaxe SQL(minisql);
Lex.
bison: Versão GNU.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compilers
Produz um parser bottom-up para uma dada
gramática;
Usado para produzir compiladores para Pascal, C,
C++ entre outras;
Além disso, foi usado no desenvolvimento de:
bc(calculadora);
eqn & pic;
verificador de sintaxe SQL(minisql);
Lex.
bison: Versão GNU.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Sequência Básica Operacional
Arquivo contendo gramática desejada no
formato yacc.
Programa yacc.
Programa fonte C criado pelo yacc.
Compilador C.
Programa executável que faz a análise sintática
da gramática descrita em parse.y.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Sequência Básica Operacional
Arquivo contendo gramática desejada no
formato yacc.
Programa yacc.
Programa fonte C criado pelo yacc.
Compilador C.
Programa executável que faz a análise sintática
da gramática descrita em parse.y.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Sequência Básica Operacional
Arquivo contendo gramática desejada no
formato yacc.
Programa yacc.
Programa fonte C criado pelo yacc.
Compilador C.
Programa executável que faz a análise sintática
da gramática descrita em parse.y.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Sequência Básica Operacional
Arquivo contendo gramática desejada no
formato yacc.
Programa yacc.
Programa fonte C criado pelo yacc.
Compilador C.
Programa executável que faz a análise sintática
da gramática descrita em parse.y.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Sequência Básica Operacional
Arquivo contendo gramática desejada no
formato yacc.
Programa yacc.
Programa fonte C criado pelo yacc.
Compilador C.
Programa executável que faz a análise sintática
da gramática descrita em parse.y.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Sequência Básica Operacional
Arquivo contendo gramática desejada no
formato yacc.
Programa yacc.
Programa fonte C criado pelo yacc.
Compilador C.
Programa executável que faz a análise sintática
da gramática descrita em parse.y.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Exemplo de Uso
expr ::= expr + term | term
term ::= term * factor | factor
factor ::= ’(’ expr ’)’ | num | id
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Exemplo de Uso
expr ::= expr + term | term
term ::= term * factor | factor
factor ::= ’(’ expr ’)’ | num | id
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Formato do Arquivo
{Definições}
%%
{Regras}
%%
{Código Suplementar}
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Formato do Arquivo
{Definições}
%%
{Regras}
%%
{Código Suplementar}
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Seção de Regras
Normalmente escrita como segue:
expr : expr ’+’ term
| term
;
term : term ’*’ factor
| factor
;
factor : ’(’ expr ’)’
| ID
| NUM
;
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Seção de Regras
Normalmente escrita como segue:
expr : expr ’+’ term
| term
;
term : term ’*’ factor
| factor
;
factor : ’(’ expr ’)’
| ID
| NUM
;
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Seção de Regras
Normalmente escrita como segue:
expr : expr ’+’ term
| term
;
term : term ’*’ factor
| factor
;
factor : ’(’ expr ’)’
| ID
| NUM
;
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Seção de Definições
Normalmente escrita como segue:
%{
#include <stdio.h>
#include <stdlib.h>
%}
%token ID NUM
%start expr
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Seção de Definições
Normalmente escrita como segue:
%{
#include <stdio.h>
#include <stdlib.h>
%}
%token ID NUM
%start expr
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Seção de Definições
Normalmente escrita como segue:
%{
#include <stdio.h>
#include <stdlib.h>
%}
%token ID NUM
%start expr
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz uma função yylex();
yacc produz uma função yyparse();
yyparse() espera chamar uma yylex();
Como obter yylex()?
Escrever sua própria!
Usar lex/flex
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz uma função yylex();
yacc produz uma função yyparse();
yyparse() espera chamar uma yylex();
Como obter yylex()?
Escrever sua própria!
Usar lex/flex
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz uma função yylex();
yacc produz uma função yyparse();
yyparse() espera chamar uma yylex();
Como obter yylex()?
Escrever sua própria!
Usar lex/flex
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz uma função yylex();
yacc produz uma função yyparse();
yyparse() espera chamar uma yylex();
Como obter yylex()?
Escrever sua própria!
Usar lex/flex
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz uma função yylex();
yacc produz uma função yyparse();
yyparse() espera chamar uma yylex();
Como obter yylex()?
Escrever sua própria!
Usar lex/flex
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz uma função yylex();
yacc produz uma função yyparse();
yyparse() espera chamar uma yylex();
Como obter yylex()?
Escrever sua própria!
Usar lex/flex
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz uma função yylex();
yacc produz uma função yyparse();
yyparse() espera chamar uma yylex();
Como obter yylex()?
Escrever sua própria!
Usar lex/flex
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Construindo yylex()
Normalmente escrita como segue:
int yylex()
{
if(it’s a num)
return NUM;
else if(it’s an id)
return ID;
else if(parsing is done)
return 0;
else if(it’s an error)
return -1;
}
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Construindo yylex()
Normalmente escrita como segue:
int yylex()
{
if(it’s a num)
return NUM;
else if(it’s an id)
return ID;
else if(parsing is done)
return 0;
else if(it’s an error)
return -1;
}
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Construindo yylex()
Normalmente escrita como segue:
int yylex()
{
if(it’s a num)
return NUM;
else if(it’s an id)
return ID;
else if(parsing is done)
return 0;
else if(it’s an error)
return -1;
}
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Lex & YACC
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Lex & YACC - Exemplo de Uso
Suponha um arquivo lex scanner.l e um
arquivo yacc chamado decl.y.
Passos a serem feitos:
yacc -d decl.y
lex scanner.l
gcc -c lex.yy.c y.tab.c
gcc -o parser lex.yy.o y.tab.o -ll
(Nota) scanner deve incluir na seção de definições:
#include "y.tab.h"
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Lex & YACC - Exemplo de Uso
Suponha um arquivo lex scanner.l e um
arquivo yacc chamado decl.y.
Passos a serem feitos:
yacc -d decl.y
lex scanner.l
gcc -c lex.yy.c y.tab.c
gcc -o parser lex.yy.o y.tab.o -ll
(Nota) scanner deve incluir na seção de definições:
#include "y.tab.h"
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Lex & YACC - Exemplo de Uso
Suponha um arquivo lex scanner.l e um
arquivo yacc chamado decl.y.
Passos a serem feitos:
yacc -d decl.y
lex scanner.l
gcc -c lex.yy.c y.tab.c
gcc -o parser lex.yy.o y.tab.o -ll
(Nota) scanner deve incluir na seção de definições:
#include "y.tab.h"
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Lex & YACC - Exemplo de Uso
Suponha um arquivo lex scanner.l e um
arquivo yacc chamado decl.y.
Passos a serem feitos:
yacc -d decl.y
lex scanner.l
gcc -c lex.yy.c y.tab.c
gcc -o parser lex.yy.o y.tab.o -ll
(Nota) scanner deve incluir na seção de definições:
#include "y.tab.h"
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regras podem ser recursivas;
As regras não podem ser ambíguas;
A ferramenta usa um parser bottom-up Shift/
Reduce;
Solicita um token
Empilha
Redução?
Sim: reduz usando a regras correspondentes
Não: pega outro token
yacc -v gram.y gera a tabela de estados, em
y.output
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regras podem ser recursivas;
As regras não podem ser ambíguas;
A ferramenta usa um parser bottom-up Shift/
Reduce;
Solicita um token
Empilha
Redução?
Sim: reduz usando a regras correspondentes
Não: pega outro token
yacc -v gram.y gera a tabela de estados, em
y.output
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regras podem ser recursivas;
As regras não podem ser ambíguas;
A ferramenta usa um parser bottom-up Shift/
Reduce;
Solicita um token
Empilha
Redução?
Sim: reduz usando a regras correspondentes
Não: pega outro token
yacc -v gram.y gera a tabela de estados, em
y.output
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regras podem ser recursivas;
As regras não podem ser ambíguas;
A ferramenta usa um parser bottom-up Shift/
Reduce;
Solicita um token
Empilha
Redução?
Sim: reduz usando a regras correspondentes
Não: pega outro token
yacc -v gram.y gera a tabela de estados, em
y.output
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regras podem ser recursivas;
As regras não podem ser ambíguas;
A ferramenta usa um parser bottom-up Shift/
Reduce;
Solicita um token
Empilha
Redução?
Sim: reduz usando a regras correspondentes
Não: pega outro token
yacc -v gram.y gera a tabela de estados, em
y.output
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regras podem ser recursivas;
As regras não podem ser ambíguas;
A ferramenta usa um parser bottom-up Shift/
Reduce;
Solicita um token
Empilha
Redução?
Sim: reduz usando a regras correspondentes
Não: pega outro token
yacc -v gram.y gera a tabela de estados, em
y.output
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regras podem ser recursivas;
As regras não podem ser ambíguas;
A ferramenta usa um parser bottom-up Shift/
Reduce;
Solicita um token
Empilha
Redução?
Sim: reduz usando a regras correspondentes
Não: pega outro token
yacc -v gram.y gera a tabela de estados, em
y.output
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regras podem ser recursivas;
As regras não podem ser ambíguas;
A ferramenta usa um parser bottom-up Shift/
Reduce;
Solicita um token
Empilha
Redução?
Sim: reduz usando a regras correspondentes
Não: pega outro token
yacc -v gram.y gera a tabela de estados, em
y.output
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regras podem ser recursivas;
As regras não podem ser ambíguas;
A ferramenta usa um parser bottom-up Shift/
Reduce;
Solicita um token
Empilha
Redução?
Sim: reduz usando a regras correspondentes
Não: pega outro token
yacc -v gram.y gera a tabela de estados, em
y.output
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regras podem ser recursivas;
As regras não podem ser ambíguas;
A ferramenta usa um parser bottom-up Shift/
Reduce;
Solicita um token
Empilha
Redução?
Sim: reduz usando a regras correspondentes
Não: pega outro token
yacc -v gram.y gera a tabela de estados, em
y.output
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símbolo tem um valor associado (atributo)
Pode ser uma quantidade numérica no caso de um número (Ex.:42)
Pode ser um ponteiro para um string ("Hello, World!")
Pode ser um ponteiro para uma tabela de símbolos.
Ao usarmos lex junto com o YACC, o valor é colocado
em yylval
Em situações complexas, yylval é uma union.
Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM}
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símbolo tem um valor associado (atributo)
Pode ser uma quantidade numérica no caso de um número (Ex.:42)
Pode ser um ponteiro para um string ("Hello, World!")
Pode ser um ponteiro para uma tabela de símbolos.
Ao usarmos lex junto com o YACC, o valor é colocado
em yylval
Em situações complexas, yylval é uma union.
Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM}
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símbolo tem um valor associado (atributo)
Pode ser uma quantidade numérica no caso de um número (Ex.:42)
Pode ser um ponteiro para um string ("Hello, World!")
Pode ser um ponteiro para uma tabela de símbolos.
Ao usarmos lex junto com o YACC, o valor é colocado
em yylval
Em situações complexas, yylval é uma union.
Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM}
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símbolo tem um valor associado (atributo)
Pode ser uma quantidade numérica no caso de um número (Ex.:42)
Pode ser um ponteiro para um string ("Hello, World!")
Pode ser um ponteiro para uma tabela de símbolos.
Ao usarmos lex junto com o YACC, o valor é colocado
em yylval
Em situações complexas, yylval é uma union.
Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM}
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símbolo tem um valor associado (atributo)
Pode ser uma quantidade numérica no caso de um número (Ex.:42)
Pode ser um ponteiro para um string ("Hello, World!")
Pode ser um ponteiro para uma tabela de símbolos.
Ao usarmos lex junto com o YACC, o valor é colocado
em yylval
Em situações complexas, yylval é uma union.
Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM}
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símbolo tem um valor associado (atributo)
Pode ser uma quantidade numérica no caso de um número (Ex.:42)
Pode ser um ponteiro para um string ("Hello, World!")
Pode ser um ponteiro para uma tabela de símbolos.
Ao usarmos lex junto com o YACC, o valor é colocado
em yylval
Em situações complexas, yylval é uma union.
Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM}
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símbolo tem um valor associado (atributo)
Pode ser uma quantidade numérica no caso de um número (Ex.:42)
Pode ser um ponteiro para um string ("Hello, World!")
Pode ser um ponteiro para uma tabela de símbolos.
Ao usarmos lex junto com o YACC, o valor é colocado
em yylval
Em situações complexas, yylval é uma union.
Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM}
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símbolo tem um valor associado (atributo)
Pode ser uma quantidade numérica no caso de um número (Ex.:42)
Pode ser um ponteiro para um string ("Hello, World!")
Pode ser um ponteiro para uma tabela de símbolos.
Ao usarmos lex junto com o YACC, o valor é colocado
em yylval
Em situações complexas, yylval é uma union.
Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM}
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Conclusões
Balanço Geral da Experiência
O Que Foi Aprendido?
Escrever um compilador é difícil: requer tempo e
esforço!
Scanners e parsers podem ser construídos por métodos
automáticos.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Conclusões
Balanço Geral da Experiência
O Que Foi Aprendido?
Escrever um compilador é difícil: requer tempo e
esforço!
Scanners e parsers podem ser construídos por métodos
automáticos.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Conclusões
Balanço Geral da Experiência
O Que Foi Aprendido?
Escrever um compilador é difícil: requer tempo e
esforço!
Scanners e parsers podem ser construídos por métodos
automáticos.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Conclusões
Balanço Geral da Experiência
O Que Foi Aprendido?
Escrever um compilador é difícil: requer tempo e
esforço!
Scanners e parsers podem ser construídos por métodos
automáticos.
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Agradecimentos
Grato Pela Atenção!
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Contatos
Como Contactar o Grupo?
Ailton Felix - afdlf2@gmail.com
Bruno Normande - normandelins@gmail.com
Michel Alves - michel.mas@gmail.com
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Contatos
Como Contactar o Grupo?
Ailton Felix - afdlf2@gmail.com
Bruno Normande - normandelins@gmail.com
Michel Alves - michel.mas@gmail.com
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Contatos
Como Contactar o Grupo?
Ailton Felix - afdlf2@gmail.com
Bruno Normande - normandelins@gmail.com
Michel Alves - michel.mas@gmail.com
Bacharelado em Ciência da Computação Disciplina: Compiladores
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Contatos
Como Contactar o Grupo?
Ailton Felix - afdlf2@gmail.com
Bruno Normande - normandelins@gmail.com
Michel Alves - michel.mas@gmail.com
Bacharelado em Ciência da Computação Disciplina: Compiladores

Más contenido relacionado

Destacado

Compilador analise lexica
Compilador analise lexicaCompilador analise lexica
Compilador analise lexicaAdilmar Dantas
 
Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Maellson Marques
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresAnderson Favaro
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
Compilador-Analisador Léxico com FLEX + Linguagem C
Compilador-Analisador Léxico com FLEX + Linguagem C Compilador-Analisador Léxico com FLEX + Linguagem C
Compilador-Analisador Léxico com FLEX + Linguagem C Aldisio Medeiros
 

Destacado (7)

poscomp-Gabarito ano2011
poscomp-Gabarito ano2011poscomp-Gabarito ano2011
poscomp-Gabarito ano2011
 
Compilador analise lexica
Compilador analise lexicaCompilador analise lexica
Compilador analise lexica
 
Gcc
GccGcc
Gcc
 
Como Construir um Compilador cap-1
Como Construir um Compilador cap-1Como Construir um Compilador cap-1
Como Construir um Compilador cap-1
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - Compiladores
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
Compilador-Analisador Léxico com FLEX + Linguagem C
Compilador-Analisador Léxico com FLEX + Linguagem C Compilador-Analisador Léxico com FLEX + Linguagem C
Compilador-Analisador Léxico com FLEX + Linguagem C
 

Más de Michel Alves

Texture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU UseTexture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU UseMichel Alves
 
Intelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesIntelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesMichel Alves
 
A Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresA Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresMichel Alves
 
Effectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesEffectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesMichel Alves
 
Introduction to Kernel Functions
Introduction to Kernel FunctionsIntroduction to Kernel Functions
Introduction to Kernel FunctionsMichel Alves
 
About Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceAbout Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceMichel Alves
 
Color Harmonization - Results
Color Harmonization - ResultsColor Harmonization - Results
Color Harmonization - ResultsMichel Alves
 
Wave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseWave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseMichel Alves
 
Similarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexSimilarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexMichel Alves
 
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationQualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationMichel Alves
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsMichel Alves
 
Month Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMonth Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMichel Alves
 
Color Palettes in R
Color Palettes in RColor Palettes in R
Color Palettes in RMichel Alves
 
Hue Wheel Prototype
Hue Wheel PrototypeHue Wheel Prototype
Hue Wheel PrototypeMichel Alves
 
Triangle Mesh Plot
Triangle Mesh PlotTriangle Mesh Plot
Triangle Mesh PlotMichel Alves
 
Capacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesCapacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesMichel Alves
 
Capacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogCapacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogMichel Alves
 

Más de Michel Alves (20)

Texture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU UseTexture Synthesis: An Approach Based on GPU Use
Texture Synthesis: An Approach Based on GPU Use
 
Intelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color PalettesIntelligent Transfer of Thematic Harmonic Color Palettes
Intelligent Transfer of Thematic Harmonic Color Palettes
 
A Framework for Harmonic Color Measures
A Framework for Harmonic Color MeasuresA Framework for Harmonic Color Measures
A Framework for Harmonic Color Measures
 
Effectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment IndexesEffectiveness of Image Quality Assessment Indexes
Effectiveness of Image Quality Assessment Indexes
 
Introduction to Kernel Functions
Introduction to Kernel FunctionsIntroduction to Kernel Functions
Introduction to Kernel Functions
 
About Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV SpaceAbout Perception and Hue Histograms in HSV Space
About Perception and Hue Histograms in HSV Space
 
Color Harmonization - Results
Color Harmonization - ResultsColor Harmonization - Results
Color Harmonization - Results
 
Wave Simulation Using Perlin Noise
Wave Simulation Using Perlin NoiseWave Simulation Using Perlin Noise
Wave Simulation Using Perlin Noise
 
Similarity Maps Using SSIM Index
Similarity Maps Using SSIM IndexSimilarity Maps Using SSIM Index
Similarity Maps Using SSIM Index
 
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color HarmonizationQualifying Exam - Image-Based Reconstruction With Color Harmonization
Qualifying Exam - Image-Based Reconstruction With Color Harmonization
 
TMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and ReportsTMS - Schedule of Presentations and Reports
TMS - Schedule of Presentations and Reports
 
Month Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJMonth Presentations Schedule - March/2015 - LCG/UFRJ
Month Presentations Schedule - March/2015 - LCG/UFRJ
 
Color Palettes in R
Color Palettes in RColor Palettes in R
Color Palettes in R
 
Sigmoid Curve Erf
Sigmoid Curve ErfSigmoid Curve Erf
Sigmoid Curve Erf
 
Hue Wheel Prototype
Hue Wheel PrototypeHue Wheel Prototype
Hue Wheel Prototype
 
Cosine Curve
Cosine CurveCosine Curve
Cosine Curve
 
Triangle Mesh Plot
Triangle Mesh PlotTriangle Mesh Plot
Triangle Mesh Plot
 
Triangle Plot
Triangle PlotTriangle Plot
Triangle Plot
 
Capacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video SlidesCapacity-Constrained Point Distributions :: Video Slides
Capacity-Constrained Point Distributions :: Video Slides
 
Capacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function CatalogCapacity-Constrained Point Distributions :: Density Function Catalog
Capacity-Constrained Point Distributions :: Density Function Catalog
 

Último

Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfRavenaSales1
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfHELENO FAVACHO
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfWagnerCamposCEA
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...HELENO FAVACHO
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 

Último (20)

Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 

Compilers - Using Lex and YACC

  • 1. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Ferramentas Lex & YACC Compiladores Ailton Felix :: Bruno Normande :: Michel Alves Universidade Federal de Alagoas, Campus A. C. Simões Tabuleiro do Martins - Maceió - AL, CEP: 57072-970 Docente Responsável: Prof. Msc. Alcino Dall’Igna Júnior 11 de Dezembro 2010 Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 2. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Sumário Tópicos Centrais da Explanação Lex/Flex. YACC/Bison. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 3. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Sumário Tópicos Centrais da Explanação Lex/Flex. YACC/Bison. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 4. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Sumário Tópicos Centrais da Explanação Lex/Flex. YACC/Bison. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 5. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex/Flex Gerador de Analisadores Léxicos Ferramentas no estilo Lex utilizam uma especificação baseada em expressões regulares. A partir dessa definição, Lex gera automaticamente um programa que simula o comportamento de autômatos equivalentes às expressões fornecidas. O programa lê uma entrada e verifica se essa entrada está no formato especificado. Enquanto verifica a entrada, pode executar algumas ações (trechos de programa) desejadas. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 6. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex/Flex Gerador de Analisadores Léxicos Ferramentas no estilo Lex utilizam uma especificação baseada em expressões regulares. A partir dessa definição, Lex gera automaticamente um programa que simula o comportamento de autômatos equivalentes às expressões fornecidas. O programa lê uma entrada e verifica se essa entrada está no formato especificado. Enquanto verifica a entrada, pode executar algumas ações (trechos de programa) desejadas. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 7. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex/Flex Gerador de Analisadores Léxicos Ferramentas no estilo Lex utilizam uma especificação baseada em expressões regulares. A partir dessa definição, Lex gera automaticamente um programa que simula o comportamento de autômatos equivalentes às expressões fornecidas. O programa lê uma entrada e verifica se essa entrada está no formato especificado. Enquanto verifica a entrada, pode executar algumas ações (trechos de programa) desejadas. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 8. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex/Flex Gerador de Analisadores Léxicos Ferramentas no estilo Lex utilizam uma especificação baseada em expressões regulares. A partir dessa definição, Lex gera automaticamente um programa que simula o comportamento de autômatos equivalentes às expressões fornecidas. O programa lê uma entrada e verifica se essa entrada está no formato especificado. Enquanto verifica a entrada, pode executar algumas ações (trechos de programa) desejadas. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 9. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex/Flex Gerador de Analisadores Léxicos Ferramentas no estilo Lex utilizam uma especificação baseada em expressões regulares. A partir dessa definição, Lex gera automaticamente um programa que simula o comportamento de autômatos equivalentes às expressões fornecidas. O programa lê uma entrada e verifica se essa entrada está no formato especificado. Enquanto verifica a entrada, pode executar algumas ações (trechos de programa) desejadas. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 10. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex/Flex Principais Utilizações Transformações simples e extração de padrões em textos. Separação da entrada em unidades léxicas, como preparação para um analisador sintático. Os exemplos utilizados nesta apresentação seguirão o formato do programa Flex. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 11. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex/Flex Principais Utilizações Transformações simples e extração de padrões em textos. Separação da entrada em unidades léxicas, como preparação para um analisador sintático. Os exemplos utilizados nesta apresentação seguirão o formato do programa Flex. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 12. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex/Flex Principais Utilizações Transformações simples e extração de padrões em textos. Separação da entrada em unidades léxicas, como preparação para um analisador sintático. Os exemplos utilizados nesta apresentação seguirão o formato do programa Flex. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 13. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex/Flex Principais Utilizações Transformações simples e extração de padrões em textos. Separação da entrada em unidades léxicas, como preparação para um analisador sintático. Os exemplos utilizados nesta apresentação seguirão o formato do programa Flex. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 14. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex - Fontes Um texto fonte para LEX é composto de: Lista de expressões regulares; Fragmentos de programa associados a cada expressão. Quando o fonte é submetido ao LEX, um programa é automaticamente gerado. Esse programa: Lê um arquivo de entrada; Particiona a entrada em cadeias que “casam” com as expressões regulares definidas; Executa os fragmentos de programa associados às expressões “casadas” e escreve no arquivo de saída. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 15. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex - Fontes Um texto fonte para LEX é composto de: Lista de expressões regulares; Fragmentos de programa associados a cada expressão. Quando o fonte é submetido ao LEX, um programa é automaticamente gerado. Esse programa: Lê um arquivo de entrada; Particiona a entrada em cadeias que “casam” com as expressões regulares definidas; Executa os fragmentos de programa associados às expressões “casadas” e escreve no arquivo de saída. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 16. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex - Fontes Um texto fonte para LEX é composto de: Lista de expressões regulares; Fragmentos de programa associados a cada expressão. Quando o fonte é submetido ao LEX, um programa é automaticamente gerado. Esse programa: Lê um arquivo de entrada; Particiona a entrada em cadeias que “casam” com as expressões regulares definidas; Executa os fragmentos de programa associados às expressões “casadas” e escreve no arquivo de saída. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 17. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex - Fontes Um texto fonte para LEX é composto de: Lista de expressões regulares; Fragmentos de programa associados a cada expressão. Quando o fonte é submetido ao LEX, um programa é automaticamente gerado. Esse programa: Lê um arquivo de entrada; Particiona a entrada em cadeias que “casam” com as expressões regulares definidas; Executa os fragmentos de programa associados às expressões “casadas” e escreve no arquivo de saída. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 18. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex - Fontes Um texto fonte para LEX é composto de: Lista de expressões regulares; Fragmentos de programa associados a cada expressão. Quando o fonte é submetido ao LEX, um programa é automaticamente gerado. Esse programa: Lê um arquivo de entrada; Particiona a entrada em cadeias que “casam” com as expressões regulares definidas; Executa os fragmentos de programa associados às expressões “casadas” e escreve no arquivo de saída. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 19. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex - Fontes Um texto fonte para LEX é composto de: Lista de expressões regulares; Fragmentos de programa associados a cada expressão. Quando o fonte é submetido ao LEX, um programa é automaticamente gerado. Esse programa: Lê um arquivo de entrada; Particiona a entrada em cadeias que “casam” com as expressões regulares definidas; Executa os fragmentos de programa associados às expressões “casadas” e escreve no arquivo de saída. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 20. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex - Fontes Um texto fonte para LEX é composto de: Lista de expressões regulares; Fragmentos de programa associados a cada expressão. Quando o fonte é submetido ao LEX, um programa é automaticamente gerado. Esse programa: Lê um arquivo de entrada; Particiona a entrada em cadeias que “casam” com as expressões regulares definidas; Executa os fragmentos de programa associados às expressões “casadas” e escreve no arquivo de saída. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 21. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex - Funcionamento Esquema de Funcionamento Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 22. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex - Exemplo com Flex Um Exemplo Usando o Gerador Flex O fonte é dividido em três seções separadas por “%%”: definições, regras e subrotinas. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 23. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Lex - Exemplo com Flex Um Exemplo Usando o Gerador Flex O fonte é dividido em três seções separadas por “%%”: definições, regras e subrotinas. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 24. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC/Bison Geradores de Analisadores Sintáticos O YACC/BISON serve para gerar automaticamente programas para análise sintática (usualmente em “C”) de códigos fonte de uma linguagem específica qualquer. Estas ferramentas possuem como entrada uma descrição de uma gramática, que especifica uma determinada linguagem, e gera como saída um programa em C ou C++ que será o parser desta linguagem. O parser gerado pelo YACC/BISON permite realizar apenas a validação do código fonte, indicando se está correto sintaticamente ou não. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 25. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC/Bison Geradores de Analisadores Sintáticos O YACC/BISON serve para gerar automaticamente programas para análise sintática (usualmente em “C”) de códigos fonte de uma linguagem específica qualquer. Estas ferramentas possuem como entrada uma descrição de uma gramática, que especifica uma determinada linguagem, e gera como saída um programa em C ou C++ que será o parser desta linguagem. O parser gerado pelo YACC/BISON permite realizar apenas a validação do código fonte, indicando se está correto sintaticamente ou não. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 26. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC/Bison Geradores de Analisadores Sintáticos O YACC/BISON serve para gerar automaticamente programas para análise sintática (usualmente em “C”) de códigos fonte de uma linguagem específica qualquer. Estas ferramentas possuem como entrada uma descrição de uma gramática, que especifica uma determinada linguagem, e gera como saída um programa em C ou C++ que será o parser desta linguagem. O parser gerado pelo YACC/BISON permite realizar apenas a validação do código fonte, indicando se está correto sintaticamente ou não. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 27. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC/Bison Geradores de Analisadores Sintáticos O YACC/BISON serve para gerar automaticamente programas para análise sintática (usualmente em “C”) de códigos fonte de uma linguagem específica qualquer. Estas ferramentas possuem como entrada uma descrição de uma gramática, que especifica uma determinada linguagem, e gera como saída um programa em C ou C++ que será o parser desta linguagem. O parser gerado pelo YACC/BISON permite realizar apenas a validação do código fonte, indicando se está correto sintaticamente ou não. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 28. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC/Bison Flex & Bison Integrados Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 29. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Yet Another Compiler-of-Compilers Produz um parser bottom-up para uma dada gramática; Usado para produzir compiladores para Pascal, C, C++ entre outras; Além disso, foi usado no desenvolvimento de: bc(calculadora); eqn & pic; verificador de sintaxe SQL(minisql); Lex. bison: Versão GNU. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 30. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Yet Another Compiler-of-Compilers Produz um parser bottom-up para uma dada gramática; Usado para produzir compiladores para Pascal, C, C++ entre outras; Além disso, foi usado no desenvolvimento de: bc(calculadora); eqn & pic; verificador de sintaxe SQL(minisql); Lex. bison: Versão GNU. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 31. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Yet Another Compiler-of-Compilers Produz um parser bottom-up para uma dada gramática; Usado para produzir compiladores para Pascal, C, C++ entre outras; Além disso, foi usado no desenvolvimento de: bc(calculadora); eqn & pic; verificador de sintaxe SQL(minisql); Lex. bison: Versão GNU. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 32. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Yet Another Compiler-of-Compilers Produz um parser bottom-up para uma dada gramática; Usado para produzir compiladores para Pascal, C, C++ entre outras; Além disso, foi usado no desenvolvimento de: bc(calculadora); eqn & pic; verificador de sintaxe SQL(minisql); Lex. bison: Versão GNU. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 33. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Yet Another Compiler-of-Compilers Produz um parser bottom-up para uma dada gramática; Usado para produzir compiladores para Pascal, C, C++ entre outras; Além disso, foi usado no desenvolvimento de: bc(calculadora); eqn & pic; verificador de sintaxe SQL(minisql); Lex. bison: Versão GNU. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 34. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Yet Another Compiler-of-Compilers Produz um parser bottom-up para uma dada gramática; Usado para produzir compiladores para Pascal, C, C++ entre outras; Além disso, foi usado no desenvolvimento de: bc(calculadora); eqn & pic; verificador de sintaxe SQL(minisql); Lex. bison: Versão GNU. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 35. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Yet Another Compiler-of-Compilers Produz um parser bottom-up para uma dada gramática; Usado para produzir compiladores para Pascal, C, C++ entre outras; Além disso, foi usado no desenvolvimento de: bc(calculadora); eqn & pic; verificador de sintaxe SQL(minisql); Lex. bison: Versão GNU. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 36. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Yet Another Compiler-of-Compilers Produz um parser bottom-up para uma dada gramática; Usado para produzir compiladores para Pascal, C, C++ entre outras; Além disso, foi usado no desenvolvimento de: bc(calculadora); eqn & pic; verificador de sintaxe SQL(minisql); Lex. bison: Versão GNU. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 37. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Yet Another Compiler-of-Compilers Produz um parser bottom-up para uma dada gramática; Usado para produzir compiladores para Pascal, C, C++ entre outras; Além disso, foi usado no desenvolvimento de: bc(calculadora); eqn & pic; verificador de sintaxe SQL(minisql); Lex. bison: Versão GNU. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 38. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Sequência Básica Operacional Arquivo contendo gramática desejada no formato yacc. Programa yacc. Programa fonte C criado pelo yacc. Compilador C. Programa executável que faz a análise sintática da gramática descrita em parse.y. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 39. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Sequência Básica Operacional Arquivo contendo gramática desejada no formato yacc. Programa yacc. Programa fonte C criado pelo yacc. Compilador C. Programa executável que faz a análise sintática da gramática descrita em parse.y. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 40. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Sequência Básica Operacional Arquivo contendo gramática desejada no formato yacc. Programa yacc. Programa fonte C criado pelo yacc. Compilador C. Programa executável que faz a análise sintática da gramática descrita em parse.y. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 41. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Sequência Básica Operacional Arquivo contendo gramática desejada no formato yacc. Programa yacc. Programa fonte C criado pelo yacc. Compilador C. Programa executável que faz a análise sintática da gramática descrita em parse.y. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 42. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Sequência Básica Operacional Arquivo contendo gramática desejada no formato yacc. Programa yacc. Programa fonte C criado pelo yacc. Compilador C. Programa executável que faz a análise sintática da gramática descrita em parse.y. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 43. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Sequência Básica Operacional Arquivo contendo gramática desejada no formato yacc. Programa yacc. Programa fonte C criado pelo yacc. Compilador C. Programa executável que faz a análise sintática da gramática descrita em parse.y. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 44. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Exemplo de Uso expr ::= expr + term | term term ::= term * factor | factor factor ::= ’(’ expr ’)’ | num | id Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 45. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Exemplo de Uso expr ::= expr + term | term term ::= term * factor | factor factor ::= ’(’ expr ’)’ | num | id Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 46. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Formato do Arquivo {Definições} %% {Regras} %% {Código Suplementar} Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 47. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Formato do Arquivo {Definições} %% {Regras} %% {Código Suplementar} Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 48. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Seção de Regras Normalmente escrita como segue: expr : expr ’+’ term | term ; term : term ’*’ factor | factor ; factor : ’(’ expr ’)’ | ID | NUM ; Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 49. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Seção de Regras Normalmente escrita como segue: expr : expr ’+’ term | term ; term : term ’*’ factor | factor ; factor : ’(’ expr ’)’ | ID | NUM ; Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 50. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Seção de Regras Normalmente escrita como segue: expr : expr ’+’ term | term ; term : term ’*’ factor | factor ; factor : ’(’ expr ’)’ | ID | NUM ; Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 51. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Seção de Definições Normalmente escrita como segue: %{ #include <stdio.h> #include <stdlib.h> %} %token ID NUM %start expr Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 52. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Seção de Definições Normalmente escrita como segue: %{ #include <stdio.h> #include <stdlib.h> %} %token ID NUM %start expr Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 53. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Seção de Definições Normalmente escrita como segue: %{ #include <stdio.h> #include <stdlib.h> %} %token ID NUM %start expr Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 54. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Observações lex/flex produz uma função yylex(); yacc produz uma função yyparse(); yyparse() espera chamar uma yylex(); Como obter yylex()? Escrever sua própria! Usar lex/flex Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 55. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Observações lex/flex produz uma função yylex(); yacc produz uma função yyparse(); yyparse() espera chamar uma yylex(); Como obter yylex()? Escrever sua própria! Usar lex/flex Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 56. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Observações lex/flex produz uma função yylex(); yacc produz uma função yyparse(); yyparse() espera chamar uma yylex(); Como obter yylex()? Escrever sua própria! Usar lex/flex Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 57. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Observações lex/flex produz uma função yylex(); yacc produz uma função yyparse(); yyparse() espera chamar uma yylex(); Como obter yylex()? Escrever sua própria! Usar lex/flex Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 58. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Observações lex/flex produz uma função yylex(); yacc produz uma função yyparse(); yyparse() espera chamar uma yylex(); Como obter yylex()? Escrever sua própria! Usar lex/flex Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 59. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Observações lex/flex produz uma função yylex(); yacc produz uma função yyparse(); yyparse() espera chamar uma yylex(); Como obter yylex()? Escrever sua própria! Usar lex/flex Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 60. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Observações lex/flex produz uma função yylex(); yacc produz uma função yyparse(); yyparse() espera chamar uma yylex(); Como obter yylex()? Escrever sua própria! Usar lex/flex Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 61. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Construindo yylex() Normalmente escrita como segue: int yylex() { if(it’s a num) return NUM; else if(it’s an id) return ID; else if(parsing is done) return 0; else if(it’s an error) return -1; } Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 62. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Construindo yylex() Normalmente escrita como segue: int yylex() { if(it’s a num) return NUM; else if(it’s an id) return ID; else if(parsing is done) return 0; else if(it’s an error) return -1; } Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 63. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Construindo yylex() Normalmente escrita como segue: int yylex() { if(it’s a num) return NUM; else if(it’s an id) return ID; else if(parsing is done) return 0; else if(it’s an error) return -1; } Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 64. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Lex & YACC Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 65. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Lex & YACC - Exemplo de Uso Suponha um arquivo lex scanner.l e um arquivo yacc chamado decl.y. Passos a serem feitos: yacc -d decl.y lex scanner.l gcc -c lex.yy.c y.tab.c gcc -o parser lex.yy.o y.tab.o -ll (Nota) scanner deve incluir na seção de definições: #include "y.tab.h" Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 66. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Lex & YACC - Exemplo de Uso Suponha um arquivo lex scanner.l e um arquivo yacc chamado decl.y. Passos a serem feitos: yacc -d decl.y lex scanner.l gcc -c lex.yy.c y.tab.c gcc -o parser lex.yy.o y.tab.o -ll (Nota) scanner deve incluir na seção de definições: #include "y.tab.h" Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 67. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Lex & YACC - Exemplo de Uso Suponha um arquivo lex scanner.l e um arquivo yacc chamado decl.y. Passos a serem feitos: yacc -d decl.y lex scanner.l gcc -c lex.yy.c y.tab.c gcc -o parser lex.yy.o y.tab.o -ll (Nota) scanner deve incluir na seção de definições: #include "y.tab.h" Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 68. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Lex & YACC - Exemplo de Uso Suponha um arquivo lex scanner.l e um arquivo yacc chamado decl.y. Passos a serem feitos: yacc -d decl.y lex scanner.l gcc -c lex.yy.c y.tab.c gcc -o parser lex.yy.o y.tab.o -ll (Nota) scanner deve incluir na seção de definições: #include "y.tab.h" Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 69. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Em Relação as Regras As regras podem ser recursivas; As regras não podem ser ambíguas; A ferramenta usa um parser bottom-up Shift/ Reduce; Solicita um token Empilha Redução? Sim: reduz usando a regras correspondentes Não: pega outro token yacc -v gram.y gera a tabela de estados, em y.output Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 70. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Em Relação as Regras As regras podem ser recursivas; As regras não podem ser ambíguas; A ferramenta usa um parser bottom-up Shift/ Reduce; Solicita um token Empilha Redução? Sim: reduz usando a regras correspondentes Não: pega outro token yacc -v gram.y gera a tabela de estados, em y.output Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 71. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Em Relação as Regras As regras podem ser recursivas; As regras não podem ser ambíguas; A ferramenta usa um parser bottom-up Shift/ Reduce; Solicita um token Empilha Redução? Sim: reduz usando a regras correspondentes Não: pega outro token yacc -v gram.y gera a tabela de estados, em y.output Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 72. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Em Relação as Regras As regras podem ser recursivas; As regras não podem ser ambíguas; A ferramenta usa um parser bottom-up Shift/ Reduce; Solicita um token Empilha Redução? Sim: reduz usando a regras correspondentes Não: pega outro token yacc -v gram.y gera a tabela de estados, em y.output Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 73. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Em Relação as Regras As regras podem ser recursivas; As regras não podem ser ambíguas; A ferramenta usa um parser bottom-up Shift/ Reduce; Solicita um token Empilha Redução? Sim: reduz usando a regras correspondentes Não: pega outro token yacc -v gram.y gera a tabela de estados, em y.output Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 74. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Em Relação as Regras As regras podem ser recursivas; As regras não podem ser ambíguas; A ferramenta usa um parser bottom-up Shift/ Reduce; Solicita um token Empilha Redução? Sim: reduz usando a regras correspondentes Não: pega outro token yacc -v gram.y gera a tabela de estados, em y.output Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 75. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Em Relação as Regras As regras podem ser recursivas; As regras não podem ser ambíguas; A ferramenta usa um parser bottom-up Shift/ Reduce; Solicita um token Empilha Redução? Sim: reduz usando a regras correspondentes Não: pega outro token yacc -v gram.y gera a tabela de estados, em y.output Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 76. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Em Relação as Regras As regras podem ser recursivas; As regras não podem ser ambíguas; A ferramenta usa um parser bottom-up Shift/ Reduce; Solicita um token Empilha Redução? Sim: reduz usando a regras correspondentes Não: pega outro token yacc -v gram.y gera a tabela de estados, em y.output Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 77. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Em Relação as Regras As regras podem ser recursivas; As regras não podem ser ambíguas; A ferramenta usa um parser bottom-up Shift/ Reduce; Solicita um token Empilha Redução? Sim: reduz usando a regras correspondentes Não: pega outro token yacc -v gram.y gera a tabela de estados, em y.output Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 78. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC Em Relação as Regras As regras podem ser recursivas; As regras não podem ser ambíguas; A ferramenta usa um parser bottom-up Shift/ Reduce; Solicita um token Empilha Redução? Sim: reduz usando a regras correspondentes Não: pega outro token yacc -v gram.y gera a tabela de estados, em y.output Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 79. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC A Volta do Atributo Cada símbolo tem um valor associado (atributo) Pode ser uma quantidade numérica no caso de um número (Ex.:42) Pode ser um ponteiro para um string ("Hello, World!") Pode ser um ponteiro para uma tabela de símbolos. Ao usarmos lex junto com o YACC, o valor é colocado em yylval Em situações complexas, yylval é uma union. Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM} Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 80. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC A Volta do Atributo Cada símbolo tem um valor associado (atributo) Pode ser uma quantidade numérica no caso de um número (Ex.:42) Pode ser um ponteiro para um string ("Hello, World!") Pode ser um ponteiro para uma tabela de símbolos. Ao usarmos lex junto com o YACC, o valor é colocado em yylval Em situações complexas, yylval é uma union. Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM} Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 81. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC A Volta do Atributo Cada símbolo tem um valor associado (atributo) Pode ser uma quantidade numérica no caso de um número (Ex.:42) Pode ser um ponteiro para um string ("Hello, World!") Pode ser um ponteiro para uma tabela de símbolos. Ao usarmos lex junto com o YACC, o valor é colocado em yylval Em situações complexas, yylval é uma union. Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM} Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 82. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC A Volta do Atributo Cada símbolo tem um valor associado (atributo) Pode ser uma quantidade numérica no caso de um número (Ex.:42) Pode ser um ponteiro para um string ("Hello, World!") Pode ser um ponteiro para uma tabela de símbolos. Ao usarmos lex junto com o YACC, o valor é colocado em yylval Em situações complexas, yylval é uma union. Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM} Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 83. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC A Volta do Atributo Cada símbolo tem um valor associado (atributo) Pode ser uma quantidade numérica no caso de um número (Ex.:42) Pode ser um ponteiro para um string ("Hello, World!") Pode ser um ponteiro para uma tabela de símbolos. Ao usarmos lex junto com o YACC, o valor é colocado em yylval Em situações complexas, yylval é uma union. Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM} Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 84. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC A Volta do Atributo Cada símbolo tem um valor associado (atributo) Pode ser uma quantidade numérica no caso de um número (Ex.:42) Pode ser um ponteiro para um string ("Hello, World!") Pode ser um ponteiro para uma tabela de símbolos. Ao usarmos lex junto com o YACC, o valor é colocado em yylval Em situações complexas, yylval é uma union. Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM} Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 85. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC A Volta do Atributo Cada símbolo tem um valor associado (atributo) Pode ser uma quantidade numérica no caso de um número (Ex.:42) Pode ser um ponteiro para um string ("Hello, World!") Pode ser um ponteiro para uma tabela de símbolos. Ao usarmos lex junto com o YACC, o valor é colocado em yylval Em situações complexas, yylval é uma union. Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM} Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 86. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões YACC A Volta do Atributo Cada símbolo tem um valor associado (atributo) Pode ser uma quantidade numérica no caso de um número (Ex.:42) Pode ser um ponteiro para um string ("Hello, World!") Pode ser um ponteiro para uma tabela de símbolos. Ao usarmos lex junto com o YACC, o valor é colocado em yylval Em situações complexas, yylval é uma union. Típico código lex: [0-9]+ {yylval = atoi(yytext); return NUM} Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 87. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Conclusões Balanço Geral da Experiência O Que Foi Aprendido? Escrever um compilador é difícil: requer tempo e esforço! Scanners e parsers podem ser construídos por métodos automáticos. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 88. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Conclusões Balanço Geral da Experiência O Que Foi Aprendido? Escrever um compilador é difícil: requer tempo e esforço! Scanners e parsers podem ser construídos por métodos automáticos. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 89. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Conclusões Balanço Geral da Experiência O Que Foi Aprendido? Escrever um compilador é difícil: requer tempo e esforço! Scanners e parsers podem ser construídos por métodos automáticos. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 90. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Conclusões Balanço Geral da Experiência O Que Foi Aprendido? Escrever um compilador é difícil: requer tempo e esforço! Scanners e parsers podem ser construídos por métodos automáticos. Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 91. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Agradecimentos Grato Pela Atenção! Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 92. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Contatos Como Contactar o Grupo? Ailton Felix - afdlf2@gmail.com Bruno Normande - normandelins@gmail.com Michel Alves - michel.mas@gmail.com Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 93. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Contatos Como Contactar o Grupo? Ailton Felix - afdlf2@gmail.com Bruno Normande - normandelins@gmail.com Michel Alves - michel.mas@gmail.com Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 94. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Contatos Como Contactar o Grupo? Ailton Felix - afdlf2@gmail.com Bruno Normande - normandelins@gmail.com Michel Alves - michel.mas@gmail.com Bacharelado em Ciência da Computação Disciplina: Compiladores
  • 95. Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões Contatos Como Contactar o Grupo? Ailton Felix - afdlf2@gmail.com Bruno Normande - normandelins@gmail.com Michel Alves - michel.mas@gmail.com Bacharelado em Ciência da Computação Disciplina: Compiladores