parse.h
上传用户:lengbin
上传日期:2010-03-31
资源大小:121k
文件大小:3k
- /*----------------------------------------------------------------------
- File : parse.h
- Contents: parser utilities
- Author : Christian Borgelt
- History : 12.08.2004 file created
- ----------------------------------------------------------------------*/
- #ifndef __PARSE__
- #define __PARSE__
- #ifndef SC_SCAN
- #define SC_SCAN
- #endif
- #include "scan.h"
- /*----------------------------------------------------------------------
- Preprocessor Definitions
- ----------------------------------------------------------------------*/
- /* --- error codes --- */
- #define E_CHREXP (-16) /* character expected */
- #define E_STREXP (-17) /* string expected */
- #define E_NUMEXP (-18) /* number expected */
- #define E_ILLNUM (-19) /* illegal number */
- #define E_ATTEXP (-20) /* attribute expected */
- #define E_UNKATT (-21) /* unknown attribute */
- #define E_DUPATT (-22) /* duplicate attribute value */
- #define E_MISATT (-23) /* missing attribute */
- #define E_ILLATT (-24) /* illegal attribute */
- #define E_ATTYPE (-25) /* wrong attribute type */
- #define E_VALEXP (-26) /* attribute value expected */
- #define E_UNKVAL (-27) /* unknown attribute value */
- #define E_DUPVAL (-28) /* duplicate attribute value */
- #define E_MISVAL (-29) /* missing attribute value */
- #define E_CLSEXP (-30) /* class value expected */
- #define E_UNKCLS (-31) /* unknown class value */
- #define E_DUPCLS (-32) /* duplicate class value */
- #define E_MISCLS (-33) /* missing class value */
- #define E_CLSTYPE (-34) /* class attribute must be symbolic */
- #define E_CLSCNT (-35) /* class attribute has too few values */
- #define E_DOMAIN (-36) /* illegal attribute domain */
- #define E_PAREXP (-37) /* parameter expected */
- #define E_ILLOP (-38) /* illegal comparison operator */
- #define E_ILLMAT (-39) /* illegal covariance matrix */
- #define E_DUPCDL (-40) /* duplicate candidate list */
- #define E_RANGE (-41) /* illegal candidate range */
- #define E_ILLCDD (-42) /* illegal candidate */
- #define E_ILLINK (-43) /* illegal link */
- #define E_LYRCNT (-44) /* illegal number of layers */
- #define E_UNITCNT (-45) /* illegal number of units */
- /*----------------------------------------------------------------------
- Functions
- ----------------------------------------------------------------------*/
- extern void pa_init (SCAN *scan);
- extern int pa_error (SCAN *scan, int code, int c, const char *s);
- /*----------------------------------------------------------------------
- Preprocessor Definitions
- ----------------------------------------------------------------------*/
- #define ERROR(c) return pa_error(scan, c, -1, NULL)
- #define XERROR(c,s) return pa_error(scan, c, -1, s)
- #define ERR_CHR(c) return pa_error(scan, E_CHREXP, c, NULL)
- #define ERR_STR(s) return pa_error(scan, E_STREXP, -1, s)
- #define GET_TOK() if (sc_next(scan) < 0)
- return sc_error(scan, sc_token(scan))
- #define GET_CHR(c) if (sc_token(scan) != (c)) ERR_CHR(c);
- else GET_TOK()
- #define RECOVER() if (sc_recover(scan, ';', '{', '}', 0) == T_EOF)
- return 1
- #endif