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

View File

@@ -23,6 +23,7 @@
#include "complain.h"
#include "getargs.h"
#include "glyphs.h"
#include "gram.h"
#include "print-xml.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++)
fprintf (out, " %s", symbols[*sp]->tag);
putc (' ', out);
print_dot (out);
fprintf (out, " %s", dot);
if (0 <= *r->rhs)
for (item_number *sp = item; 0 <= *sp; ++sp)
fprintf (out, " %s", symbols[*sp]->tag);

View File

@@ -103,8 +103,6 @@
# include "system.h"
# include <unicodeio.h>
# include "location.h"
# include "symtab.h"
@@ -217,41 +215,6 @@ typedef struct
extern rule *rules;
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. */
static inline rule const *
item_rule (item_number const *item)