BasesParserSLan/Src/Query/Examples.mqh
2026-07-23 12:38:08 -05:00

71 lines
No EOL
2.7 KiB
MQL4

//+------------------------------------------------------------------+
//| Examples.mqh |
//| Copyright 2026, Niquel Mendoza. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Niquel Mendoza."
#property link "https://www.mql5.com"
#property strict
#ifndef BASESPARSERSLAN_SRC_QUERY_EXAMPLES_MQH
#define BASESPARSERSLAN_SRC_QUERY_EXAMPLES_MQH
/*
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
{
"precios": {
"libro1": {"valor":542,"sumando":[],"comando":30},
"libro2": {"valor":19,"sumando":[30],"comando":2},
"libro3": {"valor":452,"sumando":[20,50,65,89,419],"comando":7}
}
}
$.precios[?(@.comando * 20 < @.valor && @.sumando.size())].sumando[*]
--- bytecode:
%reg 0 = 20 ; Guardamos en el regtiso estatico un integer con valor 20
%reg 1 = 20.0 ;
%reg 2 = true ;
%reg 3 = S"valores"
{
ACCESO_KEY_F "precios" ; F de fatal si no puede acceder directo retorna 0 sin mas
INICIAR_ITERACION 4: ; Solo permitios objetos
@InicioI teracio:n:
- ITER_ASSING [Alias] 'Exit' ; JMP en caso falle a 'EXIT'
- ACCESO_KEY "" "comando"
; (si falla intermante reinica la it)
- SAVE RD0 ; Guardamos en el registro dinamico 0 y retrocedemos
- M_MUL RD0 RD0 RK0 ; Multiplicmoas el registro conssante 0 por el dinamico 0 y el valor va en 0
; (si falla intermante reinica la it)
- ACCESO_KEY "valor"
; (si falla intermante reinica la it)
- SAVE RD1 ; Guardamos en el registro 1
- COMPARE_MENOR RD0 RD1 1 ; Comparemos los registros y esperamos 1
; (si falla intermante reinica la it)
- ACCESO_KEY "sumando"
- SAVE_NO_RESET RD1 ; Guardamos su valor en registro 1
- CALL "size" RD0 0 ; Le deicmso llama a esa funcion y el reusltaod va en el registro 0 y 0 args
- IS RD0 ; Aplica un is a este registro
; Si llegamos hasta aaqui entonces curr paso
; Como en el sigeuite es un wildcard podemos ir directo a un copy sin iteracion
COPY_ALL ; Copiamos todos los elemtnos que tenga curr actualmente al array final
JUMP 'Alias' ; Repetimos
EXIT [Exit]: ; Salida con return true
}
%reg0=20; hola como estas
; Se qeu ese registro esta mal pero mira:
= ; Como estoy?
20 ; Valor 20
//+------------------------------------------------------------------+
*/
#endif // BASESPARSERSLAN_SRC_QUERY_EXAMPLES_MQH