raizcode-ofc 1.0.0 → 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.
- package/compilador.js +38 -108
- package/package.json +2 -2
package/compilador.js
CHANGED
|
@@ -3,137 +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
|
|
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(
|
|
21
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
54
|
-
|
|
55
|
-
//
|
|
56
|
-
|
|
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
|
|
68
|
-
let
|
|
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}) {`;
|
|
77
|
-
}
|
|
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];
|
|
37
|
+
let p = t.split(' ');
|
|
38
|
+
return `let ${p[1]} = ${p.slice(2).join(' ')};`;
|
|
101
39
|
}
|
|
102
|
-
|
|
103
|
-
|
|
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
|
-
|
|
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
|
|
116
|
-
|
|
117
|
-
|
|
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
|
}
|
|
121
57
|
|
|
122
58
|
try {
|
|
123
|
-
const
|
|
124
|
-
const
|
|
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');
|
|
125
62
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
linhas.forEach(linha => {
|
|
129
|
-
codigoGerado += traduzirLinha(linha) + "\n";
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
// Gera o arquivo de saída (ex: teste.rc -> teste.js)
|
|
133
|
-
const arquivoSaida = caminhoArquivo.replace('.rc', '.js');
|
|
134
|
-
fs.writeFileSync(arquivoSaida, codigoGerado);
|
|
63
|
+
fs.writeFileSync(saida, js);
|
|
135
64
|
|
|
136
|
-
|
|
65
|
+
// Roda o código e mostra o resultado direto no terminal/termux
|
|
66
|
+
execSync(`node "${saida}"`, { stdio: 'inherit' });
|
|
137
67
|
} catch (err) {
|
|
138
|
-
|
|
68
|
+
// Silencia o erro de compilação para não poluir o terminal
|
|
139
69
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "raizcode-ofc",
|
|
3
|
-
"version": "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": {
|
|
@@ -31,4 +31,4 @@
|
|
|
31
31
|
"package.json",
|
|
32
32
|
"README.md"
|
|
33
33
|
]
|
|
34
|
-
}
|
|
34
|
+
}
|