Lines Matching defs:mdoc

31 #include "mdoc.h"
213 mdoc_endparse(struct roff_man *mdoc)
219 n = mdoc->last->flags & MDOC_VALID ?
220 mdoc->last->parent : mdoc->last;
225 mandoc_msg(MANDOCERR_BLK_NOEND, mdoc->parse,
230 rew_last(mdoc, mdoc->first);
231 mdoc_state_reset(mdoc);
239 lookup(struct roff_man *mdoc, int from, int line, int ppos, const char *p)
243 if (mdoc->flags & MDOC_PHRASEQF) {
244 mdoc->flags &= ~MDOC_PHRASEQF;
254 mdoc->parse, line, ppos, p);
264 rew_last(struct roff_man *mdoc, const struct roff_node *to)
270 while (mdoc->last != to) {
271 mdoc_state(mdoc, mdoc->last);
272 mdoc->last->flags |= MDOC_VALID | MDOC_ENDED;
273 mdoc->last = mdoc->last->parent;
275 mdoc_state(mdoc, mdoc->last);
276 mdoc->last->flags |= MDOC_VALID | MDOC_ENDED;
277 mdoc->next = ROFF_NEXT_SIBLING;
284 rew_pending(struct roff_man *mdoc, const struct roff_node *n)
288 rew_last(mdoc, n);
290 if (mdoc->last == n) {
293 roff_body_alloc(mdoc, n->line, n->pos,
304 n = mdoc->last;
367 rew_elem(struct roff_man *mdoc, int tok)
371 n = mdoc->last;
376 rew_last(mdoc, n);
385 find_pending(struct roff_man *mdoc, int tok, int line, int ppos,
392 for (n = mdoc->last; n != NULL && n != target; n = n->parent) {
406 mdoc->parse, line, ppos,
409 mdoc_endbody_alloc(mdoc, line, ppos,
422 dword(struct roff_man *mdoc, int line, int col, const char *p,
430 ! (mdoc->flags & (MDOC_SYNOPSIS | MDOC_KEEP | MDOC_SMOFF)) &&
431 d == DELIM_NONE && mdoc->last->type == ROFFT_TEXT &&
432 mdoc_isdelim(mdoc->last->string) == DELIM_NONE) {
433 roff_word_append(mdoc, p);
437 roff_word_alloc(mdoc, line, col, p);
447 mdoc->last->flags |= MDOC_DELIMO;
449 ! (mdoc->flags & MDOC_NODELIMC) &&
450 mdoc->last->parent->tok != MDOC_Fd)
451 mdoc->last->flags |= MDOC_DELIMC;
452 mdoc->flags &= ~MDOC_NODELIMC;
456 append_delims(struct roff_man *mdoc, int line, int *pos, char *buf)
466 if (mdoc_args(mdoc, line, pos, buf, TOKEN_NONE, &p) ==
469 dword(mdoc, line, la, p, DELIM_MAX, 1);
484 mdoc->last->flags |= MDOC_EOS;
503 else if (parsed && ! (mdoc->flags & MDOC_PHRASELIT))
504 ntok = lookup(mdoc, tok, line, ppos, p);
507 dword(mdoc, line, ppos, p, DELIM_MAX, tok == TOKEN_NONE ||
512 rew_elem(mdoc, tok);
513 mdoc_macro(mdoc, ntok, line, ppos, pos, buf);
515 append_delims(mdoc, line, pos, buf);
538 nl = MDOC_NEWLINE & mdoc->flags;
545 mdoc->flags &= ~MDOC_KEEP;
559 for (n = mdoc->last; n; n = n->parent) {
603 mandoc_vmsg(MANDOCERR_BLK_NEST, mdoc->parse,
608 endbody = mdoc_endbody_alloc(mdoc, line, ppos,
621 mdoc->next = ROFF_NEXT_CHILD;
628 rew_last(mdoc, n);
640 mandoc_msg(MANDOCERR_BLK_NOTOPEN, mdoc->parse,
649 roff_elem_alloc(mdoc, line, ppos, MDOC_br);
650 rew_elem(mdoc, MDOC_br);
653 rew_last(mdoc, body);
655 mdoc_tail_alloc(mdoc, line, ppos, atok);
661 mdoc->parse, line, ppos,
665 rew_pending(mdoc, n);
677 rew_last(mdoc, n);
679 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
684 lookup(mdoc, tok, line, lastarg, p);
687 dword(mdoc, line, lastarg, p, DELIM_MAX,
693 rew_last(mdoc, n);
694 mdoc->flags &= ~MDOC_NEWLINE;
695 mdoc_macro(mdoc, ntok, line, lastarg, pos, buf);
705 pending = find_pending(mdoc, ntok, line, ppos,
710 rew_pending(mdoc, n);
713 append_delims(mdoc, line, pos, buf);
726 nl = MDOC_NEWLINE & mdoc->flags;
747 mdoc_argv(mdoc, line, tok, &arg, pos, buf);
754 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
763 mdoc->last->flags &= ~MDOC_DELIMO;
777 mdoc->flags |= MDOC_NODELIMC;
782 TOKEN_NONE : lookup(mdoc, tok, line, la, p);
793 rew_elem(mdoc, tok);
795 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
796 rew_last(mdoc, mdoc->last);
800 mdoc->parse, line, ppos,
803 mdoc_macro(mdoc, ntok, line, la, pos, buf);
805 append_delims(mdoc, line, pos, buf);
827 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
838 rew_elem(mdoc, tok);
843 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
848 dword(mdoc, line, la, p, d,
857 mdoc->last->flags &= ~MDOC_DELIMC;
866 rew_elem(mdoc, tok);
872 rew_elem(mdoc, tok);
882 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
883 rew_last(mdoc, mdoc->last);
886 mandoc_msg(MANDOCERR_MACRO_EMPTY, mdoc->parse,
891 append_delims(mdoc, line, pos, buf);
906 nl = MDOC_NEWLINE & mdoc->flags;
909 mandoc_msg(MANDOCERR_MACRO_EMPTY, mdoc->parse,
919 for (n = mdoc->last; n != NULL; n = n->parent) {
931 mdoc->parse, line, ppos,
934 rew_pending(mdoc, blk);
944 mdoc->parse, line, ppos,
948 rew_pending(mdoc, n);
949 n = mdoc->last;
972 mdoc->parse, line, ppos,
975 rew_pending(mdoc, blk);
981 rew_last(mdoc, n);
987 mandoc_vmsg(MANDOCERR_IT_STRAY, mdoc->parse,
989 roff_elem_alloc(mdoc, line, ppos, MDOC_br);
990 rew_elem(mdoc, MDOC_br);
1004 mdoc_argv(mdoc, line, tok, &arg, pos, buf);
1005 blk = mdoc_block_alloc(mdoc, line, ppos, tok, arg);
1014 mdoc->last->parent->tok != MDOC_Bl ||
1015 mdoc->last->parent->norm->Bl.type != LIST_diag;
1023 head = roff_head_alloc(mdoc, line, ppos, tok);
1024 rew_last(mdoc, head);
1025 body = roff_body_alloc(mdoc, line, ppos, tok);
1029 mdoc->flags |= MDOC_KEEP;
1039 if (mdoc->flags & MDOC_PHRASEQN) {
1040 mdoc->flags &= ~MDOC_PHRASEQN;
1041 mdoc->flags |= MDOC_PHRASEQF;
1046 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
1049 ! (mdoc->flags & MDOC_PHRASEQF))
1058 rew_last(mdoc, body);
1059 body = roff_body_alloc(mdoc, line, ppos, tok);
1060 roff_word_alloc(mdoc, line, ppos, "\\&");
1066 mdoc->parse, line, la, "%s ... %s",
1071 mandoc_vmsg(MANDOCERR_ARG_SKIP, mdoc->parse,
1087 dword(mdoc, line, la, p, DELIM_OPEN, 0);
1094 head = roff_head_alloc(mdoc, line, ppos, tok);
1103 rew_last(mdoc, body == NULL ? head : body);
1104 body = roff_body_alloc(mdoc, line, ppos, tok);
1108 mdoc->flags |= MDOC_PHRASE;
1109 parse_rest(mdoc, TOKEN_NONE, line, &la, buf);
1110 mdoc->flags &= ~MDOC_PHRASE;
1119 if (macro_or_word(mdoc, tok, line, la, pos, buf, parsed))
1126 head = roff_head_alloc(mdoc, line, ppos, tok);
1128 append_delims(mdoc, line, pos, buf);
1131 if (find_pending(mdoc, tok, line, ppos, head))
1136 rew_last(mdoc, head);
1137 body = roff_body_alloc(mdoc, line, ppos, tok);
1139 if (mdoc->flags & MDOC_FREECOL) {
1140 rew_last(mdoc, body);
1141 rew_last(mdoc, blk);
1142 mdoc->flags &= ~MDOC_FREECOL;
1156 nl = MDOC_NEWLINE & mdoc->flags;
1167 blk = mdoc_block_alloc(mdoc, line, ppos, tok, NULL);
1168 rew_last(mdoc, roff_head_alloc(mdoc, line, ppos, tok));
1178 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
1184 dword(mdoc, line, la, p, DELIM_OPEN, 0);
1189 body = roff_body_alloc(mdoc, line, ppos, tok);
1191 if (macro_or_word(mdoc, tok, line, la, pos, buf, 1))
1195 body = roff_body_alloc(mdoc, line, ppos, tok);
1197 if (find_pending(mdoc, tok, line, ppos, body))
1200 rew_last(mdoc, body);
1202 append_delims(mdoc, line, pos, buf);
1203 rew_pending(mdoc, blk);
1210 mdoc_node_relink(mdoc, n);
1221 nl = MDOC_NEWLINE & mdoc->flags;
1229 roff_block_alloc(mdoc, line, ppos, tok);
1233 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
1241 dword(mdoc, line, la, p, DELIM_OPEN, 0);
1246 head = roff_head_alloc(mdoc, line, ppos, tok);
1248 dword(mdoc, line, la, p, DELIM_MAX, 0);
1249 rew_last(mdoc, head);
1250 roff_body_alloc(mdoc, line, ppos, tok);
1255 if (macro_or_word(mdoc, tok, line, la, pos, buf, 1))
1262 rew_last(mdoc, roff_head_alloc(mdoc, line, ppos, tok));
1263 roff_body_alloc(mdoc, line, ppos, tok);
1266 append_delims(mdoc, line, pos, buf);
1279 nl = mdoc->flags & MDOC_NEWLINE;
1305 mdoc_argv(mdoc, line, tok, &arg, pos, buf);
1311 ac = mdoc_args(mdoc, line, pos, buf, tok, &p);
1316 dword(mdoc, line, la, p, DELIM_OPEN, 0);
1322 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
1329 mdoc->parse, line, ppos, "Pf %s",
1335 rew_elem(mdoc, tok);
1340 TOKEN_NONE : lookup(mdoc, tok, line, la, p);
1344 rew_elem(mdoc, tok);
1347 mdoc_macro(mdoc, ntok, line, la, pos, buf);
1355 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
1360 rew_elem(mdoc, tok);
1364 dword(mdoc, line, la, p, DELIM_MAX,
1369 mandoc_msg(MANDOCERR_MACRO_EMPTY, mdoc->parse,
1375 append_delims(mdoc, line, pos, buf);
1377 rew_elem(mdoc, tok);
1379 append_delims(mdoc, line, pos, buf);
1389 ! (mdoc->flags & MDOC_SYNOPSIS)) {
1390 n = mdoc->last;
1391 if (mdoc->next == ROFF_NEXT_SIBLING)
1394 rew_last(mdoc, n->parent);
1399 mandoc_msg(MANDOCERR_MACRO_EMPTY, mdoc->parse,
1404 mdoc_argv(mdoc, line, tok, &arg, pos, buf);
1405 mdoc_elem_alloc(mdoc, line, ppos, tok, arg);
1406 if (parse_rest(mdoc, tok, line, pos, buf))
1408 rew_elem(mdoc, tok);
1417 parse_rest(struct roff_man *mdoc, int tok, int line, int *pos, char *buf)
1423 if (mdoc_args(mdoc, line, pos, buf, tok, NULL) == ARGS_EOLN)
1425 if (macro_or_word(mdoc, tok, line, la, pos, buf, 1))
1434 if (~mdoc->flags & (MDOC_SYNOPSIS | MDOC_NEWLINE))
1435 in_line(mdoc, tok, line, ppos, pos, buf);
1437 blk_full(mdoc, tok, line, ppos, pos, buf);
1440 blk_part_imp(mdoc, tok, line, ppos, pos, buf);
1457 for (n = mdoc->last; n != NULL; n = n->parent) {
1467 mandoc_msg(MANDOCERR_TA_STRAY, mdoc->parse,
1474 rew_last(mdoc, body);
1475 roff_body_alloc(mdoc, line, ppos, MDOC_It);
1476 parse_rest(mdoc, TOKEN_NONE, line, pos, buf);