version 1.38, 2010/05/25 21:38:05 |
version 1.42, 2010/06/26 15:36:37 |
|
|
.Dt MDOC 3 |
.Dt MDOC 3 |
.Os |
.Os |
.Sh NAME |
.Sh NAME |
|
.Nm mdoc , |
.Nm mdoc_alloc , |
.Nm mdoc_alloc , |
.Nm mdoc_endparse , |
.Nm mdoc_endparse , |
.Nm mdoc_free , |
.Nm mdoc_free , |
|
|
.Nd mdoc macro compiler library |
.Nd mdoc macro compiler library |
.Sh SYNOPSIS |
.Sh SYNOPSIS |
.In mandoc.h |
.In mandoc.h |
|
.In regs.h |
.In mdoc.h |
.In mdoc.h |
.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 "const struct mdoc_node *" |
.Ft "const struct mdoc_node *" |
.Fn mdoc_node "const struct mdoc *mdoc" |
.Fn mdoc_node "const struct mdoc *mdoc" |
.Ft int |
.Ft int |
.Fn mdoc_parseln "struct mdoc *mdoc" "int line" "char *buf" |
.Fo mdoc_parseln |
|
.Fa "struct mdoc *mdoc" |
|
.Fa "const struct regset *regs" |
|
.Fa "int line" |
|
.Fa "char *buf" |
|
.Fc |
.Ft int |
.Ft int |
.Fn mdoc_reset "struct mdoc *mdoc" |
.Fn mdoc_reset "struct mdoc *mdoc" |
.Sh DESCRIPTION |
.Sh DESCRIPTION |
Line 111 Function descriptions follow: |
|
Line 118 Function descriptions follow: |
|
Allocates a parsing structure. |
Allocates a parsing structure. |
The |
The |
.Fa data |
.Fa data |
pointer is passed to callbacks in |
pointer is passed to |
.Fa cb , |
.Fa msgs . |
which are documented further in the header file. |
|
The |
The |
.Fa pflags |
.Fa pflags |
arguments are defined in |
arguments are defined in |
Line 221 where capitalised non-terminals represent nodes. |
|
Line 227 where capitalised non-terminals represent nodes. |
|
.It mnode |
.It mnode |
\(<- BLOCK | ELEMENT | TEXT |
\(<- BLOCK | ELEMENT | TEXT |
.It BLOCK |
.It BLOCK |
\(<- (HEAD [TEXT])+ [BODY [TEXT]] [TAIL [TEXT]] |
\(<- HEAD [TEXT] (BODY [TEXT])+ [TAIL [TEXT]] |
.It BLOCK |
|
\(<- BODY [TEXT] [TAIL [TEXT]] |
|
.It ELEMENT |
.It ELEMENT |
\(<- TEXT* |
\(<- TEXT* |
.It HEAD |
.It HEAD |
Line 237 where capitalised non-terminals represent nodes. |
|
Line 241 where capitalised non-terminals represent nodes. |
|
.El |
.El |
.Pp |
.Pp |
Of note are the TEXT nodes following the HEAD, BODY and TAIL nodes of |
Of note are the TEXT nodes following the HEAD, BODY and TAIL nodes of |
the BLOCK production. |
the BLOCK production: these refer to punctuation marks. |
These refer to punctuation marks. |
|
Furthermore, although a TEXT node will generally have a non-zero-length |
Furthermore, although a TEXT node will generally have a non-zero-length |
string, in the specific case of |
string, in the specific case of |
.Sq \&.Bd \-literal , |
.Sq \&.Bd \-literal , |
an empty line will produce a zero-length string. |
an empty line will produce a zero-length string. |
|
Multiple body parts are only found in invocations of |
|
.Sq \&Bl \-column , |
|
where a new body introduces a new phrase. |
.Sh EXAMPLES |
.Sh EXAMPLES |
The following example reads lines from stdin and parses them, operating |
The following example reads lines from stdin and parses them, operating |
on the finished parse tree with |
on the finished parse tree with |