lexLeo
Loading...
Searching...
No Matches
lexer_ctx.h
1// src/ports/lexer/include/internal/lexer_ctx.h
2
3#ifndef LEXLEO_LEXER_CTX_H
4#define LEXLEO_LEXER_CTX_H
5
6#include "lexer_types.h"
7#include "internal/osal_mem_ctx.h"
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13struct lexleo_token_t;
14
15typedef struct lexer_ctx_t {
16 const osal_mem_ops_t *mem;
18
19typedef lexer_next_rc_t (*lexer_next_fn_t)(
20 void *backend,
21 struct lexleo_token_t *out );
22
23typedef void (*lexer_destroy_fn_t) (void *backend);
24
25typedef struct lexer_vtbl_t {
26 lexer_next_fn_t next;
27 lexer_destroy_fn_t destroy;
29
30typedef enum {
31 LEXER_STATUS_OK = 0,
32 LEXER_STATUS_ERROR = 1
33} lexer_status_t;
34
35lexer_status_t lexer_create(
36 lexer_t **out,
37 const lexer_vtbl_t *vtbl,
38 void *backend,
39 const lexer_ctx_t *ctx );
40
41void lexer_destroy(lexer_t *lx);
42
43#ifdef __cplusplus
44}
45#endif
46
47#endif //LEXLEO_LEXER_CTX_H
Definition lexer_ctx.h:15
Definition lexer_internal.h:8
Definition lexer_ctx.h:25
Definition lexleo_token.h:67
Definition osal_mem_ops.h:12