From 0e6a987ed476ffa4c7deba189b1e25cccf449ba4 Mon Sep 17 00:00:00 2001 From: c+1 Date: Thu, 18 May 2023 14:25:20 -0400 Subject: signatures for future lexing methods --- src/include/lexer.h | 49 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 14 deletions(-) (limited to 'src/include') diff --git a/src/include/lexer.h b/src/include/lexer.h index 3d3b916..b84cea6 100644 --- a/src/include/lexer.h +++ b/src/include/lexer.h @@ -11,31 +11,52 @@ typedef struct LEXER_STRUC { char* content; // the code itself } lexer_t; + +// constructor / destroyer extern lexer_t* lexer_init(char* content); +extern void lexer_destroy(lexer_t* lexer); +// advance the lexer extern void lexer_next(lexer_t* lexer); extern void lexer_pass(lexer_t* lexer); - extern token_t* lexer_get_next_token(lexer_t* lexer); +extern token_t* lexer_next_token(lexer_t* lexer, token_t* token); +extern char* lexer_get_c_as_string(lexer_t* lexer); +// collectors +extern token_t* lexer_get_array(lexer_t* lexer); extern token_t* lexer_get_string(lexer_t* lexer); - -extern token_t* lexer_get_def_const(lexer_t* lexer); -extern token_t* lexer_get_def_mut(lexer_t* lexer); - -extern token_t* lexer_get_def_var(lexer_t* lexer); - extern token_t* lexer_get_comment(lexer_t* lexer); +// def collectors extern token_t* lexer_get_directive(lexer_t* lexer); - extern token_t* lexer_get_keyword(lexer_t* lexer); - -extern token_t* lexer_next_token(lexer_t* lexer, token_t* token); - -extern char* lexer_get_c_as_string(lexer_t* lexer); - -extern void lexer_destroy(lexer_t* lexer); +extern token_t* lexer_get_def(lexer_t* lexer); + +// = + // get the definition + extern token_t* lexer_get_def(lexer_t* lexer); + // looks for mut: or immut: + extern token_t* lexer_get_def_mutability(lexer_t* lexer); + // get the type of the definition, with syntax : + extern token_t* lexer_get_def_type(lexer_t* lexer); + // get the name of the definition + extern token_t* lexer_det_def_name(lexer_t* lexer); + // calls either get_def_var or get_def_fn + extern token_t* lexer_get_def_deftype(lexer_t* lexer); + +// get a var def +extern token_t* lexer_get_def_var(lexer_t* lexer); +// get the var value +extern token_t* lexer_get_var_value(lexer_t* lexer); + +// get a fn def +extern token_t* lexer_get_fn_def(lexer_t* lexer); +// get the fn args -- calls get get_def_mut and get_def_type and get_def_name +// for each +extern token_t* lexer_get_fn_args(lexer_t* lexer); +// get the fn body +extern token_t* lexer_get_fn_body(lexer_t* lexer); #endif -- cgit v1.2.3