version 1.190, 2015/04/19 13:50:26 |
version 1.192, 2015/04/19 14:25:41 |
Line 232 mdoc_macroend(struct roff_man *mdoc) |
|
Line 232 mdoc_macroend(struct roff_man *mdoc) |
|
|
|
/* |
/* |
* Look up the macro at *p called by "from", |
* Look up the macro at *p called by "from", |
* or as a line macro if from == MDOC_MAX. |
* or as a line macro if from == TOKEN_NONE. |
*/ |
*/ |
static int |
static int |
lookup(struct roff_man *mdoc, int from, int line, int ppos, const char *p) |
lookup(struct roff_man *mdoc, int from, int line, int ppos, const char *p) |
{ |
{ |
int res; |
int res; |
|
|
if (from == MDOC_MAX || mdoc_macros[from].flags & MDOC_PARSED) { |
if (from == TOKEN_NONE || mdoc_macros[from].flags & MDOC_PARSED) { |
res = mdoc_hash_find(p); |
res = mdoc_hash_find(p); |
if (res != MDOC_MAX) { |
if (res != TOKEN_NONE) { |
if (mdoc_macros[res].flags & MDOC_CALLABLE) |
if (mdoc_macros[res].flags & MDOC_CALLABLE) |
return(res); |
return(res); |
if (res != MDOC_br && res != MDOC_sp && res != MDOC_ll) |
if (res != MDOC_br && res != MDOC_sp && res != MDOC_ll) |
Line 249 lookup(struct roff_man *mdoc, int from, int line, int |
|
Line 249 lookup(struct roff_man *mdoc, int from, int line, int |
|
mdoc->parse, line, ppos, p); |
mdoc->parse, line, ppos, p); |
} |
} |
} |
} |
return(MDOC_MAX); |
return(TOKEN_NONE); |
} |
} |
|
|
/* |
/* |
Line 432 dword(struct roff_man *mdoc, int line, int col, const |
|
Line 432 dword(struct roff_man *mdoc, int line, int col, const |
|
! (mdoc->flags & (MDOC_SYNOPSIS | MDOC_KEEP | MDOC_SMOFF)) && |
! (mdoc->flags & (MDOC_SYNOPSIS | MDOC_KEEP | MDOC_SMOFF)) && |
d == DELIM_NONE && mdoc->last->type == ROFFT_TEXT && |
d == DELIM_NONE && mdoc->last->type == ROFFT_TEXT && |
mdoc_isdelim(mdoc->last->string) == DELIM_NONE) { |
mdoc_isdelim(mdoc->last->string) == DELIM_NONE) { |
mdoc_word_append(mdoc, p); |
roff_word_append(mdoc, p); |
return; |
return; |
} |
} |
|
|
mdoc_word_alloc(mdoc, line, col, p); |
roff_word_alloc(mdoc, line, col, p); |
|
|
/* |
/* |
* If the word consists of a bare delimiter, |
* If the word consists of a bare delimiter, |
Line 465 append_delims(struct roff_man *mdoc, int line, int *po |
|
Line 465 append_delims(struct roff_man *mdoc, int line, int *po |
|
|
|
for (;;) { |
for (;;) { |
la = *pos; |
la = *pos; |
if (mdoc_args(mdoc, line, pos, buf, MDOC_MAX, &p) == ARGS_EOLN) |
if (mdoc_args(mdoc, line, pos, buf, TOKEN_NONE, &p) == |
|
ARGS_EOLN) |
break; |
break; |
dword(mdoc, line, la, p, DELIM_MAX, 1); |
dword(mdoc, line, la, p, DELIM_MAX, 1); |
|
|
Line 498 macro_or_word(MACRO_PROT_ARGS, int parsed) |
|
Line 499 macro_or_word(MACRO_PROT_ARGS, int parsed) |
|
int ntok; |
int ntok; |
|
|
p = buf + ppos; |
p = buf + ppos; |
ntok = MDOC_MAX; |
ntok = TOKEN_NONE; |
if (*p == '"') |
if (*p == '"') |
p++; |
p++; |
else if (parsed && ! (mdoc->flags & MDOC_PHRASELIT)) |
else if (parsed && ! (mdoc->flags & MDOC_PHRASELIT)) |
ntok = lookup(mdoc, tok, line, ppos, p); |
ntok = lookup(mdoc, tok, line, ppos, p); |
|
|
if (ntok == MDOC_MAX) { |
if (ntok == TOKEN_NONE) { |
dword(mdoc, line, ppos, p, DELIM_MAX, tok == MDOC_MAX || |
dword(mdoc, line, ppos, p, DELIM_MAX, tok == TOKEN_NONE || |
mdoc_macros[tok].flags & MDOC_JOIN); |
mdoc_macros[tok].flags & MDOC_JOIN); |
return(0); |
return(0); |
} else { |
} else { |
if (mdoc_macros[tok].fp == in_line_eoln) |
if (mdoc_macros[tok].fp == in_line_eoln) |
rew_elem(mdoc, tok); |
rew_elem(mdoc, tok); |
mdoc_macro(mdoc, ntok, line, ppos, pos, buf); |
mdoc_macro(mdoc, ntok, line, ppos, pos, buf); |
if (tok == MDOC_MAX) |
if (tok == TOKEN_NONE) |
append_delims(mdoc, line, pos, buf); |
append_delims(mdoc, line, pos, buf); |
return(1); |
return(1); |
} |
} |
Line 677 blk_exp_close(MACRO_PROT_ARGS) |
|
Line 678 blk_exp_close(MACRO_PROT_ARGS) |
|
if (ac == ARGS_PUNCT || ac == ARGS_EOLN) |
if (ac == ARGS_PUNCT || ac == ARGS_EOLN) |
break; |
break; |
|
|
ntok = ac == ARGS_QWORD ? MDOC_MAX : |
ntok = ac == ARGS_QWORD ? TOKEN_NONE : |
lookup(mdoc, tok, line, lastarg, p); |
lookup(mdoc, tok, line, lastarg, p); |
|
|
if (ntok == MDOC_MAX) { |
if (ntok == TOKEN_NONE) { |
dword(mdoc, line, lastarg, p, DELIM_MAX, |
dword(mdoc, line, lastarg, p, DELIM_MAX, |
MDOC_JOIN & mdoc_macros[tok].flags); |
MDOC_JOIN & mdoc_macros[tok].flags); |
continue; |
continue; |
Line 781 in_line(MACRO_PROT_ARGS) |
|
Line 782 in_line(MACRO_PROT_ARGS) |
|
} |
} |
|
|
ntok = (ac == ARGS_QWORD || (tok == MDOC_Fn && !cnt)) ? |
ntok = (ac == ARGS_QWORD || (tok == MDOC_Fn && !cnt)) ? |
MDOC_MAX : lookup(mdoc, tok, line, la, p); |
TOKEN_NONE : lookup(mdoc, tok, line, la, p); |
|
|
/* |
/* |
* In this case, we've located a submacro and must |
* In this case, we've located a submacro and must |
Line 790 in_line(MACRO_PROT_ARGS) |
|
Line 791 in_line(MACRO_PROT_ARGS) |
|
* or raise a warning. |
* or raise a warning. |
*/ |
*/ |
|
|
if (ntok != MDOC_MAX) { |
if (ntok != TOKEN_NONE) { |
if (scope) |
if (scope) |
rew_elem(mdoc, tok); |
rew_elem(mdoc, tok); |
if (nc && ! cnt) { |
if (nc && ! cnt) { |
Line 1107 blk_full(MACRO_PROT_ARGS) |
|
Line 1108 blk_full(MACRO_PROT_ARGS) |
|
mdoc->flags |= MDOC_PPHRASE; |
mdoc->flags |= MDOC_PPHRASE; |
if (ac == ARGS_PEND && lac == ARGS_PPHRASE) |
if (ac == ARGS_PEND && lac == ARGS_PPHRASE) |
mdoc->flags |= MDOC_PPHRASE; |
mdoc->flags |= MDOC_PPHRASE; |
parse_rest(mdoc, MDOC_MAX, line, &la, buf); |
parse_rest(mdoc, TOKEN_NONE, line, &la, buf); |
mdoc->flags &= ~MDOC_PPHRASE; |
mdoc->flags &= ~MDOC_PPHRASE; |
continue; |
continue; |
} |
} |
Line 1337 in_line_argn(MACRO_PROT_ARGS) |
|
Line 1338 in_line_argn(MACRO_PROT_ARGS) |
|
} |
} |
|
|
ntok = (ac == ARGS_QWORD || (tok == MDOC_Pf && state == 0)) ? |
ntok = (ac == ARGS_QWORD || (tok == MDOC_Pf && state == 0)) ? |
MDOC_MAX : lookup(mdoc, tok, line, la, p); |
TOKEN_NONE : lookup(mdoc, tok, line, la, p); |
|
|
if (ntok != MDOC_MAX) { |
if (ntok != TOKEN_NONE) { |
if (state >= 0) { |
if (state >= 0) { |
rew_elem(mdoc, tok); |
rew_elem(mdoc, tok); |
state = -2; |
state = -2; |
Line 1473 phrase_ta(MACRO_PROT_ARGS) |
|
Line 1474 phrase_ta(MACRO_PROT_ARGS) |
|
|
|
rew_last(mdoc, body); |
rew_last(mdoc, body); |
roff_body_alloc(mdoc, line, ppos, MDOC_It); |
roff_body_alloc(mdoc, line, ppos, MDOC_It); |
parse_rest(mdoc, MDOC_MAX, line, pos, buf); |
parse_rest(mdoc, TOKEN_NONE, line, pos, buf); |
} |
} |