/******************************************** scan.h copyright 1991, Michael D. Brennan This is a source file for mawk, an implementation of the AWK programming language. Mawk is distributed without warranty under the terms of the GNU General Public License, version 2, 1991. ********************************************/ /* $Log: scan.h,v $ * Revision 1.3 1995/06/18 19:42:26 mike * Remove some redundant declarations and add some prototypes * * Revision 1.2 1994/09/23 00:20:06 mike * minor bug fix: handle \ in eat_nl() * * Revision 1.1.1.1 1993/07/03 18:58:20 mike * move source to cvs * * Revision 5.1 1991/12/05 07:59:33 brennan * 1.1 pre-release * */ /* scan.h */ #ifndef SCAN_H_INCLUDED #define SCAN_H_INCLUDED 1 #include #ifndef MAKESCAN #include "symtype.h" #include "parse.h" #endif extern char scan_code[256] ; /* the scan codes to compactify the main switch */ #define SC_SPACE 1 #define SC_NL 2 #define SC_SEMI_COLON 3 #define SC_FAKE_SEMI_COLON 4 #define SC_LBRACE 5 #define SC_RBRACE 6 #define SC_QMARK 7 #define SC_COLON 8 #define SC_OR 9 #define SC_AND 10 #define SC_PLUS 11 #define SC_MINUS 12 #define SC_MUL 13 #define SC_DIV 14 #define SC_MOD 15 #define SC_POW 16 #define SC_LPAREN 17 #define SC_RPAREN 18 #define SC_LBOX 19 #define SC_RBOX 20 #define SC_IDCHAR 21 #define SC_DIGIT 22 #define SC_DQUOTE 23 #define SC_ESCAPE 24 #define SC_COMMENT 25 #define SC_EQUAL 26 #define SC_NOT 27 #define SC_LT 28 #define SC_GT 29 #define SC_COMMA 30 #define SC_DOT 31 #define SC_MATCH 32 #define SC_DOLLAR 33 #define SC_UNEXPECTED 34 #ifndef MAKESCAN void PROTO(eat_nl, (void) ) ; /* in error.c */ void PROTO( unexpected_char, (void) ) ; #define ct_ret(x) return current_token = (x) #define next() (*buffp ? *buffp++ : slow_next()) #define un_next() buffp-- #define test1_ret(c,x,d) if ( next() == (c) ) ct_ret(x) ;\ else { un_next() ; ct_ret(d) ; } #define test2_ret(c1,x1,c2,x2,d) switch( next() )\ { case c1: ct_ret(x1) ;\ case c2: ct_ret(x2) ;\ default: un_next() ;\ ct_ret(d) ; } #endif /* ! MAKESCAN */ #endif