/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* helper.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rparodi +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/09/14 16:12:41 by rparodi #+# #+# */ /* Updated: 2024/09/14 16:19:31 by rparodi ### ########.fr */ /* */ /* ************************************************************************** */ #include "parser/inner/scanner_inner.h" bool in_error_recovery(const bool *valid_symbols); void reset(t_scanner *scanner); bool advance_word(t_lexer *lexer, t_string *unquoted_word); t_u32 serialize(t_scanner *scanner, t_u8 *buffer); void deserialize(t_scanner *scanner, const t_u8 *buffer, t_u32 length); bool scan_bare_dollar(t_lexer *lexer); bool scan_heredoc_start(t_heredoc *heredoc, t_lexer *lexer); bool scan_heredoc_end_identifier(t_heredoc *heredoc, t_lexer *lexer); bool scan_heredoc_content(t_scanner *scanner, t_lexer *lexer, enum e_token_type middle_type, enum e_token_type end_type); bool scan_double_hash(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols); bool scan_concat(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols); bool scan_heredoc_end(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols); bool scan_advance_words(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols); bool scan_literals(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols); bool scan(t_scanner *scanner, t_lexer *lexer, const bool *valid_symbols); void *tree_sitter_sh_external_scanner_create(void); bool tree_sitter_sh_external_scanner_scan(void *payload, t_lexer *lexer, const bool *valid_symbols); t_u32 tree_sitter_sh_external_scanner_serialize(void *payload, t_u8 *state); void tree_sitter_sh_external_scanner_deserialize(void *payload, const t_u8 *state, t_u32 length); void tree_sitter_sh_external_scanner_destroy(void *payload); bool in_error_recovery(const bool *valid_symbols) { return (valid_symbols[ERROR_RECOVERY]); } void reset(t_scanner *scanner) { t_u32 i; i = 0; while (i < scanner->heredocs.len) reset_heredoc(vec_heredoc_get(&scanner->heredocs, i++)); }