summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mdoc.7215
-rw-r--r--mdoc_macro.c8
-rw-r--r--mdoc_validate.c5
3 files changed, 70 insertions, 158 deletions
diff --git a/mdoc.7 b/mdoc.7
index 840a1402..2553511f 100644
--- a/mdoc.7
+++ b/mdoc.7
@@ -177,90 +177,6 @@ followed by
.Pp
Subsequent SYNOPSIS and DESCRIPTION sections are strongly encouraged,
but non-compulsory.
-.\" SUB-SECTION----------------------
-.\" .Ss Classification
-.\" Macros are classified by their scope rules: block full-explicit (BFE),
-.\" block partial-explicit (BPE), block full-implicit (BFI), block
-.\" partial-implicit (BPI), and in-line.
-.\" SUB-SECTION----------------------
-.\" .Ss Scope
-.\" .Bl -inset
-.\" .\" LIST-ITEM
-.\" .It Em Block
-.\" macros enclose other block macros, in-line macros or text, and
-.\" may span multiple lines.
-.\" .Bl -inset -offset indent
-.\" .\" LIST-ITEM
-.\" .It Em Full-block
-.\" macros always span multiple lines. They consist of zero or
-.\" more
-.\" .Qq heads ,
-.\" subsequent macros or text on the same line following invocation; an
-.\" optional
-.\" .Qq body ,
-.\" which spans subsequent lines of text or macros; and an optional
-.\" .Qq tail ,
-.\" macros or text on the same line following closure.
-.\" .\" LIST-ITEM
-.\" .It Em Partial-block
-.\" macros may span multiple lines. They consists of a optional
-.\" .Qq head ,
-.\" text immediately following invocation; always a
-.\" .Qq body ,
-.\" text or macros following the head on the same and subsequent lines; and
-.\" optionally a
-.\" .Qq tail ,
-.\" text immediately following closure.
-.\" .\" LIST-ITEM
-.\" .It Em In-line
-.\" macros may only enclose text and span at most a single line.
-.\" .El
-.\" .El
-.\" SUB-SECTION----------------------
-.\" .Ss Closure
-.\" Closure of a macro's scope depends first on its classification, then
-.\" on whether it's parsable. In this table,
-.\" .Sq BFE
-.\" refers to block full-explicit and so on.
-.\" .\" PARAGRAPH------------
-.\" .Pp
-.\" .Bl -tag -width 12n -offset indent -compact
-.\" .It BPE , BFE
-.\" corresponding explicit closure macro
-.\" .It BFI
-.\" end-of-file or a corresponding implicit closure macro
-.\" .It BPI
-.\" end-of-line (body may be closed by >0 space-separated
-.\" .Sx Reserved Characters ,
-.\" although block scope will still be open)
-.\" .It INL
-.\" end-of-line
-.\" .El
-.\" PARAGRAPH------------
-.\" .Pp
-.\" If a macro (block or in-line) is parsable, it may also be closed out by
-.\" one of the following scenarios (unless specifically noted otherwise):
-.\" .\" PARAGRAPH------------
-.\" .Pp
-.\" .Bl -dash -offset indent -compact
-.\" .It
-.\" a sequence of >0 space-separated
-.\" .Sx Reserved Characters ,
-.\" .It
-.\" another macro,
-.\" .It
-.\" end-of-line, or
-.\" .It
-.\" completion of a set number of arguments.
-.\" .El
-.\" PARAGRAPH------------
-.\" .Pp
-.\" If >0 space-separated
-.\" .Sx Reserved Characters
-.\" are followed by non-reserved characters, the behaviour differs per
-.\" macro. In general, scope of the macro is closed and re-opened:
-.\" subsequent tokens are interpreted as if the scope had just been opened.
-.\" In other circumstances, scope is simply closed out.
.\" SECTION---------------------------------------------
.Sh MACRO SYNTAX
Every line beginning with the control character
@@ -304,13 +220,13 @@ contains a head.
.Bl -column -compact -offset indent "MacroX" "CallableX" "ParsableX" "closed by XXX"
.It Em Macro Ta Em Callable Ta Em Parsable Ta Em Scope
.It \&Bd Ta \&No Ta \&No Ta closed by \&Ed
-.It \&Ed Ta \&No Ta \&No Ta opened by \&Bd
-.It \&Bl Ta \&No Ta \&No Ta closed by \&El
-.It \&El Ta \&No Ta \&No Ta opened by \&Bl
.It \&Bf Ta \&No Ta \&No Ta closed by \&Ef
-.It \&Ef Ta \&No Ta \&No Ta opened by \&Bf
.It \&Bk Ta \&No Ta \&No Ta closed by \&Ek
+.It \&Bl Ta \&No Ta \&No Ta closed by \&El
+.It \&Ed Ta \&No Ta \&No Ta opened by \&Bd
+.It \&Ef Ta \&No Ta \&No Ta opened by \&Bf
.It \&Ek Ta \&No Ta \&No Ta opened by \&Bk
+.It \&El Ta \&No Ta \&No Ta opened by \&Bl
.El
.\" SUB-SECTION----------------------
.Ss Block full-implicit
@@ -334,10 +250,10 @@ may have multiple heads.
.Pp
.Bl -column -compact -offset indent "MacroX" "CallableX" "ParsableX" "closed by XXXXXXXXXXX"
.It Em Macro Ta Em Callable Ta Em Parsable Ta Em Scope
+.It \&It Ta \&No Ta Yes Ta closed by \&It, \&El
.It \&Nd Ta \&No Ta \&No Ta closed by \&Sh
.It \&Sh Ta \&No Ta \&No Ta closed by \&Sh
.It \&Ss Ta \&No Ta \&No Ta closed by \&Sh, \&Ss
-.It \&It Ta \&No Ta Yes Ta closed by \&It, \&El
.El
.\" SUB-SECTION----------------------
.Ss Block partial-explicit
@@ -358,30 +274,30 @@ and/or tail
.Pp
.Bl -column "MacroX" "CallableX" "ParsableX" "closed by XXXX" -compact -offset indent
.It Em Macro Ta Em Callable Ta Em Parsable Ta Em Scope
-.It \&Ao Ta Yes Ta Yes Ta closed by \&Ac
.It \&Ac Ta Yes Ta Yes Ta opened by \&Ao
+.It \&Ao Ta Yes Ta Yes Ta closed by \&Ac
.It \&Bc Ta Yes Ta Yes Ta closed by \&Bo
.It \&Bo Ta Yes Ta Yes Ta opened by \&Bc
-.It \&Pc Ta Yes Ta Yes Ta closed by \&Po
-.It \&Po Ta Yes Ta Yes Ta opened by \&Pc
-.It \&Do Ta Yes Ta Yes Ta closed by \&Dc
-.It \&Dc Ta Yes Ta Yes Ta opened by \&Do
-.It \&Xo Ta Yes Ta Yes Ta closed by \&Xc
-.It \&Xc Ta Yes Ta Yes Ta opened by \&Xo
-.It \&Bro Ta Yes Ta Yes Ta closed by \&Brc
.It \&Brc Ta Yes Ta Yes Ta opened by \&Bro
-.It \&Oc Ta Yes Ta Yes Ta closed by \&Oo
-.It \&Oo Ta Yes Ta Yes Ta opened by \&Oc
-.It \&So Ta Yes Ta Yes Ta closed by \&Sc
-.It \&Sc Ta Yes Ta Yes Ta opened by \&So
-.It \&Fc Ta Yes Ta Yes Ta opened by \&Fo
-.It \&Fo Ta \&No Ta \&No Ta closed by \&Fc
+.It \&Bro Ta Yes Ta Yes Ta closed by \&Brc
+.It \&Dc Ta Yes Ta Yes Ta opened by \&Do
+.It \&Do Ta Yes Ta Yes Ta closed by \&Dc
.It \&Ec Ta Yes Ta Yes Ta opened by \&Eo
.It \&Eo Ta Yes Ta Yes Ta closed by \&Ec
+.It \&Fc Ta Yes Ta Yes Ta opened by \&Fo
+.It \&Fo Ta \&No Ta \&No Ta closed by \&Fc
+.It \&Oc Ta Yes Ta Yes Ta closed by \&Oo
+.It \&Oo Ta Yes Ta Yes Ta opened by \&Oc
+.It \&Pc Ta Yes Ta Yes Ta closed by \&Po
+.It \&Po Ta Yes Ta Yes Ta opened by \&Pc
.It \&Qc Ta Yes Ta Yes Ta opened by \&Oo
.It \&Qo Ta Yes Ta Yes Ta closed by \&Oc
.It \&Re Ta \&No Ta \&No Ta opened by \&Rs
.It \&Rs Ta \&No Ta \&No Ta closed by \&Re
+.It \&Sc Ta Yes Ta Yes Ta opened by \&So
+.It \&So Ta Yes Ta Yes Ta closed by \&Sc
+.It \&Xc Ta Yes Ta Yes Ta opened by \&Xo
+.It \&Xo Ta Yes Ta Yes Ta closed by \&Xc
.El
.\" SUB-SECTION----------------------
.Ss Block partial-implicit
@@ -396,16 +312,16 @@ or end of line.
.Bl -column "MacroX" "CallableX" "ParsableX" -compact -offset indent
.It Em Macro Ta Em Callable Ta Em Parsable
.It \&Aq Ta Yes Ta Yes
-.It \&Op Ta Yes Ta Yes
.It \&Bq Ta Yes Ta Yes
-.It \&Dq Ta Yes Ta Yes
-.It \&Pq Ta Yes Ta Yes
-.It \&Qq Ta Yes Ta Yes
-.It \&Sq Ta Yes Ta Yes
.It \&Brq Ta Yes Ta Yes
.It \&D1 Ta \&No Ta \&Yes
.It \&Dl Ta \&No Ta Yes
+.It \&Dq Ta Yes Ta Yes
+.It \&Op Ta Yes Ta Yes
+.It \&Pq Ta Yes Ta Yes
.It \&Ql Ta Yes Ta Yes
+.It \&Qq Ta Yes Ta Yes
+.It \&Sq Ta Yes Ta Yes
.El
.\" SUB-SECTION----------------------
.Ss In-line
@@ -427,35 +343,6 @@ then the macro accepts an arbitrary number of arguments.
.Pp
.Bl -column "MacroX" "CallableX" "ParsableX" "Arguments" -compact -offset indent
.It Em Macro Ta Em Callable Ta Em Parsable Ta Em Arguments
-.It \&Dd Ta \&No Ta \&No Ta >0
-.It \&Dt Ta \&No Ta \&No Ta n
-.It \&Os Ta \&No Ta \&No Ta n
-.It \&Pp Ta \&No Ta \&No Ta 0
-.It \&Ad Ta Yes Ta Yes Ta n
-.It \&An Ta Yes Ta Yes Ta n
-.It \&Ar Ta Yes Ta Yes Ta n
-.It \&Cd Ta Yes Ta \&No Ta >0
-.It \&Cm Ta Yes Ta Yes Ta n
-.It \&Dv Ta Yes Ta Yes Ta n
-.It \&Er Ta Yes Ta Yes Ta >0
-.It \&Ev Ta Yes Ta Yes Ta n
-.It \&Ex Ta \&No Ta \&No Ta 0
-.It \&Fa Ta Yes Ta Yes Ta n
-.It \&Fd Ta \&No Ta \&No Ta >0
-.It \&Fl Ta Yes Ta Yes Ta n
-.It \&Fn Ta Yes Ta Yes Ta >0
-.It \&Ft Ta Yes Ta Yes Ta n
-.It \&Ic Ta Yes Ta Yes Ta >0
-.It \&In Ta \&No Ta \&No Ta n
-.It \&Li Ta Yes Ta Yes Ta n
-.It \&Nm Ta Yes Ta Yes Ta n
-.It \&Ot Ta \&No Ta \&No Ta n
-.It \&Pa Ta Yes Ta Yes Ta n
-.It \&Rv Ta \&No Ta \&No Ta 0
-.It \&St Ta \&No Ta Yes Ta 1
-.It \&Va Ta Yes Ta Yes Ta n
-.It \&Vt Ta Yes Ta Yes Ta >0
-.It \&Xr Ta Yes Ta Yes Ta >0, <3
.It \&%A Ta \&No Ta \&No Ta >0
.It \&%B Ta \&No Ta \&No Ta >0
.It \&%C Ta \&No Ta \&No Ta >0
@@ -468,35 +355,65 @@ then the macro accepts an arbitrary number of arguments.
.It \&%R Ta \&No Ta \&No Ta >0
.It \&%T Ta \&No Ta \&No Ta >0
.It \&%V Ta \&No Ta \&No Ta >0
+.It \&Ad Ta Yes Ta Yes Ta n
+.It \&An Ta Yes Ta Yes Ta n
+.It \&Ap Ta Yes Ta Yes Ta 0
+.It \&Ar Ta Yes Ta Yes Ta n
.It \&At Ta Yes Ta Yes Ta 1
.It \&Bsx Ta Yes Ta Yes Ta n
+.It \&Bt Ta \&No Ta \&No Ta 0
.It \&Bx Ta Yes Ta Yes Ta n
+.It \&Cd Ta Yes Ta \&No Ta >0
+.It \&Cm Ta Yes Ta Yes Ta n
.It \&Db Ta \&No Ta \&No Ta 1
+.It \&Dd Ta \&No Ta \&No Ta >0
+.It \&Dt Ta \&No Ta \&No Ta n
+.It \&Dv Ta Yes Ta Yes Ta n
+.It \&Dx Ta Yes Ta Yes Ta n
.It \&Em Ta Yes Ta Yes Ta >0
+.It \&En Ta \&No Ta \&No Ta 0
+.It \&Er Ta Yes Ta Yes Ta >0
+.It \&Es Ta \&No Ta \&No Ta 0
+.It \&Ev Ta Yes Ta Yes Ta n
+.It \&Ex Ta \&No Ta \&No Ta 0
+.It \&Fa Ta Yes Ta Yes Ta n
+.It \&Fd Ta \&No Ta \&No Ta >0
+.It \&Fl Ta Yes Ta Yes Ta n
+.It \&Fn Ta Yes Ta Yes Ta >0
+.It \&Fr Ta \&No Ta \&No Ta n
+.It \&Ft Ta Yes Ta Yes Ta n
.It \&Fx Ta Yes Ta Yes Ta n
+.It \&Hf Ta \&No Ta \&No Ta n
+.It \&Ic Ta Yes Ta Yes Ta >0
+.It \&In Ta \&No Ta \&No Ta n
+.It \&Lb Ta \&No Ta \&No Ta 1
+.It \&Li Ta Yes Ta Yes Ta n
+.It \&Lk Ta Yes Ta Yes Ta n
+.It \&Lp Ta \&No Ta \&No Ta 0
.It \&Ms Ta Yes Ta Yes Ta >0
+.It \&Mt Ta Yes Ta Yes Ta >0
+.It \&Nm Ta Yes Ta Yes Ta n
.It \&No Ta Yes Ta Yes Ta 0
.It \&Ns Ta Yes Ta Yes Ta 0
.It \&Nx Ta Yes Ta Yes Ta n
+.It \&Os Ta \&No Ta \&No Ta n
+.It \&Ot Ta \&No Ta \&No Ta n
.It \&Ox Ta Yes Ta Yes Ta n
+.It \&Pa Ta Yes Ta Yes Ta n
.It \&Pf Ta \&No Ta Yes Ta 1
+.It \&Pp Ta \&No Ta \&No Ta 0
+.It \&Rv Ta \&No Ta \&No Ta 0
.It \&Sm Ta \&No Ta \&No Ta 1
+.It \&St Ta \&No Ta Yes Ta 1
.It \&Sx Ta Yes Ta Yes Ta >0
.It \&Sy Ta Yes Ta Yes Ta >0
.It \&Tn Ta Yes Ta Yes Ta >0
-.It \&Ux Ta Yes Ta Yes Ta n
-.It \&Dx Ta Yes Ta Yes Ta n
-.It \&Bt Ta \&No Ta \&No Ta 0
-.It \&Hf Ta \&No Ta \&No Ta n
-.It \&Fr Ta \&No Ta \&No Ta n
.It \&Ud Ta \&No Ta \&No Ta 0
-.It \&Lb Ta \&No Ta \&No Ta 1
-.It \&Ap Ta Yes Ta Yes Ta 0
-.It \&Lp Ta \&No Ta \&No Ta 0
-.It \&Lk Ta Yes Ta Yes Ta n
-.It \&Mt Ta Yes Ta Yes Ta >0
-.It \&Es Ta \&No Ta \&No Ta 0
-.It \&En Ta \&No Ta \&No Ta 0
+.It \&Ux Ta Yes Ta Yes Ta n
+.It \&Va Ta Yes Ta Yes Ta n
+.It \&Vt Ta Yes Ta Yes Ta >0
+.It \&Xr Ta Yes Ta Yes Ta >0, <3
+.It \&br Ta \&No Ta \&No Ta 0
.El
.\" SECTION---------------------------------------------
.Sh COMPATIBILITY
diff --git a/mdoc_macro.c b/mdoc_macro.c
index 14b5fddd..a551e19e 100644
--- a/mdoc_macro.c
+++ b/mdoc_macro.c
@@ -60,7 +60,7 @@ const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
{ in_line_eoln, MDOC_PROLOGUE }, /* Os */
{ blk_full, 0 }, /* Sh */
{ blk_full, 0 }, /* Ss */
- { in_line, 0 }, /* Pp */
+ { in_line_eoln, 0 }, /* Pp */
{ blk_part_imp, MDOC_PARSED }, /* D1 */
{ blk_part_imp, MDOC_PARSED }, /* Dl */
{ blk_full, MDOC_EXPLICIT }, /* Bd */
@@ -161,7 +161,7 @@ const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
{ obsolete, 0 }, /* Fr */
{ in_line_eoln, 0 }, /* Ud */
{ in_line_eoln, 0 }, /* Lb */
- { in_line, 0 }, /* Lp */
+ { in_line_eoln, 0 }, /* Lp */
{ in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Lk */
{ in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Mt */
{ blk_part_imp, MDOC_CALLABLE | MDOC_PARSED }, /* Brq */
@@ -742,10 +742,6 @@ in_line(MACRO_PROT_ARGS)
* usually because of reserved words) to squeak by.
*/
switch (tok) {
- case (MDOC_Lp):
- /* FALLTHROUGH */
- case (MDOC_Pp):
- /* FALLTHROUGH */
case (MDOC_Nm):
/* FALLTHROUGH */
case (MDOC_Fl):
diff --git a/mdoc_validate.c b/mdoc_validate.c
index 915d2f18..fde2dbab 100644
--- a/mdoc_validate.c
+++ b/mdoc_validate.c
@@ -125,7 +125,6 @@ static v_post posts_nd[] = { berr_ge1, NULL };
static v_post posts_nm[] = { post_nm, NULL };
static v_post posts_notext[] = { eerr_eq0, NULL };
static v_post posts_pf[] = { eerr_eq1, NULL };
-static v_post posts_pp[] = { ewarn_eq0, NULL };
static v_post posts_rv[] = { eerr_eq0, post_args, NULL };
static v_post posts_sh[] = { herr_ge1, bwarn_ge1, post_sh, NULL };
static v_post posts_ss[] = { herr_ge1, NULL };
@@ -158,7 +157,7 @@ const struct valids mdoc_valids[MDOC_MAX] = {
{ pres_os, NULL }, /* Os */
{ pres_sh, posts_sh }, /* Sh */
{ pres_ss, posts_ss }, /* Ss */
- { NULL, posts_pp }, /* Pp */
+ { NULL, posts_notext }, /* Pp */
{ pres_d1, posts_wline }, /* D1 */
{ pres_d1, posts_wline }, /* Dl */
{ pres_bd, posts_bd }, /* Bd */
@@ -259,7 +258,7 @@ const struct valids mdoc_valids[MDOC_MAX] = {
{ NULL, NULL }, /* Fr */
{ NULL, posts_notext }, /* Ud */
{ pres_lb, posts_lb }, /* Lb */
- { NULL, posts_pp }, /* Lp */
+ { NULL, posts_notext }, /* Lp */
{ NULL, NULL }, /* Lk */
{ NULL, posts_text }, /* Mt */
{ NULL, posts_wline }, /* Brq */