File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11#include "include/herb.h"
22#include "include/io.h"
33#include "include/lexer.h"
4+ #include "include/macros.h"
45#include "include/parser.h"
56#include "include/token.h"
7+ #include "include/util/hb_arena.h"
68#include "include/util/hb_array.h"
79#include "include/util/hb_buffer.h"
810#include "include/version.h"
1113#include <stdlib.h>
1214
1315hb_array_T * herb_lex (const char * source ) {
16+ hb_arena_T allocator ;
17+ hb_arena_init (& allocator , KB (32 ));
18+
1419 lexer_T lexer = { 0 };
15- lexer_init (& lexer , source );
20+ lexer_init (& lexer , & allocator , source );
1621
1722 token_T * token = NULL ;
1823 hb_array_T * tokens = hb_array_init (128 );
@@ -29,8 +34,11 @@ hb_array_T* herb_lex(const char* source) {
2934AST_DOCUMENT_NODE_T * herb_parse (const char * source , parser_options_T * options ) {
3035 if (!source ) { source = "" ; }
3136
37+ hb_arena_T allocator ;
38+ hb_arena_init (& allocator , MB (512 ));
39+
3240 lexer_T lexer = { 0 };
33- lexer_init (& lexer , source );
41+ lexer_init (& lexer , & allocator , source );
3442 parser_T parser = { 0 };
3543
3644 parser_options_T parser_options = HERB_DEFAULT_PARSER_OPTIONS ;
Original file line number Diff line number Diff line change 33
44#include "lexer_struct.h"
55#include "token_struct.h"
6+ #include "util/hb_arena.h"
67
7- void lexer_init (lexer_T * lexer , const char * source );
8+ void lexer_init (lexer_T * lexer , hb_arena_T * allocator , const char * source );
89token_T * lexer_next_token (lexer_T * lexer );
910token_T * lexer_error (lexer_T * lexer , const char * message );
1011
Original file line number Diff line number Diff line change 11#ifndef HERB_LEXER_STRUCT_H
22#define HERB_LEXER_STRUCT_H
33
4+ #include "util/hb_arena.h"
45#include "util/hb_string.h"
56
67#include <stdbool.h>
@@ -14,6 +15,7 @@ typedef enum {
1415} lexer_state_T ;
1516
1617typedef struct LEXER_STRUCT {
18+ hb_arena_T * allocator ;
1719 hb_string_T source ;
1820
1921 uint32_t current_line ;
Original file line number Diff line number Diff line change 22#include "include/token.h"
33#include "include/utf8.h"
44#include "include/util.h"
5+ #include "include/util/hb_arena.h"
56#include "include/util/hb_buffer.h"
67#include "include/util/hb_string.h"
78
@@ -31,7 +32,9 @@ static bool lexer_stalled(lexer_T* lexer) {
3132 return lexer -> stalled ;
3233}
3334
34- void lexer_init (lexer_T * lexer , const char * source ) {
35+ void lexer_init (lexer_T * lexer , hb_arena_T * allocator , const char * source ) {
36+ lexer -> allocator = allocator ;
37+
3538 if (source != NULL ) {
3639 lexer -> source = hb_string (source );
3740 } else {
You can’t perform that action at this time.
0 commit comments