Skip to content

SynctLabs/SForth

Repository files navigation

SForth - Interpretador Forth da SynctLabs

Versão: 1.0.0 Linguagem: Node.js Autor: Leonardo Pinezi


Sumário

  1. O que é SForth
  2. Como instalar
  3. Flags para usar
  4. Como o código funciona
  5. Comandos que você pode usar
  6. Exemplos fáceis
  7. O que já funciona
  8. Coisas para melhorar

O que é SForth

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, ELSE e THEN para tomar decisões no código.

É uma versão simples para aprender e brincar com Forth.


Como instalar

  1. Instale Node.js no computador.
  2. Baixe ou clone o projeto.
  3. Rode o programa pelo terminal:
sforth caminho/para/seu/arquivo.forth

Para ver a versão do SForth:

sforth -v

Flags para usar

  • -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.

Como o código funciona

  1. Ler o arquivo: O programa lê o arquivo Forth e ignora comentários (linhas que começam com \).

  2. Separar palavras: O código é dividido em palavras que chamamos de tokens.

  3. Pilha e listas:

    • stack : Pilha principal para os números.
    • builtinWords : Palavras nativas do Forth.
    • userWords : Palavras criadas pelo usuário.
  4. Tokens: Cada token é uma função que faz algo na pilha ou mostra resultados.

  5. Processar o código: O programa lê cada token e executa em ordem.


Comandos que você pode usar

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

Exemplos fáceis

Somar números

10 20 + .
\ Mostra: 30

Decisão simples

5 10 < if 100 . else 200 . then
\ Mostra: 100

Criar uma palavra

: square dup * ;
5 square .
\ Mostra: 25

Mostrar pilha completa

10 20 30 .S
\ Mostra: {10, 20, 30}

About

SynctLabs Forth Interpreter

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •