Lines Matching defs:mdoc
34 #include "mdoc.h"
223 mdoc_endparse(struct roff_man *mdoc)
229 n = mdoc->last->flags & NODE_VALID ?
230 mdoc->last->parent : mdoc->last;
240 rew_last(mdoc, mdoc->meta.first);
248 lookup(struct roff_man *mdoc, int from, int line, int ppos, const char *p)
252 if (mdoc->flags & MDOC_PHRASEQF) {
253 mdoc->flags &= ~MDOC_PHRASEQF;
257 res = roffhash_find(mdoc->mdocmac, p, 0);
271 rew_last(struct roff_man *mdoc, const struct roff_node *to)
277 while (mdoc->last != to) {
278 mdoc_state(mdoc, mdoc->last);
279 mdoc->last->flags |= NODE_VALID | NODE_ENDED;
280 mdoc->last = mdoc->last->parent;
282 mdoc_state(mdoc, mdoc->last);
283 mdoc->last->flags |= NODE_VALID | NODE_ENDED;
284 mdoc->next = ROFF_NEXT_SIBLING;
291 rew_pending(struct roff_man *mdoc, const struct roff_node *n)
295 rew_last(mdoc, n);
297 if (mdoc->last == n) {
300 roff_body_alloc(mdoc, n->line, n->pos,
303 mdoc->flags &= ~ROFF_NONOFILL;
313 n = mdoc->last;
376 rew_elem(struct roff_man *mdoc, enum roff_tok tok)
380 n = mdoc->last;
385 rew_last(mdoc, n);
408 find_pending(struct roff_man *mdoc, enum roff_tok tok, int line, int ppos,
418 for (n = mdoc->last; n != NULL && n != target; n = n->parent) {
424 break_intermediate(mdoc->last, target);
431 mdoc_endbody_alloc(mdoc, line, ppos,
444 dword(struct roff_man *mdoc, int line, int col, const char *p,
452 ! (mdoc->flags & (MDOC_SYNOPSIS | MDOC_KEEP | MDOC_SMOFF)) &&
453 d == DELIM_NONE && mdoc->last->type == ROFFT_TEXT &&
454 mdoc_isdelim(mdoc->last->string) == DELIM_NONE) {
455 roff_word_append(mdoc, p);
459 roff_word_alloc(mdoc, line, col, p);
469 mdoc->last->flags |= NODE_DELIMO;
471 ! (mdoc->flags & MDOC_NODELIMC) &&
472 mdoc->last->parent->tok != MDOC_Fd)
473 mdoc->last->flags |= NODE_DELIMC;
474 mdoc->flags &= ~MDOC_NODELIMC;
478 append_delims(struct roff_man *mdoc, int line, int *pos, char *buf)
489 ac = mdoc_args(mdoc, line, pos, buf, TOKEN_NONE, &p);
492 dword(mdoc, line, la, p, DELIM_MAX, 1);
507 mdoc->last->flags |= NODE_EOS;
524 mdoc->flags & MDOC_PHRASELIT ? TOKEN_NONE :
525 lookup(mdoc, tok, line, ppos, p);
528 dword(mdoc, line, ppos, p, DELIM_MAX, tok == TOKEN_NONE ||
534 rew_elem(mdoc, tok);
535 (*mdoc_macro(ntok)->fp)(mdoc, ntok, line, ppos, pos, buf);
537 append_delims(mdoc, line, pos, buf);
560 nl = MDOC_NEWLINE & mdoc->flags;
567 mdoc->flags &= ~MDOC_KEEP;
578 for (n = mdoc->last; n; n = n->parent) {
592 for (n = mdoc->last; n; n = n->parent) {
644 endbody = mdoc_endbody_alloc(mdoc, line, ppos,
657 mdoc->next = ROFF_NEXT_CHILD;
670 rew_last(mdoc, n);
676 break_intermediate(mdoc->last, body);
690 roff_elem_alloc(mdoc, line, ppos, ROFF_br);
691 rew_elem(mdoc, ROFF_br);
694 rew_last(mdoc, body);
696 mdoc_tail_alloc(mdoc, line, ppos, atok);
704 rew_pending(mdoc, n);
714 mdoc->flags |= ROFF_NOFILL;
716 mdoc->flags &= ~ROFF_NOFILL;
729 rew_last(mdoc, n);
731 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
735 ntok = lookup(mdoc, tok, line, lastarg, p);
738 dword(mdoc, line, lastarg, p, DELIM_MAX,
748 rew_last(mdoc, n);
749 mdoc->flags &= ~MDOC_NEWLINE;
750 (*mdoc_macro(ntok)->fp)(mdoc, ntok, line, lastarg, pos, buf);
761 pending = find_pending(mdoc, ntok, line, ppos, target);
764 rew_pending(mdoc, n);
767 append_delims(mdoc, line, pos, buf);
780 nl = MDOC_NEWLINE & mdoc->flags;
801 mdoc_argv(mdoc, line, tok, &arg, pos, buf);
808 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
817 mdoc->last->flags &= ~NODE_DELIMO;
831 mdoc->flags |= MDOC_NODELIMC;
836 TOKEN_NONE : lookup(mdoc, tok, line, la, p);
847 rew_elem(mdoc, tok);
849 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
850 rew_last(mdoc, mdoc->last);
856 (*mdoc_macro(ntok)->fp)(mdoc, ntok,
859 append_delims(mdoc, line, pos, buf);
880 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
891 rew_elem(mdoc, tok);
897 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
902 dword(mdoc, line, la, p, d,
914 mdoc->last->flags &= ~NODE_DELIMC;
923 rew_elem(mdoc, tok);
929 rew_elem(mdoc, tok);
941 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
942 rew_last(mdoc, mdoc->last);
950 append_delims(mdoc, line, pos, buf);
952 rew_elem(mdoc, tok);
968 nl = MDOC_NEWLINE & mdoc->flags;
981 for (n = mdoc->last; n != NULL; n = n->parent) {
995 rew_pending(mdoc, blk);
1008 rew_pending(mdoc, n);
1009 n = mdoc->last;
1033 rew_pending(mdoc, blk);
1039 rew_pending(mdoc, n);
1047 roff_elem_alloc(mdoc, line, ppos, ROFF_br);
1048 rew_elem(mdoc, ROFF_br);
1064 mdoc->flags &= ~ROFF_NOFILL;
1067 mdoc->flags |= ROFF_NONOFILL;
1072 mdoc_argv(mdoc, line, tok, &arg, pos, buf);
1073 blk = mdoc_block_alloc(mdoc, line, ppos, tok, arg);
1082 mdoc->last->parent->tok != MDOC_Bl ||
1083 mdoc->last->parent->norm->Bl.type != LIST_diag;
1091 head = roff_head_alloc(mdoc, line, ppos, tok);
1092 rew_last(mdoc, head);
1093 body = roff_body_alloc(mdoc, line, ppos, tok);
1097 mdoc->flags |= MDOC_KEEP;
1107 if (mdoc->flags & MDOC_PHRASEQN) {
1108 mdoc->flags &= ~MDOC_PHRASEQN;
1109 mdoc->flags |= MDOC_PHRASEQF;
1114 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
1117 ! (mdoc->flags & MDOC_PHRASEQF))
1126 rew_last(mdoc, body);
1127 body = roff_body_alloc(mdoc, line, ppos, tok);
1128 roff_word_alloc(mdoc, line, ppos, "\\&");
1157 dword(mdoc, line, la, p, DELIM_OPEN, 0);
1166 head = roff_head_alloc(mdoc, line, ppos, tok);
1175 rew_last(mdoc, body == NULL ? head : body);
1176 body = roff_body_alloc(mdoc, line, ppos, tok);
1180 mdoc->flags |= MDOC_PHRASE;
1181 parse_rest(mdoc, TOKEN_NONE, line, &la, buf);
1182 mdoc->flags &= ~MDOC_PHRASE;
1191 done = macro_or_word(mdoc, tok, line, la, pos, buf, p, parsed);
1201 head = roff_head_alloc(mdoc, line, ppos, tok);
1203 append_delims(mdoc, line, pos, buf);
1206 if (find_pending(mdoc, tok, line, ppos, head))
1211 rew_last(mdoc, head);
1212 body = roff_body_alloc(mdoc, line, ppos, tok);
1214 mdoc->flags &= ~ROFF_NONOFILL;
1227 mdoc->flags |= ROFF_NOFILL;
1232 mdoc->flags &= ~ROFF_NOFILL;
1241 if (mdoc->flags & MDOC_FREECOL) {
1242 rew_last(mdoc, body);
1243 rew_last(mdoc, blk);
1244 mdoc->flags &= ~MDOC_FREECOL;
1258 nl = MDOC_NEWLINE & mdoc->flags;
1269 blk = mdoc_block_alloc(mdoc, line, ppos, tok, NULL);
1270 rew_last(mdoc, roff_head_alloc(mdoc, line, ppos, tok));
1280 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
1285 dword(mdoc, line, la, p, DELIM_OPEN, 0);
1292 body = roff_body_alloc(mdoc, line, ppos, tok);
1294 done = macro_or_word(mdoc, tok, line, la, pos, buf, p, 1);
1301 body = roff_body_alloc(mdoc, line, ppos, tok);
1303 if (find_pending(mdoc, tok, line, ppos, body))
1306 rew_last(mdoc, body);
1308 append_delims(mdoc, line, pos, buf);
1309 rew_pending(mdoc, blk);
1316 roff_node_relink(mdoc, n);
1327 nl = MDOC_NEWLINE & mdoc->flags;
1335 roff_block_alloc(mdoc, line, ppos, tok);
1339 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
1346 dword(mdoc, line, la, p, DELIM_OPEN, 0);
1353 head = roff_head_alloc(mdoc, line, ppos, tok);
1355 dword(mdoc, line, la, p, DELIM_MAX, 0);
1356 rew_last(mdoc, head);
1357 roff_body_alloc(mdoc, line, ppos, tok);
1365 done = macro_or_word(mdoc, tok, line, la, pos, buf, p, 1);
1375 rew_last(mdoc, roff_head_alloc(mdoc, line, ppos, tok));
1376 roff_body_alloc(mdoc, line, ppos, tok);
1379 append_delims(mdoc, line, pos, buf);
1392 nl = mdoc->flags & MDOC_NEWLINE;
1418 mdoc_argv(mdoc, line, tok, &arg, pos, buf);
1424 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
1429 dword(mdoc, line, la, p, DELIM_OPEN, 0);
1437 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
1450 rew_elem(mdoc, tok);
1455 TOKEN_NONE : lookup(mdoc, tok, line, la, p);
1459 rew_elem(mdoc, tok);
1462 (*mdoc_macro(ntok)->fp)(mdoc, ntok,
1472 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
1477 rew_elem(mdoc, tok);
1481 dword(mdoc, line, la, p, DELIM_MAX,
1485 p = mdoc->last->string;
1495 append_delims(mdoc, line, pos, buf);
1497 rew_elem(mdoc, tok);
1499 append_delims(mdoc, line, pos, buf);
1509 ! (mdoc->flags & MDOC_SYNOPSIS)) {
1510 n = mdoc->last;
1511 if (mdoc->next == ROFF_NEXT_SIBLING)
1514 rew_last(mdoc, n->parent);
1529 mdoc_argv(mdoc, line, tok, &arg, pos, buf);
1530 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
1531 if (parse_rest(mdoc, tok, line, pos, buf))
1533 rew_elem(mdoc, tok);
1542 parse_rest(struct roff_man *mdoc, enum roff_tok tok,
1551 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
1554 done = macro_or_word(mdoc, tok, line, la, pos, buf, p, 1);
1566 if (~mdoc->flags & (MDOC_SYNOPSIS | MDOC_NEWLINE))
1567 in_line(mdoc, tok, line, ppos, pos, buf);
1569 blk_full(mdoc, tok, line, ppos, pos, buf);
1572 blk_part_imp(mdoc, tok, line, ppos, pos, buf);
1589 for (n = mdoc->last; n != NULL; n = n->parent) {
1605 rew_last(mdoc, body);
1606 roff_body_alloc(mdoc, line, ppos, MDOC_It);
1607 parse_rest(mdoc, TOKEN_NONE, line, pos, buf);