From 08be124a58f07e4e41c58ea794f3e9eb04230e2b Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Fri, 10 Oct 2014 08:44:24 +0000 Subject: =?UTF-8?q?Re-write=20of=20eqn(7)=20parser=20and=20MathML=20output?= =?UTF-8?q?.=20This=20adds=20parser-level=20support=20for=20the=20grammar?= =?UTF-8?q?=20described=20by=20the=20eqn=20second-edition=20technical=20pa?= =?UTF-8?q?per,=20"Typesetting=20Mathematics=20=E2=80=94=20User's=20Guide"?= =?UTF-8?q?=20(Kernighan,=20Cherry).=20The=20reason=20for=20this=20re-writ?= =?UTF-8?q?e=20is=20the=20grouping=20rules,=20which=20were=20not=20possibl?= =?UTF-8?q?e=20given=20the=20existing=20implementation.=20The=20re-write?= =?UTF-8?q?=20has=20also=20considerably=20simplified=20the=20HTML=20(and,?= =?UTF-8?q?=20if=20it=20ever=20is=20completed,=20terminal)=20front-end.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mandoc.h | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) (limited to 'mandoc.h') diff --git a/mandoc.h b/mandoc.h index bf1c061b..ce673875 100644 --- a/mandoc.h +++ b/mandoc.h @@ -1,4 +1,4 @@ -/* $Id: mandoc.h,v 1.158 2014/09/28 14:05:11 kristaps Exp $ */ +/* $Id: mandoc.h,v 1.159 2014/10/10 08:44:24 kristaps Exp $ */ /* * Copyright (c) 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010-2014 Ingo Schwarze @@ -306,21 +306,10 @@ enum eqn_boxt { EQN_ROOT, /* root of parse tree */ EQN_TEXT, /* text (number, variable, whatever) */ EQN_SUBEXPR, /* nested `eqn' subexpression */ - EQN_LIST, /* subexpressions list */ - EQN_MATRIX /* matrix subexpression */ -}; - -enum eqn_markt { - EQNMARK_NONE = 0, - EQNMARK_DOT, - EQNMARK_DOTDOT, - EQNMARK_HAT, - EQNMARK_TILDE, - EQNMARK_VEC, - EQNMARK_DYAD, - EQNMARK_BAR, - EQNMARK_UNDER, - EQNMARK__MAX + EQN_LIST, /* list (braces, etc.) */ + EQN_LISTONE, /* singleton list */ + EQN_PILE, /* vertical pile */ + EQN_MATRIX /* pile of piles */ }; enum eqn_fontt { @@ -334,13 +323,14 @@ enum eqn_fontt { enum eqn_post { EQNPOS_NONE = 0, - EQNPOS_OVER, EQNPOS_SUP, EQNPOS_SUBSUP, EQNPOS_SUB, EQNPOS_TO, EQNPOS_FROM, EQNPOS_FROMTO, + EQNPOS_OVER, + EQNPOS_SQRT, EQNPOS__MAX }; @@ -371,10 +361,13 @@ struct eqn_box { struct eqn_box *prev; /* node sibling */ struct eqn_box *parent; /* node sibling */ char *text; /* text (or NULL) */ - char *left; - char *right; + char *left; /* fence left-hand */ + char *right; /* fence right-hand */ + char *top; /* expression over-symbol */ + char *bottom; /* expression under-symbol */ + size_t args; /* arguments in parent */ + size_t expectargs; /* max arguments in parent */ enum eqn_post pos; /* position of next box */ - enum eqn_markt mark; /* a mark about the box */ enum eqn_fontt font; /* font of box */ enum eqn_pilet pile; /* equation piling */ }; -- cgit v1.2.3