version 1.189, 2015/04/18 16:06:40 |
version 1.190, 2015/04/19 13:50:26 |
|
|
#include "roff.h" |
#include "roff.h" |
#include "mdoc.h" |
#include "mdoc.h" |
#include "libmandoc.h" |
#include "libmandoc.h" |
|
#include "roff_int.h" |
#include "libmdoc.h" |
#include "libmdoc.h" |
|
|
static void blk_full(MACRO_PROT_ARGS); |
static void blk_full(MACRO_PROT_ARGS); |
Line 292 rew_pending(struct roff_man *mdoc, const struct roff_n |
|
Line 293 rew_pending(struct roff_man *mdoc, const struct roff_n |
|
|
|
switch (n->type) { |
switch (n->type) { |
case ROFFT_HEAD: |
case ROFFT_HEAD: |
mdoc_body_alloc(mdoc, n->line, n->pos, n->tok); |
roff_body_alloc(mdoc, n->line, n->pos, n->tok); |
return; |
return; |
case ROFFT_BLOCK: |
case ROFFT_BLOCK: |
break; |
break; |
Line 1022 blk_full(MACRO_PROT_ARGS) |
|
Line 1023 blk_full(MACRO_PROT_ARGS) |
|
*/ |
*/ |
|
|
if (tok == MDOC_Nd) { |
if (tok == MDOC_Nd) { |
head = mdoc_head_alloc(mdoc, line, ppos, tok); |
head = roff_head_alloc(mdoc, line, ppos, tok); |
rew_last(mdoc, head); |
rew_last(mdoc, head); |
body = mdoc_body_alloc(mdoc, line, ppos, tok); |
body = roff_body_alloc(mdoc, line, ppos, tok); |
} |
} |
|
|
if (tok == MDOC_Bk) |
if (tok == MDOC_Bk) |
Line 1047 blk_full(MACRO_PROT_ARGS) |
|
Line 1048 blk_full(MACRO_PROT_ARGS) |
|
*/ |
*/ |
if (body != NULL) |
if (body != NULL) |
rew_last(mdoc, body); |
rew_last(mdoc, body); |
body = mdoc_body_alloc(mdoc, line, ppos, tok); |
body = roff_body_alloc(mdoc, line, ppos, tok); |
break; |
break; |
} |
} |
if (tok == MDOC_Bd || tok == MDOC_Bk) { |
if (tok == MDOC_Bd || tok == MDOC_Bk) { |
Line 1082 blk_full(MACRO_PROT_ARGS) |
|
Line 1083 blk_full(MACRO_PROT_ARGS) |
|
/* Open a head if one hasn't been opened. */ |
/* Open a head if one hasn't been opened. */ |
|
|
if (head == NULL) |
if (head == NULL) |
head = mdoc_head_alloc(mdoc, line, ppos, tok); |
head = roff_head_alloc(mdoc, line, ppos, tok); |
|
|
if (ac == ARGS_PHRASE || |
if (ac == ARGS_PHRASE || |
ac == ARGS_PEND || |
ac == ARGS_PEND || |
Line 1094 blk_full(MACRO_PROT_ARGS) |
|
Line 1095 blk_full(MACRO_PROT_ARGS) |
|
*/ |
*/ |
|
|
rew_last(mdoc, body == NULL ? head : body); |
rew_last(mdoc, body == NULL ? head : body); |
body = mdoc_body_alloc(mdoc, line, ppos, tok); |
body = roff_body_alloc(mdoc, line, ppos, tok); |
|
|
/* |
/* |
* Process phrases: set whether we're in a |
* Process phrases: set whether we're in a |
Line 1118 blk_full(MACRO_PROT_ARGS) |
|
Line 1119 blk_full(MACRO_PROT_ARGS) |
|
if (blk->flags & MDOC_VALID) |
if (blk->flags & MDOC_VALID) |
return; |
return; |
if (head == NULL) |
if (head == NULL) |
head = mdoc_head_alloc(mdoc, line, ppos, tok); |
head = roff_head_alloc(mdoc, line, ppos, tok); |
if (nl && tok != MDOC_Bd && tok != MDOC_Bl && tok != MDOC_Rs) |
if (nl && tok != MDOC_Bd && tok != MDOC_Bl && tok != MDOC_Rs) |
append_delims(mdoc, line, pos, buf); |
append_delims(mdoc, line, pos, buf); |
if (body != NULL) |
if (body != NULL) |
Line 1129 blk_full(MACRO_PROT_ARGS) |
|
Line 1130 blk_full(MACRO_PROT_ARGS) |
|
/* Close out scopes to remain in a consistent state. */ |
/* Close out scopes to remain in a consistent state. */ |
|
|
rew_last(mdoc, head); |
rew_last(mdoc, head); |
body = mdoc_body_alloc(mdoc, line, ppos, tok); |
body = roff_body_alloc(mdoc, line, ppos, tok); |
out: |
out: |
if (mdoc->flags & MDOC_FREECOL) { |
if (mdoc->flags & MDOC_FREECOL) { |
rew_last(mdoc, body); |
rew_last(mdoc, body); |
Line 1160 blk_part_imp(MACRO_PROT_ARGS) |
|
Line 1161 blk_part_imp(MACRO_PROT_ARGS) |
|
*/ |
*/ |
|
|
blk = mdoc_block_alloc(mdoc, line, ppos, tok, NULL); |
blk = mdoc_block_alloc(mdoc, line, ppos, tok, NULL); |
rew_last(mdoc, mdoc_head_alloc(mdoc, line, ppos, tok)); |
rew_last(mdoc, roff_head_alloc(mdoc, line, ppos, tok)); |
|
|
/* |
/* |
* Open the body scope "on-demand", that is, after we've |
* Open the body scope "on-demand", that is, after we've |
Line 1181 blk_part_imp(MACRO_PROT_ARGS) |
|
Line 1182 blk_part_imp(MACRO_PROT_ARGS) |
|
} |
} |
|
|
if (body == NULL) |
if (body == NULL) |
body = mdoc_body_alloc(mdoc, line, ppos, tok); |
body = roff_body_alloc(mdoc, line, ppos, tok); |
|
|
if (macro_or_word(mdoc, tok, line, la, pos, buf, 1)) |
if (macro_or_word(mdoc, tok, line, la, pos, buf, 1)) |
break; |
break; |
} |
} |
if (body == NULL) |
if (body == NULL) |
body = mdoc_body_alloc(mdoc, line, ppos, tok); |
body = roff_body_alloc(mdoc, line, ppos, tok); |
|
|
if (find_pending(mdoc, tok, line, ppos, body)) |
if (find_pending(mdoc, tok, line, ppos, body)) |
return; |
return; |
Line 1238 blk_part_exp(MACRO_PROT_ARGS) |
|
Line 1239 blk_part_exp(MACRO_PROT_ARGS) |
|
} |
} |
|
|
if (head == NULL) { |
if (head == NULL) { |
head = mdoc_head_alloc(mdoc, line, ppos, tok); |
head = roff_head_alloc(mdoc, line, ppos, tok); |
if (tok == MDOC_Eo) /* Not parsed. */ |
if (tok == MDOC_Eo) /* Not parsed. */ |
dword(mdoc, line, la, p, DELIM_MAX, 0); |
dword(mdoc, line, la, p, DELIM_MAX, 0); |
rew_last(mdoc, head); |
rew_last(mdoc, head); |
mdoc_body_alloc(mdoc, line, ppos, tok); |
roff_body_alloc(mdoc, line, ppos, tok); |
if (tok == MDOC_Eo) |
if (tok == MDOC_Eo) |
continue; |
continue; |
} |
} |
Line 1254 blk_part_exp(MACRO_PROT_ARGS) |
|
Line 1255 blk_part_exp(MACRO_PROT_ARGS) |
|
/* Clean-up to leave in a consistent state. */ |
/* Clean-up to leave in a consistent state. */ |
|
|
if (head == NULL) { |
if (head == NULL) { |
rew_last(mdoc, mdoc_head_alloc(mdoc, line, ppos, tok)); |
rew_last(mdoc, roff_head_alloc(mdoc, line, ppos, tok)); |
mdoc_body_alloc(mdoc, line, ppos, tok); |
roff_body_alloc(mdoc, line, ppos, tok); |
} |
} |
if (nl) |
if (nl) |
append_delims(mdoc, line, pos, buf); |
append_delims(mdoc, line, pos, buf); |
Line 1471 phrase_ta(MACRO_PROT_ARGS) |
|
Line 1472 phrase_ta(MACRO_PROT_ARGS) |
|
/* Advance to the next column. */ |
/* Advance to the next column. */ |
|
|
rew_last(mdoc, body); |
rew_last(mdoc, body); |
mdoc_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, MDOC_MAX, line, pos, buf); |
} |
} |