Atualizar README.org
This commit is contained in:
parent
ecadfef4bc
commit
86d2a96c59
2 changed files with 109 additions and 3 deletions
|
@ -1,3 +0,0 @@
|
|||
# brisa
|
||||
|
||||
Repositório de anotações e ideias para a linguagem de programação Brisa
|
109
README.org
Normal file
109
README.org
Normal file
|
@ -0,0 +1,109 @@
|
|||
* Linguagem ???
|
||||
|
||||
** Tokens
|
||||
|
||||
- Separadores de palavras: espaço, tabulação, /tokens/
|
||||
- Fim de linha: =\n=
|
||||
- Comentário simples: =;=
|
||||
- Comentário de bloco e /inline/: =;;;...;;;=
|
||||
- Terminador de declarações: =.= (ponto)
|
||||
- Operador de atribuição: =<=
|
||||
- Operador de tipo de retorno: =>=
|
||||
- Delimitador de indireção: =[IDENTIFICADOR/LISTA]=
|
||||
|
||||
** Tipos inteiros com sinal
|
||||
|
||||
- =i8=: 1 byte
|
||||
- =i16=: 2 bytes
|
||||
- =i32=: 4 bytes (tipo padrão!)
|
||||
- =i64=: 8 bytes
|
||||
- =i128=: 16 bytes
|
||||
|
||||
** Tipos inteiros sem sinal
|
||||
|
||||
- =u8=: 1 byte
|
||||
- =u16=: 2 bytes
|
||||
- =u32=: 4 bytes
|
||||
- =u64=: 8 bytes
|
||||
- =u128=: 16 bytes
|
||||
|
||||
** Tipos de ponto flutuante (apenas com sinal)
|
||||
|
||||
- =f32=: 4 bytes
|
||||
- =f64=: 8 bytes
|
||||
- =f128=: 16 bytes
|
||||
|
||||
** Tipo indeterminado
|
||||
|
||||
Não existe tipo indeterminado (=void=) na linguagem. Por exemplo, =NULL= é implementado como =(int64)0=.
|
||||
|
||||
** Tipo booliano
|
||||
|
||||
=bool=: 1 byte
|
||||
|
||||
- Variáveis do tipo =bool= recebem apenas =true= ou =false=, respectivamente implementados como =1= e =0= do tipo =i8=.
|
||||
- Expressões lógicas sempre resultam em valores =1= ou =0= do tipo =i32=, portanto não são =bool=.
|
||||
- Ponteiros nulos (=NULL=), o terminador nulo (='\0'=) e inteiros de valor =0= sempre avaliam como falso, mas não são =bool=.
|
||||
|
||||
** Qualificadores e modificadores de escopo
|
||||
|
||||
- Constante: =const= -- Representa um dado imutável (=.rodata=?).
|
||||
- Volátil: =volatile= -- Representa um dado de escopo global (=.data=?).
|
||||
- Estático: =static= -- Representa um dado que mantém seu valor entre chamadas de função.
|
||||
- Restrito: =restrict= -- Representa um endereço que só pode ser acessado por um nome de ponteiro.
|
||||
|
||||
** Variáveis
|
||||
|
||||
- Declaração: ~[QUALIFICADOR] [*][TIPO]:NOME.~
|
||||
- Inicialização: ~[QUALIFICADOR] [*][TIPO]:NOME < VALOR~
|
||||
- Atribuição: ~NOME < VALOR~
|
||||
|
||||
Exemplos:
|
||||
|
||||
#+begin_example
|
||||
:var < 42 ; declaração e inicialização da variável 'var' (tipo 'i32')
|
||||
var < 10 ; atribuição do valor 10 à variável 'var'
|
||||
i8:char. ; declaração da variável 'char' com o tipo 'i8' (1 byte)
|
||||
i8:char . ; espaços não fazem diferença após o nome da variável!
|
||||
*:ptr < [var] ; declaração do ponteiro 'ptr' com o tipo *i32 e com o endereço de 'var'
|
||||
[ptr] < 123 ; armazena o valor 123 no endereço apontado por 'ptr'
|
||||
#+end_example
|
||||
|
||||
** Expressões constantes
|
||||
|
||||
Sintaxe: =[(TIPO)]EXPRESSÃO=
|
||||
|
||||
Sem especificação de tipo...
|
||||
|
||||
- =`CHAR`= são sempre =i8=;
|
||||
- Expressões numéricas inteiras são sempre =i32=;
|
||||
- Notações de ponto flutuante e frações são sempre =f64=.
|
||||
|
||||
*** Bytes (i8)
|
||||
|
||||
- ='\n'= (valor ASCII do caractere '\n' - byte 0x0a)
|
||||
- =(i8)0x0a=
|
||||
- =(i8)10= (byte 0x0a em decimal)
|
||||
- =(i8)012= (byte 0x0a em octal)
|
||||
- =(i8)1010b= (byte 0x0a em binário)
|
||||
|
||||
*** Inteiros
|
||||
|
||||
- =10=: o mesmo que =(i32)10=
|
||||
- Qualquer outro tipo inteiro: =(tipo)número=
|
||||
|
||||
*** Ponto flutuante
|
||||
|
||||
- =5.0=: o mesmo que =(f64)5.0=
|
||||
- =20 / 4=: o mesmo que =(f64)5.0=
|
||||
- Qualquer outro tipo de ponto flutuante: =(tipo)representação=
|
||||
|
||||
*** Cadeias de bytes (vetores do tipo i8)
|
||||
|
||||
- =['c', 'a', 's', 'a', '\n', '\0']= (avalia o endereço do primeiro byte)
|
||||
- ='casa\n\0'=: o mesmo que =['c', 'a', 's', 'a', '\n', '\0']= (avalia o endereço do primeiro byte)
|
||||
- ="casa\n"=: o mesmo que =['c', 'a', 's', 'a', '\', 'n', '\0']= (avalia o endereço do primeiro byte)
|
||||
|
||||
|
||||
|
||||
|
Loading…
Add table
Reference in a new issue