summaryrefslogtreecommitdiffstats
path: root/libroff.h
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-07-21 10:24:35 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-07-21 10:24:35 +0000
commit49de222b7899f01575a6ac00a26bc345864dc826 (patch)
treee8b6249505f745bf14ced273989037807624f076 /libroff.h
parentf1454c7cbdfb3ec91f3bcce1e004d4c81d3b08cf (diff)
downloadmandoc-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.h19
1 files changed, 11 insertions, 8 deletions
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 *);