[BACK]Return to roff.h CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Annotation of mandoc/roff.h, Revision 1.10

1.10    ! kristaps    1: /* $Id: roff.h,v 1.9 2008/12/08 12:46:28 kristaps Exp $ */
1.1       kristaps    2: /*
                      3:  * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
                      4:  *
                      5:  * Permission to use, copy, modify, and distribute this software for any
                      6:  * purpose with or without fee is hereby granted, provided that the
                      7:  * above copyright notice and this permission notice appear in all
                      8:  * copies.
                      9:  *
                     10:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
                     11:  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
                     12:  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
                     13:  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
                     14:  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
                     15:  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
                     16:  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
                     17:  * PERFORMANCE OF THIS SOFTWARE.
                     18:  */
                     19: #ifndef ROFF_H
                     20: #define ROFF_H
                     21:
                     22: enum   roffd {
                     23:        ROFF_ENTER = 0,
                     24:        ROFF_EXIT
                     25: };
                     26:
                     27: enum   rofftype {
                     28:        ROFF_COMMENT,
                     29:        ROFF_TEXT,
                     30:        ROFF_LAYOUT,
                     31:        ROFF_SPECIAL
                     32: };
                     33:
                     34: struct rofftree;
                     35:
                     36: #define        ROFFCALL_ARGS \
                     37:        int tok, struct rofftree *tree, \
                     38:        char *argv[], enum roffd type
                     39:
                     40: struct rofftok {
                     41:        int             (*cb)(ROFFCALL_ARGS);   /* Callback. */
1.9       kristaps   42:        const enum roffmsec *sections;
1.1       kristaps   43:        const int        *args;                 /* Args (or NULL). */
                     44:        const int        *parents;              /* Limit to parents. */
                     45:        const int        *children;             /* Limit to kids. */
                     46:        int               ctx;                  /* Blk-close node. */
                     47:        enum rofftype     type;                 /* Type of macro. */
                     48:        int               flags;
                     49: #define        ROFF_PARSED      (1 << 0)               /* "Parsed". */
                     50: #define        ROFF_CALLABLE    (1 << 1)               /* "Callable". */
                     51: #define        ROFF_SHALLOW     (1 << 2)               /* Nesting block. */
                     52: #define        ROFF_LSCOPE      (1 << 3)               /* Line scope. */
                     53: };
                     54:
                     55: __BEGIN_DECLS
                     56:
                     57: static int               roff_Dd(ROFFCALL_ARGS); /* FIXME: deprecate. */
                     58: static int               roff_Dt(ROFFCALL_ARGS); /* FIXME: deprecate. */
                     59: static int               roff_Os(ROFFCALL_ARGS); /* FIXME: deprecate. */
                     60: static int               roff_Ns(ROFFCALL_ARGS); /* FIXME: deprecate. */
                     61: static int               roff_layout(ROFFCALL_ARGS);
                     62: static int               roff_text(ROFFCALL_ARGS);
                     63: static int               roff_noop(ROFFCALL_ARGS);
                     64: static int               roff_depr(ROFFCALL_ARGS);
                     65: static int               roff_ordered(ROFFCALL_ARGS);
                     66:
1.9       kristaps   67: static const int roffarg_An[] = { ROFF_Split, ROFF_Nosplit,
                     68:        ROFF_ARGMAX };
                     69: static const int roffarg_Bd[] = { ROFF_Ragged, ROFF_Unfilled,
                     70:        ROFF_Literal, ROFF_File, ROFF_Offset, ROFF_Filled, ROFF_Compact,
                     71:        ROFF_ARGMAX };
