Programando em BASIC com o Inliner

inliner-1_abertura

Por melhor que seja o editor¹ embutido em um interpretador BASIC ele não contará os recursos básicos de qualquer editor de textos moderno e aos quais já estamos habituados. E ao trabalhar diretamente no editor de textos predileto, ao invés de diretamente no computador/emulador, rapidamente se percebe o quão chata é a tarefa de cuidar manualmente da numeração das linhas.

Por estes e mais alguns motivos² comecei a pensar em como seria bom prático programar em MSX-BASIC, ou em qualquer outro dialeto BASIC, em qualquer editor de textos e sem a preocupação em numerar linhas pois haveria uma ferramenta que cuidaria desta parte. E já que ela ficaria com o trabalho, que algumas facilidades interessantes também estivessem includas.

E a assim surgiu o Inliner! 🙂

(¹) Dependendo do interpretador BASIC ele será um editor de tela, onde é fácil editar diversas linhas simultaneamente, ou simplesmente um editor de linha, onde você só consegue mexer em uma linha por vez em uma espécie de “modo de edição”.

(²) Um exemplo irritante, o comportamento irritante do OpenMSX quando se pressiona uma tecla acentuada e ele fica louco repetindo o caractere do acento ad infinitum:-/

O que é?

De forma bem simplificada o Inliner é um programa escrito em Python que converte um programa em BASIC escrito com “indentado e bonito” para o estilo de linhas numeradas. Ou seja, ele recebe:

input "Qual é o seu nome";k$
 
print "Olá ";k$;"!"

Converte em:

10 input "Qual é o seu nome";k$
20 print "Olá ";k$;"!"

E então basta transferir para o computador/emulador e executar  por lá!

Como funciona?

Exceto pela numeração das linhas a sintaxe da linguagem BASIC não é afetada, basta digitar o programa com cada comando em um linha. O que o Inliner faz é ler o programa e agrupá-los em uma mesma linha numerada, separando-os com o caractere de dois pontos — : — e criando uma nova linha numerada ao encontrar uma linha em branco entre os comandos.

Funcionalidades

Ao todo, e também por enquanto, ele implementa as seguintes funcionalidades.

Comentários

Para o Inliner existem dois tipos de comentários:

  • Temporários — Criados com um apóstrofo — — no começo da linha e descartados pelo durante a conversão e
  • Permanentes — Definidos por dois apóstrofos seguidos — — (ou com o comando “REM”) no começo da linha e adicionados ao programa como uma linha específica.

Rótulos

Os rótulos servem como marcadores de uma determinada linha de programa, são definidos com a colocação do caractere de dois pontos — : — no final da linha e referenciados dentro do programa como  {{«nome do rótulo»}}. Existe ainda um rótulo especial, o {{@}}, que referencia a própria linha em que o comando se encontra.

Definições

As definições são um tipo especial de rótulo e podem conter qualquer tipo de conteúdo, seja um valor numérico, uma cadeia de caracteres ou mesmo um trecho curto de código BASIC. Podem ser definidas em qualquer parte do programa da seguinte forma:

' define «nome da definição» «conteúdo da definição»

E utilizadas da mesma maneira que um rótulos, através de {{«nome da definição»}}.

Programa de exemplo

Para ajudar, um programa de exemplo em MSX-BASIC que ilustra os recursos do Inliner:

Que, após convertido, terá esta aparência:

10 ' Kaleidoscope (MSX2 256 colors)
20 COLOR 15,0,0:SCREEN 8:I%=RND(-TIME)
30 FOR I%=0 TO 255 STEP 2:K%=256*RND(1):LINE (0,0)-STEP(I%,211),K%:LI
NE (0,211)-STEP(I%,-211),K%:LINE (255,0)-STEP(-I%,211),K%:LINE (255,2
11)-STEP(-I%,-211),K%:NEXT I%:GOTO 30

E sendo possível até compartilhá-lo com o MSXPen!

Finalizando

O Inliner está disponível no GitHub, assim como a documentação detalhada e uma série de programas de exemplo — correções e adições serão muito bem vindas!. Apesar de originalmente pensado para o MSX-BASIC ele não é específico deste dialeto podendo ser utilizado para produzir programas para rodar em diversos interpretadores BASIC.

Happy hacking! 🙂

Anúncios

2 comentários sobre “Programando em BASIC com o Inliner

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s