version 1.180, 2017/05/05 15:16:25 |
version 1.181, 2017/05/30 16:21:07 |
|
|
{ blk_full, MDOC_PARSED | MDOC_JOIN }, /* It */ |
{ blk_full, MDOC_PARSED | MDOC_JOIN }, /* It */ |
{ in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Ad */ |
{ in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Ad */ |
{ in_line, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* An */ |
{ in_line, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* An */ |
{ in_line_argn, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* Ap */ |
{ in_line_argn, MDOC_CALLABLE | MDOC_PARSED | |
|
MDOC_IGNDELIM | MDOC_JOIN }, /* Ap */ |
{ in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Ar */ |
{ in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Ar */ |
{ in_line, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* Cd */ |
{ in_line, MDOC_CALLABLE | MDOC_PARSED | MDOC_JOIN }, /* Cd */ |
{ in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Cm */ |
{ in_line, MDOC_CALLABLE | MDOC_PARSED }, /* Cm */ |
|
|
if (ac == ARGS_PUNCT || ac == ARGS_EOLN) |
if (ac == ARGS_PUNCT || ac == ARGS_EOLN) |
break; |
break; |
|
|
ntok = ac == ARGS_QWORD ? TOKEN_NONE : |
ntok = lookup(mdoc, tok, line, lastarg, p); |
lookup(mdoc, tok, line, lastarg, p); |
|
|
|
if (ntok == TOKEN_NONE) { |
if (ntok == TOKEN_NONE) { |
dword(mdoc, line, lastarg, p, DELIM_MAX, |
dword(mdoc, line, lastarg, p, DELIM_MAX, |
|
|
break; |
break; |
} |
} |
|
|
ntok = (ac == ARGS_QWORD || (tok == MDOC_Fn && !cnt)) ? |
ntok = (tok == MDOC_Fn && !cnt) ? |
TOKEN_NONE : lookup(mdoc, tok, line, la, p); |
TOKEN_NONE : lookup(mdoc, tok, line, la, p); |
|
|
/* |
/* |
|
|
} |
} |
|
|
/* |
/* |
* Non-quote-enclosed punctuation. Set up our scope, if |
* Handle punctuation. Set up our scope, if a word; |
* a word; rewind the scope, if a delimiter; then append |
* rewind the scope, if a delimiter; then append the word. |
* the word. |
|
*/ |
*/ |
|
|
d = ac == ARGS_QWORD ? DELIM_NONE : mdoc_isdelim(p); |
if ((d = mdoc_isdelim(p)) != DELIM_NONE) { |
|
|
if (DELIM_NONE != d) { |
|
/* |
/* |
* If we encounter closing punctuation, no word |
* If we encounter closing punctuation, no word |
* has been emitted, no scope is open, and we're |
* has been emitted, no scope is open, and we're |
|
|
* Close out our scope, if one is open, before |
* Close out our scope, if one is open, before |
* any punctuation. |
* any punctuation. |
*/ |
*/ |
if (scope) |
if (scope && tok != MDOC_Lk) { |
rew_elem(mdoc, tok); |
rew_elem(mdoc, tok); |
scope = 0; |
scope = 0; |
if (tok == MDOC_Fn) |
if (tok == MDOC_Fn) |
mayopen = 0; |
mayopen = 0; |
|
} |
} else if (mayopen && !scope) { |
} else if (mayopen && !scope) { |
mdoc_elem_alloc(mdoc, line, ppos, tok, arg); |
mdoc_elem_alloc(mdoc, line, ppos, tok, arg); |
scope = 1; |
scope = 1; |
|
|
|
|
if (head == NULL && |
if (head == NULL && |
ac != ARGS_PHRASE && |
ac != ARGS_PHRASE && |
ac != ARGS_QWORD && |
|
mdoc_isdelim(p) == DELIM_OPEN) { |
mdoc_isdelim(p) == DELIM_OPEN) { |
dword(mdoc, line, la, p, DELIM_OPEN, 0); |
dword(mdoc, line, la, p, DELIM_OPEN, 0); |
continue; |
continue; |
|
|
if (ac == ARGS_EOLN || ac == ARGS_PUNCT) |
if (ac == ARGS_EOLN || ac == ARGS_PUNCT) |
break; |
break; |
|
|
if (body == NULL && ac != ARGS_QWORD && |
if (body == NULL && mdoc_isdelim(p) == DELIM_OPEN) { |
mdoc_isdelim(p) == DELIM_OPEN) { |
|
dword(mdoc, line, la, p, DELIM_OPEN, 0); |
dword(mdoc, line, la, p, DELIM_OPEN, 0); |
continue; |
continue; |
} |
} |
|
|
|
|
/* Flush out leading punctuation. */ |
/* Flush out leading punctuation. */ |
|
|
if (head == NULL && ac != ARGS_QWORD && |
if (head == NULL && mdoc_isdelim(p) == DELIM_OPEN) { |
mdoc_isdelim(p) == DELIM_OPEN) { |
|
dword(mdoc, line, la, p, DELIM_OPEN, 0); |
dword(mdoc, line, la, p, DELIM_OPEN, 0); |
continue; |
continue; |
} |
} |
|
|
state = -2; |
state = -2; |
} |
} |
|
|
ntok = (ac == ARGS_QWORD || (tok == MDOC_Pf && state == 0)) ? |
ntok = (tok == MDOC_Pf && state == 0) ? |
TOKEN_NONE : lookup(mdoc, tok, line, la, p); |
TOKEN_NONE : lookup(mdoc, tok, line, la, p); |
|
|
if (ntok != TOKEN_NONE) { |
if (ntok != TOKEN_NONE) { |
|
|
break; |
break; |
} |
} |
|
|
if (ac == ARGS_QWORD || |
if (mdoc_macros[tok].flags & MDOC_IGNDELIM || |
mdoc_macros[tok].flags & MDOC_IGNDELIM || |
|
mdoc_isdelim(p) == DELIM_NONE) { |
mdoc_isdelim(p) == DELIM_NONE) { |
if (state == -1) { |
if (state == -1) { |
mdoc_elem_alloc(mdoc, line, ppos, tok, arg); |
mdoc_elem_alloc(mdoc, line, ppos, tok, arg); |