update: update stuff in parser/src/parser/
This commit is contained in:
parent
589189c90d
commit
0c81df4b0a
4 changed files with 41 additions and 34 deletions
|
|
@ -6,57 +6,65 @@
|
|||
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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 */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "parser/inner/parser_inner.h"
|
||||
|
||||
void ts_parser__external_scanner_create(TSParser *self)
|
||||
void ts_parser__external_scanner_create(TSParser *self)
|
||||
{
|
||||
self->external_scanner_payload = self->language->external_scanner.create();
|
||||
}
|
||||
|
||||
void ts_parser__external_scanner_destroy(TSParser *self)
|
||||
void ts_parser__external_scanner_destroy(TSParser *self)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
t_u32 ts_parser__external_scanner_serialize(TSParser *self)
|
||||
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)
|
||||
me_abort("assertion failed in " __FILE__ " `length > "
|
||||
"TREE_SITTER_SERIALIZATION_BUFFER_SIZE`");
|
||||
return length;
|
||||
me_abort("assertion failed in " __FILE__ " `length > " \
|
||||
"TREE_SITTER_SERIALIZATION_BUFFER_SIZE`");
|
||||
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;
|
||||
|
||||
data = NULL;
|
||||
length = 0;
|
||||
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;
|
||||
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);
|
||||
return self->language->external_scanner.scan(self->external_scanner_payload, &self->lexer.data, valid_external_tokens);
|
||||
valid_external_tokens = ts_language_enabled_external_tokens(self->language,
|
||||
external_lex_state);
|
||||
return (self->language->external_scanner.scan(\
|
||||
self->external_scanner_payload, &self->lexer.data, valid_external_tokens));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,15 +6,15 @@
|
|||
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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 */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "parser/inner/parser_inner.h"
|
||||
|
||||
TSParser *ts_parser_new(TSLanguage *language)
|
||||
TSParser *ts_parser_new(TSLanguage *language)
|
||||
{
|
||||
TSParser *self;
|
||||
TSParser *self;
|
||||
|
||||
self = mem_alloc(sizeof(*self));
|
||||
ts_lexer_init(&self->lexer);
|
||||
|
|
@ -25,13 +25,13 @@ TSParser *ts_parser_new(TSLanguage *language)
|
|||
self->has_scanner_error = false;
|
||||
self->external_scanner_payload = NULL;
|
||||
self->operation_count = 0;
|
||||
return self;
|
||||
return (self);
|
||||
}
|
||||
|
||||
void ts_parser_delete(TSParser *self)
|
||||
void ts_parser_delete(TSParser *self)
|
||||
{
|
||||
if (!self)
|
||||
return;
|
||||
return ;
|
||||
ts_parser_reset(self);
|
||||
self->language = NULL;
|
||||
ts_stack_delete(self->stack);
|
||||
|
|
@ -42,7 +42,7 @@ void ts_parser_delete(TSParser *self)
|
|||
mem_free(self);
|
||||
}
|
||||
|
||||
void ts_parser_reset(TSParser *self)
|
||||
void ts_parser_reset(TSParser *self)
|
||||
{
|
||||
ts_parser__external_scanner_destroy(self);
|
||||
ts_lexer_reset(&self->lexer, length_zero());
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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;
|
||||
|
||||
input = (t_string_input){(const t_u8 *)string, length};
|
||||
return (ts_parser_parse(self,
|
||||
(TSInput){
|
||||
&input,
|
||||
ts_string_input_read,
|
||||
}));
|
||||
return (ts_parser_parse(self, \
|
||||
(TSInput){&input, ts_string_input_read}));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
/* By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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);
|
||||
if (ts_subtree_error_cost(left) < ts_subtree_error_cost(right))
|
||||
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);
|
||||
if (ts_subtree_dynamic_precedence(left) > ts_subtree_dynamic_precedence(right))
|
||||
if (ts_subtree_dynamic_precedence(left) > \
|
||||
ts_subtree_dynamic_precedence(right))
|
||||
return (false);
|
||||
if (ts_subtree_error_cost(left) > 0)
|
||||
return (true);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue