-static void post_vt(POST_ARGS);
-
-static void pre_an(PRE_ARGS);
-static void pre_bd(PRE_ARGS);
-static void pre_bl(PRE_ARGS);
-static void pre_dd(PRE_ARGS);
-static void pre_display(PRE_ARGS);
-static void pre_dt(PRE_ARGS);
-static void pre_literal(PRE_ARGS);
-static void pre_obsolete(PRE_ARGS);
-static void pre_os(PRE_ARGS);
-static void pre_par(PRE_ARGS);
-static void pre_std(PRE_ARGS);
-
-static const struct valids mdoc_valids[MDOC_MAX] = {
- { NULL, NULL }, /* Ap */
- { pre_dd, post_dd }, /* Dd */
- { pre_dt, post_dt }, /* Dt */
- { pre_os, post_os }, /* Os */
- { NULL, post_sh }, /* Sh */
- { NULL, post_ignpar }, /* Ss */
- { pre_par, post_par }, /* Pp */
- { pre_display, post_d1 }, /* D1 */
- { pre_literal, post_literal }, /* Dl */
- { pre_bd, post_literal }, /* Bd */
- { NULL, NULL }, /* Ed */
- { pre_bl, post_bl }, /* Bl */
- { NULL, NULL }, /* El */
- { pre_par, post_it }, /* It */
- { NULL, NULL }, /* Ad */
- { pre_an, post_an }, /* An */
- { NULL, post_defaults }, /* Ar */
- { NULL, NULL }, /* Cd */
- { NULL, NULL }, /* Cm */
- { NULL, NULL }, /* Dv */
- { NULL, NULL }, /* Er */
- { NULL, NULL }, /* Ev */
- { pre_std, post_ex }, /* Ex */
- { NULL, post_fa }, /* Fa */
- { NULL, NULL }, /* Fd */
- { NULL, NULL }, /* Fl */
- { NULL, post_fn }, /* Fn */
- { NULL, NULL }, /* Ft */
- { NULL, NULL }, /* Ic */
- { NULL, NULL }, /* In */
- { NULL, post_defaults }, /* Li */
- { NULL, post_nd }, /* Nd */
- { NULL, post_nm }, /* Nm */
- { NULL, NULL }, /* Op */
- { pre_obsolete, NULL }, /* Ot */
- { NULL, post_defaults }, /* Pa */
- { pre_std, NULL }, /* Rv */
- { NULL, post_st }, /* St */
- { NULL, NULL }, /* Va */
- { NULL, post_vt }, /* Vt */
- { NULL, NULL }, /* Xr */
- { NULL, NULL }, /* %A */
- { NULL, post_hyph }, /* %B */ /* FIXME: can be used outside Rs/Re. */
- { NULL, NULL }, /* %D */
- { NULL, NULL }, /* %I */
- { NULL, NULL }, /* %J */
- { NULL, post_hyph }, /* %N */
- { NULL, post_hyph }, /* %O */
- { NULL, NULL }, /* %P */
- { NULL, post_hyph }, /* %R */
- { NULL, post_hyph }, /* %T */ /* FIXME: can be used outside Rs/Re. */
- { NULL, NULL }, /* %V */
- { NULL, NULL }, /* Ac */
- { NULL, NULL }, /* Ao */
- { NULL, NULL }, /* Aq */
- { NULL, post_at }, /* At */
- { NULL, NULL }, /* Bc */
- { NULL, post_bf }, /* Bf */
- { NULL, NULL }, /* Bo */
- { NULL, NULL }, /* Bq */
- { NULL, NULL }, /* Bsx */
- { NULL, post_bx }, /* Bx */
- { pre_obsolete, NULL }, /* Db */
- { NULL, NULL }, /* Dc */
- { NULL, NULL }, /* Do */
- { NULL, NULL }, /* Dq */
- { NULL, NULL }, /* Ec */
- { NULL, NULL }, /* Ef */
- { NULL, NULL }, /* Em */
- { NULL, NULL }, /* Eo */
- { NULL, NULL }, /* Fx */
- { NULL, NULL }, /* Ms */
- { NULL, NULL }, /* No */
- { NULL, post_ns }, /* Ns */
- { NULL, NULL }, /* Nx */
- { NULL, NULL }, /* Ox */
- { NULL, NULL }, /* Pc */
- { NULL, NULL }, /* Pf */
- { NULL, NULL }, /* Po */
- { NULL, NULL }, /* Pq */
- { NULL, NULL }, /* Qc */
- { NULL, NULL }, /* Ql */
- { NULL, NULL }, /* Qo */
- { NULL, NULL }, /* Qq */
- { NULL, NULL }, /* Re */
- { NULL, post_rs }, /* Rs */
- { NULL, NULL }, /* Sc */
- { NULL, NULL }, /* So */
- { NULL, NULL }, /* Sq */
- { NULL, post_sm }, /* Sm */
- { NULL, post_hyph }, /* Sx */
- { NULL, NULL }, /* Sy */
- { NULL, NULL }, /* Tn */
- { NULL, NULL }, /* Ux */
- { NULL, NULL }, /* Xc */
- { NULL, NULL }, /* Xo */
- { NULL, post_fo }, /* Fo */
- { NULL, NULL }, /* Fc */
- { NULL, NULL }, /* Oo */
- { NULL, NULL }, /* Oc */
- { NULL, post_bk }, /* Bk */
- { NULL, NULL }, /* Ek */
- { NULL, post_eoln }, /* Bt */
- { NULL, NULL }, /* Hf */
- { pre_obsolete, NULL }, /* Fr */
- { NULL, post_eoln }, /* Ud */
- { NULL, post_lb }, /* Lb */
- { pre_par, post_par }, /* Lp */
- { NULL, NULL }, /* Lk */
- { NULL, post_defaults }, /* Mt */
- { NULL, NULL }, /* Brq */
- { NULL, NULL }, /* Bro */
- { NULL, NULL }, /* Brc */
- { NULL, NULL }, /* %C */
- { pre_obsolete, post_es }, /* Es */
- { pre_obsolete, post_en }, /* En */
- { NULL, NULL }, /* Dx */
- { NULL, NULL }, /* %Q */
- { NULL, post_par }, /* br */
- { NULL, post_par }, /* sp */
- { NULL, NULL }, /* %U */
- { NULL, NULL }, /* Ta */
- { NULL, NULL }, /* ll */
+static void post_std(POST_ARGS);
+static void post_sx(POST_ARGS);
+static void post_useless(POST_ARGS);
+static void post_xr(POST_ARGS);
+static void post_xx(POST_ARGS);
+
+static const v_post mdoc_valids[MDOC_MAX - MDOC_Dd] = {
+ post_dd, /* Dd */
+ post_dt, /* Dt */
+ post_os, /* Os */
+ post_sh, /* Sh */
+ post_ignpar, /* Ss */
+ post_par, /* Pp */
+ post_display, /* D1 */
+ post_display, /* Dl */
+ post_display, /* Bd */
+ NULL, /* Ed */
+ post_bl, /* Bl */
+ NULL, /* El */
+ post_it, /* It */
+ post_delim_nb, /* Ad */
+ post_an, /* An */
+ NULL, /* Ap */
+ post_defaults, /* Ar */
+ NULL, /* Cd */
+ post_delim_nb, /* Cm */
+ post_delim_nb, /* Dv */
+ post_delim_nb, /* Er */
+ post_delim_nb, /* Ev */
+ post_ex, /* Ex */
+ post_fa, /* Fa */
+ NULL, /* Fd */
+ post_delim_nb, /* Fl */
+ post_fn, /* Fn */
+ post_delim_nb, /* Ft */
+ post_delim_nb, /* Ic */
+ post_delim_nb, /* In */
+ post_defaults, /* Li */
+ post_nd, /* Nd */
+ post_nm, /* Nm */
+ post_delim_nb, /* Op */
+ post_abort, /* Ot */
+ post_defaults, /* Pa */
+ post_rv, /* Rv */
+ post_st, /* St */
+ post_delim_nb, /* Va */
+ post_delim_nb, /* Vt */
+ post_xr, /* Xr */
+ NULL, /* %A */
+ post_hyph, /* %B */ /* FIXME: can be used outside Rs/Re. */
+ NULL, /* %D */
+ NULL, /* %I */
+ NULL, /* %J */
+ post_hyph, /* %N */
+ post_hyph, /* %O */
+ NULL, /* %P */
+ post_hyph, /* %R */
+ post_hyph, /* %T */ /* FIXME: can be used outside Rs/Re. */
+ NULL, /* %V */
+ NULL, /* Ac */
+ NULL, /* Ao */
+ post_delim_nb, /* Aq */
+ post_at, /* At */
+ NULL, /* Bc */
+ post_bf, /* Bf */
+ NULL, /* Bo */
+ NULL, /* Bq */
+ post_xx, /* Bsx */
+ post_bx, /* Bx */
+ post_obsolete, /* Db */
+ NULL, /* Dc */
+ NULL, /* Do */
+ NULL, /* Dq */
+ NULL, /* Ec */
+ NULL, /* Ef */
+ post_delim_nb, /* Em */
+ NULL, /* Eo */
+ post_xx, /* Fx */
+ post_delim_nb, /* Ms */
+ NULL, /* No */
+ post_ns, /* Ns */
+ post_xx, /* Nx */
+ post_xx, /* Ox */
+ NULL, /* Pc */
+ NULL, /* Pf */
+ NULL, /* Po */
+ post_delim_nb, /* Pq */
+ NULL, /* Qc */
+ post_delim_nb, /* Ql */
+ NULL, /* Qo */
+ post_delim_nb, /* Qq */
+ NULL, /* Re */
+ post_rs, /* Rs */
+ NULL, /* Sc */
+ NULL, /* So */
+ post_delim_nb, /* Sq */
+ post_sm, /* Sm */
+ post_sx, /* Sx */
+ post_delim_nb, /* Sy */
+ post_useless, /* Tn */
+ post_xx, /* Ux */
+ NULL, /* Xc */
+ NULL, /* Xo */
+ post_fo, /* Fo */
+ NULL, /* Fc */
+ NULL, /* Oo */
+ NULL, /* Oc */
+ post_bk, /* Bk */
+ NULL, /* Ek */
+ post_eoln, /* Bt */
+ post_obsolete, /* Hf */
+ post_obsolete, /* Fr */
+ post_eoln, /* Ud */
+ post_lb, /* Lb */
+ post_abort, /* Lp */
+ post_delim_nb, /* Lk */
+ post_defaults, /* Mt */
+ post_delim_nb, /* Brq */
+ NULL, /* Bro */
+ NULL, /* Brc */
+ NULL, /* %C */
+ post_es, /* Es */
+ post_en, /* En */
+ post_xx, /* Dx */
+ NULL, /* %Q */
+ NULL, /* %U */
+ NULL, /* Ta */