gobstones / gobstones-interpreter

[GobstonesWeb] The compiler for Gobstones language (wrongly named)
GNU General Public License v3.0
0 stars 4 forks source link

Resolución de varios issues #25

Closed foones closed 6 years ago

foones commented 6 years ago

Issue #19: está implementado el pragma ATTRIBUTE. Todas las definiciones (program, interactive program, procedimiento, función o tipo) pueden venir precedidas de cero o más ocurrencias del pragma ATTRIBUTE. Por ejemplo:

/*@ATTRIBUTE@block_icon@base64asdf@*/
/*@ATTRIBUTE@block_name@Hola++@*/
procedure HolaMasMas() {
}

/*@ATTRIBUTE@atomic@yes@*/
program {
}

El resultado es que cada definición viene acompañada de un diccionario de atributos:

.parse(...).getAttributes('HolaMasMas')
> {'block_icon': 'base64asdf', 'block_name': 'Hola++'}
.parse(...).getAttributes('program')
> {'atomic': 'yes'}

(Nota: la sintaxis de los pragmas con tantas @ es medio fea, creo que todavía estamos a tiempo de mejorarla).


Issue #21: se mejoraron los mensajes de error cuando hay delimitadores no balanceados (paréntesis, corchetes y llaves).


Issue #22: se mejoraron los mensajes de error referidos a tipos.


Issue #23: las snapshots y los errores que se obtienen en tiempo de ejecución (ExecutionError) además de tener un atributo region con el nombre de la región actual, ahora tienen un atributo regionStack con la pila dinámica (backtrace) de regiones.

Los errores estáticos (ParseError) tienen region pero no tienen regionStack porque esto obviamente no tiene sentido.


Issue #24: se arregló este bug. El motivo del bug era que había algunas declaraciones de constantes, por ejemplo, const typeColor = new TypeStructure(i18n('TYPE:Color'), {}) que en realidad no son constantes porque dependen implícitamente del idioma actual. Se las modificó para que sean funciones.

flbulgarelli commented 6 years ago

Buenísimo!

foones commented 6 years ago

Todos estos cambios quedarían incorporados con el nuevo pull request ( #26 ).

Me doy cuenta de que esta no es la manera razonable de hacerlo, pero supongo que ya fue.