summaryrefslogtreecommitdiffstats
path: root/eqn.c
Commit message (Collapse)AuthorAgeFilesLines
* Clean up eqn(7) error handling:Ingo Schwarze2015-01-281-51/+72
| | | | | | | | * When "define" fails, do not drop the whole equation. * Free memory after "undef". * Use standard mandoc error types instead of rolling our own. * Delete obfuscating EQN_MSG() macro. * Add function prototypes while here.
* Fix a NULL pointer dereference reportedIngo Schwarze2014-10-251-1/+3
| | | | | by Theo Buehler <theo at math dot ethz dot ch> on tech at openbsd: Do not attempt to parse empty equations.
* Report arguments to .EQ as an error, and simplify the code:Ingo Schwarze2014-10-251-16/+1
| | | | | | | * drop trivial wrapper function roff_openeqn() * drop unused first arg of function eqn_alloc() * drop usused member "name" of struct eqn_node While here, sync to OpenBSD by killing some trailing blanks.
* Implement in-line equations, much needed by Xenocara manuals.Ingo Schwarze2014-10-161-0/+26
| | | | | | | | Put the steering into the roff parser rather than into the mdoc parser such that it works for all macro languages and on both text and macro lines. Line breaks and blank characters generated before and after in-line equations are not perfect yet, but let's do one thing at a time.
* bugfix: do not parse quoted strings for tokens; fixes glFrustum(3)Ingo Schwarze2014-10-121-0/+10
|
* Improve error handling in the eqn(7) parser.Ingo Schwarze2014-10-121-101/+83
| | | | | | | | | | | | | | | | | | | Get rid of the first fatal error, MANDOCERR_EQNSYNT. In eqn(7), there is no need to be bug-compatible with groff, so there is no need to abondon the whole equation in case of a syntax error. In particular: * Skip "back", "delim", "down", "fwd", "gfont", "gsize", "left", "right", "size", and "up" without arguments. * Skip "gsize" and "size" with a non-numeric argument. * Skip closing delimiters that are not open. * Skip "above" outside piles. * For diacritic marks and binary operators without a left operand, default to an empty box. * Let piles and matrices take one argument rather than insisting on a braced list. Let HTML output handle that, too. * When rewinding, if the root box is guaranteed to match the termination condition, no error handling is needed.
* Drop trailing whitespace, adjust a few indentations,Ingo Schwarze2014-10-101-21/+20
| | | | and update Copyright year while here; no code change.
* No need to assert() that a pointer is non-null right before dereferencing it.Ingo Schwarze2014-10-101-3/+0
| | | | The assert message contains no more information than the segfault.
* Ignore "delim" command.Kristaps Dzonsons2014-10-101-0/+1
| | | | This fixes run-time assertions regarding "tok".
* Re-write of eqn(7) parser and MathML output.Kristaps Dzonsons2014-10-101-611/+740
| | | | | | | | | | This adds parser-level support for the grammar described by the eqn second-edition technical paper, "Typesetting Mathematics — User's Guide" (Kernighan, Cherry). The reason for this re-write is the grouping rules, which were not possible given the existing implementation. The re-write has also considerably simplified the HTML (and, if it ever is completed, terminal) front-end.
* Parse from/to clauses in eqn.Kristaps Dzonsons2014-09-281-1/+6
|
* Add support for EQNPOS_SUBSUP and a doubly-linked eqn_box list.Kristaps Dzonsons2014-09-281-5/+23
|
* Get rid of HAVE_CONFIG_H, it is always defined; idea from libnbcompat.Ingo Schwarze2014-08-101-2/+2
| | | | | | Include <sys/types.h> where needed, it does not belong in config.h. Remove <stdio.h> from config.h; if it is missing somewhere, it should be added, but i cannot find a *.c file where it is missing.
* Clean up messages related to plain text and to escape sequences.Ingo Schwarze2014-07-061-1/+1
| | | | | * Mention invalid escape sequences and string names, and fallbacks. * Hierarchical naming.
* Clean up messages regarding excess arguments:Ingo Schwarze2014-07-041-1/+2
| | | | | | * Downgrade ".Bf -emphasis Em" from FATAL to WARNING. * Mention the macros, the arguments, and the fallbacks. * Hierarchical naming.
* Audit malloc(3)/calloc(3)/realloc(3) usage.Ingo Schwarze2014-04-231-2/+2
| | | | | | | * Change eight reallocs to reallocarray to be safe from overflows. * Change one malloc to reallocarray to be safe from overflows. * Change one calloc to reallocarray, no zeroing needed. * Change the order of arguments of three callocs (aesthetical).
* make sure static buffers for snprintf(3) are large enoughIngo Schwarze2014-04-201-1/+1
| | | | and cast snprintf return value to (void) where they are
* KNF: case (FOO): -> case FOO:, remove /* LINTED */ and /* ARGSUSED */,Ingo Schwarze2014-04-201-33/+30
| | | | | remove trailing whitespace and blanks before tabs, improve some indenting; no functional change
* The files mandoc.c and mandoc.h contained both specialised low-levelIngo Schwarze2014-03-231-0/+1
| | | | | | | functions used for multiple languages (mdoc, man, roff), for example mandoc_escape(), mandoc_getarg(), mandoc_eos(), and generic auxiliary functions. Split the auxiliaries out into their own file and header. While here, do some #include cleanup.
* Implement the first steps of equation parsing from within libmdoc.Kristaps Dzonsons2011-07-251-4/+7
| | | | | | This consists of a shim around the text parser that calls out to libroff if equation components exist on the line. Right now this will do nothing, as the equation delimiter always returns nil.
* Note GNU extensions in eqn.7. Also add `col' and `pile', which areKristaps Dzonsons2011-07-231-0/+2
| | | | | mentioned briefly in the eqn User's Manual, but otherwise are unspecified.
* Add support for tdefine and ndefine. Consolidate some error messages. AddKristaps Dzonsons2011-07-231-23/+54
| | | | somem more version notes (getting there). Have the equation nanme be captured.
* Raise a warning when text follows the `EN'.Kristaps Dzonsons2011-07-231-1/+7
|
* Add `fat' font. This pretty much brings us in line with the secondKristaps Dzonsons2011-07-231-0/+1
| | | | edition of eqn.
* Ignore `back', `fwd', `up', `down', `mark', and `lineup'.Kristaps Dzonsons2011-07-231-3/+29
|
* Add matrix support. Also remove "above" notion, as all elements in aKristaps Dzonsons2011-07-231-1/+56
| | | | list are delimited by their "aboveness" and it's superfluous.
* The circumflex is also a special space character.Kristaps Dzonsons2011-07-231-1/+2
| | | | | Note this and clean up some documentation in eqn.7. Also add some version notes, although I'm not ready for a release yet.
* Check for and throw away `gfont' eqn macros.Kristaps Dzonsons2011-07-221-1/+16
|
* Add support for `gsize' eqn token (introduced in second-edition troff).Kristaps Dzonsons2011-07-221-11/+31
|
* Add all rendered symbols used by eqn. I use the Second-Edition User'sKristaps Dzonsons2011-07-221-42/+87
| | | | | Manual (1978) for this, so it should catch most of them. They just map into the mandoc_char escaped characters.
* Support translating Greek characters in eqn.Kristaps Dzonsons2011-07-221-0/+94
|
* Fix left/right nesting in eqn.Kristaps Dzonsons2011-07-221-3/+7
|
* Protect macro expansion.Kristaps Dzonsons2011-07-221-1/+1
|
* Use a macro instead of doing a string-fragment compare. I just getKristaps Dzonsons2011-07-221-28/+23
| | | | | | worried that I'm going to write the wrong size on both sides of the equality (I've already done it a few times). This cleans up the code readability a bit.
* Give lists their own eqn function.Kristaps Dzonsons2011-07-221-35/+50
|
* Accomodate for hard-spaces with tildes. For now, consider them regularKristaps Dzonsons2011-07-221-4/+16
| | | | | | spaces. Also allow for tabs. Finally, have the parser correctly handle open and close brackets smooshed against other terms. All of these handle "details" noted in the CACM paper.
* Fix eqn handling of PILE clauses (multiple ABOVE statements may beKristaps Dzonsons2011-07-211-17/+14
| | | | specified for each PILE).
* Complete eqn.7 parsing. Features all productions from the original 1975Kristaps Dzonsons2011-07-211-116/+231
| | | | | | | | CACM paper in an LR(1) parse (1 -> eqn_rewind()). Right now the code is a little jungly, but will clear up as I consolidate parse components. The AST structure will also be cleaned up, as right now it's pretty ad hoc (this won't change the parse itself). I added the mandoc_strndup() function will here.
* Support `size' constructs in eqn.7. Generalise mandoc_strontou to thisKristaps Dzonsons2011-07-211-2/+12
| | | | effect.
* Full support for eqn positionals (above, over, sup, sub, etc.).Kristaps Dzonsons2011-07-211-2/+21
|
* Add eqn subexpression fonts.Kristaps Dzonsons2011-07-211-12/+31
|
* Add support for markers. These decorate the last box: see eqn.7.Kristaps Dzonsons2011-07-211-5/+33
|
* Support nested `{, }' subexpressions in eqn. Document in code.Kristaps Dzonsons2011-07-211-10/+49
|
* Make `undef' not expand its argument before undefining it. DocumentKristaps Dzonsons2011-07-211-15/+21
| | | | this and have the same behaviour apply to `set' and `define'.
* Flip eqn into using parsed nodes. I've temporarily disabled printingKristaps Dzonsons2011-07-211-31/+64
| | | | | | | these in the front-ends except for -Ttree, which will display the parsed tree. While here, fix that quoted strings aren't scanned for replacement parts.
* Finish the eqn syntactic parser. This correctly parses terms and doesKristaps Dzonsons2011-07-211-184/+180
| | | | | | | 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.
* Definitions in eqn.7 are actually recursive. Do this and add crudeKristaps Dzonsons2011-07-181-7/+29
| | | | protection that we don't nest back to ourselves.
* Fix lost allocation.Kristaps Dzonsons2011-07-171-2/+0
|
* Remember to NULL-ify new keys/vals.Kristaps Dzonsons2011-07-171-0/+1
|
* Provide implementations of `define', `set', and `unset'.Kristaps Dzonsons2011-07-171-55/+196
| | | | | | Tie them into the stream of data. Document these appropriate, bringing in the grammar as defined by the original eqn manual (Kernighan/Richie).