feat: implement lexer+parser for example program
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
#ifndef FZL_READER_H
|
||||
#define FZL_READER_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
#include <compiler/fzl_token.h>
|
||||
|
||||
// Tokens linked list descriptor
|
||||
typedef struct fzl_reader_ll {
|
||||
fzl_token_t *token;
|
||||
struct fzl_reader_ll *next;
|
||||
} fzl_reader_ll_t;
|
||||
|
||||
// Source reader description
|
||||
typedef struct {
|
||||
fzl_reader_ll_t *first;
|
||||
fzl_reader_ll_t *last;
|
||||
|
||||
char *source;
|
||||
size_t position;
|
||||
bool at_end;
|
||||
} fzl_reader_t;
|
||||
|
||||
// Allocate new reader
|
||||
fzl_reader_t *fzl_mkreader(char *source);
|
||||
|
||||
// Read source file
|
||||
int fzl_read(fzl_reader_t *reader);
|
||||
|
||||
// Get last error from reader
|
||||
char *fzl_reader_geterror();
|
||||
|
||||
// Free reader
|
||||
void fzl_freereader(fzl_reader_t *reader);
|
||||
|
||||
#endif//FZL_READER_H
|
||||
|
||||
Reference in New Issue
Block a user