L00P
L00P é uma linguagem de programação esotérica, baseada na linguagem brainfuck e criada por Georg Westenberger.
Estrutura da Linguagem
Como em brainfuck, a memória é acessada por um programa em L00P através de células de memória. Não há um padrão definido para o total de células de memória, nem para o tamanho de cada célula de memória. Em sua versão original, cada célula de memória era um Word (2 Bytes).
Uma das diferenças entre brainfuck e L00P é que, em L00P, as células de memória podem conter números negativos.
Os comandos de controle de fluxo de brainfuck são aceitos, mas [ é interpretado como (, e ] é interpretado como ).
O programa é executado em um loop implícito e contínuo.
Comandos
| Caractere | Função | C |
|---|---|---|
> |
Acessa a célula de memória seguinte. | p++; |
< |
Acessa a célula de memória anterior. | p--; |
+ |
Aumenta um à célula de memória selecionada. | *p++; |
- |
Subtrai um da célula de memória selecionada. | *p--; |
. |
Imprime na tela o caractere relativo à célula de memória selecionada. | printf("%c",*p); |
: |
Imprime na tela o valor numérico da célula de memória selecionado. | printf("%i",*p); |
, |
Salva na célula de memória selecionada o código de uma tecla clicada. | *p=getch(); |
; |
Salva na célula de memória selecionada o valor númerico relativo a uma tecla clicada. | scanf("%i",p); |
0 |
Zera a célula de memória selecionada. | *p=0; |
* |
Duplica a célula de memória selecionada. | *p=*p*2; |
_ |
Inverte o sinal da célula de memória selecionada. | *p=-*p; |
# |
Soma o valor da célula de memória selecionada ao valor do ponteiro. | *p=*p+p; |
@ |
Torna o valor da célula de memória selecionada igual à célula de memória em seu valor mais seu ponteiro. | *p=*(p+*p); |
$ |
Faz a célula de memória em seu valor mais seu ponteiro ser igual ao seu valor. | *(p+*p)=*p; |
& |
Finaliza o programa | return(0); |
S |
Obtém o sinal da célula de memória selecionada. | *p=(*p>0)?1:((*p==0)?0:-1); |
( |
Início da estrutura de controle de fluxo IF. | if(*p){ |
| |
Estrutura de controle de fluxo ELSE. | }else{ |
) |
Fim da estrutura IF. | }; |
Compatibilidade com brainfuck
Os códigos em L00P são quase 100% incompatíveis com brainfuck, e isso é recíproco. A ausência das estruturas convencionais de loop ([ e ]), e a existência do loop implícito fazem as técnicas de programação serem muito diferentes. Poucos são os códigos que oferecem suporte a ambas as linguagens.
Ver também
- Programa Olá Mundo em linguagens de programação esotéricas
- Pbrain