/* * scan.h * Lexical scanner structures and prototypes for Bhuna. * $Id$ */ #ifndef __SCAN_H_ #define __SCAN_H_ #include #include #define TOKEN_EOF 0 #define TOKEN_NUMBER 1 #define TOKEN_BAREWORD 2 #define TOKEN_SYMBOL 3 #define TOKEN_QSTRING 4 struct scan_st { FILE *in; /* file from which we are scanning */ wchar_t *token; /* text content of token we just scanned */ int type; /* type of token that was scanned */ int lino; /* current line number, 1-based */ int columno; /* current column number, 1-based */ int lastcol; /* for putback */ }; #define tokeq(sc, x) (wcscmp(sc->token, x) == 0) #define tokne(sc, x) (wcscmp(sc->token, x) != 0) extern struct scan_st *scan_open(char *); extern struct scan_st *scan_dup(struct scan_st *); extern void scan_close(struct scan_st *); extern void scan(struct scan_st *); extern void scan_expect(struct scan_st *, wchar_t *); #endif /* !__SCAN_H_ */