31 lines
661 B
C
31 lines
661 B
C
#ifndef LEXER_H
|
|
#define LEXER_H
|
|
|
|
#include "../libft/includes/libft.h"
|
|
|
|
typedef enum
|
|
{
|
|
TOKEN_PLUS, // +
|
|
TOKEN_MINUS, // -
|
|
TOKEN_VARIABLE, // x, y, etc.
|
|
TOKEN_NUMBER, // int or double
|
|
TOKEN_POWER, // ^ or **
|
|
TOKEN_MULTIPLICATION, // *
|
|
TOKEN_DIVISION, // /
|
|
TOKEN_END // null (end of input)
|
|
} token_type;
|
|
|
|
typedef struct
|
|
{
|
|
token_type type;
|
|
union
|
|
{
|
|
double num_value; // For NUMBER
|
|
char var_value; // For VARIABLE (single char, e.g., 'x')
|
|
};
|
|
} token;
|
|
|
|
#define MAX_TOKENS 100
|
|
int lexerize(const char *input, token tokens[MAX_TOKENS]);
|
|
|
|
#endif |