Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Ferramentas Lex & YACC
Compiladore...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Sumário
Tópicos Centrais da Explan...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Sumário
Tópicos Centrais da Explan...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Sumário
Tópicos Centrais da Explan...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Gerador de Analisadores L...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Gerador de Analisadores L...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Gerador de Analisadores L...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Gerador de Analisadores L...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Gerador de Analisadores L...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Principais Utilizações
Tr...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Principais Utilizações
Tr...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Principais Utilizações
Tr...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex/Flex
Principais Utilizações
Tr...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para L...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para L...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para L...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para L...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para L...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para L...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Fontes
Um texto fonte para L...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Funcionamento
Esquema de Fun...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Exemplo com Flex
Um Exemplo ...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Lex - Exemplo com Flex
Um Exemplo ...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC/Bison
Geradores de Analisador...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC/Bison
Geradores de Analisador...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC/Bison
Geradores de Analisador...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC/Bison
Geradores de Analisador...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC/Bison
Flex & Bison Integrados...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compi...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compi...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compi...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compi...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compi...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compi...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compi...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compi...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Yet Another Compiler-of-Compi...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Sequência Básica Operacional
...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Sequência Básica Operacional
...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Sequência Básica Operacional
...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Sequência Básica Operacional
...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Sequência Básica Operacional
...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Sequência Básica Operacional
...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Exemplo de Uso
expr ::= expr ...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Exemplo de Uso
expr ::= expr ...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Formato do Arquivo
{Definições...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Formato do Arquivo
{Definições...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Seção de Regras
Normalmente e...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Seção de Regras
Normalmente e...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Seção de Regras
Normalmente e...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Seção de Definições
Normalment...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Seção de Definições
Normalment...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Seção de Definições
Normalment...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz um...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz um...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz um...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz um...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz um...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz um...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Observações
lex/flex produz um...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Construindo yylex()
Normalmen...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Construindo yylex()
Normalmen...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Construindo yylex()
Normalmen...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Lex & YACC
Bacharelado em Ciê...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Lex & YACC - Exemplo de Uso
S...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Lex & YACC - Exemplo de Uso
S...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Lex & YACC - Exemplo de Uso
S...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Lex & YACC - Exemplo de Uso
S...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regra...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regra...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regra...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regra...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regra...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regra...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regra...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regra...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regra...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
Em Relação as Regras
As regra...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símb...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símb...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símb...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símb...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símb...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símb...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símb...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
YACC
A Volta do Atributo
Cada símb...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Conclusões
Balanço Geral da Experi...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Conclusões
Balanço Geral da Experi...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Conclusões
Balanço Geral da Experi...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Conclusões
Balanço Geral da Experi...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Agradecimentos
Grato Pela Atenção!...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Contatos
Como Contactar o Grupo?
A...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Contatos
Como Contactar o Grupo?
A...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Contatos
Como Contactar o Grupo?
A...
Universidade Federal do Estado de Alagoas Instituto de Computação - Campus A. C. Simões
Contatos
Como Contactar o Grupo?
A...
Próximos SlideShares
Carregando em…5
×

Compilers - Using Lex and YACC

762 visualizações

Publicada em

Lex is a computer program that generates lexical analyzers ("scanners" or "lexers"). Lex is commonly used with the yacc parser generator. Lex, originally written by Mike Lesk and Eric Schmidt and described in 1975, is the standard lexical analyzer generator on many Unix systems, and a tool exhibiting its behavior is specified as part of the POSIX standard. The computer program Yacc is a LALR parser generator developed by Stephen C. Johnson at AT&T Corporation for the Unix operating system in 1970. The name is an acronym for "Yet Another Compiler Compiler". It generates a parser, the part of a compiler that tries to make syntactic sense of the source code, specifically a LALR parser, based on an analytic grammar written in a notation similar to BNF.

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
762
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
29
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Compilers - Using Lex and YACC

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×