Make lexer log output easier to read

This commit is contained in:
Max Brunsfeld 2016-12-09 13:33:37 -08:00
parent 10b51a05a1
commit 0e595346be
2 changed files with 7 additions and 18 deletions

View file

@ -178,20 +178,14 @@ describe("Document", [&]() {
delete logger;
});
it("calls the debugger with a message for each lex action", [&]() {
ts_document_set_logger(doc, logger->logger());
ts_document_parse(doc);
AssertThat(logger->messages, Contains("lookahead char:'1'"));
AssertThat(logger->messages, Contains("lookahead char:'['"));
});
it("calls the debugger with a message for each parse action", [&]() {
ts_document_set_logger(doc, logger->logger());
ts_document_parse(doc);
AssertThat(logger->messages, Contains("new_parse"));
AssertThat(logger->messages, Contains("lookahead char:'['"));
AssertThat(logger->messages, Contains("skip character:' '"));
AssertThat(logger->messages, Contains("consume character:'['"));
AssertThat(logger->messages, Contains("consume character:'1'"));
AssertThat(logger->messages, Contains("reduce sym:array, child_count:4"));
AssertThat(logger->messages, Contains("accept"));
});

View file

@ -11,11 +11,8 @@
self->logger.log(self->logger.payload, TSLogTypeLex, self->debug_buffer); \
}
#define LOG_LOOKAHEAD() \
LOG((0 < self->data.lookahead && self->data.lookahead < 256) \
? "lookahead char:'%c'" \
: "lookahead char:%d", \
self->data.lookahead);
#define LOG_CHARACTER(message, character) \
LOG(character < 255 ? message " character:'%c'" : message " character:%d", character)
static const char empty_chunk[2] = { 0, 0 };
@ -42,8 +39,6 @@ static void ts_lexer__get_lookahead(Lexer *self) {
utf8proc_iterate(chunk, size, &self->data.lookahead);
else
self->lookahead_size = utf16_iterate(chunk, size, &self->data.lookahead);
LOG_LOOKAHEAD();
}
static void ts_lexer__advance(void *payload, bool skip) {
@ -63,10 +58,10 @@ static void ts_lexer__advance(void *payload, bool skip) {
}
if (skip) {
LOG("skip_separator");
LOG_CHARACTER("skip", self->data.lookahead);
self->token_start_position = self->current_position;
} else {
LOG("advance");
LOG_CHARACTER("consume", self->data.lookahead);
}
if (self->current_position.bytes >= self->chunk_start + self->chunk_size)