A linguagem possui os seguintes comandos disponÃveis:
O comando run
é utilizado para executar um programa Dryad.
Executa um programa Dryad a partir de um arquivo.
file
(obrigatório): O arquivo contendo o programa Dryad a ser executado. O arquivo deve ter a extensão ".dyd".
dryad run <file>
Exemplo:
dryad run programa.dyd
O comando help
é utilizado para exibir a ajuda.
Exibe a lista de comandos disponÃveis e suas descrições.
dryad help
A linguagem possui os seguintes comandos disponÃveis:
O comando init
é utilizado para criar um novo projeto.
Cria um novo projeto com as informações fornecidas.
name
(obrigatório): O nome do projeto.description
(obrigatório): A descrição do projeto.version
(obrigatório): A versão do projeto.author
(obrigatório): O autor do projeto.license
(obrigatório): A licença do projeto.repository
(obrigatório): O repositório do projeto.
oak init
O comando syncmodules
é utilizado para sincronizar os módulos externos.
Sincroniza os módulos externos do projeto.
oak syncmodules
O comando build
é utilizado para construir o projeto.
Constrói o projeto.
oak build
O comando init-extlib-project
é utilizado para criar um novo projeto externo.
Cria um novo projeto externo com as informações fornecidas.
name
(obrigatório): O nome do projeto externo.description
(obrigatório): A descrição do projeto externo.version
(obrigatório): A versão do projeto externo.author
(obrigatório): O autor do projeto externo.license
(obrigatório): A licença do projeto externo.repository
(obrigatório): O repositório do projeto externo.
oak init-extlib-project
Exemplo:
oak init-extlib-project
A linguagem oferece suporte a expressões matemáticas básicas, como adição, subtração, multiplicação, divisão, módulo e exponenciação.
Exemplos:
- Operador de adição:
1 + 1;
- Operador de subtração:
10 - 1;
- Operador de multiplicação:
3 * 5;
- Operador de divisão:
15 / 3;
- Operador de módulo:
15 % 3;
- Operador de exponenciação:
3 ** 2;
A linguagem suporta o uso de blocos de código e a definição de funções.
Exemplos:
- Blocos:
{1 + 2; 2 * 3;}
- Escopos:
{ {a = 5;} a;}
(retorna o valor dea
) - Funções:
{ square = function(x) { x*x; }; square(5); }
(retorna 25)
A linguagem permite a atribuição de valores a variáveis.
Exemplos:
- Atribuição:
{a = 5 + 2; a;}
- Incremento:
{a = 5; ++a;}
- Decremento:
{a = 5; --a;}
- Atribuição com adição:
{a = 5 + 2; a += 2;}
- Atribuição com subtração:
{a = 5 + 2; a -= 2;}
- Atribuição com multiplicação:
{a = 5 + 2; a *= 2;}
- Atribuição com divisão:
{a = 5 + 2; a /= 2;}
- Atribuição com módulo:
{a = 5 + 2; a %= 2;}
- Atribuição com operação bitwise AND:
{a = 5 + 2; a &= 2;}
- Atribuição com operação bitwise OR:
{a = 5 + 2; a |= 2;}
- Atribuição com operação bitwise XOR:
{a = 5 + 2; a ^= 2;}
- Atribuição com operação de deslocamento para a esquerda:
{a = 5 + 2; a <<= 2;}
- Atribuição com operação de deslocamento para a direita:
{a = 5 + 5; a >>= 2;}
A linguagem oferece suporte a estruturas condicionais, como if
e if-else
, para controlar o fluxo do programa.
Exemplos:
if
de sucesso:{a = 5; if(a == 5) a = 6; a;}
if
de falha:{a = 5; if(a != 5) a = 6; a;}
if-else
de sucesso:{a = 5; if(a == 5) a = 6; else a = 7; a;}
if-else
de falha: `{a = 5; if(a != 5
) a = 6; else a = 7; a;}`
A linguagem suporta loops while
e for
para repetição de código.
Exemplos:
while
:{a = 10; while (a < 20) ++a; a;}
for
:{a = -10; for (a = 0; a < 10; ++a) 0; a;}
do-while
:{a = 5; do ++a; while (a < 10);}
A linguagem possui operadores lógicos, como &&
(E lógico), ||
(OU lógico) e !
(NÃO lógico).
Exemplos:
&&
lógico:0 && 5;
||
lógico:5 || 0;
!
lógico:!5;
A linguagem suporta operações bit a bit, como &
(AND bit a bit), |
(OR bit a bit), ^
(XOR bit a bit) e ~
(NÃO bit a bit).
Exemplos:
&
bit a bit:65421 & 255;
|
bit a bit:65421 | 255;
^
bit a bit:65421 ^ 255;
~
bit a bit:~65421;
A linguagem oferece operadores de comparação para avaliar igualdade, desigualdade e relação de ordem entre valores.
Exemplos:
- Igualdade:
1 == 1;
- Desigualdade:
1 != 5;
- Inferioridade:
1 < 5;
- Superioridade:
1 > 5;
- Inferior ou igual:
1 <= 5;
- Superior ou igual:
1 >= 5;
A linguagem suporta expressões complexas envolvendo diferentes operadores e prioridades.
Exemplos:
- Expressões complexas:
1+4/5*4+51+(4*(945+94/748)+44+2)+56;
- Expressões lógicas complexas:
0 || 45-54/9 && 564 + 485 * 4 || 45 / 6;
A linguagem suporta manipulação de strings, permitindo a atribuição de valores a variáveis do tipo string e a utilização de funções para operações especÃficas.
Exemplo de atribuição de variáveis:
- Atribuição de string:
{str = "Hello, world!";}
Funções disponÃveis:
ConsoleWrite(string)
: Imprime uma string no console sem quebra de linha.ConsoleWriteLine(string)
: Imprime uma string no console com quebra de linha.ConsoleRead()
: Lê uma linha de texto do console e retorna como uma string.ConsoleReadLine()
: Lê uma linha de texto do console e retorna como uma string, removendo a quebra de linha.ConsoleReadKey()
: Lê um caractere do console e retorna como uma string.ConsoleError(string)
: Imprime uma string de erro no console.
Exemplo de uso das funções de console:
ConsoleWrite("Hello, ");
ConsoleWriteLine("world!");
var input = ConsoleRead();
ConsoleWriteLine("You entered: " + input);
Esta é apenas uma documentação inicial como a linguagem se encontra em beta varias coisas poderão ser mudadas no futuro.