summaryrefslogtreecommitdiffstats
path: root/libroff.h
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-06-26 20:09:04 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-06-26 20:09:04 +0000
commitd06770ec5841a0d0f6cc2f9616d2a46daa15450b (patch)
tree74138a14b75a09b17c8c959c9c08c8021ceb6ecf /libroff.h
parent31b27242e30cf39fa62e9daa2925de5b5d8b90aa (diff)
downloadmandoc-d06770ec5841a0d0f6cc2f9616d2a46daa15450b.tar.gz
Complete rewrite of the lexer in a single function with four operation
modes instead of four functions, resulting in considerable simplification, fifty lines less of code, fifteen fewer automatic variables, and several bug fixes, for example: 1. The delim control statement consumes exactly two bytes of input, requires no whitespace after these two bytes, and does not treat quotes in any special way. 2. If the argument of left, right, gfont, gsize, or size is defined as an alias, only the first word of the value is used as the delimiter, font name, or font size. 3. If a back, fwd, down, or up keyword is followed by another keyword instead of the required number, GNU eqn does nothing useful, but typically errors out. So no need to have special handling (with an ugly goto!) for it in mandoc. Also getting rid of one pointless static buffer and twelve redundant calls to strlcpy(3).
Diffstat (limited to 'libroff.h')
-rw-r--r--libroff.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/libroff.h b/libroff.h
index 70290455..e72fd2bb 100644
--- a/libroff.h
+++ b/libroff.h
@@ -43,10 +43,11 @@ struct eqn_node {
struct eqn_node *next; /* singly linked list of equations */
struct eqn_def *defs; /* array of definitions */
char *data; /* source code of this equation */
+ char *start; /* first byte of the current token */
+ char *end; /* first byte of the next token */
size_t defsz; /* number of definitions */
size_t sz; /* length of the source code */
- size_t cur; /* parse point in the source code */
- size_t rew; /* beginning of the current token */
+ size_t toksz; /* length of the current token */
int gsize; /* default point size */
int delim; /* in-line delimiters enabled */
char odelim; /* in-line opening delimiter */