A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Equipe: Osias Carneiro, Anderson Soares, André Araújo

Apresentações semelhantes


Apresentação em tema: "Equipe: Osias Carneiro, Anderson Soares, André Araújo"— Transcrição da apresentação:

1 Equipe: Osias Carneiro, Anderson Soares, André Araújo
Little Language Equipe: Osias Carneiro, Anderson Soares, André Araújo

2 Origem Baseado no padrão interpreter apresentado no livro Design Patterns (GOF) Originalmente apresentado no livro Patterns in Java vol. 1 (GRAND, Mark)

3 POR QUÊ LITTLE LANGUAGE?
Também Conhecida Como Domain Especific Languages (DSL’s) Utilizado quando se tem tarefas recorrentes de dificil execução, então nesse caso cria-se uma “pequena linguagem” que permita a realização de tais tarefas de maneira mais simples, talvez não sirva para todas as necessidades, mas com certeza torna algumas tarefas bem mais simples;

4 Como funciona Cria-se um interpretador para essa “pequena linguagem”. O padrão define uma estrutura que facilita as operações de analise léxica e sintática, tornando mais simples a inclusão de regras semânticas, ou outras coisas que permitam interpretar uma sentença. Implementa a gramática de tal linguagem, que posteriormente gera uma árvore abstrata que permite identificar sentenças.

5 Contexto Imagine que você precise escrever um programa que procure em um conjunto de arquivos para achar arquivos que contenham uma determinada combinação de palavras. Você não quer escrever um programa para cada busca. Ao invés disso você define um linguagem que permite ao usuário descrever a combinação de palavras e então escrever um programa que acha arquivos que contem uma combinação de palavras especificadas na linguagem.

6 APLICAÇÃO Quando é necessário tratar tipos de dados similares com um pequeno número de operações mas inúmeras combinações diferentes

7 Passos para o projeto Definir a linguagem que será utilizada para a resolução do problema Criar regras léxicas e sintáticas, com suas respectivas regras de produção. Implementação das classes necessárias que implementarão tal linguagem

8 Diagrama de classes genérico

9 papéis Client AbstractNonTerminal ConcreteNonTerminal Parser
TerminalToken LexicalAnalizer InputStream

10 Como funciona O cliente recebe a sentença a ser interpretada
chamada ao método ‘parse’ de Parse que cria a arvore sintática abstrata e a devolve para o cliente Então o método ‘execute’ é chamado para verificar o resultado da sentença

11 Contexto Interpretador de expressões algébricas (radiciação e derivações de polinômios simples). Resolve raízes enésimas no formato “RAIZ radical radicando” e deriva polinômios simples no formato “3x^3+2x^2-3x+2” e retorna o valor de resultado OBJETIVO: estender a gramatica para aceitar também potências, no formato “base ELEVADO expoente”

12 Gramatica atual Expressão -> raiz | derivada
Raiz -> ‘raiz’ num num Derivada -> [+|-] termo derivada | ε Num -> 0...9 Termo -> [num] letra [^ num] Letra -> a....z A.....Z

13 Gramatica estendida Expressão -> raiz | derivada | potenciação
Potenciação -> num ‘elevado’ num Raiz -> ‘raiz’ num num Derivada -> [+|-] termo derivada | ε Num -> 0...9 Termo -> [num] letra [^ num] Letra -> a....z A.....Z

14 Estrutura do interpretador

15 roteiro Fazer testes e verificar funcionamento
Reconhecer o token ‘elevado’ no Lexer O método ‘tokenName()’ na classe Parser deve tratar ‘elevado’ Acrescentar as regras sintáticas da gramatica final ao parser Criar uma nova classe Potenciação que herda de ExpressãoAlgébrica (ConcreteNonTerminal) Rodar

16 OBRIGADO PELA ATENÇÃO Bora baea!!!


Carregar ppt "Equipe: Osias Carneiro, Anderson Soares, André Araújo"

Apresentações semelhantes


Anúncios Google