BasesParserSLan/Src/Query/SPEC.md
2026-10-01 08:24:58 -05:00

1.9 KiB

Especificaciones del lenguaje PASM

  1. Numeros: La idea es que en el 90+% de los casos comunes de eso.... todo se procesa bien.. ahora en casos "extremos" o con perdida de precision hay ciertos comportamientos que ud debera de saber...
  • Manejo de overflow de enteros (valores constantes en los registros): El parser lo trata como un error asi que terminara instantaneamente el parseo aplica a:
  • Parte entera de un integer
  • Exponente de un integer
  • Parte decimal de un numero real
  • Exponente de un real: Si ya no se puede representar tipo mayor a 22 o menos 22.. lo CLAMPEA (no lo rendondea ni fallback)
  • Si el numero real ya no puede representarse: Ya el numero no es seguro dado que si ocurre un ov en la parte decimal o algo asi la multiplacion dara basrua por el exp... asi que cuidado con eso.
  • Leading zeros: El parser no permite los leading zeros.. se rechazara con un error. (aplica en la parte entera y el exponente del real)
  1. True\False: Simplemten se salta 4\5 espacios un true\false malformado puede ocasionar bugs.. asi que a tener en cuenta eso
  2. Strgins: Se parsean correctamente el parser salta los \ solo que dpeendie del backend que use.. este ultimo recibira posiciones y debera de maquetar el string
  3. Keys: Dependera del backend que se use..
  4. JUMP Labels: solo ascci puro el parser no escapa \ ni nada.. aparte un jump es tal que @label donde es el delimitador de cierre el parser lo buscara para confirmar que la etiqueta cerro, ejemplos "label" o 'label' o #label#, etc..
  5. Declaracion de label: Solo ascci puro ademas de que aqui la regla para cortar es que si el parser encuntra un : + uin [ws] quiere decir que ya ahi corta el label ejemplo:
  • label: ... Donde no cortaria seria aqui por ejemplo
  • label:2 Dado que luego del : hay un caracter real. Ahora ws en el parser se define como un caracters ascci menor a 33 (osea \t \n espacio, etc... osea todos los caracters de control.. casi).