Add lexer and error handling structures for improved token processing
This commit is contained in:
parent
bd80b899df
commit
29f047404e
|
|
@ -8,6 +8,16 @@
|
|||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "sls_errors.h"
|
||||
|
||||
typedef struct {
|
||||
const char *filename;
|
||||
const char *source_code;
|
||||
size_t pos;
|
||||
size_t column;
|
||||
size_t line;
|
||||
} LexerInfo;
|
||||
|
||||
typedef enum {
|
||||
TOKEN_EOF,
|
||||
TOKEN_IDENTIFIER,
|
||||
|
|
@ -91,9 +101,25 @@ typedef struct {
|
|||
};
|
||||
} Token;
|
||||
|
||||
typedef struct TokenStream {
|
||||
Token token;
|
||||
struct TokenStream *next;
|
||||
} TokenStream;
|
||||
typedef struct LexerTokenResult {
|
||||
SlsResultType type;
|
||||
union {
|
||||
Token result;
|
||||
SlsError error;
|
||||
};
|
||||
struct LexerTokenResult *next;
|
||||
} LexerTokenResult;
|
||||
|
||||
typedef struct {
|
||||
SlsResultType type;
|
||||
union {
|
||||
LexerTokenResult *result;
|
||||
SlsError error;
|
||||
};
|
||||
} LexerResult;
|
||||
|
||||
void init_lexer(LexerInfo *lexer_info, const char *filename, const char *source_code);
|
||||
LexerResult lexical_analysis(LexerInfo *lexer_info);
|
||||
void clean_token_result(LexerTokenResult* head);
|
||||
|
||||
#endif // SLS_LEXER_H
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
// Kyler Olsen
|
||||
// YREA SLS
|
||||
// SLS Error Header
|
||||
// October 2025
|
||||
|
||||
#ifndef SLS_ERROR_H
|
||||
#define SLS_ERROR_H
|
||||
|
||||
typedef struct {
|
||||
const char *message;
|
||||
int code;
|
||||
} SlsError;
|
||||
|
||||
typedef enum {
|
||||
SLS_ERROR,
|
||||
SLS_RESULT,
|
||||
} SlsResultType;
|
||||
|
||||
#endif // SLS_ERROR_H
|
||||
Loading…
Reference in New Issue