MiniLang

Um Interpretador de Linguagem Simples em C

Desenvolvido por Ramom Souza

🎯 Objetivo do Projeto

  • Ler instruções de um arquivo programa.txt
  • Interpretar comandos simples como SET, ADD, IF, LOOP, etc.
  • Simular a execução de um programa com variáveis e controle de fluxo

🧰 Bibliotecas utilizadas

  • stdio.h - entrada/saída
  • stdlib.h - funções do sistema
  • string.h - manipulação de strings
  • ctype.h - checagem de caracteres

🔤 Comandos Suportados

  • SET, INPUT, EXIBIR
  • ADD, SUB, MUL, DIV
  • IF, ENDIF
  • LOOP, ENDLOOP

📁 Exemplo: programa.txt

SET A 10
SET B 5
ADD A B C
EXIBIR C
LOOP 2
  SUB C 1 C
  EXIBIR C
ENDLOOP

🧠 Organização do Código

  • Leitura e contagem das linhas
  • Interpretação linha a linha
  • Executa função associada a cada comando
  • Trata erros e estrutura de controle

🔄 Operações Aritméticas

Comandos: ADD, SUB, MUL, DIV

  • Variáveis podem ser usadas como operandos
  • Resultado pode ser salvo em variável nova ou existente
  • Verificação de divisão por zero

🧾 Comando SET

Declara ou atualiza uma variável:

SET X 5
SET Y X
  • Valida quantidade de argumentos
  • Confere se a variável já existe
  • Aceita atribuição direta ou por outra variável

📥 Comando INPUT

  • Solicita que o usuário digite um número
  • Cria a variável se ainda não existir
  • Valida que o valor digitado seja inteiro

📤 Comando EXIBIR

  • Imprime o valor de uma variável na tela
  • Valida se a variável existe
  • Gera erro se tentar exibir um número direto

🔁 Comando LOOP

  • Repete um bloco de código n vezes
  • Suporta valores fixos ou via variável
  • Ignora execução se o valor for 0

❓ Comando IF

  • Executa um bloco somente se a condição for verdadeira
  • Operadores suportados: <, >, ==
  • Pula o bloco até ENDIF se a condição for falsa

🚨 Tratamento de Erros

  • Comando inválido ou malformado
  • Variável não existente
  • Divisão por zero
  • Entrada incorreta no INPUT

📌 Limitações

  • Limite de 100 variáveis
  • Linhas limitadas a 1024 caracteres
  • Busca e execução são case-sensitive
  • Não suporta expressões compostas

📈 Melhorias Futuras

  • Alocação dinâmica de variáveis
  • Busca case-insensitive
  • Expressões matemáticas completas
  • Mais comandos (ex: ELSE, FOR, WHILE)
  • Exportar variáveis em JSON ou CSV

Obrigado!

Dúvidas? Perguntas? Sugestões?

MiniLang - C Interpreter