#ifndef FLEX_ACTIONS_HEADER #define FLEX_ACTIONS_HEADER #include "../../backend/support/shared.h" /** * Se definen los diferentes IDs de cada token disponible para el scanner Flex. */ typedef enum TokenID { // Por defecto, el valor "0" hace fallar el analizador sintáctico. UNKNOWN = 0, // Código de error de Bison, que permite abortar el escaneo de lexemas cuando // se presente un patrón desconocido. El número "257" coincide con el valor // que Bison le otorga por defecto, pero además permite que el resto de // tokens continúen desde el valor "258" lo que permite proteger los IDs // internos que Bison reserva para crear "tokens literales": YYUNDEF = 257, ADD, SUB, MUL, DIV, POW, FUNCTION, IF, ELSE, FOR, WHILE, PRINT, SEMICOLON, COMPOSITE, SQUOTE, DERIVATIVE, INTEGRATE, BETWEEN, AND_INT, EVALUATE, IN, OPEN_BRACES, OPEN_BRACKETS, CLOSE_BRACES, CLOSE_BRACKETS, OPEN_PARENTHESIS, CLOSE_PARENTHESIS, ASSIGN, EQUAL, AND, OR, NOT, ADD_ASSIGN, INCREMENT, SUB_ASSIGN, DECREMENT, MUL_ASSIGN, DIV_ASSIGN, DQUOTE, COMMA, COLON, LESSER, LESSER_EQUAL, GREATER, GREATER_EQUAL, NOT_EQUAL, VAR, ERR, TAYLOR, ESCAPESTRING, PRINTCSV, DOUBLE, INTEGER, STRING } TokenID; /** * Se definen las acciones a ejecutar sobre cada patrón hallado mediante el * analizador léxico Flex. Este analizador solo puede identificar * construcciones regulares, ya que utiliza un autómata finito determinístico * (a.k.a. DFA), como mecanismo de escaneo y reconocimiento. */ TokenID IntegerPatternAction(const char * lexeme); TokenID DoublePatternAction(const char * lexeme); void IgnoredPatternAction(const char * lexeme); TokenID UnknownPatternAction(const char * lexeme); TokenID StringPatternAction(const char * lexeme); TokenID EscapeStringPatternAction(const char * lexeme); #endif