96 lines
1.8 KiB
C
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
|