traces: use colors for the semantic values

This makes reading the trace slightly easier.  It would be very nice
to highlight the "big steps", especially reductions.  But this is a
private experiment: do not use it.

* data/diagnostics.css (value): New.
* src/parse-gram.y: Use no delimiters and no c quotation for strings
to facilitate debugging.
(tron, troff, TRACE): New.
Not very elegant, but until there is support for printf-formats in
libtextstyle, it shall be enough.
This commit is contained in:
Akim Demaille
2019-04-27 16:41:07 +02:00
parent 386cf25088
commit 7ea108fa67
4 changed files with 27 additions and 6 deletions

View File

@@ -6,3 +6,5 @@
.warning { color: purple; } .warning { color: purple; }
.error { color: red; } .error { color: red; }
.note { color: cyan; } .note { color: cyan; }
/* Semantic values in Bison's parser traces. */
.value { color: green; }

View File

@@ -544,8 +544,10 @@ m4_if(b4_skeleton, ["yacc.c"],
YYPRINT (yyo, yytoknum[yytype], *yyvaluep); YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
# endif # endif
]])dnl ]])dnl
b4_symbol_actions([printer])[ b4_percent_code_get([[pre-printer]])dnl
} b4_symbol_actions([printer])
b4_percent_code_get([[post-printer]])dnl
[}
/*---------------------------. /*---------------------------.

View File

@@ -87,8 +87,8 @@ b4_output_begin([b4_parser_file_name])[
]])[ ]])[
]b4_user_pre_prologue[ ]b4_user_pre_prologue[
]b4_user_post_prologue[ ]b4_user_post_prologue[
]b4_percent_code_get([[imports]]) ]b4_percent_code_get([[imports]])[
[/** /**
* A Bison parser, automatically generated from <tt>]m4_bpatsubst(b4_file_name, [^"\(.*\)"$], [\1])[</tt>. * A Bison parser, automatically generated from <tt>]m4_bpatsubst(b4_file_name, [^"\(.*\)"$], [\1])[</tt>.
* *
* @@author LALR (1) parser skeleton written by Paolo Bonzini. * @@author LALR (1) parser skeleton written by Paolo Bonzini.

View File

@@ -112,6 +112,10 @@
#define YYTYPE_INT8 int_fast8_t #define YYTYPE_INT8 int_fast8_t
#define YYTYPE_UINT16 uint_fast16_t #define YYTYPE_UINT16 uint_fast16_t
#define YYTYPE_UINT8 uint_fast8_t #define YYTYPE_UINT8 uint_fast8_t
/* Add style to semantic values in traces. */
static void tron (FILE *yyo);
static void troff (FILE *yyo);
} }
%define api.header.include {"parse-gram.h"} %define api.header.include {"parse-gram.h"}
@@ -202,12 +206,15 @@
%token TAG_ANY "<*>" %token TAG_ANY "<*>"
%token TAG_NONE "<>" %token TAG_NONE "<>"
/* Experimental feature, don't rely on it. */
%code pre-printer {tron (yyo);}
%code post-printer {troff (yyo);}
%type <unsigned char> CHAR %type <unsigned char> CHAR
%printer { fputs (char_name ($$), yyo); } <unsigned char> %printer { fputs (char_name ($$), yyo); } <unsigned char>
%type <char*> "{...}" "%?{...}" "%{...%}" EPILOGUE STRING %type <char*> "{...}" "%?{...}" "%{...%}" EPILOGUE STRING
%printer { fputs (quotearg_style (c_quoting_style, $$), yyo); } STRING %printer { fputs ($$, yyo); } <char*>
%printer { fprintf (yyo, "{\n%s\n}", $$); } <char*>
%type <uniqstr> %type <uniqstr>
BRACKETED_ID ID ID_COLON BRACKETED_ID ID ID_COLON
@@ -1054,3 +1061,13 @@ current_lhs (symbol *sym, location loc, named_ref *ref)
free (current_lhs_named_ref); free (current_lhs_named_ref);
current_lhs_named_ref = ref; current_lhs_named_ref = ref;
} }
static void tron (FILE *yyo)
{
begin_use_class ("value", yyo);
}
static void troff (FILE *yyo)
{
end_use_class ("value", yyo);
}