diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-07-21 10:24:35 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-07-21 10:24:35 +0000 |
commit | 49de222b7899f01575a6ac00a26bc345864dc826 (patch) | |
tree | e8b6249505f745bf14ced273989037807624f076 /libroff.h | |
parent | f1454c7cbdfb3ec91f3bcce1e004d4c81d3b08cf (diff) | |
download | mandoc-49de222b7899f01575a6ac00a26bc345864dc826.tar.gz |
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.
Diffstat (limited to 'libroff.h')
-rw-r--r-- | libroff.h | 19 |
1 files changed, 11 insertions, 8 deletions
@@ -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 *); |