update: started to norme a bit more parser.c

This commit is contained in:
Maieul BOYER 2024-09-11 17:34:59 +02:00
parent 86695aad14
commit b264fae51a
No known key found for this signature in database
9 changed files with 372 additions and 521 deletions

View file

@ -6,7 +6,7 @@
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/07/22 13:54:54 by maiboyer #+# #+# */
/* Updated: 2024/09/02 20:15:44 by maiboyer ### ########.fr */
/* Updated: 2024/09/11 16:40:31 by maiboyer ### ########.fr */
/* */
/* ************************************************************************** */
@ -28,14 +28,6 @@
#define TREE_SITTER_LANGUAGE_VERSION 14
#define TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION 13
TSParser *ts_parser_new(void);
void ts_parser_delete(TSParser *self);
const TSLanguage *ts_parser_language(const TSParser *self);
bool ts_parser_set_language(TSParser *self, const TSLanguage *language);
TSTree *ts_parser_parse(TSParser *self, TSInput input);
TSTree *ts_parser_parse_string(TSParser *self, t_const_str string, t_u32 length);
void ts_parser_reset(TSParser *self);
TSTree *ts_tree_copy(const TSTree *self);
void ts_tree_delete(TSTree *self);
TSNode ts_tree_root_node(const TSTree *self);

View file

@ -6,7 +6,7 @@
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/10 13:56:47 by maiboyer #+# #+# */
/* Updated: 2024/09/10 13:58:59 by maiboyer ### ########.fr */
/* Updated: 2024/09/11 17:25:29 by maiboyer ### ########.fr */
/* */
/* ************************************************************************** */
@ -38,7 +38,6 @@ typedef struct s_error_status t_error_status;
typedef enum e_error_comparison t_error_comparison;
typedef struct s_string_input t_string_input;
struct TSParser
{
t_lexer lexer;
@ -79,4 +78,36 @@ struct s_string_input
t_u32 length;
};
TSParser *ts_parser_new(TSLanguage *language);
void ts_parser_delete(TSParser *self);
void ts_parser__accept(TSParser *self, t_stack_version version, t_subtree lookahead);
bool ts_parser__advance(TSParser *self, t_stack_version version);
bool ts_parser__better_version_exists(TSParser *self, t_stack_version version, bool is_in_error, t_u32 cost);
bool ts_parser__breakdown_top_of_stack(TSParser *self, t_stack_version version);
t_error_comparison ts_parser__compare_versions(TSParser *self, t_error_status a, t_error_status b);
t_u32 ts_parser__condense_stack(TSParser *self);
bool ts_parser__do_all_potential_reductions(TSParser *self, t_stack_version starting_version, TSSymbol lookahead_symbol);
void ts_parser__external_scanner_create(TSParser *self);
void ts_parser__external_scanner_deserialize(TSParser *self, t_subtree external_token);
void ts_parser__external_scanner_destroy(TSParser *self);
bool ts_parser__external_scanner_scan(TSParser *self, TSStateId external_lex_state);
t_u32 ts_parser__external_scanner_serialize(TSParser *self);
void ts_parser__handle_error(TSParser *self, t_stack_version version, t_subtree lookahead);
t_subtree ts_parser__lex(TSParser *self, t_stack_version version, TSStateId parse_state);
void ts_parser__recover(TSParser *self, t_stack_version version, t_subtree lookahead);
bool ts_parser__recover_to_state(TSParser *self, t_stack_version version, t_u32 depth, TSStateId goal_state);
t_stack_version ts_parser__reduce(TSParser *self, t_stack_version version, TSSymbol symbol, t_u32 count, int dynamic_precedence,
t_u16 production_id, bool is_fragile, bool end_of_non_terminal_extra);
bool ts_parser__select_children(TSParser *self, t_subtree left, const t_vec_subtree *children);
bool ts_parser__select_tree(TSParser *self, t_subtree left, t_subtree right);
void ts_parser__shift(TSParser *self, t_stack_version version, TSStateId state, t_subtree lookahead, bool extra);
t_error_status ts_parser__version_status(TSParser *self, t_stack_version version);
bool ts_parser_has_outstanding_parse(TSParser *self);
const TSLanguage *ts_parser_language(const TSParser *self);
TSTree *ts_parser_parse(TSParser *self, TSInput input);
TSTree *ts_parser_parse_string(TSParser *self, t_const_str string, t_u32 length);
void ts_parser_reset(TSParser *self);
bool ts_parser_set_language(TSParser *self, const TSLanguage *language);
const t_u8 *ts_string_input_read(void *_self, t_u32 byte, TSPoint point, t_u32 *length);
#endif /* PARSER_INNER_H */