Skip to content

PUCRSOpenSource/interpretador-calculadora

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto Compiladores 2016-2

Build Status GitHub Issues License

Implemenetação da calculadora bc, disponível em sistemas Linux, com várias simplificações para tornar o projeto viável no prazo proposto.

Para o projeto de compiladores, as seguintes regras devem ser aplicadas:

  • Identificadores, usados para nomes de funções, argumentos e variáveis seguem a regra de formação da linguagem Java;

  • A calculadora trabalha apenas com os tipos numérico (double) e lógico (boolean), o tipo é inferido durante o processamento. Os valores numéricos são sempre apresentados com três casas decimais;

  • Embora possam ser declaradas variáveis globais (a partir de um comando de atribuição), os argumentos e variáveis utilizadas em uma função são sempre locais a esta. Funções recursivas são permitidas o que exigirá um certo cuidado para utilização destes elementos;

  • A calculadora contém três modos básicos de operação, a sintaxe específica de cada um pode ser encontrada na documentação, alterações são permitidas a critério do grupo, desde que explicadas no relatório entregue:

    • Imediato: A expressão é compilada (gera uma ASA) e executada imediatamente. Exemplo: 2^3+5. A expressão é avaliada e seu resultado mostrado na tela.

    • Atribuição: a expressão é compilada, executada, e armazenada associada ao identificador. Exemplo: f = 2^b+5

    • Declaração de função. A expressão é compilada e armazenada em uma tabela de funções para uso posterior. Exemplo: define d (n) { return (2*n); }

  • Controle:

    • help – mostra um pequeno auxílio ao uso da calculadora (conteúdo a critério do grupo)

    • load "nome_arquivo", permite carregar em memória um conjunto de declarações (declarações de funções)

    • save "nome_arquivo", grava o conteúdo atual da tabela de funções

    • show "ident" – apresenta os dados armazenados na tabela de valores/funções associadas ao identificador "ident"

    • show_all – apresenta todos os dados armazenados nas tabelas de valores/funções

  • Operadores válidos, valendo as regras de precedência e associatividade da linguagem Java:

    • Aritméticos: +, -, *, /, ^ (potência, maior precedência e associativo à direita). Operandos devem ser numéricos e o resultado é numérico

    • Relacionais: >, >=, <, <=, !=. Operandos numéricos e o resultado lógico.

    • Lógicos: &&, ||, !. Operandos lógicos, resultado lógico

    • Atribuição: =, +=, *=. Identificador do mesmo tipo do resultado da expressão.

    • Condicional: ?:. Expressão de teste lógica, outras duas do mesmo tipo.

    • Sequencia: , . Expressões são avaliadas sequencialmente e o resultado da lista é o resultado da última expressão avaliada.

  • Comandos

    • Seleção (if)

    • Repetição (while e for)

    • Impressão (print)

  • Definição de funções

About

Projeto da disciplna de compiladores 2016-2

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages