version 1.58, 2009/03/08 11:41:22 |
version 1.59, 2009/03/08 18:02:36 |
Line 60 static int append_delims(struct mdoc *, int, int *, |
|
Line 60 static int append_delims(struct mdoc *, int, int *, |
|
static int lookup(struct mdoc *, int, int, int, const char *); |
static int lookup(struct mdoc *, int, int, int, const char *); |
static int pwarn(struct mdoc *, int, int, int); |
static int pwarn(struct mdoc *, int, int, int); |
static int perr(struct mdoc *, int, int, int); |
static int perr(struct mdoc *, int, int, int); |
|
static int scopewarn(struct mdoc *, enum mdoc_type, int, int, |
|
const struct mdoc_node *); |
|
|
#define WMACPARM (1) |
#define WMACPARM (1) |
#define WOBS (2) |
#define WOBS (2) |
Line 192 perr(struct mdoc *mdoc, int line, int pos, int type) |
|
Line 194 perr(struct mdoc *mdoc, int line, int pos, int type) |
|
switch (type) { |
switch (type) { |
case (ENOCTX): |
case (ENOCTX): |
c = mdoc_perr(mdoc, line, pos, |
c = mdoc_perr(mdoc, line, pos, |
"closing macro has prior context"); |
"closing macro has no prior context"); |
break; |
break; |
case (ENOPARMS): |
case (ENOPARMS): |
c = mdoc_perr(mdoc, line, pos, |
c = mdoc_perr(mdoc, line, pos, |
Line 228 pwarn(struct mdoc *mdoc, int line, int pos, int type) |
|
Line 230 pwarn(struct mdoc *mdoc, int line, int pos, int type) |
|
|
|
|
|
static int |
static int |
|
scopewarn(struct mdoc *mdoc, enum mdoc_type type, |
|
int line, int pos, const struct mdoc_node *p) |
|
{ |
|
const char *n, *t, *tt; |
|
|
|
n = t = "<root>"; |
|
tt = "block"; |
|
|
|
switch (p->type) { |
|
case (MDOC_BODY): |
|
tt = "multi-line"; |
|
break; |
|
case (MDOC_HEAD): |
|
tt = "line"; |
|
break; |
|
default: |
|
break; |
|
} |
|
|
|
switch (p->type) { |
|
case (MDOC_BLOCK): |
|
n = mdoc_macronames[p->tok]; |
|
t = "block"; |
|
break; |
|
case (MDOC_BODY): |
|
n = mdoc_macronames[p->tok]; |
|
t = "multi-line"; |
|
break; |
|
case (MDOC_HEAD): |
|
n = mdoc_macronames[p->tok]; |
|
t = "line"; |
|
break; |
|
default: |
|
break; |
|
} |
|
|
|
if ( ! (MDOC_IGN_SCOPE & mdoc->pflags)) |
|
return(mdoc_perr(mdoc, line, pos, |
|
"%s scope breaks %s scope of %s", |
|
tt, t, n)); |
|
return(mdoc_pwarn(mdoc, line, pos, WARN_SYNTAX, |
|
"%s scope breaks %s scope of %s", |
|
tt, t, n)); |
|
} |
|
|
|
|
|
static int |
lookup(struct mdoc *mdoc, int line, int pos, int from, const char *p) |
lookup(struct mdoc *mdoc, int line, int pos, int from, const char *p) |
{ |
{ |
int res; |
int res; |
Line 512 rewind_subblock(enum mdoc_type type, struct mdoc *mdoc |
|
Line 561 rewind_subblock(enum mdoc_type type, struct mdoc *mdoc |
|
break; |
break; |
else if (rewind_dobreak(tok, n)) |
else if (rewind_dobreak(tok, n)) |
continue; |
continue; |
return(mdoc_perr(mdoc, line, ppos, |
if ( ! scopewarn(mdoc, type, line, ppos, n)) |
"scope breaks %s", MDOC_ROOT == n->type ? |
return(0); |
"<root>" : mdoc_macronames[n->tok])); |
|
} |
} |
|
|
assert(n); |
assert(n); |
Line 537 rewind_expblock(struct mdoc *mdoc, int tok, int line, |
|
Line 585 rewind_expblock(struct mdoc *mdoc, int tok, int line, |
|
break; |
break; |
else if (rewind_dobreak(tok, n)) |
else if (rewind_dobreak(tok, n)) |
continue; |
continue; |
return(mdoc_perr(mdoc, line, ppos, |
if ( ! scopewarn(mdoc, MDOC_BLOCK, line, ppos, n)) |
"scope breaks %s", MDOC_ROOT == n->type ? |
return(0); |
"<root>" : mdoc_macronames[n->tok])); |
|
} |
} |
|
|
assert(n); |
assert(n); |
Line 562 rewind_impblock(struct mdoc *mdoc, int tok, int line, |
|
Line 609 rewind_impblock(struct mdoc *mdoc, int tok, int line, |
|
break; |
break; |
else if (rewind_dobreak(tok, n)) |
else if (rewind_dobreak(tok, n)) |
continue; |
continue; |
return(mdoc_perr(mdoc, line, ppos, |
if ( ! scopewarn(mdoc, MDOC_BLOCK, line, ppos, n)) |
"scope breaks %s", MDOC_ROOT == n->type ? |
return(0); |
"<root>" : mdoc_macronames[n->tok])); |
|
} |
} |
|
|
assert(n); |
assert(n); |