update: update stuff in parser/src/parser/

This commit is contained in:
maix0 2024-09-13 14:20:54 +00:00
parent 589189c90d
commit 0c81df4b0a
4 changed files with 41 additions and 34 deletions

View file

@ -6,7 +6,7 @@
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */ /* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/11 16:44:11 by maiboyer #+# #+# */ /* Created: 2024/09/11 16:44:11 by maiboyer #+# #+# */
/* Updated: 2024/09/11 16:44:49 by maiboyer ### ########.fr */ /* Updated: 2024/09/13 14:14:07 by maiboyer ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -21,7 +21,8 @@ void ts_parser__external_scanner_destroy(TSParser *self)
{ {
if (self->external_scanner_payload != NULL) if (self->external_scanner_payload != NULL)
{ {
self->language->external_scanner.destroy(self->external_scanner_payload); self->language->external_scanner.destroy(\
self->external_scanner_payload);
self->external_scanner_payload = NULL; self->external_scanner_payload = NULL;
} }
} }
@ -30,14 +31,16 @@ t_u32 ts_parser__external_scanner_serialize(TSParser *self)
{ {
t_u32 length; t_u32 length;
length = self->language->external_scanner.serialize(self->external_scanner_payload, self->lexer.debug_buffer); length = self->language->external_scanner.serialize(\
self->external_scanner_payload, self->lexer.debug_buffer);
if (length > TREE_SITTER_SERIALIZATION_BUFFER_SIZE) if (length > TREE_SITTER_SERIALIZATION_BUFFER_SIZE)
me_abort("assertion failed in " __FILE__ " `length > " me_abort("assertion failed in " __FILE__ " `length > " \
"TREE_SITTER_SERIALIZATION_BUFFER_SIZE`"); "TREE_SITTER_SERIALIZATION_BUFFER_SIZE`");
return length; return (length);
} }
void ts_parser__external_scanner_deserialize(TSParser *self, t_subtree external_token) void ts_parser__external_scanner_deserialize(TSParser *self,
t_subtree external_token)
{ {
const t_u8 *data; const t_u8 *data;
t_u32 length; t_u32 length;
@ -46,17 +49,22 @@ void ts_parser__external_scanner_deserialize(TSParser *self, t_subtree external_
length = 0; length = 0;
if (external_token) if (external_token)
{ {
data = ts_external_scanner_state_data(&external_token->external_scanner_state); data = ts_external_scanner_state_data(\
&external_token->external_scanner_state);
length = external_token->external_scanner_state.length; length = external_token->external_scanner_state.length;
printf("HERE\n"); printf("HERE\n");
} }
self->language->external_scanner.deserialize(self->external_scanner_payload, data, length); self->language->external_scanner.deserialize(self->external_scanner_payload,
data, length);
} }
bool ts_parser__external_scanner_scan(TSParser *self, TSStateId external_lex_state) bool ts_parser__external_scanner_scan(TSParser *self,
TSStateId external_lex_state)
{ {
const bool *valid_external_tokens; const bool *valid_external_tokens;
valid_external_tokens = ts_language_enabled_external_tokens(self->language, external_lex_state); valid_external_tokens = ts_language_enabled_external_tokens(self->language,
return self->language->external_scanner.scan(self->external_scanner_payload, &self->lexer.data, valid_external_tokens); external_lex_state);
return (self->language->external_scanner.scan(\
self->external_scanner_payload, &self->lexer.data, valid_external_tokens));
} }

View file

@ -6,7 +6,7 @@
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */ /* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/10 13:56:13 by maiboyer #+# #+# */ /* Created: 2024/09/10 13:56:13 by maiboyer #+# #+# */
/* Updated: 2024/09/11 16:43:43 by maiboyer ### ########.fr */ /* Updated: 2024/09/13 14:12:29 by maiboyer ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -25,7 +25,7 @@ TSParser *ts_parser_new(TSLanguage *language)
self->has_scanner_error = false; self->has_scanner_error = false;
self->external_scanner_payload = NULL; self->external_scanner_payload = NULL;
self->operation_count = 0; self->operation_count = 0;
return self; return (self);
} }
void ts_parser_delete(TSParser *self) void ts_parser_delete(TSParser *self)

View file

@ -6,7 +6,7 @@
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */ /* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/13 13:49:37 by maiboyer #+# #+# */ /* Created: 2024/09/13 13:49:37 by maiboyer #+# #+# */
/* Updated: 2024/09/13 13:49:45 by maiboyer ### ########.fr */ /* Updated: 2024/09/13 14:19:20 by maiboyer ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -37,9 +37,6 @@ TSTree *ts_parser_parse_string(TSParser *self, t_const_str string,
t_string_input input; t_string_input input;
input = (t_string_input){(const t_u8 *)string, length}; input = (t_string_input){(const t_u8 *)string, length};
return (ts_parser_parse(self, return (ts_parser_parse(self, \
(TSInput){ (TSInput){&input, ts_string_input_read}));
&input,
ts_string_input_read,
}));
} }

View file

@ -6,7 +6,7 @@
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */ /* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/13 13:55:07 by maiboyer #+# #+# */ /* Created: 2024/09/13 13:55:07 by maiboyer #+# #+# */
/* Updated: 2024/09/13 13:55:14 by maiboyer ### ########.fr */ /* Updated: 2024/09/13 14:09:10 by maiboyer ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -31,9 +31,11 @@ bool ts_parser__select_tree(TSParser *self, t_subtree left, t_subtree right)
return (true); return (true);
if (ts_subtree_error_cost(left) < ts_subtree_error_cost(right)) if (ts_subtree_error_cost(left) < ts_subtree_error_cost(right))
return (false); return (false);
if (ts_subtree_dynamic_precedence(right) > ts_subtree_dynamic_precedence(left)) if (ts_subtree_dynamic_precedence(right) > \
ts_subtree_dynamic_precedence(left))
return (true); return (true);
if (ts_subtree_dynamic_precedence(left) > ts_subtree_dynamic_precedence(right)) if (ts_subtree_dynamic_precedence(left) > \
ts_subtree_dynamic_precedence(right))
return (false); return (false);
if (ts_subtree_error_cost(left) > 0) if (ts_subtree_error_cost(left) > 0)
return (true); return (true);