//+------------------------------------------------------------------+ //| 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 //+------------------------------------------------------------------+