Bem vindo a documentação de Lazylang, um interpretador construído em Java para a criação de uma nova linguagem. Aqui você aprenderá como usar as funcionalidades de Lazylang.
A sintaxe de Lazylang foi herdada do Java, com blocos de código iniciando com "{" e terminando com "}", também todas as funções devem ter seus parâmetros entre parênteses, todo comando que não inicie um novo bloco de código deve acabar com ";" , strings devem estar entre " ", e chars entre ' '.
A linguagem conta com 6 tipos de dados e um pseudo tipo de dado, sendo eles: inteiro(int), números com ponto flutuante(float), booleano(bool), vetor(vector), string(str), caractere(char) e automático (auto), que devem ser usados na declaração de variáveis.
Esta definição de tipo de dado tentará deduzir qual o tipo desejado pelo usuário.
auto variavel;
São os números positivos e negativos sem vírgula, e devem ser declarados da seguinte forma:
int variavel;
também podem receber um valor já na declaração, por exemplo:
int variavel = 5;
São os números positivos e negativos que contém vírgula, e podem ser declarados da seguinte forma:
float variavel;
também podem receber um valor já na declaração, por exemplo:
float variavel = 5.0;
São os valores: verdadeiro(true) e falso(false), e podem ser declarados da seguinte forma:
bool variavel;
também podem receber um valor já na declaração, por exemplo:
bool variavel = true;
O vetor é do tipo lista, não sendo necessário informar o tipo de dado na criação, ou seja, ele aceita diferentes tipos de dado no mesmo vetor, ele é declarado da seguinte forma:
vector v;
O vetor conta com diversas funções para sua utilização.
Adiciona elementos no final do vetor, o parâmetro entre parênteses é o elemento a ser adicionado.
v.append(5);
Retorna uma cópia do vetor:
v.copy();
Retorna o que há na posição do vetor informada no parametro, seja v um vetor de 3 posições, contendo 1, 3 e 8 nessa ordem.
v.get(0);
Saída
1
Remove o elemento da posição passada como parâmetro na função:
v.pop(0);
Se não for passado nada, ele removerá a última:
v.pop();
Remove todos os elementos do vetor:
v.clear();
Adiciona um elemento em uma posição específica, a posição é o primeiro parâmetro, e o elemento a ser inserido é o segundo parâmetro:
v.insert(2,"abc");
Percorre o vetor contando as ocorrências de um elemento passado como parâmetro:
v.count(2);
São variáveis formadas de um único caractere,e ele deve estar entre ' ' , pode ser declarado da seguinte forma:
char variavel;
também podem receber um valor já na declaração, por exemplo:
char variavel = 'c';
São sequências de caracteres, que devem estar entre "", e podem ser declarados da seguinte forma:
str variavel;
também podem receber um valor já na declaração, por exemplo:
str variavel = "string";
Apesar de ainda ser uma linguagem básica, Lazylang possui tudo o que é necessário ao programador: estruturas de controle de fluxo(condições), estruturas de repetição(laços), e funções de entrada e saída.
Lazylang conta com operadores lógicos, aritiméticos e de cast.
Operador | Função |
---|---|
% | resto de divisão |
/ | divisão |
* | multiplicação |
+ | adição |
- | subtração |
Operador | Função |
---|---|
! | Não |
&& | E |
|| | Ou |
Operador | Função |
---|---|
== | igual |
<= | menor/igual |
>= | maior/igual |
< | menor |
> | maior |
!= | diferente |
Forçam um tipo de dado a ser outro tipo, tendo cast para int, float e bool. Funcionam da seguinte forma:
int(variavel);
float(variavel);
bool(variavel);
Os operadores possuem a seguinte ordem de precedência, sendo 1 a maior e 7 a menor.
Operador | Precedência |
---|---|
% | 1 |
/ | 1 |
* | 1 |
+ | 2 |
- | 2 |
== | 3 |
<= | 3 |
>= | 3 |
< | 3 |
> | 3 |
!= | 3 |
! | 4 |
&& | 5 |
|| | 6 |
= | 7 |
+= | 7 |
-= | 7 |
*= | 7 |
/= | 7 |
%= | 7 |
As estruturas de controle de fluxo de Lazylang são basicamente iguais as do Java, sendo elas:
A função recebe uma condição como parâmetro, e se a condição passada ao if for verdadeira, o bloco de código será executado, do contrário, o bloco inteiro será ignorado.A função if possui o seguinte formato:
if(condição) {
comando;
comando:
}
Com funcionamento semelhante ao do if, o bloco elif precisa de uma condição, e se ela for verdadeira, o bloco será executado, entretanto, um elif só pode ser usado após um if, e será executado somente se o if anterior for falso. A função elif possui o seguinte formato:
elif(condição) {
comando;
comando;
}
Assim como o elif, o else precisa ter um if anterior a ele, e ele precisa ser falso, entretanto diferentemente do if e do elif, o else não precisa de condição, ou seja, qualquer condição que não se encaixar em algum if ou elif anterior cairá no else. A função else possui o seguinte formato:
else {
comando;
comando;
}
Lazylang possui duas estruturas de repetição(laço), sendo elas o for e o while.
O laço for possui a seguinte forma:
for(int i = 0;i <= 10;i += 1){
comando;
comando;
}
Dentro dos parênteses temos as condições do laço, a primeira coisa é o ponto de início, no exemplo definida por:
int i = 0;
A segunda coisa é o ponto de parada, que pode ser enquanto a variável de controle for menor do que o ponto de parada(i<10), ou enquanto ela não for igual ao ponto de parada(i<=10), que no exemplo foi definida por:
i < 10;
A terceira e última coisa do for é o incremento da variável, que pode ser de qualquer quantidade, no exemplo era incrementada de 1 em 1:
i += 1
A variável de controle do for deve ser um inteiro e deve ser declarada como qualquer variável.
O laço while funciona diferente do laço for, pois ele funciona apenas com teste lógico em seu parâmetro, e possui o seguinte formato:
int a = 0;
while(a < 10){
a += 1;
}
O laço se repetirá enquanto o teste lógico for verdadeiro, no exemplo, quando o a for 10, o laço se encerrará.
LayLang possui alguns comandos de entrada e saída. O que facilita alguns processos.
Para saída, temos o print e o println.
Escreve na tela o que for passado como parâmetro, seja o parametro int, float, bool, string ou char. Entretanto strings devem estar entre " " e char entre ' '. O print não quebra automáticamente a linha, e possui o seguinte formato:
print(variável);
ou
print("Mensagem");
Escreve na tela como o print, a diferença entre eles é que o println quebra linha ao final do comando, possui o seguinte formato:
println(variable);
ou
println("Mensagem");
Para ler do teclado temos o input, o readInt, o readFloat e o readBool.
É usada para ler strings do teclado, a função pode ou não conter mensagem e possui o seguinte formato:
variavel = input();
É usada para ler números inteiros do teclado, a função pode ou não conter mensagem e possui o seguinte formato:
variavel = readInt();
É usada para ler numeros de ponto flutuante do teclado, a função pode ou não conter mensagem e possui o seguinte formato:
variavel = readFloat();
É usada para ler booleanos do teclado, a função pode ou não conter mensagem e possui o seguinte formato:
variavel = readBool();