105 lines
3.3 KiB
MQL4
105 lines
3.3 KiB
MQL4
//+------------------------------------------------------------------+
|
|
//| 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
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
#include "..\\Common\\GenericParser.mqh"
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
//--- Tipos de tokens para math
|
|
enum ENUM_AST_TOKEN_MATH_TYPE
|
|
{
|
|
AST_TOKEN_MATH_T_VALUE_NUMBER = 0,
|
|
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
|
|
struct TokenMathExp
|
|
{
|
|
string vs; // string value
|
|
BitInterpreter v; // valor numerico
|
|
int type; // Tipo
|
|
};
|
|
|
|
|
|
//--- Operadores matemtaticos
|
|
enum ENUM_BINARY_NODE_OPERATOR
|
|
{
|
|
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,
|
|
BINARY_NODE_OP_RESTA,
|
|
BINARY_NODE_OP_SUMA,
|
|
BINARY_NODE_OP_MODULO,
|
|
BINARY_NODE_OP_DIVICION,
|
|
BINARY_NODE_OP_MUL,
|
|
};
|
|
|
|
//--- Errores del tokinizador de math
|
|
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
|
|
{
|
|
//---
|
|
// 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,
|
|
MATH_EVAL_EXP_ERR_PARSE_SE_ESPERABA_UN_VALOR,
|
|
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,
|
|
MATH_EVAL_EXP_ERR_PARSE_TIPO_VALOR_INVALIDO,
|
|
MATH_EVAL_EXP_ERR_PARSE_TIPO_V
|
|
};
|
|
|
|
|
|
//---
|
|
#define MATH_EXP_NODE_TYPE_STATIC (0)
|
|
#define MATH_EXP_NODE_TYPE_DYNAMIC (1)
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
/*
|
|
!int: variable = 10;
|
|
!int: va = @mop(10 * 20 + 30 + 59 + $variable & 19 + 20);
|
|
|
|
|
|
@Print($va, " - ", "Hola");
|
|
*/
|
|
//+------------------------------------------------------------------+
|
|
#endif
|
|
//+------------------------------------------------------------------+
|