ExpressEvalByLeo/Src/MathEval/Defines.mqh

105 lines
3.3 KiB
MQL5
Raw Permalink Normal View History

2026-05-10 22:20:05 -05:00
//+------------------------------------------------------------------+
//| Defines.mqh |
//| Copyright 2026, Niquel Mendoza. |
//| https://www.mql5.com/es/users/nique_372 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Niquel Mendoza."
#property link "https://www.mql5.com/es/users/nique_372"
#property strict
#ifndef EXPRESSEVALBYLEO_SRC_MATHEVAL_DEFINES_MQH
#define EXPRESSEVALBYLEO_SRC_MATHEVAL_DEFINES_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
2026-05-11 12:24:14 -05:00
#include "..\\Common\\GenericParser.mqh"
2026-05-11 10:55:50 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//--- Tipos de tokens para math
2026-05-11 10:55:50 -05:00
enum ENUM_AST_TOKEN_MATH_TYPE
{
2026-05-11 12:24:14 -05:00
AST_TOKEN_MATH_T_VALUE_NUMBER = 0,
2026-05-11 10:55:50 -05:00
AST_TOKEN_MATH_T_VALUE_VARIABLE,
AST_TOKEN_MATH_T_VALUE_FUNCTION_BUIL_IN_CALL,
AST_TOKEN_MATH_T_VALUE_FUNCTION_CUSTOM_CALL,
AST_TOKEN_MATH_T_VALUE_OPERDOR_MATEMATICO,
AST_TOKEN_MATH_T_VALUE_OPERDOR_PARA_INI,
AST_TOKEN_MATH_T_VALUE_OPERDOR_PARA_END
};
//--- Token base para math
2026-05-11 10:55:50 -05:00
struct TokenMathExp
{
string vs; // string value
BitInterpreter v; // valor numerico
int type; // Tipo
2026-05-11 10:55:50 -05:00
};
2026-05-10 22:20:05 -05:00
//--- Operadores matemtaticos
2026-05-10 22:20:05 -05:00
enum ENUM_BINARY_NODE_OPERATOR
{
2026-05-12 15:55:49 -05:00
BINARY_NODE_OP_BIT_OR = 0,
BINARY_NODE_OP_BIT_XOR,
BINARY_NODE_OP_BIT_AND,
BINARY_NODE_OP_BIT_DEZPLAZAMIENTO_DRC,
BINARY_NODE_OP_BIT_DEZPLAZAMIENTO_IZQ,
2026-05-10 22:20:05 -05:00
BINARY_NODE_OP_RESTA,
2026-05-12 15:55:49 -05:00
BINARY_NODE_OP_SUMA,
2026-05-10 22:20:05 -05:00
BINARY_NODE_OP_MODULO,
2026-05-12 15:55:49 -05:00
BINARY_NODE_OP_DIVICION,
BINARY_NODE_OP_MUL,
2026-05-10 22:20:05 -05:00
};
2026-05-11 12:24:14 -05:00
//--- Errores del tokinizador de math
2026-05-11 12:24:14 -05:00
enum ENUM_BINARY_AST_MATH_ERR
{
BINARY_AST_TOKENIZER_ERR_DEZ_IZQ_INVALIDO = 0,
BINARY_AST_TOKENIZER_ERR_DEZ_IZQ_SE_ESPERABA_EL_SIG_FALTANTE,
BINARY_AST_TOKENIZER_ERR_DEZ_DRC_INVALIDO,
BINARY_AST_TOKENIZER_ERR_DEZ_DRC_SE_ESPERABA_EL_SIG_FALTANTE,
BINARY_AST_TOKENIZER_ERR_SIGNO_MENOS_EN_FINAL_LEN,
BINARY_AST_TOKENIZER_ERR_INVALID_CHAR
};
//--- Errores del parse math
enum ENUM_MATH_EVAL_EXP_ERR_PARSE
{
2026-05-14 11:13:22 -05:00
//---
// Dinamicos y estaticos
MATH_EVAL_EXP_ERR_PARSE_SE_ESPERABA_UN_OPERADOR_MATEMATICO,
MATH_EVAL_EXP_ERR_PARSE_OPERACION_PROHIBIDA_EN_DOUBLES,
MATH_EVAL_EXP_ERR_PARSE_TIPO_DE_OPERACION_MATH_DESCONOCIDA,
MATH_EVAL_EXP_ERR_PARSE_TIPO_DE_OPERACION_INVALIDA_PARA_DBL,
2026-05-14 12:56:06 -05:00
MATH_EVAL_EXP_ERR_PARSE_SE_ESPERABA_UN_VALOR,
2026-05-14 11:13:22 -05:00
MATH_EVAL_EXP_ERR_PARSE_SE_ESPERABA_UN_OPERADOR_LUEGO_DE_PARA,
//---
// DINAMICOS
MATH_EVAL_EXP_ERR_PARSE_VARIABLE_NO_EXISTE,
MATH_EVAL_EXP_ERR_PARSE_FUNCION_NO_EXISTE,
2026-05-14 12:56:06 -05:00
MATH_EVAL_EXP_ERR_PARSE_TIPO_VALOR_INVALIDO,
MATH_EVAL_EXP_ERR_PARSE_TIPO_V
};
2026-05-14 11:13:22 -05:00
//---
#define MATH_EXP_NODE_TYPE_STATIC (0)
#define MATH_EXP_NODE_TYPE_DYNAMIC (1)
2026-05-10 22:20:05 -05:00
//+------------------------------------------------------------------+
2026-05-11 10:55:50 -05:00
/*
!int: variable = 10;
!int: va = @mop(10 * 20 + 30 + 59 + $variable & 19 + 20);
2026-05-12 15:15:09 -05:00
2026-05-11 10:55:50 -05:00
@Print($va, " - ", "Hola");
2026-05-11 12:24:14 -05:00
*/
//+------------------------------------------------------------------+
#endif
//+------------------------------------------------------------------+