BasesParserSLan/Src/Query/Examples.mqh

71 lines
2.7 KiB
MQL5
Raw Permalink Normal View History

2026-07-22 16:22:12 -05:00
//+------------------------------------------------------------------+
//| Examples.mqh |
//| Copyright 2026, Niquel Mendoza. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Niquel Mendoza."
#property link "https://www.mql5.com"
#property strict
2026-07-23 08:39:26 -05:00
#ifndef BASESPARSERSLAN_SRC_QUERY_EXAMPLES_MQH
#define BASESPARSERSLAN_SRC_QUERY_EXAMPLES_MQH
2026-07-22 16:22:12 -05:00
/*
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
{
"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:
2026-07-22 20:08:38 -05:00
2026-07-23 08:39:26 -05:00
%reg 0 = 20 ; Guardamos en el regtiso estatico un integer con valor 20
%reg 1 = 20.0 ;
%reg 2 = true ;
%reg 3 = S"valores"
2026-07-22 20:08:38 -05:00
2026-07-22 16:22:12 -05:00
{
ACCESO_KEY_F "precios" ; F de fatal si no puede acceder directo retorna 0 sin mas
INICIAR_ITERACION 4: ; Solo permitios objetos
2026-07-23 08:39:26 -05:00
@InicioI teracio:n:
- ITER_ASSING [Alias] 'Exit' ; JMP en caso falle a 'EXIT'
- ACCESO_KEY "" "comando"
2026-07-22 16:22:12 -05:00
; (si falla intermante reinica la it)
2026-07-23 08:39:26 -05:00
- 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
2026-07-22 16:22:12 -05:00
; (si falla intermante reinica la it)
2026-07-23 08:39:26 -05:00
- ACCESO_KEY "valor"
2026-07-22 16:22:12 -05:00
; (si falla intermante reinica la it)
2026-07-23 08:39:26 -05:00
- SAVE RD1 ; Guardamos en el registro 1
- COMPARE_MENOR RD0 RD1 1 ; Comparemos los registros y esperamos 1
2026-07-22 16:22:12 -05:00
; (si falla intermante reinica la it)
2026-07-23 08:39:26 -05:00
- 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
2026-07-22 16:22:12 -05:00
; 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
2026-07-22 20:08:38 -05:00
JUMP 'Alias' ; Repetimos
EXIT [Exit]: ; Salida con return true
2026-07-22 16:22:12 -05:00
}
%reg0=20; hola como estas
; Se qeu ese registro esta mal pero mira:
= ; Como estoy?
20 ; Valor 20
2026-07-22 16:22:12 -05:00
//+------------------------------------------------------------------+
2026-07-23 08:39:26 -05:00
*/
#endif // BASESPARSERSLAN_SRC_QUERY_EXAMPLES_MQH