cex: use the glyphs

* src/derivation.c: here.
* src/gram.h, src/gram.c (print_arrow, print_dot, print_fallback):
Remove.
This commit is contained in:
Akim Demaille
2020-07-15 07:43:49 +02:00
parent 346ba14f15
commit 5544615a59
3 changed files with 5 additions and 43 deletions

View File

@@ -20,6 +20,7 @@
#include <config.h> #include <config.h>
#include "derivation.h" #include "derivation.h"
#include "glyphs.h"
#include <gl_linked_list.h> #include <gl_linked_list.h>
@@ -145,9 +146,7 @@ derivation_print_impl (const derivation *deriv, FILE *out,
{ {
fputs (prefix, out); fputs (prefix, out);
begin_use_class ("cex-step", out); begin_use_class ("cex-step", out);
fprintf (out, "%s ", sym->tag); fprintf (out, "%s %s [ ", sym->tag, arrow);
print_arrow (out);
fprintf (out, " [ ");
end_use_class ("cex-step", out); end_use_class ("cex-step", out);
prefix = ""; prefix = "";
} }
@@ -181,7 +180,7 @@ derivation_print_impl (const derivation *deriv, FILE *out,
{ {
fputs (prefix, out); fputs (prefix, out);
begin_use_class ("cex-dot", out); begin_use_class ("cex-dot", out);
print_dot (out); fputs (dot, out);
end_use_class ("cex-dot", out); end_use_class ("cex-dot", out);
} }
else // leaf. else // leaf.

View File

@@ -23,6 +23,7 @@
#include "complain.h" #include "complain.h"
#include "getargs.h" #include "getargs.h"
#include "glyphs.h"
#include "gram.h" #include "gram.h"
#include "print-xml.h" #include "print-xml.h"
#include "reader.h" #include "reader.h"
@@ -56,8 +57,7 @@ item_print (item_number *item, rule const *previous_rule, FILE *out)
for (item_number *sp = r->rhs; sp < item; sp++) for (item_number *sp = r->rhs; sp < item; sp++)
fprintf (out, " %s", symbols[*sp]->tag); fprintf (out, " %s", symbols[*sp]->tag);
putc (' ', out); fprintf (out, " %s", dot);
print_dot (out);
if (0 <= *r->rhs) if (0 <= *r->rhs)
for (item_number *sp = item; 0 <= *sp; ++sp) for (item_number *sp = item; 0 <= *sp; ++sp)
fprintf (out, " %s", symbols[*sp]->tag); fprintf (out, " %s", symbols[*sp]->tag);

View File

@@ -103,8 +103,6 @@
# include "system.h" # include "system.h"
# include <unicodeio.h>
# include "location.h" # include "location.h"
# include "symtab.h" # include "symtab.h"
@@ -217,41 +215,6 @@ typedef struct
extern rule *rules; extern rule *rules;
extern rule_number nrules; extern rule_number nrules;
/* Fallback in case we can't print "•" or "→". */
static inline long
print_fallback (unsigned int code _GL_UNUSED,
const char *msg _GL_UNUSED,
void *callback_arg)
{
FILE *out = (FILE *) callback_arg;
switch (code)
{
case 0x2022:
putc ('.', out);
break;
case 0x2192:
fputs ("->", out);
break;
default:
abort ();
}
return -1;
}
static inline void
print_arrow (FILE *out)
{
unicode_to_mb (0x2192, fwrite_success_callback, print_fallback, out);
}
/* Print "•", the symbol used to represent a point in an item (aka, a
dotted rule). */
static inline void
print_dot (FILE *out)
{
unicode_to_mb (0x2022, fwrite_success_callback, print_fallback, out);
}
/* Get the rule associated to this item. ITEM points inside RITEM. */ /* Get the rule associated to this item. ITEM points inside RITEM. */
static inline rule const * static inline rule const *
item_rule (item_number const *item) item_rule (item_number const *item)