-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path2.js
More file actions
80 lines (68 loc) · 2.2 KB
/
Copy path2.js
File metadata and controls
80 lines (68 loc) · 2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// ejecutor.js
const fs = require("fs");
const prompt = require("prompt-sync")();
// Traductor extendido de "JS en español"
function traducir(codigo) {
return codigo
// Variables y constantes
.replace(/\bvariable\b/g, "let")
.replace(/\bconstante\b/g, "const")
// Control de flujo
.replace(/\bsino si\b/g, "else if")
.replace(/\bsino\b/g, "else")
.replace(/\bsi\b/g, "if")
.replace(/\bmientras\b/g, "while")
.replace(/\bpara\b/g, "for")
.replace(/\bcontinuar\b/g, "continue")
.replace(/\bfin\b/g, "break")
// Funciones
.replace(/\bfuncion\b/g, "function")
.replace(/\bretornar\b/g, "return")
// Booleanos
.replace(/\bverdadero\b/g, "true")
.replace(/\bfalso\b/g, "false")
// Entrada/salida
.replace(/\bpregunta\((.*?)\)/g, "prompt($1)")
.replace(/\bimprimir\((.*?)\)/g, "console.log($1)")
// Comparaciones
.replace(/\bes igual a\b/g, "==")
.replace(/\bes distinto de\b/g, "!=")
.replace(/\bmayor que\b/g, ">")
.replace(/\bmenor que\b/g, "<")
.replace(/\bmayor o igual que\b/g, ">=")
.replace(/\bmenor o igual que\b/g, "<=")
// Operadores lógicos
.replace(/\by\b/g, "&&")
.replace(/\bo\b/g, "||")
.replace(/\bno\b/g, "!")
// Tipos y conversiones
.replace(/\bnumero\b/g, "Number")
.replace(/\btexto\b/g, "String")
.replace(/\bbooleano\b/g, "Boolean")
// Estructuras
.replace(/\barreglo\b/g, "Array")
.replace(/\bdiccionario\b/g, "Object");
}
// Ejecuta código traducido
function ejecutar(codigoEsp) {
const codigoJS = traducir(codigoEsp);
try {
return eval(codigoJS);
} catch (err) {
console.error("⚠️ Error en tu código:", err.message);
}
}
// Si hay archivo, lo ejecuta primero
const archivo = process.argv[2];
if (archivo) {
const codigoEsp = fs.readFileSync(archivo, "utf8");
//console.log("=== Código traducido del archivo ===\n" + traducir(codigoEsp));
ejecutar(codigoEsp);
}
// Prompt interactivo
while (true) {
const linea = prompt("JS-ES> ");
if (!linea) break;
const resultado = ejecutar(linea);
if (resultado !== undefined) console.log("=>", resultado);
}