aboutsummaryrefslogtreecommitdiffstatshomepage
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
commitfee8aca887653490f8c052e474d2a620140e741d (patch)
treee70cabf49ec8c391686a906b8b1ee2c861acb251 /libroff.h
parent06de568c21235414d9aeaf92aef7127950caa2bf (diff)
downloadmandoc-fee8aca887653490f8c052e474d2a620140e741d.tar.gz
mandoc-fee8aca887653490f8c052e474d2a620140e741d.tar.zst
mandoc-fee8aca887653490f8c052e474d2a620140e741d.zip
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.h21
1 files changed, 12 insertions, 9 deletions
diff --git a/libroff.h b/libroff.h
index 58dc86c9..226a1dbc 100644
--- a/libroff.h
+++ b/libroff.h
@@ -1,4 +1,4 @@
-/* $Id: libroff.h,v 1.22 2011/07/17 12:13:37 kristaps Exp $ */
+/* $Id: libroff.h,v 1.23 2011/07/21 10:24:35 kristaps Exp $ */
/*
* Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -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 *);