version 1.46, 2010/07/01 09:33:39 |
version 1.50, 2010/10/10 09:47:05 |
|
|
.\" $Id$ |
.\" $Id$ |
.\" |
.\" |
.\" Copyright (c) 2009-2010 Kristaps Dzonsons <kristaps@bsd.lv> |
.\" Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> |
|
.\" Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org> |
.\" |
.\" |
.\" 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 above |
.\" purpose with or without fee is hereby granted, provided that the above |
|
|
.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; |
|
|
.Fo mdoc_alloc |
.Fo mdoc_alloc |
.Fa "struct regset *regs" |
.Fa "struct regset *regs" |
.Fa "void *data" |
.Fa "void *data" |
.Fa "int pflags" |
|
.Fa "mandocmsg msgs" |
.Fa "mandocmsg msgs" |
.Fc |
.Fc |
.Ft int |
.Ft int |
|
|
.Fn mdoc_reset |
.Fn mdoc_reset |
function may be used in order to reset the parser for another input |
function may be used in order to reset the parser for another input |
sequence. |
sequence. |
See the |
|
.Sx EXAMPLES |
|
section for a simple example. |
|
.Pp |
|
This section further defines the |
|
.Sx Types , |
|
.Sx Functions |
|
and |
|
.Sx Variables |
|
available to programmers. |
|
Following that, the |
|
.Sx Abstract Syntax Tree |
|
section documents the output tree. |
|
.Ss Types |
.Ss Types |
Both functions (see |
|
.Sx Functions ) |
|
and variables (see |
|
.Sx Variables ) |
|
may use the following types: |
|
.Bl -ohang |
.Bl -ohang |
.It Vt struct mdoc |
.It Vt struct mdoc |
An opaque type defined in |
An opaque type. |
.Pa mdoc.c . |
|
Its values are only used privately within the library. |
Its values are only used privately within the library. |
.It Vt struct mdoc_node |
.It Vt struct mdoc_node |
A parsed node. |
A parsed node. |
Defined in |
|
.Pa mdoc.h . |
|
See |
See |
.Sx Abstract Syntax Tree |
.Sx Abstract Syntax Tree |
for details. |
for details. |
.It Vt mandocmsg |
|
A function callback type defined in |
|
.Pa mandoc.h . |
|
.El |
.El |
.Ss Functions |
.Ss Functions |
Function descriptions follow: |
|
.Bl -ohang |
.Bl -ohang |
.It Fn mdoc_alloc |
.It Fn mdoc_alloc |
Allocates a parsing structure. |
Allocates a parsing structure. |
|
|
.Fa data |
.Fa data |
pointer is passed to |
pointer is passed to |
.Fa msgs . |
.Fa msgs . |
The |
|
.Fa pflags |
|
arguments are defined in |
|
.Pa mdoc.h . |
|
Returns NULL on failure. |
Returns NULL on failure. |
If non-NULL, the pointer must be freed with |
If non-NULL, the pointer must be freed with |
.Fn mdoc_free . |
.Fn mdoc_free . |
|
|
return 0, the data will be incomplete. |
return 0, the data will be incomplete. |
.El |
.El |
.Ss Variables |
.Ss Variables |
The following variables are also defined: |
|
.Bl -ohang |
.Bl -ohang |
.It Va mdoc_macronames |
.It Va mdoc_macronames |
An array of string-ified token names. |
An array of string-ified token names. |
|
|
|
|
bzero(®s, sizeof(struct regset)); |
bzero(®s, sizeof(struct regset)); |
line = 1; |
line = 1; |
mdoc = mdoc_alloc(®s, NULL, 0, NULL); |
mdoc = mdoc_alloc(®s, NULL, NULL); |
buf = NULL; |
buf = NULL; |
alloc_len = 0; |
alloc_len = 0; |
|
|
Line 359 parsed(mdoc, node); |
|
Line 328 parsed(mdoc, node); |
|
mdoc_free(mdoc); |
mdoc_free(mdoc); |
.Ed |
.Ed |
.Pp |
.Pp |
Please see |
To compile this, execute |
|
.Pp |
|
.D1 % cc main.c libmdoc.a libmandoc.a |
|
.Pp |
|
where |
.Pa main.c |
.Pa main.c |
in the source archive for a rigorous reference. |
is the example file. |
.Sh SEE ALSO |
.Sh SEE ALSO |
.Xr mandoc 1 , |
.Xr mandoc 1 , |
.Xr mdoc 7 |
.Xr mdoc 7 |