=================================================================== RCS file: /cvs/mandoc/mdoc.h,v retrieving revision 1.17 retrieving revision 1.22 diff -u -p -r1.17 -r1.22 --- mandoc/mdoc.h 2009/01/08 14:55:59 1.17 +++ mandoc/mdoc.h 2009/01/15 17:38:57 1.22 @@ -1,4 +1,4 @@ -/* $Id: mdoc.h,v 1.17 2009/01/08 14:55:59 kristaps Exp $ */ +/* $Id: mdoc.h,v 1.22 2009/01/15 17:38:57 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -19,8 +19,12 @@ #ifndef MDOC_H #define MDOC_H +/* FIXME: move this elsewhere (it's 9, too). */ + #define MDOC_LINEARG_MAX 12 +/* What follows is a list of ALL possible macros. */ + #define MDOC___ 0 #define MDOC_Dd 1 #define MDOC_Dt 2 @@ -129,6 +133,8 @@ #define MDOC_Ud 105 #define MDOC_MAX 106 +/* What follows is a list of ALL possible macro arguments. */ + #define MDOC_Split 0 #define MDOC_Nosplit 1 #define MDOC_Ragged 2 @@ -193,37 +199,9 @@ #define MDOC_Symbolic 61 #define MDOC_ARG_MAX 62 -enum mdoc_err { - ERR_SYNTAX_QUOTE, /* NOTUSED */ - ERR_SYNTAX_UNQUOTE, - ERR_SYNTAX_NOPUNCT, - ERR_SYNTAX_WS, - ERR_SYNTAX_ARG, - ERR_SYNTAX_ARGFORM, - ERR_SYNTAX_ARGVAL, - ERR_SYNTAX_ARGBAD, - ERR_SYNTAX_ARGMANY, - ERR_MACRO_NOTSUP, - ERR_MACRO_NOTCALL, - ERR_SCOPE_BREAK, - ERR_SCOPE_NOCTX, - ERR_SCOPE_NONEST, - ERR_SEC_PROLOGUE, - ERR_SEC_NPROLOGUE, - ERR_SEC_PROLOGUE_OO, - ERR_SEC_PROLOGUE_REP, - ERR_SEC_NAME, - ERR_ARGS_EQ0, - ERR_ARGS_EQ1, - ERR_ARGS_GE1, - ERR_ARGS_LE2, - ERR_ARGS_LE8, - ERR_ARGS_MANY, - ERR_SYNTAX_CHILDHEAD, - ERR_SYNTAX_CHILDBODY, - ERR_SYNTAX_EMPTYBODY, - ERR_SYNTAX_EMPTYHEAD, - ERR_SYNTAX_NOTEXT +enum mdoc_warn { + WARN_SYNTAX, /* Syntax warn (at line/col). */ + WARN_COMPAT /* Groff compat warn (at line/col). */ }; enum mdoc_att { @@ -242,23 +220,10 @@ enum mdoc_att { ATT_V4 }; -enum mdoc_warn { - WARN_SYNTAX_WS_EOLN, - WARN_SYNTAX_MACLIKE, - WARN_SYNTAX_ARGLIKE, - WARN_SYNTAX_QUOTED, - WARN_SYNTAX_EMPTYBODY, - WARN_IGN_AFTER_BLK, - WARN_IGN_BEFORE_BLK, - WARN_IGN_OBSOLETE, - WARN_SEC_OO, - WARN_ARGS_GE1, - WARN_ARGS_EQ0, - WARN_COMPAT_TROFF -}; - struct mdoc_arg { int arg; + int line; + int pos; size_t sz; char **value; }; @@ -269,7 +234,8 @@ enum mdoc_type { MDOC_HEAD, MDOC_TAIL, MDOC_BODY, - MDOC_BLOCK + MDOC_BLOCK, + MDOC_ROOT }; enum mdoc_msec { @@ -373,27 +339,16 @@ struct mdoc_text { }; struct mdoc_block { - int tok; size_t argc; struct mdoc_arg *argv; + struct mdoc_node *head; + struct mdoc_node *body; + struct mdoc_node *tail; }; -struct mdoc_head { - int tok; -}; - -struct mdoc_tail { - int tok; -}; - -struct mdoc_body { - int tok; -}; - struct mdoc_elem { size_t sz; char **args; - int tok; size_t argc; struct mdoc_arg *argv; }; @@ -401,9 +356,6 @@ struct mdoc_elem { union mdoc_data { struct mdoc_text text; struct mdoc_elem elem; - struct mdoc_body body; - struct mdoc_head head; - struct mdoc_tail tail; struct mdoc_block block; }; @@ -414,14 +366,16 @@ struct mdoc_node { struct mdoc_node *prev; int line; int pos; + int tok; enum mdoc_type type; union mdoc_data data; }; struct mdoc_cb { - int (*mdoc_err)(void *, int, int, enum mdoc_err); - int (*mdoc_warn)(void *, int, int, enum mdoc_warn); void (*mdoc_msg)(void *, int, int, const char *); + int (*mdoc_err)(void *, int, int, const char *); + int (*mdoc_warn)(void *, int, int, + enum mdoc_warn, const char *); }; extern const char *const *mdoc_macronames; @@ -437,6 +391,8 @@ int mdoc_parseln(struct mdoc *, int, char *buf); const struct mdoc_node *mdoc_result(struct mdoc *); int mdoc_endparse(struct mdoc *); + +char *mdoc_type2a(enum mdoc_type); __END_DECLS