BSD 4 release
[unix-history] / usr / src / cmd / as / astoks.h
/* Copyright (c) 1980 Regents of the University of California */
/* "@(#)astoks.h 4.2 8/16/80" */
/*
* Message to the wary: The order of tokens has been
* hand optimized and assigned to that all switch statements
* are implemented by a casel instruction on the VAX.
* there are 4 switch statements that have to be worried about:
* l) Per character switch in the character scanner (scan_dot_s)
* 2) Per token switch in the buffer manager (yylex)
* 3) Per keyword switch in the parser (yyparse)
* 4) Leading token switch for argments to opcodes
*
* You can't just add new tokens willy-nilly; make sure that you
* add them into the proper order!
*/
# define FIRSTTOKEN 0
/*
* Tokens between ISPACE and INSTn are used by the per keyword switch
*/
# define ISPACE 1
# define IBYTE 2
# define IWORD 3
# define IINT 4
# define ILONG 5
# define IDATA 6
# define IGLOBAL 7
# define ISET 8
# define ITEXT 9
# define ICOMM 10
# define ILCOMM 11
# define IFLOAT 12
# define IDOUBLE 13
# define IORG 14
# define IASCII 15
# define IASCIZ 16
# define ILSYM 17
# define IFILE 18
# define ILINENO 19
# define IABORT 20
# define IFILL 21
# define IQUAD 22
/*
* Tokens between ISTAB and REG are used in the per token switch
*/
# define ISTAB 23
# define ISTABSTR 24
# define ISTABNONE 25
# define ISTABDOT 26
# define IJXXX 27
# define IALIGN 28
# define INST0 29
# define INSTn 30
# define BFINT 31
# define PARSEEOF 32
# define ILINESKIP 33
# define VOID 34
# define SKIP 35
# define INT 36
# define FLTNUM 37
# define NAME 38
# define STRING 39
# define QUAD 40
/*
* Tokens between SIZESPEC and REGOP are used in the instruction
* argument switch
*/
# define SIZESPEC 41
# define REG 42
# define MUL 43
# define LITOP 44
# define LP 45
# define MP 46
/*
* Tokens between REGOP and DIV are used in the per character switch
*/
# define NEEDSBUF 48 /*signal refilling the input buffer*/
# define REGOP 49 /*the percent sign*/
# define NL 50
# define SCANEOF 51
# define BADCHAR 52
# define SP 53
# define ALPH 54
# define DIG 55
# define SQ 56
# define DQ 57
# define SH 58
# define LSH 59
# define RSH 60
# define MINUS 61
# define SIZEQUOTE 62
/*
* Tokens between XOR and RP are used at random (primarily by the
* expression analyzer), and not used in any switch
*/
# define XOR 64
# define DIV 65
# define SEMI 66
# define COLON 67
# define PLUS 68
# define IOR 69
# define AND 70
# define TILDE 71
# define ORNOT 72
# define CM 73
# define LB 74
# define RB 75
# define RP 76
# define LASTTOKEN 80