ExpressEvalByLeo/Src/BoleanEval/Defines.mqh
2026-05-13 16:29:52 -05:00

92 lines
No EOL
2.9 KiB
MQL5

//+------------------------------------------------------------------+
//| 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_BOOLEAN_EVAL_DEFINES_MQH
#define EXPRESSEVALBYLEO_SRC_BOOLEAN_EVAL_DEFINES_MQH
//+------------------------------------------------------------------+
//| Include |
//+------------------------------------------------------------------+
#include "..\\Common\\GenericParser.mqh"
//+------------------------------------------------------------------+
//| Defines \ Enums |
//+------------------------------------------------------------------+
enum ENUM_AST_BOOLEAN_OPS_TOKEN_TYPE
{
BOOLEAN_OPS_TOKEN_TYPE_OPERADOR_BOLEANO = 0,
BOOLEAN_OPS_TOKEN_TYPE_OPERADOR_LOGICO, // and\xor\etc..
BOOLEAN_OPS_TOKEN_TYPE_PARA_INI = 1,
BOOLEAN_OPS_TOKEN_TYPE_PARA_END = 2,
BOOLEAN_OPS_TOKEN_TYPE_VALUE_NUMBER = 3,
BOOLEAN_OPS_TOKEN_TYPE_VALUE_STRING = 4,
BOOLEAN_OPS_TOKEN_TYPE_VALUE_BUILD_IN_FUNCTION_CALL = 5,
BOOLEAN_OPS_TOKEN_TYPE_VALUE_VARIABLE = 6,
BOOLEAN_OPS_TOKEN_TYPE_VALUE_CUSTOM_FUNCTION_CALL = 7,
BOOLEAN_OPS_TOKEN_TYPE_VALUE_MATH_OPERATION = 8,
BOOLEAN_OPS_TOKEN_TYPE_VALUE_BOOLEAN = 9
};
//--- Tipos de operadores
#define ENUM_AST_LOGIC_OPERATOR_TOTAL (6)
enum ENUM_AST_LOGIC_OPERATOR
{
AST_LOGIC_OPERATOR_AND, // oAnd
AST_LOGIC_OPERATOR_OR, // oOr
AST_LOGIC_OPERATOR_XOR, // oXor
AST_LOGIC_OPERATOR_NAND, // oNand
AST_LOGIC_OPERATOR_NOR, // oNor
AST_LOGIC_OPERATOR_XNOR // oXnor
};
// Len a saltar
const int g_arr_ast_logic_op_len_for_parser[ENUM_AST_LOGIC_OPERATOR_TOTAL]
{
2,
1,
2,
3,
2,
3
};
//---Tipos de operaciones
enum ENUM_AST_BOOLEAN_OP_TYPE
{
BOOLEAN_OP_TYPE_MAYOR=0,
BOOLEAN_OP_TYPE_MENOR,
BOOLEAN_OP_TYPE_MENOR_IGUAL,
BOOLEAN_OP_TYPE_MAYOR_IGUAL,
BOOLEAN_OP_TYPE_NO_IGUAL,
BOOLEAN_OP_TYPE_IGUAL
};
//--- Token struct para operacion booleana
struct TokenOpsBoolean
{
string vs; // string value
BitInterpreter v; // valor numerico
int type; // Tipo
};
//--- Codigo de error
enum ENUM_OPS_TOKENIZER_BOOLEAN_ERR
{
OPS_TOKENIZER_BOOLEAN_ERR_OP_IGUAL_MAL_FORMADO=0,
OPS_TOKENIZER_BOOLEAN_ERR_OP_LOGICO_X_MAL_FORMADO,
OPS_TOKENIZER_BOOLEAN_ERR_OP_LOGICO_N_MAL_FORMADO,
OPS_TOKENIZER_BOOLEAN_ERR_CARACTER_INVALIDO,
OPS_TOKENIZER_BOOLEAN_ERR_OP_NO_IGUAL_MAL_FORMADO
};
//+------------------------------------------------------------------+
#endif // EXPRESSEVALBYLEO_SRC_BOOLEAN_EVAL_DEFINES_MQH