#include <tree_sitter/parser.h>
#include <wctype.h>
enum TOKEN_TYPE {
STATEMENT_TERMINATOR
};
void *tree_sitter_powershell_external_scanner_create();
void tree_sitter_powershell_external_scanner_destroy(void *p);
unsigned tree_sitter_powershell_external_scanner_serialize(void *payload, char *buffer);
void tree_sitter_powershell_external_scanner_deserialize(void *payload, const char *buffer, unsigned length);
bool tree_sitter_powershell_external_scanner_scan(void *payload, TSLexer *lexer, const bool *valid_symbols);
static void skip(TSLexer *lexer) { lexer->advance(lexer, true); }
static bool scan_statement_terminator(void *payload, TSLexer *lexer, const bool *valid_symbols)
{
if (valid_symbols[STATEMENT_TERMINATOR]) {
lexer->result_symbol = STATEMENT_TERMINATOR;
lexer->mark_end(lexer);
for (;;) {
if (lexer->lookahead == 0) return true;
if (lexer->lookahead == '}') return true;
if (lexer->lookahead == ';') return true;
if (lexer->lookahead == ')') return true;
if (lexer->lookahead == '\n') return true;
if (!iswspace(lexer->lookahead)) return false;
skip(lexer);
}
}
return false;
}
bool tree_sitter_powershell_external_scanner_scan(void *payload, TSLexer *lexer, const bool *valid_symbols)
{
return scan_statement_terminator(payload, lexer, valid_symbols);
}
void *tree_sitter_powershell_external_scanner_create()
{
return NULL;
}
void tree_sitter_powershell_external_scanner_destroy(void *p)
{
}
unsigned tree_sitter_powershell_external_scanner_serialize(void *payload, char *buffer)
{
return 0;
}
void tree_sitter_powershell_external_scanner_deserialize(void *payload, const char *buffer, unsigned length)
{
}