Skip to content

Este é um projeto avaliativo na disciplina de Programação I

Notifications You must be signed in to change notification settings

alexzarp/Vali-lang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Imagem Logo

Este é um interpretador de texto capaz de ler uma sintaxe própria como linguagem de programação, compilá-la e rodá-la usando o Java. Tem como objetivo compor uma nota na disciplina de Programação I no Curso de Ciência da Computação na UFFS. Produzida pelos alunos Alex Sandro Zarpelon([email protected]), Bruna Gabriela Disner([email protected]), Patrícia Trevisan([email protected]) e Rafael Fernandes([email protected]).

Como rodar

java -jar Vali.jar nomedoarquivo.vali

Necessita ter instalado Java JDK na máquina

A sintaxe funciona de forma que:

Elemento Exemplo
se, equivalente a if se(a < b) {faça;}
senao, equilente ao else senao {faça;}
enquanto, equivalente a while enquanto(a > b) {faça;}
imprime, equivalente a print imprime("Olá mundo" + a); → "+" concatena elementos de qualquer tipo
tipo variavel = valor ou vazio; inteiro num = 1;

O corpo de todas as funções começão com { e terminam com }, independente de terem uma ou múltiplas declarações. Salvo caracteres dentro de aspas, a linguagem não é sensível aos caracteres quebra de linha, espaço e tab. Você pode formatar o código fonte com estes como quiser (porém outros caracteres como carriage return podem causar erros).

Tipos de variável:

Tipos Exemplo
inteiro 0
flutuante 0.0
boleano verdadeiro ou falso
palavra "abc"

Conversões de tipos podem ser feitas implicitamente entre tipos específicos. Não há conversão explícita de tipos.

  • Uma atribuição de variável do tipo flutuante pode envolver variáveis flutuante e inteiro em sua expressão. Mas a recíproca não é válida! Exemplo:

inteiro a = 2; flutuante b = a + 2;

é um código válido. Entretanto,

flutuante a = 2; inteiro b = a + 2;

resultará em um erro de compilação.

  • Uma atribuição de tipo palavra pode utilizar variáveis de todos os outros tipos. Entretanto, operações devem ser feitas previamente e salvadas em uma variável a parte. Exemplo:

flutuante a = 2 + 3; palavra b = "Isso será computado como 5: " + a;

é válido e b receberá o valor "Isso será computado como 5: 5". Entretanto,

palavra b = "Isso não será computado como 5: " + 2 + 5;

também é válido, mas b guardará o valor "Isso não será computado como 5: 25". Em outras palavras, a única operação possível na atribuição de variáveis do tipo palavra é a concatenação de valores do tipo palavra, e quaisquer outros valores, sejam literais ou armazenados em variávels, serão avaliados como tal. Isto também é válido para o parâmetro do método imprime(). Exemplo:

inteiro a = 2 + 2; imprime(a)

imprimirá "4" no terminal, enquanto

imprime(2+2)

imprimirá "22".

  • Variáveis podem ser instanciadas e inicializadas em momentos diferentes. Entretanto, tentativas de leitura de variáveis não inicializadas causarão erros. Exemplos: inteiro a; a = 3; é válido. Entretanto, inteiro a; inteiro b = a + 1; resultará em erro de compilação.

Sinais aritiméticos:

Operador Operação
+ Adição ou concatenação em caso do tipo palavra
- Subtração
/ Divisão
* Multiplicação
% Resto

Utilize inteiro para divisões inteiras e flutuante para resultados racionais.
Atente-se de que, primeiro são feitas operações que contém sinal, por exemplo -a ou -1, após isso os * % / e logo após os + -.

Sinais comparativos:

Sinal Ação
== Compara se valores são iguais
> Compara se o primeiro valor é maior que o segundo
< Compara se o primeiro valor é menor que o segundo
<= Compara se o primeiro valor é menor ou igual ao segundo
>= Compara se o primeiro valor é maior ou igual ao segundo
!= Compara se os valores são diferentes

Funcionam apenas entre valores do tipo inteiro e flutuante.

Sinais condicionais:

Sinal Ação
& Compara se o primeiro e segundo valores são verdadeiros
ǀ Compara se o primeiro ou o segundo valores são verdadeiros

Funcionam apenas entre valores do tipo binario. Exemplos:

  • binario a = 2 < 3 | 4 != 1;
  • se(verdadeiro & 2>3)

Sinal unário:

Sinal Ação
! Inverte o valor de um binario. Deve ser utilizado como prefixo. Apenas para variáveis.

Exemplos:

  • binario a = verdadeiro; binario b = !a;

Declaração de variável:

tipo variavel = valor;

Declarações e valores iniciais
inteiro varivel = 0;
flutuante variavel2 = 0.0;
binario variavel3 = falso;
palavra variavel4 = "Olá mundo!";

Comentários no código:

Sinal Ação
\ Ignora uma linha de código até o próximo \n
/ Ignora uma linha de código até o próximo \n