MiniLang
Um Interpretador de Linguagem Simples em C
Desenvolvido por Eduardo Molica
🎯 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