Sha256: d325183f0224f18ab369d6fe077ddac30e0b1a0c94b594d76338a97b648fb379
Contents?: true
Size: 1.54 KB
Versions: 1
Compression:
Stored size: 1.54 KB
Contents
#include <tree_sitter/parser.h> enum { STRING, LINE_BREAK }; void *tree_sitter_external_and_internal_tokens_external_scanner_create() { return NULL; } void tree_sitter_external_and_internal_tokens_external_scanner_destroy( void *payload ) {} void tree_sitter_external_and_internal_tokens_external_scanner_reset( void *payload ) {} unsigned tree_sitter_external_and_internal_tokens_external_scanner_serialize( void *payload, char *buffer ) { return 0; } void tree_sitter_external_and_internal_tokens_external_scanner_deserialize( void *payload, const char *buffer, unsigned length ) {} bool tree_sitter_external_and_internal_tokens_external_scanner_scan( void *payload, TSLexer *lexer, const bool *whitelist ) { // If a line-break is a valid lookahead token, only skip spaces. if (whitelist[LINE_BREAK]) { while (lexer->lookahead == ' ') { lexer->advance(lexer, true); } if (lexer->lookahead == '\n') { lexer->advance(lexer, false); lexer->result_symbol = LINE_BREAK; return true; } } // If a line-break is not a valid lookahead token, skip line breaks as well // as spaces. if (whitelist[STRING]) { while (lexer->lookahead == ' ' || lexer->lookahead == '\n') { lexer->advance(lexer, true); } if (lexer->lookahead == '\'') { lexer->advance(lexer, false); while (lexer->lookahead != '\'') { lexer->advance(lexer, false); } lexer->advance(lexer, false); lexer->result_symbol = STRING; return true; } } return false; }
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
tree-sitter-0.1.0 | ext/tree-sitter/tree-sitter/test/fixtures/test_grammars/external_and_internal_tokens/scanner.c |