1.1       kristaps   72: static const int roffarg_Bk[] = { ROFF_Words, ROFF_ARGMAX };
                     73: static const int roffarg_Ex[] = { ROFF_Std, ROFF_ARGMAX };
                     74: static const int roffarg_Rv[] = { ROFF_Std, ROFF_ARGMAX };
                     75: static         const int roffarg_Bl[] = { ROFF_Bullet, ROFF_Dash, ROFF_Hyphen,
1.9       kristaps   76:        ROFF_Item, ROFF_Enum, ROFF_Tag, ROFF_Diag, ROFF_Hang,
                     77:        ROFF_Ohang, ROFF_Inset, ROFF_Column, ROFF_Offset, ROFF_Width,
                     78:        ROFF_Compact, ROFF_ARGMAX };
                     79: static         const int roffarg_St[] = { ROFF_p1003_1_88, ROFF_p1003_1_90,
                     80:        ROFF_p1003_1_96, ROFF_p1003_1_2001, ROFF_p1003_1_2004,
                     81:        ROFF_p1003_1, ROFF_p1003_1b, ROFF_p1003_1b_93, ROFF_p1003_1c_95,
                     82:        ROFF_p1003_1g_2000, ROFF_p1003_2_92, ROFF_p1387_2_95,
                     83:        ROFF_p1003_2, ROFF_p1387_2, ROFF_isoC_90, ROFF_isoC_amd1,
                     84:        ROFF_isoC_tcor1, ROFF_isoC_tcor2, ROFF_isoC_99, ROFF_ansiC,
                     85:        ROFF_ansiC_89, ROFF_ansiC_99, ROFF_ieee754, ROFF_iso8802_3,
                     86:        ROFF_xpg3, ROFF_xpg4, ROFF_xpg4_2, ROFF_xpg4_3, ROFF_xbd5,
                     87:        ROFF_xcu5, ROFF_xsh5, ROFF_xns5, ROFF_xns5_2d2_0,
                     88:        ROFF_xcurses4_2, ROFF_susv2, ROFF_susv3, ROFF_svid4,
1.1       kristaps   89:        ROFF_ARGMAX };
                     90:
                     91: static const int roffchild_Bl[] = { ROFF_It, ROFF_El, ROFF_MAX };
                     92: static const int roffchild_Fo[] = { ROFF_Fa, ROFF_Fc, ROFF_MAX };
                     93: static const int roffchild_Rs[] = { ROFF_Re, ROFF__A, ROFF__B, ROFF__D,
1.9       kristaps   94:        ROFF__I, ROFF__J, ROFF__N, ROFF__O, ROFF__P, ROFF__R, ROFF__T,
                     95:        ROFF__V, ROFF_MAX };
                     96:
                     97: static const enum roffmsec roffmsec_Cd[] = { ROFF_MSEC_4,
                     98:        ROFF_MSEC_MAX };
                     99: static const enum roffmsec roffmsec_Er[] = { ROFF_MSEC_2,
                    100:        ROFF_MSEC_MAX };
                    101: static const enum roffmsec roffmsec_Ex[] = { ROFF_MSEC_1,
                    102:        ROFF_MSEC_6, ROFF_MSEC_8, ROFF_MSEC_MAX };
                    103: static const enum roffmsec roffmsec_Rv[] = { ROFF_MSEC_2,
                    104:        ROFF_MSEC_3, ROFF_MSEC_MAX };
