-
Notifications
You must be signed in to change notification settings - Fork 3
Especificación
- Current version: 0.0.1-draft
- Wiki
- Open Discussions
Los comentarios solo pueden ser en una línea y se traducen literalmente
// Esto es un comentario
// Esto es otro comentario distinto
Variables
La definición es así:
definir @numero1 = 1
En js se traduce como:
var numero1 = 1;Tipos de variables
- Numéricas:
definir @numero = 1
- Texto:
definir @texto = "Hola mundo"
definir @otro_texto = 'Hola de nuevo'
- Listas/array/tuplas:
definir @lista = 1 y 2 y 3
definir @otra_lista = 1,2,3
- Diccionario/objetos/estructuras:
@lista_de_tags = "azul","verde","rojo"
@trabajador
@nombre = "Yo mismo"
@id = 123456
@tags = @lista_de_tags
En js se traduce como:
var numero = 1;
var texto = "Hola mundo";
var otro_texto = 'Hola de nuevo';
var lista = [1,2,3];
var otra_lista = [1,2,3];
lista_de_tags = ["azul","verde","rojo"];
trabajador = {
nombre : "Yo mismo",
id : 123456,
tags : lista_de_tags
};If (si...)
La definición es así si {expresion}\n:
si 1 > 0
mostrar "A"
En js se traduce como:
if(1 > 0){
console.log("A");
}else (si no...)
La definición es así si no\n y lógicamente debe ser precedida por una sentencia tipo if:
si 1 < 0
mostrar "A"
si no
mostrar "C"
En js se traduce como:
if(1 < 0){
console.log("A");
} else {
console.log("C");
}else if (pero si...)
La definición es así pero si {expresion}\n y lógicamente debe ser precedida por una sentencia tipo if y no necesariamente seguida de una expresión de tipo else:
si 1 > 0
mostrar "A"
pero si 1<0
mostrar "B"
si no
mostrar "C"
En js se traduce como:
if(1 > 0){
console.log("A");
} else if(1<0){
console.log("B");
} else {
console.log("C");
}for (repetir (contador))
La definición es así repetir {expresion:int} [veces]\n :
@contador = 0
repetir 5
@contador = @contador + 1
mostrar @contador
En js se traduce como:
contador = 0;
for(var $=0;$<5;$++){
contador = contador + 1;
console.log(contador);
}while (repetir si...)
La definición es así repetir si {expresion}\n :
@contador = 5
repetir si @contador>0
@contador = @contador - 1
mostrar @contador
En js se traduce como:
contador = 5;
while(contador>0){
contador = contador - 1;
console.log(contador);
}foreach (por cada)
La definición es así por cada @value en @values\n:
@lista = 1, 2 y 3
por cada @cosa en @lista
mostrar @cosa
En js se traduce como:
lista = [1, 2,3];
for(cosa in lista){
console.log(cosa);
}Asignar valor a variable
La definición es así:
@numero1 = 5
En js se traduce como:
numero1 = 5;-
Operandos: Una variable, una propiedad, un numero o un string (
@aZ|@aZ@aZ|-?0-9|""|'') - Operadores: Todos los lógicos y matemáticos
Una expresión consiste en la sucesión de operandos y operadores o un solo operando, o una llamada a procedimiento/función
Mostrar al usuario
Actual igual que un console.log()
mostrar "hola mundo"
En js se traduce como:
console.log("hola mundo");Pedir información al usuario
Actual igual que un prompt()
pedir @nombre
En js se traduce como:
var nombre = window.prompt('nombre');Aleatorio, y otras extensiones...
GingerCode puede extenderse fácilmente con funciones precargadas que facilitan la comprensión tecnica y reducen la barrera de entrada a ejercicios más avanzados. Veamos el siguiente ejemplo... La definición es así:
definir @random_number = #aleatorio 100 y 10
En js se traduce como:
var random_number = aleatorio(100,10);
// Funciones precargadas
function aleatorio(min,max){
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}Sentencia precedida de tabulacion \t+{sentencia}\n:
El nivel de tabulación solo puede ser 0 o un nivel mayor o igual a la linea anterior
Si es un nivel mayor debe estar abierto algun tipo de bloque
Solo en el caso del objeto literal se limitan las sentencias posibles dentro del bloque a declaraciones de variables
Otras
- No puede definirse variables vacías
definir @algoo equivalentesnull(definir @algo = null),undefined(definir @algo = undefined), etc... - Solo pueden usarse comillas dobles y simples para trabajar con cadenas de texto, Template Strings no esta soportado.
- Solo se soportan los comentarios de este tipo (
//), no se soporta ningún otro tipo (#) o multilinea (/* */)