From 49de222b7899f01575a6ac00a26bc345864dc826 Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Thu, 21 Jul 2011 10:24:35 +0000 Subject: Finish the eqn syntactic parser. This correctly parses terms and does the proper `define' dance, which amounts to pure word-replace (you can, say, define `foo' as `define' then define `define' as something else). eqn.c is now ready for some semantic parsing of `box' and `eqn' productions as defined by the grammar. --- libroff.h | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'libroff.h') diff --git a/libroff.h b/libroff.h index 4691c2d1..1cb2f534 100644 --- a/libroff.h +++ b/libroff.h @@ -42,21 +42,24 @@ struct tbl_node { struct tbl_node *next; }; -struct eqn_def { - char *key; - size_t keysz; - char *val; - size_t valsz; -}; - struct eqn_node { struct eqn_def *defs; size_t defsz; + char *data; + size_t cur; + size_t sz; struct eqn eqn; struct mparse *parse; struct eqn_node *next; }; +struct eqn_def { + char *key; + size_t keysz; + char *val; + size_t valsz; +}; + struct tbl_node *tbl_alloc(int, int, struct mparse *); void tbl_restart(int, int, struct tbl_node *); void tbl_free(struct tbl_node *); @@ -69,7 +72,7 @@ int tbl_cdata(struct tbl_node *, int, const char *); const struct tbl_span *tbl_span(struct tbl_node *); void tbl_end(struct tbl_node *); struct eqn_node *eqn_alloc(int, int, struct mparse *); -void eqn_end(struct eqn_node *); +enum rofferr eqn_end(struct eqn_node *); void eqn_free(struct eqn_node *); enum rofferr eqn_read(struct eqn_node **, int, const char *, int, int *); -- cgit