Add a public function for printing debugging graphs

This commit is contained in:
Max Brunsfeld 2016-02-23 11:16:50 -08:00
parent b36143d7a7
commit abbc282950
4 changed files with 8 additions and 4 deletions

View file

@ -91,6 +91,7 @@ void ts_document_set_input(TSDocument *, TSInput);
void ts_document_set_input_string(TSDocument *, const char *);
TSDebugger ts_document_debugger(const TSDocument *);
void ts_document_set_debugger(TSDocument *, TSDebugger);
void ts_document_print_debugging_graphs(TSDocument *, bool);
void ts_document_edit(TSDocument *, TSInputEdit);
int ts_document_parse(TSDocument *);
void ts_document_invalidate(TSDocument *);

View file

@ -52,6 +52,10 @@ void ts_document_set_debugger(TSDocument *self, TSDebugger debugger) {
ts_parser_set_debugger(&self->parser, debugger);
}
void ts_document_print_debugging_graphs(TSDocument *self, bool should_print) {
self->parser.print_debugging_graphs = should_print;
}
TSInput ts_document_input(TSDocument *self) {
return self->input;
}

View file

@ -15,8 +15,6 @@
* Debugging
*/
bool TS_PARSER_PRINT_STACKS = false;
#define LOG(...) \
if (self->lexer.debugger.debug_fn) { \
snprintf(self->lexer.debug_buffer, TS_DEBUG_BUFFER_SIZE, __VA_ARGS__); \
@ -26,14 +24,14 @@ bool TS_PARSER_PRINT_STACKS = false;
#define LOG_ACTION(...) \
LOG(__VA_ARGS__); \
if (TS_PARSER_PRINT_STACKS) { \
if (self->print_debugging_graphs) { \
fprintf(stderr, "graph {\nlabel=\""); \
fprintf(stderr, __VA_ARGS__); \
fprintf(stderr, "\"\n}\n\n"); \
}
#define LOG_STACK() \
if (TS_PARSER_PRINT_STACKS) { \
if (self->print_debugging_graphs) { \
fputs(ts_stack_dot_graph(self->stack, self->language->symbol_names), \
stderr); \
fputs("\n\n", stderr); \

View file

@ -18,6 +18,7 @@ typedef struct {
Array(TSTree *) reduce_parents;
TSTree *finished_tree;
bool is_split;
bool print_debugging_graphs;
} TSParser;
bool ts_parser_init(TSParser *);