1 .\" $Vendor-Id: roff.3,v 1.10 2011/01/01 16:18:39 kristaps Exp $
3 .\" Copyright (c) 2010 Kristaps Dzonsons <kristaps@bsd.lv>
5 .\" Permission to use, copy, modify, and distribute this software for any
6 .\" purpose with or without fee is hereby granted, provided that the above
7 .\" copyright notice and this permission notice appear in all copies.
9 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
28 .Nd roff macro compiler library
34 .Fa "struct regset *regs"
39 .Fn roff_endparse "struct roff *roff"
41 .Fn roff_free "struct roff *roff"
44 .Fa "struct roff *roff"
52 .Fn roff_reset "struct roff *roff"
53 .Ft "const struct tbl_span *"
54 .Fn roff_span "const struct roff *roff"
58 library processes lines of
62 In general, applications initiate a parsing sequence with
64 parse each line in a document with
66 close the parsing session with
68 and finally free all allocated memory with
72 function may be used in order to reset the parser for another input
77 function should be invoked before passing a line into the
85 section for a full example.
87 This section further defines the
91 available to programmers.
95 may use the following types:
98 Instructions for further processing to the caller of
101 An opaque type defined in
103 Its values are only used privately within the library.
105 A function callback type defined in
109 Function descriptions follow:
112 Allocates a parsing structure.
117 Returns NULL on failure.
118 If non-NULL, the pointer must be freed with
121 Reset the parser for another parse routine.
124 behaves as if invoked for the first time.
126 Free all resources of a parser.
127 The pointer is no longer valid after invocation.
129 Parse a nil-terminated line of input.
132 may be modified or reallocated within this function.
135 will be modified accordingly.
138 pointer will be modified if the line start during subsequent processing
139 of the line is not at the zeroth index.
140 This line should not contain the trailing newline.
141 Returns 0 on failure, 1 on success.
143 Signals that the parse is complete.
149 return the last parsed table row.
150 Returns NULL otherwise.
155 in the source distribution for an example of usage.
164 library was written by
165 .An Kristaps Dzonsons Aq kristaps@bsd.lv .
167 The implementation of user-defined strings needs improvement:
170 String values are taken literally and are not interpreted.
172 Parsing of quoted strings is incomplete.
174 The stings are stored internally using a singly linked list,
175 which is fine for small numbers of strings,
176 but ineffient when handling many strings.