Merge pull request #917 from ahlinc/contrib/master

parser.c - added LOG_LOOKAHEAD macro to escape \n in logging
This commit is contained in:
Max Brunsfeld 2021-02-08 22:17:09 -08:00 committed by GitHub
commit bf1854cb1b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -25,6 +25,36 @@
ts_parser__log(self); \
}
#define LOG_LOOKAHEAD(symbol_name, size) \
if (self->lexer.logger.log || self->dot_graph_file) { \
char *buf = self->lexer.debug_buffer; \
const char *symbol = symbol_name; \
int off = sprintf(buf, "lexed_lookahead sym:"); \
for ( \
int i = 0; \
symbol[i] != '\0' \
&& off < TREE_SITTER_SERIALIZATION_BUFFER_SIZE; \
i++ \
) { \
switch (symbol[i]) { \
case '\t': buf[off++] = '\\'; buf[off++] = 't'; break; \
case '\n': buf[off++] = '\\'; buf[off++] = 'n'; break; \
case '\v': buf[off++] = '\\'; buf[off++] = 'v'; break; \
case '\f': buf[off++] = '\\'; buf[off++] = 'f'; break; \
case '\r': buf[off++] = '\\'; buf[off++] = 'r'; break; \
case '\\': buf[off++] = '\\'; buf[off++] = '\\'; break; \
default: buf[off++] = symbol[i]; break; \
} \
} \
snprintf( \
buf + off, \
TREE_SITTER_SERIALIZATION_BUFFER_SIZE - off, \
", size:%u", \
size \
); \
ts_parser__log(self); \
}
#define LOG_STACK() \
if (self->dot_graph_file) { \
ts_stack_print_dot_graph(self->stack, self->language, self->dot_graph_file); \
@ -477,11 +507,9 @@ static Subtree ts_parser__lex(
self->language
);
LOG(
"lexed_lookahead sym:%s, size:%u, character:'%c'",
LOG_LOOKAHEAD(
SYM_NAME(ts_subtree_symbol(result)),
ts_subtree_total_size(result).bytes,
first_error_character
ts_subtree_total_size(result).bytes
);
} else {
if (self->lexer.token_end_position.bytes < self->lexer.token_start_position.bytes) {
@ -534,8 +562,7 @@ static Subtree ts_parser__lex(
);
}
LOG(
"lexed_lookahead sym:%s, size:%u",
LOG_LOOKAHEAD(
SYM_NAME(ts_subtree_symbol(result)),
ts_subtree_total_size(result).bytes
);