Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 AndrewScript v1.0

Uma linguagem de script leve, interpretada linha por linha, construída do zero sobre C++. O motor executa em tempo real através de um REPL (terminal interativo) com suporte a variáveis dinâmicas, operações aritméticas básicas, condicionais estruturadas e loops de repetição.


🏗️ Arquitetura do Projeto

Para garantir alta manutenibilidade, o interpretador foi modularizado e dividido em 4 arquivos com responsabilidades bem definidas:

  • environment.hpp: Gerencia a memória global da linguagem (o mapa de variáveis compartilhado).
  • evaluator.hpp / .cpp: O cérebro matemático. Avalia expressões aritméticas (+, -, *, /), resolve valores e processa condições lógicas (>, <, ==, !=).
  • parser.hpp / .cpp: O diretor de tráfego. Varre as strings brutas do terminal, identifica o comando correto (write, read, if, for ou atribuição) e direciona para execução.
  • main.cpp: O ponto de entrada que gerencia o loop principal do terminal interativo (REPL).

📜 Sintaxe da Linguagem

1. Criação e Atribuição de Variáveis

Não precisa declarar tipo. Basta atribuir um valor matemático ou direto.

x = 10
y = 5
resultado = x * y + 2
nome = "Andrew"

2. Entrada e Saída (I/O)

write(expressão): Imprime o resultado de uma variável ou conta matemática na tela.

read(variável): Pausa o terminal e espera o usuário digitar um número para salvar na variável.

read(idade)
write(idade + 1)
write("Hello world!")

3. Condicionais (if)

Executa um comando na mesma linha se a condição interna for verdadeira. Suporta >, <, == e !=.

if(x > 5) write(x * 2)

4. Estrutura de Repetição (for)

Loop compacto indexado por vírgulas. Define (atribuição inicial, condição de parada, incremento).

for(i = 0, i < 10, 2) write(i)

5. Executar Arquivos de Script

No interpretador, use sc_open(nome_do_arquivo) para abrir um arquivo AndrewScript.

6. Outras Funções

Função Descrição
delay(x) Delay em milissegundos
import(nome_arquivo) Importa arquivos de código-fonte para o projeto
clear() Limpa o console

🛠️ Como Compilar e Rodar

Como o projeto está separado em múltiplos arquivos, o compilador do C++ (g++) precisa juntar todos os arquivos de implementação (.cpp) de uma vez só.

g++ main.cpp parser.cpp evaluator.cpp -o andrewscript && ./andrewscript

Digite o código no terminal, linha a linha. Para sair, digite return.

About

Linguagem de Programação Procedural e Interpretada escrita em C++

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages