version 1.363, 2018/12/03 21:00:11 |
version 1.364, 2018/12/04 02:53:51 |
Line 370 mdoc_node_validate(struct roff_man *mdoc) |
|
Line 370 mdoc_node_validate(struct roff_man *mdoc) |
|
/* Call the macro's postprocessor. */ |
/* Call the macro's postprocessor. */ |
|
|
if (n->tok < ROFF_MAX) { |
if (n->tok < ROFF_MAX) { |
switch(n->tok) { |
roff_validate(mdoc); |
case ROFF_br: |
|
case ROFF_sp: |
|
post_par(mdoc); |
|
break; |
|
default: |
|
roff_validate(mdoc); |
|
break; |
|
} |
|
break; |
break; |
} |
} |
|
|
Line 956 build_list(struct roff_man *mdoc, int tok) |
|
Line 948 build_list(struct roff_man *mdoc, int tok) |
|
for (ic = 1;; ic++) { |
for (ic = 1;; ic++) { |
roff_elem_alloc(mdoc, n->line, n->pos, tok); |
roff_elem_alloc(mdoc, n->line, n->pos, tok); |
mdoc->last->flags |= NODE_NOSRC; |
mdoc->last->flags |= NODE_NOSRC; |
mdoc_node_relink(mdoc, n); |
roff_node_relink(mdoc, n); |
n = mdoc->last = mdoc->last->parent; |
n = mdoc->last = mdoc->last->parent; |
mdoc->next = ROFF_NEXT_SIBLING; |
mdoc->next = ROFF_NEXT_SIBLING; |
if (n->next == NULL) |
if (n->next == NULL) |
Line 1297 post_nm(POST_ARGS) |
|
Line 1289 post_nm(POST_ARGS) |
|
mandoc_xr_add(mdoc->meta.msec, n->child->string, -1, -1); |
mandoc_xr_add(mdoc->meta.msec, n->child->string, -1, -1); |
|
|
if (n->last != NULL && n->last->tok == MDOC_Pp) |
if (n->last != NULL && n->last->tok == MDOC_Pp) |
mdoc_node_relink(mdoc, n->last); |
roff_node_relink(mdoc, n->last); |
|
|
if (mdoc->meta.name == NULL) |
if (mdoc->meta.name == NULL) |
deroff(&mdoc->meta.name, n); |
deroff(&mdoc->meta.name, n); |
Line 1376 post_display(POST_ARGS) |
|
Line 1368 post_display(POST_ARGS) |
|
mdoc->parse, n->line, n->pos, "Bd"); |
mdoc->parse, n->line, n->pos, "Bd"); |
mdoc->next = ROFF_NEXT_SIBLING; |
mdoc->next = ROFF_NEXT_SIBLING; |
while (n->body->child != NULL) |
while (n->body->child != NULL) |
mdoc_node_relink(mdoc, |
roff_node_relink(mdoc, |
n->body->child); |
n->body->child); |
roff_node_delete(mdoc, n); |
roff_node_delete(mdoc, n); |
break; |
break; |
Line 1659 post_bl_block(POST_ARGS) |
|
Line 1651 post_bl_block(POST_ARGS) |
|
mandoc_msg(MANDOCERR_PAR_MOVE, |
mandoc_msg(MANDOCERR_PAR_MOVE, |
mdoc->parse, nc->line, nc->pos, |
mdoc->parse, nc->line, nc->pos, |
roff_name[nc->tok]); |
roff_name[nc->tok]); |
mdoc_node_relink(mdoc, nc); |
roff_node_relink(mdoc, nc); |
} else if (n->norm->Bl.comp == 0 && |
} else if (n->norm->Bl.comp == 0 && |
n->norm->Bl.type != LIST_column) { |
n->norm->Bl.type != LIST_column) { |
mandoc_vmsg(MANDOCERR_PAR_SKIP, |
mandoc_vmsg(MANDOCERR_PAR_SKIP, |
Line 1819 post_bl(POST_ARGS) |
|
Line 1811 post_bl(POST_ARGS) |
|
roff_body_alloc(mdoc, nchild->line, |
roff_body_alloc(mdoc, nchild->line, |
nchild->pos, MDOC_It); |
nchild->pos, MDOC_It); |
while (nchild->tok != MDOC_It) { |
while (nchild->tok != MDOC_It) { |
mdoc_node_relink(mdoc, nchild); |
roff_node_relink(mdoc, nchild); |
if ((nchild = nnext) == NULL) |
if ((nchild = nnext) == NULL) |
break; |
break; |
nnext = nchild->next; |
nnext = nchild->next; |
Line 1938 post_sm(POST_ARGS) |
|
Line 1930 post_sm(POST_ARGS) |
|
mandoc_vmsg(MANDOCERR_SM_BAD, |
mandoc_vmsg(MANDOCERR_SM_BAD, |
mdoc->parse, nch->line, nch->pos, |
mdoc->parse, nch->line, nch->pos, |
"%s %s", roff_name[mdoc->last->tok], nch->string); |
"%s %s", roff_name[mdoc->last->tok], nch->string); |
mdoc_node_relink(mdoc, nch); |
roff_node_relink(mdoc, nch); |
return; |
return; |
} |
} |
|
|
Line 2522 post_ignpar(POST_ARGS) |
|
Line 2514 post_ignpar(POST_ARGS) |
|
} |
} |
|
|
if ((np = mdoc->last->child) != NULL) |
if ((np = mdoc->last->child) != NULL) |
if (np->tok == MDOC_Pp) { |
if (np->tok == MDOC_Pp || |
|
np->tok == ROFF_br || np->tok == ROFF_sp) { |
mandoc_vmsg(MANDOCERR_PAR_SKIP, |
mandoc_vmsg(MANDOCERR_PAR_SKIP, |
mdoc->parse, np->line, np->pos, |
mdoc->parse, np->line, np->pos, |
"%s after %s", roff_name[np->tok], |
"%s after %s", roff_name[np->tok], |
Line 2531 post_ignpar(POST_ARGS) |
|
Line 2524 post_ignpar(POST_ARGS) |
|
} |
} |
|
|
if ((np = mdoc->last->last) != NULL) |
if ((np = mdoc->last->last) != NULL) |
if (np->tok == MDOC_Pp) { |
if (np->tok == MDOC_Pp || np->tok == ROFF_br) { |
mandoc_vmsg(MANDOCERR_PAR_SKIP, mdoc->parse, |
mandoc_vmsg(MANDOCERR_PAR_SKIP, mdoc->parse, |
np->line, np->pos, "%s at the end of %s", |
np->line, np->pos, "%s at the end of %s", |
roff_name[np->tok], |
roff_name[np->tok], |
Line 2576 post_par(POST_ARGS) |
|
Line 2569 post_par(POST_ARGS) |
|
{ |
{ |
struct roff_node *np; |
struct roff_node *np; |
|
|
np = mdoc->last; |
post_prevpar(mdoc); |
if (np->tok != ROFF_br && np->tok != ROFF_sp) |
|
post_prevpar(mdoc); |
|
|
|
if (np->tok == ROFF_sp) { |
np = mdoc->last; |
if (np->child != NULL && np->child->next != NULL) |
if (np->child != NULL) |
mandoc_vmsg(MANDOCERR_ARG_EXCESS, mdoc->parse, |
|
np->child->next->line, np->child->next->pos, |
|
"sp ... %s", np->child->next->string); |
|
} else if (np->child != NULL) |
|
mandoc_vmsg(MANDOCERR_ARG_SKIP, |
mandoc_vmsg(MANDOCERR_ARG_SKIP, |
mdoc->parse, np->line, np->pos, "%s %s", |
mdoc->parse, np->line, np->pos, "%s %s", |
roff_name[np->tok], np->child->string); |
roff_name[np->tok], np->child->string); |
|
|
if ((np = mdoc->last->prev) == NULL) { |
|
np = mdoc->last->parent; |
|
if (np->tok != MDOC_Sh && np->tok != MDOC_Ss) |
|
return; |
|
} else if (np->tok != MDOC_Pp && |
|
(mdoc->last->tok != ROFF_br || |
|
(np->tok != ROFF_sp && np->tok != ROFF_br))) |
|
return; |
|
|
|
mandoc_vmsg(MANDOCERR_PAR_SKIP, mdoc->parse, |
|
mdoc->last->line, mdoc->last->pos, "%s after %s", |
|
roff_name[mdoc->last->tok], roff_name[np->tok]); |
|
roff_node_delete(mdoc, mdoc->last); |
|
} |
} |
|
|
static void |
static void |