forked from nique_372/BasesParserSLan
71 lines
No EOL
2.7 KiB
MQL4
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 |