bfbcompiler/src/frontend/lexical-analysis/flex-actions.h

96 lines
1.8 KiB
C

#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