summaryrefslogtreecommitdiff
path: root/src/runtime/c/pgf/parseval.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/c/pgf/parseval.c')
-rw-r--r--src/runtime/c/pgf/parseval.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/runtime/c/pgf/parseval.c b/src/runtime/c/pgf/parseval.c
index 5f8a3b363..85df380fa 100644
--- a/src/runtime/c/pgf/parseval.c
+++ b/src/runtime/c/pgf/parseval.c
@@ -59,7 +59,7 @@ pgf_metrics_lzn_end_phrase1(PgfLinFuncs** funcs, PgfCId cat, int fid, int lin_id
int start = gu_buf_pop(state->marks, int);
int end = state->pos;
-
+
if (start != end) {
PgfPhrase* phrase = gu_new(PgfPhrase, state->pool);
phrase->start = start;
@@ -110,13 +110,26 @@ pgf_metrics_lzn_end_phrase2(PgfLinFuncs** funcs, PgfCId cat, int fid, int lin_id
}
}
+static void
+pgf_metrics_lzn_symbol_meta(PgfLinFuncs** funcs, PgfMetaId meta_id)
+{
+ PgfMetricsLznState* state = gu_container(funcs, PgfMetricsLznState, funcs);
+
+ pgf_metrics_put_space(state);
+ if (state->out != NULL)
+ gu_putc('?', state->out, state->err);
+
+ state->pos += 1;
+}
+
static PgfLinFuncs pgf_metrics_lin_funcs1 = {
.symbol_token = pgf_metrics_lzn_symbol_token,
.begin_phrase = pgf_metrics_lzn_begin_phrase,
.end_phrase = pgf_metrics_lzn_end_phrase1,
.symbol_ne = pgf_metrics_symbol_ne,
.symbol_bind = pgf_metrics_symbol_bind,
- .symbol_capit = NULL
+ .symbol_capit = NULL,
+ .symbol_meta = pgf_metrics_lzn_symbol_meta
};
static PgfLinFuncs pgf_metrics_lin_funcs2 = {
@@ -125,7 +138,8 @@ static PgfLinFuncs pgf_metrics_lin_funcs2 = {
.end_phrase = pgf_metrics_lzn_end_phrase2,
.symbol_ne = pgf_metrics_symbol_ne,
.symbol_bind = pgf_metrics_symbol_bind,
- .symbol_capit = NULL
+ .symbol_capit = NULL,
+ .symbol_meta = pgf_metrics_lzn_symbol_meta
};
PGF_API bool