1.1       kristaps  105:
                    106: static const int roffparent_El[] = { ROFF_Bl, ROFF_It, ROFF_MAX };
                    107: static const int roffparent_Fc[] = { ROFF_Fo, ROFF_Fa, ROFF_MAX };
                    108: static const int roffparent_Oc[] = { ROFF_Oo, ROFF_MAX };
                    109: static const int roffparent_It[] = { ROFF_Bl, ROFF_It, ROFF_MAX };
                    110: static const int roffparent_Re[] = { ROFF_Rs, ROFF_MAX };
                    111:
                    112: static const struct rofftok tokens[ROFF_MAX] = {
1.9       kristaps  113:        {   roff_noop, NULL, NULL, NULL, NULL, 0, ROFF_COMMENT, 0 }, /* \" */
                    114:        {     roff_Dd, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Dd */
                    115:        {     roff_Dt, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Dt */
                    116:        {     roff_Os, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Os */
                    117:        { roff_layout, NULL, NULL, NULL, NULL, ROFF_Sh, ROFF_LAYOUT, 0 }, /* Sh */
                    118:        { roff_layout, NULL, NULL, NULL, NULL, ROFF_Ss, ROFF_LAYOUT, 0 }, /* Ss */
                    119:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Pp */ /* XXX 0 args */
                    120:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_LSCOPE }, /* D1 */
                    121:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_LSCOPE }, /* Dl */
                    122:        { roff_layout, NULL, roffarg_Bd, NULL, NULL, 0, ROFF_LAYOUT, 0 },       /* Bd */
                    123:        {   roff_noop, NULL, NULL, NULL, NULL, ROFF_Bd, ROFF_LAYOUT, 0 }, /* Ed */
                    124:        { roff_layout, NULL, roffarg_Bl, NULL, roffchild_Bl, 0, ROFF_LAYOUT, 0 }, /* Bl */
                    125:        {   roff_noop, NULL, NULL, roffparent_El, NULL, ROFF_Bl, ROFF_LAYOUT, 0 }, /* El */
                    126:        { roff_layout, NULL, NULL, roffparent_It, NULL, ROFF_It, ROFF_LAYOUT, ROFF_PARSED | ROFF_SHALLOW }, /* It */
                    127:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Ad */ /* FIXME */
1.10    ! kristaps  128:        {   roff_text, NULL, roffarg_An, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED }, /* An */ /* FIXME: args/no-args, yech. */
1.9       kristaps  129: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Ar */
                    130: /*Ok*/ {   roff_text, roffmsec_Cd, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Cd */
                    131: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Cm */
                    132: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Dv */ /* XXX needs arg */
                    133: /*Ok*/ {   roff_text, roffmsec_Er, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Er */ /* XXX needs arg */
                    134: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Ev */ /* XXX needs arg */
                    135: /*Ok*/ {roff_ordered, roffmsec_Ex, roffarg_Ex, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Ex */
                    136:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Fa */ /* XXX needs arg */
                    137: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Fd */ /* FIXME: section/linebreak. */
                    138: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Fl */
                    139: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Fn */ /* FIXME: section/linebreak. */
                    140: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED }, /* Ft */ /* FIXME: section/linebreak. */
                    141: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Ic */ /* FIXME: needs arg */
                    142: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* In */ /* FIXME: section/linebreak. */
                    143: /*OK*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Li */
                    144: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Nd */ /* FIXME: section. */
                    145: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Nm */ /* FIXME: sections. */
                    146: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE | ROFF_LSCOPE }, /* Op */
                    147: /*Ok*/ {   roff_depr, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Ot */
                    148: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Pa */
                    149: /*Ok*/ {roff_ordered, roffmsec_Rv, roffarg_Rv, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Rv */
                    150: /*Ok*/ {roff_ordered, NULL, roffarg_St, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* St */
                    151: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Va */
                    152: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Vt */ /* FIXME: section/linebreak. */
                    153: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Xr */
                    154:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED }, /* %A */
                    155:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE}, /* %B */
                    156:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* %D */
                    157:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE}, /* %I */
                    158:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE}, /* %J */
                    159:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* %N */
                    160:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* %O */
                    161:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* %P */
                    162:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* %R */
                    163:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED }, /* %T */
                    164:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* %V */
                    165:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Ac */
                    166:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Ao */
                    167: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE | ROFF_LSCOPE }, /* Aq */
                    168: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* At */
                    169:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Bc */
                    170:        { roff_layout, NULL, NULL, NULL, NULL, 0, ROFF_LAYOUT, 0 }, /* Bf */ /* FIXME */
                    171:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Bo */
                    172: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE | ROFF_LSCOPE }, /* Bq */
                    173: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED }, /* Bsx */
                    174: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED }, /* Bx */
                    175:        {        NULL, NULL, NULL, NULL, NULL, 0, ROFF_SPECIAL, 0 },    /* Db */
                    176:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Dc */
                    177:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Do */
                    178: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE | ROFF_LSCOPE }, /* Dq */
                    179:        {        NULL, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Ec */
                    180:        {   roff_noop, NULL, NULL, NULL, NULL, ROFF_Bf, ROFF_LAYOUT, 0 }, /* Ef */
                    181: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Em */ /* XXX needs arg */
                    182:        {        NULL, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Eo */
                    183: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED }, /* Fx */
                    184:        {        NULL, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED }, /* Ms */
                    185:        {        NULL, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* No */
                    186: /*Ok*/ {     roff_Ns, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Ns */
                    187: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED }, /* Nx */
                    188: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED }, /* Ox */
                    189:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Pc */
                    190:        {        NULL, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED }, /* Pf */
                    191:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Po */
                    192: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE | ROFF_LSCOPE }, /* Pq */
                    193:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Qc */
                    194: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Ql */
                    195:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Qo */
                    196: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE | ROFF_LSCOPE }, /* Qq */
                    197:        {   roff_noop, NULL, NULL, roffparent_Re, NULL, ROFF_Rs, ROFF_LAYOUT, 0 }, /* Re */
                    198:        { roff_layout, NULL, NULL, NULL, roffchild_Rs, 0, ROFF_LAYOUT, 0 },     /* Rs */
                    199:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Sc */
                    200:        {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* So */
                    201: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE | ROFF_LSCOPE }, /* Sq */
                    202: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Sm */
                    203: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Sx */
                    204: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Sy */
                    205: /*Ok*/ {   roff_text, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Tn */
                    206: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED }, /* Ux */
                    207:        {        NULL, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Xc */
                    208:        {        NULL, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, ROFF_PARSED | ROFF_CALLABLE }, /* Xo */
                    209: /*Ok*/ { roff_layout, NULL, NULL, NULL, roffchild_Fo, 0, ROFF_LAYOUT, 0 }, /* Fo */ /* FIXME: section/linebreak. */
                    210: /*Ok*/ {   roff_noop, NULL, NULL, roffparent_Fc, NULL, ROFF_Fo, ROFF_LAYOUT, 0 }, /* Fc */ /* FIXME: section/linebreak. */
                    211: /*Ok*/ { roff_layout, NULL, NULL, NULL, NULL, 0, ROFF_LAYOUT, 0 }, /* Oo */
                    212: /*Ok*/ {   roff_noop, NULL, NULL, roffparent_Oc, NULL, ROFF_Oo, ROFF_LAYOUT, 0 }, /* Oc */
                    213:        {        NULL, NULL, roffarg_Bk, NULL, NULL, 0, ROFF_LAYOUT, 0 }, /* Bk */
                    214:        {        NULL, NULL, NULL, NULL, NULL, ROFF_Bk, ROFF_LAYOUT, 0 }, /* Ek */
                    215: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Bt */
                    216:        {        NULL, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Hf */
                    217: /*Ok*/ {   roff_depr, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Fr */
                    218: /*Ok*/ {roff_ordered, NULL, NULL, NULL, NULL, 0, ROFF_TEXT, 0 }, /* Ud */
1.1       kristaps  219:        };
                    220:
                    221: #define        ROFF_VALUE      (1 << 0)
                    222:
                    223: static const int tokenargs[ROFF_ARGMAX] = {
                    224:        0,              0,              0,              0,
                    225:        0,              ROFF_VALUE,     ROFF_VALUE,     0,
                    226:        0,              0,              0,              0,
                    227:        0,              0,              0,              0,
                    228:        0,              0,              ROFF_VALUE,     0,
                    229:        0,              ROFF_VALUE,     0,              0,
                    230:        0,              0,              0,              0,
                    231:        0,              0,              0,              0,
                    232:        0,              0,              0,              0,
                    233:        0,              0,              0,              0,
                    234:        0,              0,              0,              0,
                    235:        0,              0,              0,              0,
                    236:        0,              0,              0,              0,
                    237:        0,              0,              0,              0,
                    238:        0,              0,              0,              0,
                    239:        };
                    240:
                    241: const  char *const toknamesp[ROFF_MAX] = {
                    242:        "\\\"",         "Dd",           "Dt",           "Os",
                    243:        "Sh",           "Ss",           "Pp",           "D1",
                    244:        "Dl",           "Bd",           "Ed",           "Bl",
                    245:        "El",           "It",           "Ad",           "An",
                    246:        "Ar",           "Cd",           "Cm",           "Dv",
                    247:        "Er",           "Ev",           "Ex",           "Fa",
                    248:        "Fd",           "Fl",           "Fn",           "Ft",
                    249:        "Ic",           "In",           "Li",           "Nd",
                    250:        "Nm",           "Op",           "Ot",           "Pa",
                    251:        "Rv",           "St",           "Va",           "Vt",
                    252:        /* LINTED */
                    253:        "Xr",           "\%A",          "\%B",          "\%D",
                    254:        /* LINTED */
                    255:        "\%I",          "\%J",          "\%N",          "\%O",
                    256:        /* LINTED */
                    257:        "\%P",          "\%R",          "\%T",          "\%V",
                    258:        "Ac",           "Ao",           "Aq",           "At",
                    259:        "Bc",           "Bf",           "Bo",           "Bq",
                    260:        "Bsx",          "Bx",           "Db",           "Dc",
                    261:        "Do",           "Dq",           "Ec",           "Ef",
                    262:        "Em",           "Eo",           "Fx",           "Ms",
                    263:        "No",           "Ns",           "Nx",           "Ox",
                    264:        "Pc",           "Pf",           "Po",           "Pq",
                    265:        "Qc",           "Ql",           "Qo",           "Qq",
                    266:        "Re",           "Rs",           "Sc",           "So",
                    267:        "Sq",           "Sm",           "Sx",           "Sy",
                    268:        "Tn",           "Ux",           "Xc",           "Xo",
                    269:        "Fo",           "Fc",           "Oo",           "Oc",
                    270:        "Bk",           "Ek",           "Bt",           "Hf",
                    271:        "Fr",           "Ud",
                    272:        };
                    273:
                    274: const  char *const tokargnamesp[ROFF_ARGMAX] = {
                    275:        "split",                "nosplit",              "ragged",
                    276:        "unfilled",             "literal",              "file",
                    277:        "offset",               "bullet",               "dash",
                    278:        "hyphen",               "item",                 "enum",
                    279:        "tag",                  "diag",                 "hang",
                    280:        "ohang",                "inset",                "column",
                    281:        "width",                "compact",              "std",
                    282:        "p1003.1-88",           "p1003.1-90",           "p1003.1-96",
                    283:        "p1003.1-2001",         "p1003.1-2004",         "p1003.1",
                    284:        "p1003.1b",             "p1003.1b-93",          "p1003.1c-95",
                    285:        "p1003.1g-2000",        "p1003.2-92",           "p1387.2-95",
                    286:        "p1003.2",              "p1387.2",              "isoC-90",
                    287:        "isoC-amd1",            "isoC-tcor1",           "isoC-tcor2",
                    288:        "isoC-99",              "ansiC",                "ansiC-89",
                    289:        "ansiC-99",             "ieee754",              "iso8802-3",
                    290:        "xpg3",                 "xpg4",                 "xpg4.2",
                    291:        "xpg4.3",               "xbd5",                 "xcu5",
                    292:        "xsh5",                 "xns5",                 "xns5.2d2.0",
                    293:        "xcurses4.2",           "susv2",                "susv3",
                    294:        "svid4",                "filled",               "words",
                    295:        };
                    296:
                    297: const  char *const *toknames = toknamesp;
                    298: const  char *const *tokargnames = tokargnamesp;
                    299:
                    300: __END_DECLS
                    301:
                    302: #endif /*!ROFF_H*/

CVSweb