raizcode-ofc 1.0.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/README.md ADDED
@@ -0,0 +1,13 @@
1
+ # 🌱 Raizcode (.rc)
2
+ > A linguagem de programação brasileira, feita para quem pensa em português.
3
+
4
+ ![Raizcode Icon](https://raw.githubusercontent.com/SEU_USUARIO/raizcode/main/icons/raizcode-icon.png)
5
+
6
+ O **Raizcode** é uma linguagem independente, limpa e poderosa. Ela foi criada para eliminar as barreiras da programação, utilizando uma sintaxe intuitiva em português, sem a necessidade de chaves `{}` ou ponto e vírgula `;`.
7
+
8
+ ## šŸš€ Instalação
9
+
10
+ Instale o ecossistema Raizcode globalmente:
11
+
12
+ ```bash
13
+ npm install -g raizcode
File without changes
package/compilador.js ADDED
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const os = require('os');
6
+
7
+ 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...");
18
+
19
+ 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
+
31
+ 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
+ }
37
+ }
38
+ });
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
+ }
45
+ process.exit();
46
+ }
47
+
48
+ // ---------------------------------------------------------
49
+ // 🧠 SEƇƃO 2: TRADUTOR DE FLOWWORDS (LƓGICA DA LINGUAGEM)
50
+ // ---------------------------------------------------------
51
+ function traduzirLinha(linha) {
52
+ 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")
66
+ 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}) {`;
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];
101
+ }
102
+
103
+ return t; // Retorna a linha original se não houver tradução
104
+ }
105
+
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");
112
+ process.exit();
113
+ }
114
+
115
+ const caminhoArquivo = path.resolve(comandoOuArquivo);
116
+
117
+ if (!fs.existsSync(caminhoArquivo)) {
118
+ console.error(`āŒ Erro: Arquivo '${comandoOuArquivo}' nĆ£o encontrado.`);
119
+ process.exit(1);
120
+ }
121
+
122
+ try {
123
+ const codigoRaiz = fs.readFileSync(caminhoArquivo, 'utf-8');
124
+ const linhas = codigoRaiz.split('\n');
125
+
126
+ let codigoGerado = "// Gerado automaticamente pelo Raizcode\n";
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);
135
+
136
+ console.log(`šŸš€ [Raizcode] Sucesso: '${comandoOuArquivo}' processado.`);
137
+ } catch (err) {
138
+ console.error("āŒ Erro na compilação:", err.message);
139
+ }
Binary file
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "raizcode-ofc",
3
+ "version": "1.0.0",
4
+ "description": "Linguagem de programação Brasileira focada em simplicidade e performance.",
5
+ "main": "compilador.js",
6
+ "bin": {
7
+ "raizcode": "./compilador.js"
8
+ },
9
+ "scripts": {
10
+ "test": "node compilador.js exemplos/teste.rc",
11
+ "start": "node compilador.js"
12
+ },
13
+ "keywords": [
14
+ "raizcode",
15
+ "linguagem",
16
+ "portugues",
17
+ "compilador",
18
+ "javascript"
19
+ ],
20
+ "author": "Riquefla",
21
+ "license": "MIT",
22
+ "engines": {
23
+ "node": ">=14.0.0"
24
+ },
25
+ "files": [
26
+ "src/",
27
+ "bin/",
28
+ "icons/",
29
+ "syntaxes/",
30
+ "compilador.js",
31
+ "package.json",
32
+ "README.md"
33
+ ]
34
+ }
@@ -0,0 +1,36 @@
1
+ // src/generator.js
2
+ const mapaFlowwords = {
3
+ 'mostrar': 'console.log',
4
+ 'variavel': 'let',
5
+ 'constante': 'const',
6
+ 'se': 'if',
7
+ 'fim': '}',
8
+ 'funcao': 'function',
9
+ 'repetir': 'for',
10
+ 'entrada': 'prompt'
11
+ };
12
+
13
+ function traduzirLinha(linha) {
14
+ let t = linha.trim();
15
+ if (!t) return "";
16
+
17
+ // Lógica simples de substituição (Nível 1)
18
+ if (t.startsWith('mostrar ')) {
19
+ return t.replace('mostrar ', 'console.log(') + ');';
20
+ }
21
+ if (t.startsWith('variavel ')) {
22
+ // Transforma: variavel nome "Riquefla" -> let nome = "Riquefla";
23
+ let partes = t.split(' ');
24
+ return `let ${partes[1]} = ${partes.slice(2).join(' ')};`;
25
+ }
26
+ if (t.startsWith('se ')) {
27
+ return `if (${t.replace('se ', '')}) {`;
28
+ }
29
+ if (t === 'fim') {
30
+ return '}';
31
+ }
32
+
33
+ return t; // Se não conhecer, mantém (ex: cÔlculos matemÔticos)
34
+ }
35
+
36
+ module.exports = { traduzirLinha };
package/src/lexer.js ADDED
File without changes
package/src/parser.js ADDED
File without changes
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "Raizcode",
3
+ "scopeName": "source.rc",
4
+ "patterns": [
5
+ {
6
+ "name": "comment.line.double-slash.rc",
7
+ "match": "//.*"
8
+ },
9
+ {
10
+ "name": "keyword.control.rc",
11
+ "match": "\\b(se|senao|senaose|fim|repetir|enquanto|para)\\b"
12
+ },
13
+ {
14
+ "name": "keyword.declaration.rc",
15
+ "match": "\\b(variavel|constante|funcao|classe)\\b"
16
+ },
17
+ {
18
+ "name": "support.function.rc",
19
+ "match": "\\b(mostrar|imprimir|alerta|entrada|perguntar|executar|retornar)\\b"
20
+ },
21
+ {
22
+ "name": "string.quoted.double.rc",
23
+ "begin": "\"",
24
+ "end": "\"",
25
+ "patterns": [
26
+ {
27
+ "name": "constant.character.escape.rc",
28
+ "match": "\\\\."
29
+ }
30
+ ]
31
+ }
32
+ ]
33
+ }