39 lines
695 B
C
39 lines
695 B
C
#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
|
|
|