Skip to content

Especificación

Ulises Gascón edited this page Sep 5, 2017 · 20 revisions

GingerCode especificación

Versión actual

Definición

Las sentencias pueden ser:
	[definir] @numero = {expresion}\n                                        // define una variable con su valor, se trataran todas como globales
	[definir] @persona\n                                                     // define un objeto literal, inicia un bloque
	[definir] @lista = {expresion} (y|,) {expresion} [(y|,) {expresion}]\n   // define una lista
	si {expresion}\n                                                         // if, inicia un bloque
	pero si {expresion}\n                                                    // elseif, requiere if, inicia un bloque
	si no\n                                                                  // else, requiere if, inicia un bloque, implica !elseif
	repetir {expresion:int} [veces]\n                                        // for(contador), inicia un bloque
	repetir si {expresion}\n                                                 // while, inicia un bloque
	por cada @value en @values\n                                             // foreach, mientras que @values sea una lista, @value toma secuancialmente cada valor de la misma
	[procedimiento] #multiplicar [@uno [(y|,) @dos]]\n                       // definición de funcion, inicia un bloque
	#multiplicar [{expresion} [(y|,) {expresion}]]                           // llamada a funcion (es valida como expresion pero no combinable)

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

Operadores:
	Logicos: Todos los operadores logicos pueden ir en su forma simbolica como en lenguaje natural, todos siguen la misma regla:
		>=
		es mayor o igual que
		mayor o igual que
		mayor o igual
	Matematicos: los operadores matematicos se usaran preferentemente en su forma simbolica, pero podran ser:
		-   | menos
		+   | mas
		*   | por       | multiplicado por
		/   | dividido  | dividido entre
		%   | resto     | resto entre

Rutina de expresiones:
	Operandos: Una variable, una propiedad, un numero o un string (@aZ|@aZ@aZ|-?0-9|""|'') 
	Operadores: Todos los logicos y matematicos
	Una expresion consiste en la sucesion de operandos y operadores o un solo operando, o una llamada a procedimiento/funcion

Clone this wiki locally