32 lines
594 B
C
32 lines
594 B
C
/* symbols */
|
|
#define _LETTER_ 1
|
|
#define _DIGIT_ 2
|
|
#define _OPERATOR_ 3
|
|
#define _PUNCTUATION_ 4
|
|
#define _END_OF_LINE_ 5
|
|
#define _UNKNOWN_ 10
|
|
|
|
/* state */
|
|
#define _START_ 100
|
|
#define _GET_NEXT_CHARACTER_ 110
|
|
#define _READ_IDENTIFIER_ 120
|
|
#define _READ_NUM_LIT_ 130
|
|
#define _READ_OPERATOR_ 140
|
|
#define _READ_PUNCTUATION_ 150
|
|
#define _STOP_ 999
|
|
#define _ERROR_ 1000
|
|
|
|
// lexer struct
|
|
struct Lexer_s {
|
|
int state;
|
|
char* source_code;
|
|
char** current_pos;
|
|
};
|
|
|
|
// typedef
|
|
typedef struct Lexer_s Lexer_t;
|
|
|
|
// methods
|
|
void init_Lexer(Lexer_t*, char*);
|
|
void run_Lexer(Lexer_t*);
|