aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mdoc.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2015-04-02 21:36:49 +0000
committerIngo Schwarze <schwarze@openbsd.org>2015-04-02 21:36:49 +0000
commit483afc5a7a52b601da9e854d5645cd4b0a140184 (patch)
tree159f32df48c5d133f76368d6fb95ad45656bccc4 /mdoc.c
parent0fa412f32faf6969057d9e796beabcbf0413f279 (diff)
downloadmandoc-483afc5a7a52b601da9e854d5645cd4b0a140184.tar.gz
mandoc-483afc5a7a52b601da9e854d5645cd4b0a140184.tar.zst
mandoc-483afc5a7a52b601da9e854d5645cd4b0a140184.zip
First step towards parser unification:
Replace enum mdoc_type and enum man_type by a unified enum roff_type. Almost mechanical, no functional change. Written on the ICE train from Frankfurt to Bruxelles on the way to p2k15.
Diffstat (limited to 'mdoc.c')
-rw-r--r--mdoc.c75
1 files changed, 38 insertions, 37 deletions
diff --git a/mdoc.c b/mdoc.c
index 027ecbeb..6bf8dc3f 100644
--- a/mdoc.c
+++ b/mdoc.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc.c,v 1.238 2015/02/12 13:00:52 schwarze Exp $ */
+/* $Id: mdoc.c,v 1.239 2015/04/02 21:36:50 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010, 2012-2015 Ingo Schwarze <schwarze@openbsd.org>
@@ -27,11 +27,12 @@
#include <string.h>
#include <time.h>
-#include "mdoc.h"
-#include "mandoc.h"
#include "mandoc_aux.h"
-#include "libmdoc.h"
+#include "mandoc.h"
+#include "roff.h"
+#include "mdoc.h"
#include "libmandoc.h"
+#include "libmdoc.h"
const char *const __mdoc_macronames[MDOC_MAX + 1] = {
"Ap", "Dd", "Dt", "Os",
@@ -88,7 +89,7 @@ static void mdoc_node_unlink(struct mdoc *,
static void mdoc_free1(struct mdoc *);
static void mdoc_alloc1(struct mdoc *);
static struct mdoc_node *node_alloc(struct mdoc *, int, int,
- enum mdoct, enum mdoc_type);
+ enum mdoct, enum roff_type);
static void node_append(struct mdoc *, struct mdoc_node *);
static int mdoc_ptext(struct mdoc *, int, char *, int);
static int mdoc_pmacro(struct mdoc *, int, char *, int);
@@ -138,7 +139,7 @@ mdoc_alloc1(struct mdoc *mdoc)
mdoc->lastnamed = mdoc->lastsec = SEC_NONE;
mdoc->last = mandoc_calloc(1, sizeof(struct mdoc_node));
mdoc->first = mdoc->last;
- mdoc->last->type = MDOC_ROOT;
+ mdoc->last->type = ROFFT_ROOT;
mdoc->last->tok = MDOC_MAX;
mdoc->next = MDOC_NEXT_CHILD;
}
@@ -202,7 +203,7 @@ mdoc_addeqn(struct mdoc *mdoc, const struct eqn *ep)
{
struct mdoc_node *n;
- n = node_alloc(mdoc, ep->ln, ep->pos, MDOC_MAX, MDOC_EQN);
+ n = node_alloc(mdoc, ep->ln, ep->pos, MDOC_MAX, ROFFT_EQN);
n->eqn = ep;
if (ep->ln > mdoc->last->line)
n->flags |= MDOC_LINE;
@@ -215,7 +216,7 @@ mdoc_addspan(struct mdoc *mdoc, const struct tbl_span *sp)
{
struct mdoc_node *n;
- n = node_alloc(mdoc, sp->line, 0, MDOC_MAX, MDOC_TBL);
+ n = node_alloc(mdoc, sp->line, 0, MDOC_MAX, ROFFT_TBL);
n->span = sp;
node_append(mdoc, n);
mdoc->next = MDOC_NEXT_SIBLING;
@@ -229,7 +230,7 @@ int
mdoc_parseln(struct mdoc *mdoc, int ln, char *buf, int offs)
{
- if (mdoc->last->type != MDOC_EQN || ln > mdoc->last->line)
+ if (mdoc->last->type != ROFFT_EQN || ln > mdoc->last->line)
mdoc->flags |= MDOC_NEWLINE;
/*
@@ -281,7 +282,7 @@ node_append(struct mdoc *mdoc, struct mdoc_node *p)
assert(mdoc->last);
assert(mdoc->first);
- assert(MDOC_ROOT != p->type);
+ assert(p->type != ROFFT_ROOT);
switch (mdoc->next) {
case MDOC_NEXT_SIBLING:
@@ -306,13 +307,13 @@ node_append(struct mdoc *mdoc, struct mdoc_node *p)
*/
switch (p->type) {
- case MDOC_BODY:
+ case ROFFT_BODY:
if (ENDBODY_NOT != p->end)
break;
/* FALLTHROUGH */
- case MDOC_TAIL:
+ case ROFFT_TAIL:
/* FALLTHROUGH */
- case MDOC_HEAD:
+ case ROFFT_HEAD:
p->norm = p->parent->norm;
break;
default:
@@ -322,18 +323,18 @@ node_append(struct mdoc *mdoc, struct mdoc_node *p)
mdoc_valid_pre(mdoc, p);
switch (p->type) {
- case MDOC_HEAD:
- assert(MDOC_BLOCK == p->parent->type);
+ case ROFFT_HEAD:
+ assert(p->parent->type == ROFFT_BLOCK);
p->parent->head = p;
break;
- case MDOC_TAIL:
- assert(MDOC_BLOCK == p->parent->type);
+ case ROFFT_TAIL:
+ assert(p->parent->type == ROFFT_BLOCK);
p->parent->tail = p;
break;
- case MDOC_BODY:
+ case ROFFT_BODY:
if (p->end)
break;
- assert(MDOC_BLOCK == p->parent->type);
+ assert(p->parent->type == ROFFT_BLOCK);
p->parent->body = p;
break;
default:
@@ -343,9 +344,9 @@ node_append(struct mdoc *mdoc, struct mdoc_node *p)
mdoc->last = p;
switch (p->type) {
- case MDOC_TBL:
+ case ROFFT_TBL:
/* FALLTHROUGH */
- case MDOC_TEXT:
+ case ROFFT_TEXT:
mdoc_valid_post(mdoc);
break;
default:
@@ -355,7 +356,7 @@ node_append(struct mdoc *mdoc, struct mdoc_node *p)
static struct mdoc_node *
node_alloc(struct mdoc *mdoc, int line, int pos,
- enum mdoct tok, enum mdoc_type type)
+ enum mdoct tok, enum roff_type type)
{
struct mdoc_node *p;
@@ -384,7 +385,7 @@ mdoc_tail_alloc(struct mdoc *mdoc, int line, int pos, enum mdoct tok)
{
struct mdoc_node *p;
- p = node_alloc(mdoc, line, pos, tok, MDOC_TAIL);
+ p = node_alloc(mdoc, line, pos, tok, ROFFT_TAIL);
node_append(mdoc, p);
mdoc->next = MDOC_NEXT_CHILD;
}
@@ -396,7 +397,7 @@ mdoc_head_alloc(struct mdoc *mdoc, int line, int pos, enum mdoct tok)
assert(mdoc->first);
assert(mdoc->last);
- p = node_alloc(mdoc, line, pos, tok, MDOC_HEAD);
+ p = node_alloc(mdoc, line, pos, tok, ROFFT_HEAD);
node_append(mdoc, p);
mdoc->next = MDOC_NEXT_CHILD;
return(p);
@@ -407,7 +408,7 @@ mdoc_body_alloc(struct mdoc *mdoc, int line, int pos, enum mdoct tok)
{
struct mdoc_node *p;
- p = node_alloc(mdoc, line, pos, tok, MDOC_BODY);
+ p = node_alloc(mdoc, line, pos, tok, ROFFT_BODY);
node_append(mdoc, p);
mdoc->next = MDOC_NEXT_CHILD;
return(p);
@@ -421,7 +422,7 @@ mdoc_endbody_alloc(struct mdoc *mdoc, int line, int pos, enum mdoct tok,
body->flags |= MDOC_ENDED;
body->parent->flags |= MDOC_ENDED;
- p = node_alloc(mdoc, line, pos, tok, MDOC_BODY);
+ p = node_alloc(mdoc, line, pos, tok, ROFFT_BODY);
p->body = body;
p->norm = body->norm;
p->end = end;
@@ -436,7 +437,7 @@ mdoc_block_alloc(struct mdoc *mdoc, int line, int pos,
{
struct mdoc_node *p;
- p = node_alloc(mdoc, line, pos, tok, MDOC_BLOCK);
+ p = node_alloc(mdoc, line, pos, tok, ROFFT_BLOCK);
p->args = args;
if (p->args)
(args->refcnt)++;
@@ -467,7 +468,7 @@ mdoc_elem_alloc(struct mdoc *mdoc, int line, int pos,
{
struct mdoc_node *p;
- p = node_alloc(mdoc, line, pos, tok, MDOC_ELEM);
+ p = node_alloc(mdoc, line, pos, tok, ROFFT_ELEM);
p->args = args;
if (p->args)
(args->refcnt)++;
@@ -488,7 +489,7 @@ mdoc_word_alloc(struct mdoc *mdoc, int line, int pos, const char *p)
{
struct mdoc_node *n;
- n = node_alloc(mdoc, line, pos, MDOC_MAX, MDOC_TEXT);
+ n = node_alloc(mdoc, line, pos, MDOC_MAX, ROFFT_TEXT);
n->string = roff_strdup(mdoc->roff, p);
node_append(mdoc, n);
mdoc->next = MDOC_NEXT_SIBLING;
@@ -513,7 +514,7 @@ static void
mdoc_node_free(struct mdoc_node *p)
{
- if (MDOC_BLOCK == p->type || MDOC_ELEM == p->type)
+ if (p->type == ROFFT_BLOCK || p->type == ROFFT_ELEM)
free(p->norm);
if (p->string)
free(p->string);
@@ -596,12 +597,12 @@ mdoc_ptext(struct mdoc *mdoc, int line, char *buf, int offs)
/*
* Divert directly to list processing if we're encountering a
- * columnar MDOC_BLOCK with or without a prior MDOC_BLOCK entry
- * (a MDOC_BODY means it's already open, in which case we should
+ * columnar ROFFT_BLOCK with or without a prior ROFFT_BLOCK entry
+ * (a ROFFT_BODY means it's already open, in which case we should
* process within its context in the normal way).
*/
- if (n->tok == MDOC_Bl && n->type == MDOC_BODY &&
+ if (n->tok == MDOC_Bl && n->type == ROFFT_BODY &&
n->end == ENDBODY_NOT && n->norm->Bl.type == LIST_column) {
/* `Bl' is open without any children. */
mdoc->flags |= MDOC_FREECOL;
@@ -609,7 +610,7 @@ mdoc_ptext(struct mdoc *mdoc, int line, char *buf, int offs)
return(1);
}
- if (MDOC_It == n->tok && MDOC_BLOCK == n->type &&
+ if (n->tok == MDOC_It && n->type == ROFFT_BLOCK &&
NULL != n->parent &&
MDOC_Bl == n->parent->tok &&
LIST_column == n->parent->norm->Bl.type) {
@@ -778,7 +779,7 @@ mdoc_pmacro(struct mdoc *mdoc, int ln, char *buf, int offs)
* context around the parsed macro.
*/
- if (n->tok == MDOC_Bl && n->type == MDOC_BODY &&
+ if (n->tok == MDOC_Bl && n->type == ROFFT_BODY &&
n->end == ENDBODY_NOT && n->norm->Bl.type == LIST_column) {
mdoc->flags |= MDOC_FREECOL;
mdoc_macro(mdoc, MDOC_It, ln, sv, &sv, buf);
@@ -791,7 +792,7 @@ mdoc_pmacro(struct mdoc *mdoc, int ln, char *buf, int offs)
* then open an `It' block context around the parsed macro.
*/
- if (MDOC_It == n->tok && MDOC_BLOCK == n->type &&
+ if (n->tok == MDOC_It && n->type == ROFFT_BLOCK &&
NULL != n->parent &&
MDOC_Bl == n->parent->tok &&
LIST_column == n->parent->norm->Bl.type) {
@@ -865,7 +866,7 @@ mdoc_deroff(char **dest, const struct mdoc_node *n)
char *cp;
size_t sz;
- if (MDOC_TEXT != n->type) {
+ if (n->type != ROFFT_TEXT) {
for (n = n->child; n; n = n->next)
mdoc_deroff(dest, n);
return;