Lines Matching refs:ep

308 	struct eqn_node *ep;  in eqn_alloc()  local
310 ep = mandoc_calloc(1, sizeof(*ep)); in eqn_alloc()
311 ep->gsize = EQN_DEFSIZE; in eqn_alloc()
312 return ep; in eqn_alloc()
316 eqn_reset(struct eqn_node *ep) in eqn_reset() argument
318 free(ep->data); in eqn_reset()
319 ep->data = ep->start = ep->end = NULL; in eqn_reset()
320 ep->sz = ep->toksz = 0; in eqn_reset()
324 eqn_read(struct eqn_node *ep, const char *p) in eqn_read() argument
328 if (ep->data == NULL) { in eqn_read()
329 ep->sz = strlen(p); in eqn_read()
330 ep->data = mandoc_strdup(p); in eqn_read()
332 ep->sz = mandoc_asprintf(&cp, "%s %s", ep->data, p); in eqn_read()
333 free(ep->data); in eqn_read()
334 ep->data = cp; in eqn_read()
336 ep->sz += 1; in eqn_read()
343 eqn_def_find(struct eqn_node *ep) in eqn_def_find() argument
347 for (i = 0; i < (int)ep->defsz; i++) in eqn_def_find()
348 if (ep->defs[i].keysz && STRNEQ(ep->defs[i].key, in eqn_def_find()
349 ep->defs[i].keysz, ep->start, ep->toksz)) in eqn_def_find()
350 return &ep->defs[i]; in eqn_def_find()
376 eqn_next(struct eqn_node *ep, enum parse_mode mode) in eqn_next() argument
389 if (ep->end - ep->data >= last_len) in eqn_next()
392 ep->start = ep->end; in eqn_next()
395 switch (*ep->start) { in eqn_next()
397 ep->toksz = 0; in eqn_next()
408 ep->start++; in eqn_next()
414 ep->end = strchr(ep->start + 1, *ep->start); in eqn_next()
415 ep->start++; /* Skip opening quote. */ in eqn_next()
416 if (ep->end == NULL) { in eqn_next()
418 ep->node->line, ep->node->pos, NULL); in eqn_next()
419 ep->end = strchr(ep->start, '\0'); in eqn_next()
422 ep->end = ep->start + 1; in eqn_next()
423 if (*ep->start != '{' && *ep->start != '}') in eqn_next()
424 ep->end += strcspn(ep->end, " ^~\"{}\t"); in eqn_next()
426 ep->toksz = ep->end - ep->start; in eqn_next()
427 if (quoted && *ep->end != '\0') in eqn_next()
428 ep->end++; /* Skip closing quote. */ in eqn_next()
429 while (*ep->end != '\0' && strchr(" \t^~", *ep->end) != NULL) in eqn_next()
430 ep->end++; in eqn_next()
435 if ((def = eqn_def_find(ep)) == NULL) in eqn_next()
439 ep->node->line, ep->node->pos, NULL); in eqn_next()
444 if ((diff = def->valsz - ep->toksz) > 0) { in eqn_next()
445 start = ep->start - ep->data; in eqn_next()
446 ep->sz += diff; in eqn_next()
447 ep->data = mandoc_realloc(ep->data, ep->sz + 1); in eqn_next()
448 ep->start = ep->data + start; in eqn_next()
451 memmove(ep->start + def->valsz, ep->start + ep->toksz, in eqn_next()
452 strlen(ep->start + ep->toksz) + 1); in eqn_next()
453 memcpy(ep->start, def->val, def->valsz); in eqn_next()
454 last_len = ep->start - ep->data + def->valsz; in eqn_next()
459 ep->start = mandoc_strndup(ep->start, ep->toksz); in eqn_next()
463 if (STRNEQ(ep->start, ep->toksz, in eqn_next()
468 if (STRNEQ(ep->start, ep->toksz, in eqn_next()
470 mandoc_asprintf(&ep->start, in eqn_next()
475 ep->start = mandoc_strndup(ep->start, ep->toksz); in eqn_next()
477 if (STRNEQ(ep->start, ep->toksz, in eqn_next()
516 eqn_box_alloc(struct eqn_node *ep, struct eqn_box *parent) in eqn_box_alloc() argument
524 bp->size = ep->gsize; in eqn_box_alloc()
543 eqn_box_makebinary(struct eqn_node *ep, struct eqn_box *parent) in eqn_box_makebinary() argument
554 newb = eqn_box_alloc(ep, parent); in eqn_box_makebinary()
568 eqn_delim(struct eqn_node *ep) in eqn_delim() argument
570 if (ep->end[0] == '\0' || ep->end[1] == '\0') { in eqn_delim()
572 ep->node->line, ep->node->pos, "delim"); in eqn_delim()
573 if (ep->end[0] != '\0') in eqn_delim()
574 ep->end++; in eqn_delim()
575 } else if (strncmp(ep->end, "off", 3) == 0) { in eqn_delim()
576 ep->delim = 0; in eqn_delim()
577 ep->end += 3; in eqn_delim()
578 } else if (strncmp(ep->end, "on", 2) == 0) { in eqn_delim()
579 if (ep->odelim && ep->cdelim) in eqn_delim()
580 ep->delim = 1; in eqn_delim()
581 ep->end += 2; in eqn_delim()
583 ep->odelim = *ep->end++; in eqn_delim()
584 ep->cdelim = *ep->end++; in eqn_delim()
585 ep->delim = 1; in eqn_delim()
593 eqn_undef(struct eqn_node *ep) in eqn_undef() argument
597 if (eqn_next(ep, MODE_NOSUB) == EQN_TOK_EOF) { in eqn_undef()
599 ep->node->line, ep->node->pos, "undef"); in eqn_undef()
602 if ((def = eqn_def_find(ep)) == NULL) in eqn_undef()
611 eqn_def(struct eqn_node *ep) in eqn_def() argument
616 if (eqn_next(ep, MODE_NOSUB) == EQN_TOK_EOF) { in eqn_def()
618 ep->node->line, ep->node->pos, "define"); in eqn_def()
626 if ((def = eqn_def_find(ep)) == NULL) { in eqn_def()
628 for (i = 0; i < (int)ep->defsz; i++) in eqn_def()
629 if (0 == ep->defs[i].keysz) in eqn_def()
632 if (i == (int)ep->defsz) { in eqn_def()
633 ep->defsz++; in eqn_def()
634 ep->defs = mandoc_reallocarray(ep->defs, in eqn_def()
635 ep->defsz, sizeof(struct eqn_def)); in eqn_def()
636 ep->defs[i].key = ep->defs[i].val = NULL; in eqn_def()
639 def = ep->defs + i; in eqn_def()
641 def->key = mandoc_strndup(ep->start, ep->toksz); in eqn_def()
642 def->keysz = ep->toksz; in eqn_def()
645 if (eqn_next(ep, MODE_QUOTED) == EQN_TOK_EOF) { in eqn_def()
647 ep->node->line, ep->node->pos, "define %s", def->key); in eqn_def()
655 def->val = mandoc_strndup(ep->start, ep->toksz); in eqn_def()
656 def->valsz = ep->toksz; in eqn_def()
660 eqn_parse(struct eqn_node *ep) in eqn_parse() argument
669 parent = ep->node->eqn; in eqn_parse()
677 if (ep->data == NULL) in eqn_parse()
680 ep->start = ep->end = ep->data; in eqn_parse()
683 tok = eqn_next(ep, MODE_TOK); in eqn_parse()
686 eqn_undef(ep); in eqn_parse()
690 eqn_def(ep); in eqn_parse()
693 if (eqn_next(ep, MODE_NOSUB) == EQN_TOK_EOF || in eqn_parse()
694 eqn_next(ep, MODE_QUOTED) == EQN_TOK_EOF) in eqn_parse()
696 ep->node->line, ep->node->pos, "tdefine"); in eqn_parse()
699 eqn_delim(ep); in eqn_parse()
702 if (eqn_next(ep, MODE_SUB) == EQN_TOK_EOF) in eqn_parse()
703 mandoc_msg(MANDOCERR_REQ_EMPTY, ep->node->line, in eqn_parse()
704 ep->node->pos, "%s", eqn_toks[tok]); in eqn_parse()
719 mandoc_msg(MANDOCERR_EQN_NOBOX, ep->node->line, in eqn_parse()
720 ep->node->pos, "%s", eqn_toks[tok]); in eqn_parse()
721 cur = eqn_box_alloc(ep, parent); in eqn_parse()
725 parent = eqn_box_makebinary(ep, parent); in eqn_parse()
763 if (eqn_next(ep, MODE_SUB) == EQN_TOK_EOF) in eqn_parse()
764 mandoc_msg(MANDOCERR_REQ_EMPTY, ep->node->line, in eqn_parse()
765 ep->node->pos, "%s", eqn_toks[tok]); in eqn_parse()
778 parent = eqn_box_alloc(ep, parent); in eqn_parse()
801 if (eqn_next(ep, MODE_SUB) == EQN_TOK_EOF) { in eqn_parse()
802 mandoc_msg(MANDOCERR_REQ_EMPTY, ep->node->line, in eqn_parse()
803 ep->node->pos, "%s", eqn_toks[tok]); in eqn_parse()
806 size = mandoc_strntoi(ep->start, ep->toksz, 10); in eqn_parse()
808 mandoc_msg(MANDOCERR_IT_NONUM, ep->node->line, in eqn_parse()
809 ep->node->pos, "%s", eqn_toks[tok]); in eqn_parse()
813 ep->gsize = size; in eqn_parse()
818 parent = eqn_box_alloc(ep, parent); in eqn_parse()
833 mandoc_msg(MANDOCERR_EQN_NOBOX, ep->node->line, in eqn_parse()
834 ep->node->pos, "%s", eqn_toks[tok]); in eqn_parse()
835 cur = eqn_box_alloc(ep, parent); in eqn_parse()
862 parent = eqn_box_makebinary(ep, parent); in eqn_parse()
888 parent = eqn_box_alloc(ep, parent); in eqn_parse()
900 mandoc_msg(MANDOCERR_EQN_NOBOX, ep->node->line, in eqn_parse()
901 ep->node->pos, "%s", eqn_toks[tok]); in eqn_parse()
902 cur = eqn_box_alloc(ep, parent); in eqn_parse()
910 parent = eqn_box_makebinary(ep, parent); in eqn_parse()
927 mandoc_msg(MANDOCERR_BLK_NOTOPEN, ep->node->line, in eqn_parse()
928 ep->node->pos, "%s", eqn_toks[tok]); in eqn_parse()
933 if (eqn_next(ep, MODE_SUB) == EQN_TOK_EOF) { in eqn_parse()
935 ep->node->line, ep->node->pos, in eqn_parse()
940 if (STRNEQ(ep->start, ep->toksz, "ceiling", 7)) in eqn_parse()
942 else if (STRNEQ(ep->start, ep->toksz, "floor", 5)) in eqn_parse()
946 mandoc_strndup(ep->start, ep->toksz); in eqn_parse()
969 eqn_next(ep, MODE_SUB) == EQN_TOK_EOF) { in eqn_parse()
970 mandoc_msg(MANDOCERR_REQ_EMPTY, ep->node->line, in eqn_parse()
971 ep->node->pos, "%s", eqn_toks[tok]); in eqn_parse()
974 parent = eqn_box_alloc(ep, parent); in eqn_parse()
977 if (STRNEQ(ep->start, ep->toksz, "ceiling", 7)) in eqn_parse()
979 else if (STRNEQ(ep->start, ep->toksz, "floor", 5)) in eqn_parse()
983 mandoc_strndup(ep->start, ep->toksz); in eqn_parse()
995 parent = eqn_box_alloc(ep, parent); in eqn_parse()
1004 mandoc_msg(MANDOCERR_IT_STRAY, ep->node->line, in eqn_parse()
1005 ep->node->pos, "%s", eqn_toks[tok]); in eqn_parse()
1008 parent = eqn_box_alloc(ep, cur); in eqn_parse()
1014 parent = eqn_box_alloc(ep, parent); in eqn_parse()
1024 p = ep->start; in eqn_parse()
1032 cur = eqn_box_alloc(ep, parent); in eqn_parse()
1082 split = eqn_box_alloc(ep, parent); in eqn_parse()
1091 nbox = eqn_box_alloc(ep, parent); in eqn_parse()