raizcode-ofc 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/compilador.js +39 -115
  2. package/package.json +1 -1
package/compilador.js CHANGED
@@ -3,143 +3,67 @@
3
3
  const fs = require('fs');
4
4
  const path = require('path');
5
5
  const os = require('os');
6
+ const { execSync } = require('child_process');
6
7
 
7
8
  const args = process.argv.slice(2);
8
- const comandoOuArquivo = args[0];
9
-
10
- // ---------------------------------------------------------
11
- // 🛠 SEÇÃO 1: CONFIGURAÇÃO DE AMBIENTE (--setup)
12
- // ---------------------------------------------------------
13
- if (comandoOuArquivo === '--setup') {
14
- const vscodeExtDir = path.join(os.homedir(), '.vscode', 'extensions', 'raizcode-extension');
15
- const sourceDir = __dirname;
16
-
17
- console.log("🌱 [Raizcode] Iniciando configuração de ambiente...");
9
+ const arquivoOuCmd = args[0];
18
10
 
11
+ // 1. SETUP DO VSCODE (Ícones e Cores)
12
+ if (arquivoOuCmd === '--setup') {
13
+ const extDir = path.join(os.homedir(), '.vscode', 'extensions', 'raizcode-extension');
19
14
  try {
20
- if (!fs.existsSync(vscodeExtDir)) {
21
- fs.mkdirSync(vscodeExtDir, { recursive: true });
22
- }
23
-
24
- // Arquivos necessários para a identidade visual no VS Code
25
- const assets = ['package.json', 'syntaxes', 'icons'];
26
-
27
- assets.forEach(item => {
28
- const src = path.join(sourceDir, item);
29
- const dest = path.join(vscodeExtDir, item);
30
-
15
+ if (!fs.existsSync(extDir)) fs.mkdirSync(extDir, { recursive: true });
16
+ ['package.json', 'syntaxes', 'icons'].forEach(f => {
17
+ const src = path.join(__dirname, f);
18
+ const dest = path.join(extDir, f);
31
19
  if (fs.existsSync(src)) {
32
- if (fs.lstatSync(src).isDirectory()) {
33
- fs.cpSync(src, dest, { recursive: true });
34
- } else {
35
- fs.copyFileSync(src, dest);
36
- }
20
+ if (fs.lstatSync(src).isDirectory()) fs.cpSync(src, dest, { recursive: true });
21
+ else fs.copyFileSync(src, dest);
37
22
  }
38
23
  });
39
-
40
- console.log(" [Raizcode] VS Code configurado!");
41
- console.log("🔄 Reinicie o seu editor para ativar o ícone RC e as cores.");
42
- } catch (err) {
43
- console.error("❌ Erro no setup:", err.message);
44
- }
24
+ console.log("✅ Ambiente configurado! Reinicie o VS Code.");
25
+ } catch (e) { console.log(" Erro no setup local."); }
45
26
  process.exit();
46
27
  }
47
28
 
48
- // ---------------------------------------------------------
49
- // 🧠 SEÇÃO 2: TRADUTOR DE FLOWWORDS (LÓGICA DA LINGUAGEM)
50
- // ---------------------------------------------------------
51
- function traduzirLinha(linha) {
29
+ // 2. TRADUTOR SIMPLES
30
+ function traduzir(linha) {
52
31
  let t = linha.trim();
53
- if (!t || t.startsWith("//")) return t; // Ignora vazios e comentários
54
-
55
- // Mapeamento de Comandos Simples
56
- const mapa = {
57
- 'mostrar': 'console.log',
58
- 'imprimir': 'console.log',
59
- 'alerta': 'alert',
60
- 'retornar': 'return',
61
- 'fim': '}',
62
- 'senao': '} else {'
63
- };
64
-
65
- // 1. Definição de Variáveis (variavel nome "valor")
32
+ if (!t || t.startsWith("//")) return t;
33
+
34
+ // Comandos diretos
35
+ if (t.startsWith('mostrar ')) return t.replace('mostrar ', 'console.log(') + ');';
66
36
  if (t.startsWith('variavel ')) {
67
- let partes = t.split(' ');
68
- let nome = partes[1];
69
- let valor = partes.slice(2).join(' ');
70
- return `let ${nome} = ${valor};`;
71
- }
72
-
73
- // 2. Condicionais (se condicao)
74
- if (t.startsWith('se ')) {
75
- let condicao = t.replace('se ', '').trim();
76
- return `if (${condicao}) {`;
37
+ let p = t.split(' ');
38
+ return `let ${p[1]} = ${p.slice(2).join(' ')};`;
77
39
  }
78
-
79
- // 3. Loops (repetir 5)
80
- if (t.startsWith('repetir ')) {
81
- let vezes = t.split(' ')[1];
82
- let i = `i_${Math.floor(Math.random() * 1000)}`;
83
- return `for (let ${i} = 0; ${i} < ${vezes}; ${i}++) {`;
84
- }
85
-
86
- // 4. Funções (funcao nome a b)
87
- if (t.startsWith('funcao ')) {
88
- let partes = t.split(' ');
89
- let nome = partes[1];
90
- let params = partes.slice(2).join(', ');
91
- return `function ${nome}(${params}) {`;
92
- }
93
-
94
- // 5. Comandos de Saída (mostrar "texto")
95
- for (let chave in mapa) {
96
- if (t.startsWith(chave + " ")) {
97
- let conteudo = t.replace(chave + " ", "");
98
- return `${mapa[chave]}(${conteudo});`;
99
- }
100
- if (t === chave) return mapa[chave];
101
- }
102
-
103
- return t; // Retorna a linha original se não houver tradução
40
+ if (t.startsWith('se ')) return `if (${t.replace('se ', '').trim()}) {`;
41
+ if (t === 'fim') return '}';
42
+
43
+ return t;
104
44
  }
105
45
 
106
- // ---------------------------------------------------------
107
- // 🚀 SEÇÃO 3: COMPILADOR E EXECUÇÃO
108
- // ---------------------------------------------------------
109
- if (!comandoOuArquivo) {
110
- console.log("🌱 Raizcode v1.0.0");
111
- console.log("Uso: raizcode <arquivo.rc> ou raizcode --setup");
46
+ // 3. EXECUÇÃO
47
+ if (!arquivoOuCmd) {
48
+ console.log("🌱 Raizcode - Use: raizcode <arquivo.rc>");
112
49
  process.exit();
113
50
  }
114
51
 
115
- const caminhoArquivo = path.resolve(comandoOuArquivo);
116
-
117
- if (!fs.existsSync(caminhoArquivo)) {
118
- console.error(`❌ Erro: Arquivo '${comandoOuArquivo}' não encontrado.`);
52
+ const caminho = path.resolve(arquivoOuCmd);
53
+ if (!fs.existsSync(caminho)) {
54
+ console.log("❌ Arquivo não existe.");
119
55
  process.exit(1);
120
56
  }
57
+
121
58
  try {
122
- const codigoRaiz = fs.readFileSync(caminhoArquivo, 'utf-8');
123
- const linhas = codigoRaiz.split('\n');
124
-
125
- let codigoGerado = "// Gerado automaticamente pelo Raizcode\n";
59
+ const codigo = fs.readFileSync(caminho, 'utf-8');
60
+ const js = codigo.split('\n').map(traduzir).join('\n');
61
+ const saida = caminho.replace('.rc', '.js');
126
62
 
127
- linhas.forEach(linha => {
128
- codigoGerado += traduzirLinha(linha) + "\n";
129
- });
130
-
131
- // Gera o arquivo de saída (ex: teste.rc -> teste.js)
132
- const arquivoSaida = caminhoArquivo.replace('.rc', '.js');
133
- fs.writeFileSync(arquivoSaida, codigoGerado);
63
+ fs.writeFileSync(saida, js);
134
64
 
135
- console.log(`🚀 [Raizcode] Sucesso: '${comandoOuArquivo}' processado.`);
136
- console.log("------------------------------------------");
137
-
138
- // --- NOVA PARTE: EXECUTA O CÓDIGO GERADO NA HORA ---
139
- const { execSync } = require('child_process');
140
- execSync(`node "${arquivoSaida}"`, { stdio: 'inherit' });
141
- // --------------------------------------------------
142
-
65
+ // Roda o código e mostra o resultado direto no terminal/termux
66
+ execSync(`node "${saida}"`, { stdio: 'inherit' });
143
67
  } catch (err) {
144
- console.error("❌ Erro:", err.message);
68
+ // Silencia o erro de compilação para não poluir o terminal
145
69
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "raizcode-ofc",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "Linguagem de programação Brasileira focada em simplicidade e performance.",
5
5
  "main": "compilador.js",
6
6
  "bin": {