Versão: 1.0.0 Linguagem: Node.js Autor: Leonardo Pinezi
- O que é SForth
- Como instalar
- Flags para usar
- Como o código funciona
- Comandos que você pode usar
- Exemplos fáceis
- O que já funciona
- Coisas para melhorar
SForth é um intepretador da linguagem de programação Forth. Ele foi feito usando Node.js. Com ele você pode:
- Guardar e mexer em números numa pilha (stack).
- Fazer contas (+, -, *, /, MOD).
- Criar suas próprias palavras (funções).
- Usar
IF,ELSEeTHENpara tomar decisões no código.
É uma versão simples para aprender e brincar com Forth.
- Instale Node.js no computador.
- Baixe ou clone o projeto.
- Rode o programa pelo terminal:
sforth caminho/para/seu/arquivo.forthPara ver a versão do SForth:
sforth -v-v,--version: Mostra a versão.-q,--quiet: Omite "Ok" depois de executar um comando.-V,--verbose: Força impressão de "Ok" após comandos executados.
-
Ler o arquivo: O programa lê o arquivo Forth e ignora comentários (linhas que começam com
\). -
Separar palavras: O código é dividido em palavras que chamamos de tokens.
-
Pilha e listas:
stack: Pilha principal para os números.builtinWords: Palavras nativas do Forth.userWords: Palavras criadas pelo usuário.
-
Tokens: Cada token é uma função que faz algo na pilha ou mostra resultados.
-
Processar o código: O programa lê cada token e executa em ordem.
| Comando | O que faz |
|---|---|
+ |
Soma os dois últimos números |
- |
Subtrai o último pelo penúltimo |
* |
Multiplica os dois últimos |
/ |
Divide o penúltimo pelo último |
mod |
Resto da divisão do penúltimo pelo último |
. |
Mostra o último número |
.s |
Mostra todos os números da pilha |
dup |
Copia o último número |
drop |
Apaga o último número |
swap |
Troca os dois últimos números |
over |
Copia o penúltimo para o topo |
emit |
Mostra o caractere do último número ASCII |
: e ; |
Cria uma palavra nova |
= |
Compara dois números (retorna -1 se iguais, 0 se diferentes) |
<> |
Compara dois números (retorna -1 se diferentes, 0 se iguais) |
<, >, <=, >= |
Comparações matemáticas |
if / else / then |
Faz decisões no código |
cr |
Pula para a próxima linha |
10 20 + .
\ Mostra: 305 10 < if 100 . else 200 . then
\ Mostra: 100: square dup * ;
5 square .
\ Mostra: 2510 20 30 .S
\ Mostra: {10, 20, 30}