version 1.17, 2009/03/14 05:21:58 |
version 1.29, 2009/06/10 20:18:43 |
|
|
.\" $Id$ |
.\" $Id$ |
.\" |
.\" |
.\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se> |
.\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se> |
.\" |
.\" |
.\" Permission to use, copy, modify, and distribute this software for any |
.\" Permission to use, copy, modify, and distribute this software for any |
.\" purpose with or without fee is hereby granted, provided that the |
.\" purpose with or without fee is hereby granted, provided that the above |
.\" above copyright notice and this permission notice appear in all |
.\" copyright notice and this permission notice appear in all copies. |
.\" copies. |
|
.\" |
.\" |
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL |
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
.\" WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED |
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
.\" WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE |
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
.\" AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL |
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
.\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR |
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
.\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER |
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
.\" TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
.\" PERFORMANCE OF THIS SOFTWARE. |
|
.\" |
.\" |
.Dd $Mdocdate$ |
.Dd $Mdocdate$ |
.Dt mdoc 3 |
.Dt MDOC 3 |
.Os |
.Os |
.\" SECTION |
.\" SECTION |
.Sh NAME |
.Sh NAME |
|
|
.Nm mdoc_endparse , |
.Nm mdoc_endparse , |
.Nm mdoc_node , |
.Nm mdoc_node , |
.Nm mdoc_meta , |
.Nm mdoc_meta , |
.Nm mdoc_free |
.Nm mdoc_free , |
|
.Nm mdoc_reset |
.Nd mdoc macro compiler library |
.Nd mdoc macro compiler library |
.\" SECTION |
.\" SECTION |
.Sh SYNOPSIS |
.Sh SYNOPSIS |
|
|
.Vt extern const char * const * mdoc_macronames; |
.Vt extern const char * const * mdoc_macronames; |
.Vt extern const char * const * mdoc_argnames; |
.Vt extern const char * const * mdoc_argnames; |
.Ft "struct mdoc *" |
.Ft "struct mdoc *" |
.Fn mdoc_alloc "void *data" "const struct mdoc_cb *cb" |
.Fn mdoc_alloc "void *data" "int pflags" "const struct mdoc_cb *cb" |
|
.Ft int |
|
.Fn mdoc_reset "struct mdoc *mdoc" |
.Ft void |
.Ft void |
.Fn mdoc_free "struct mdoc *mdoc" |
.Fn mdoc_free "struct mdoc *mdoc" |
.Ft int |
.Ft int |
Line 53 library parses lines of |
|
Line 54 library parses lines of |
|
.Xr mdoc 7 |
.Xr mdoc 7 |
input (and |
input (and |
.Em only |
.Em only |
mdoc) into an abstract syntax tree that generalises the semantic |
mdoc) into an abstract syntax tree (AST). |
annotation of its input. Common front-ends for |
|
.Nm |
|
are |
|
.Xr mdocterm 1 , |
|
.Xr mdoclint 1 |
|
and |
|
.Xr mdoctree 1 . |
|
.\" PARAGRAPH |
.\" PARAGRAPH |
.Pp |
.Pp |
In general, applications initiate a parsing sequence with |
In general, applications initiate a parsing sequence with |
|
|
.Fn mdoc_meta , |
.Fn mdoc_meta , |
then free all allocated memory with |
then free all allocated memory with |
.Fn mdoc_free . |
.Fn mdoc_free . |
See the |
The |
|
.Fn mdoc_reset |
|
function may be used in order to reset the parser for another input |
|
sequence. See the |
.Sx EXAMPLES |
.Sx EXAMPLES |
section for a full example. |
section for a full example. |
.\" PARAGRAPH |
.\" PARAGRAPH |
Line 123 Allocates a parsing structure. The |
|
Line 120 Allocates a parsing structure. The |
|
.Fa data |
.Fa data |
pointer is passed to callbacks in |
pointer is passed to callbacks in |
.Fa cb , |
.Fa cb , |
which are documented further in the header file. Returns NULL on |
which are documented further in the header file. |
failure. If non-NULL, the pointer must be freed with |
The |
|
.Fa pflags |
|
arguments are defined in |
|
.Pa mdoc.h . |
|
Returns NULL on failure. If non-NULL, the pointer must be freed with |
.Fn mdoc_free . |
.Fn mdoc_free . |
.\" LIST-ITEM |
.\" LIST-ITEM |
|
.It Fn mdoc_reset |
|
Reset the parser for another parse routine. After its use, |
|
.Fn mdoc_parseln |
|
behaves as if invoked for the first time. If it returns 0, memory could |
|
not be allocated. |
|
.\" LIST-ITEM |
.It Fn mdoc_free |
.It Fn mdoc_free |
Free all resources of a parser. The pointer is no longer valid after |
Free all resources of a parser. The pointer is no longer valid after |
invocation. |
invocation. |
|
|
.Fn mdoc_endparse |
.Fn mdoc_endparse |
or |
or |
.Fn mdoc_parseln |
.Fn mdoc_parseln |
fail, it may be incomplete. This AST is governed by the ontological |
fail, it may be incomplete. |
|
.\" PARAGRAPH |
|
.Pp |
|
This AST is governed by the ontological |
rules dictated in |
rules dictated in |
.Xr mdoc 7 |
.Xr mdoc 7 |
and derives its terminology accordingly. |
and derives its terminology accordingly. |
Line 209 fields), its position in the tree (the |
|
Line 219 fields), its position in the tree (the |
|
.Va next |
.Va next |
and |
and |
.Va prev |
.Va prev |
fields) and type-specific data (the |
fields) and some type-specific data. |
.Va data |
|
field). |
|
.\" PARAGRAPH |
.\" PARAGRAPH |
.Pp |
.Pp |
The tree itself is arranged according to the following normal form, |
The tree itself is arranged according to the following normal form, |
|
|
int line; |
int line; |
|
|
line = 1; |
line = 1; |
mdoc = mdoc_alloc(NULL, NULL); |
mdoc = mdoc_alloc(NULL, 0, NULL); |
|
|
while ((buf = fgetln(fp, &len))) { |
while ((buf = fgetln(fp, &len))) { |
buf[len - 1] = '\\0'; |
buf[len - 1] = '\\0'; |
Line 282 mdoc_free(mdoc); |
|
Line 290 mdoc_free(mdoc); |
|
.Ed |
.Ed |
.\" SECTION |
.\" SECTION |
.Sh SEE ALSO |
.Sh SEE ALSO |
.Xr mdocterm 1 , |
.Xr mandoc 1 , |
.Xr mdoclint 1 , |
|
.Xr mdoctree 1 , |
|
.Xr mdoc 7 |
.Xr mdoc 7 |
.\" SECTION |
.\" SECTION |
.Sh AUTHORS |
.Sh AUTHORS |
The |
The |
.Nm |
.Nm |
utility was written by |
utility was written by |
.An Kristaps Dzonsons Aq kristaps@kth.se . |
.An Kristaps Dzonsons Aq kristaps@openbsd.org . |
.\" SECTION |
.\" SECTION |
.Sh CAVEATS |
.Sh CAVEATS |
.Bl -dash -compact |
.Bl -dash -compact |
.\" LIST-ITEM |
.\" LIST-ITEM |
.It |
.It |
The |
The |
.Sq \&Xc |
.Sq \&.Xc |
and |
and |
.Sq \&Xo |
.Sq \&.Xo |
macros aren't handled when used to span lines for the |
macros aren't handled when used to span lines for the |
.Sq \&It |
.Sq \&.It |
macro. |
macro. |
.\" LIST-ITEM |
.\" LIST-ITEM |
.It |
.It |
The |
The |
.Sq \&Bsx |
.Sq \&.Bsx |
macro doesn't yet understand version arguments. |
macro family doesn't yet understand version arguments. |
|
.\" LIST-ITEM |
|
.It |
|
If not given a value, the \-offset argument to |
|
.Sq \&.Bd |
|
and |
|
.Sq \&.Bl |
|
should be the width of |
|
.Qq <string> ; |
|
instead, a value of |
|
.Li 10n |
|
is provided. |
|
.\" LIST-ITEM |
|
.It |
|
Columns widths in |
|
.Sq \&.Bl \-column |
|
should default to width |
|
.Qq <stringx> |
|
if not included. |
|
.\" LIST-ITEM |
|
.It |
|
List-width suffix |
|
.Qq m |
|
isn't handled. |
|
.\" LIST-ITEM |
|
.It |
|
Contents of the SYNOPSIS section aren't checked. |
.El |
.El |