1: /* $Header: arg.h,v 1.0 87/12/18 13:04:39 root Exp $
   2:  *
   3:  * $Log:	arg.h,v $
   4:  * Revision 1.0  87/12/18  13:04:39  root
   5:  * Initial revision
   6:  *
   7:  */
   8: 
   9: #define O_NULL 0
  10: #define O_ITEM 1
  11: #define O_ITEM2 2
  12: #define O_ITEM3 3
  13: #define O_CONCAT 4
  14: #define O_MATCH 5
  15: #define O_NMATCH 6
  16: #define O_SUBST 7
  17: #define O_NSUBST 8
  18: #define O_ASSIGN 9
  19: #define O_MULTIPLY 10
  20: #define O_DIVIDE 11
  21: #define O_MODULO 12
  22: #define O_ADD 13
  23: #define O_SUBTRACT 14
  24: #define O_LEFT_SHIFT 15
  25: #define O_RIGHT_SHIFT 16
  26: #define O_LT 17
  27: #define O_GT 18
  28: #define O_LE 19
  29: #define O_GE 20
  30: #define O_EQ 21
  31: #define O_NE 22
  32: #define O_BIT_AND 23
  33: #define O_XOR 24
  34: #define O_BIT_OR 25
  35: #define O_AND 26
  36: #define O_OR 27
  37: #define O_COND_EXPR 28
  38: #define O_COMMA 29
  39: #define O_NEGATE 30
  40: #define O_NOT 31
  41: #define O_COMPLEMENT 32
  42: #define O_WRITE 33
  43: #define O_OPEN 34
  44: #define O_TRANS 35
  45: #define O_NTRANS 36
  46: #define O_CLOSE 37
  47: #define O_ARRAY 38
  48: #define O_HASH 39
  49: #define O_LARRAY 40
  50: #define O_LHASH 41
  51: #define O_PUSH 42
  52: #define O_POP 43
  53: #define O_SHIFT 44
  54: #define O_SPLIT 45
  55: #define O_LENGTH 46
  56: #define O_SPRINTF 47
  57: #define O_SUBSTR 48
  58: #define O_JOIN 49
  59: #define O_SLT 50
  60: #define O_SGT 51
  61: #define O_SLE 52
  62: #define O_SGE 53
  63: #define O_SEQ 54
  64: #define O_SNE 55
  65: #define O_SUBR 56
  66: #define O_PRINT 57
  67: #define O_CHDIR 58
  68: #define O_DIE 59
  69: #define O_EXIT 60
  70: #define O_RESET 61
  71: #define O_LIST 62
  72: #define O_SELECT 63
  73: #define O_EOF 64
  74: #define O_TELL 65
  75: #define O_SEEK 66
  76: #define O_LAST 67
  77: #define O_NEXT 68
  78: #define O_REDO 69
  79: #define O_GOTO 70
  80: #define O_INDEX 71
  81: #define O_TIME 72
  82: #define O_TMS 73
  83: #define O_LOCALTIME 74
  84: #define O_GMTIME 75
  85: #define O_STAT 76
  86: #define O_CRYPT 77
  87: #define O_EXP 78
  88: #define O_LOG 79
  89: #define O_SQRT 80
  90: #define O_INT 81
  91: #define O_PRTF 82
  92: #define O_ORD 83
  93: #define O_SLEEP 84
  94: #define O_FLIP 85
  95: #define O_FLOP 86
  96: #define O_KEYS 87
  97: #define O_VALUES 88
  98: #define O_EACH 89
  99: #define O_CHOP 90
 100: #define O_FORK 91
 101: #define O_EXEC 92
 102: #define O_SYSTEM 93
 103: #define O_OCT 94
 104: #define O_HEX 95
 105: #define O_CHMOD 96
 106: #define O_CHOWN 97
 107: #define O_KILL 98
 108: #define O_RENAME 99
 109: #define O_UNLINK 100
 110: #define O_UMASK 101
 111: #define O_UNSHIFT 102
 112: #define O_LINK 103
 113: #define O_REPEAT 104
 114: #define MAXO 105
 115: 
 116: #ifndef DOINIT
 117: extern char *opname[];
 118: #else
 119: char *opname[] = {
 120:     "NULL",
 121:     "ITEM",
 122:     "ITEM2",
 123:     "ITEM3",
 124:     "CONCAT",
 125:     "MATCH",
 126:     "NMATCH",
 127:     "SUBST",
 128:     "NSUBST",
 129:     "ASSIGN",
 130:     "MULTIPLY",
 131:     "DIVIDE",
 132:     "MODULO",
 133:     "ADD",
 134:     "SUBTRACT",
 135:     "LEFT_SHIFT",
 136:     "RIGHT_SHIFT",
 137:     "LT",
 138:     "GT",
 139:     "LE",
 140:     "GE",
 141:     "EQ",
 142:     "NE",
 143:     "BIT_AND",
 144:     "XOR",
 145:     "BIT_OR",
 146:     "AND",
 147:     "OR",
 148:     "COND_EXPR",
 149:     "COMMA",
 150:     "NEGATE",
 151:     "NOT",
 152:     "COMPLEMENT",
 153:     "WRITE",
 154:     "OPEN",
 155:     "TRANS",
 156:     "NTRANS",
 157:     "CLOSE",
 158:     "ARRAY",
 159:     "HASH",
 160:     "LARRAY",
 161:     "LHASH",
 162:     "PUSH",
 163:     "POP",
 164:     "SHIFT",
 165:     "SPLIT",
 166:     "LENGTH",
 167:     "SPRINTF",
 168:     "SUBSTR",
 169:     "JOIN",
 170:     "SLT",
 171:     "SGT",
 172:     "SLE",
 173:     "SGE",
 174:     "SEQ",
 175:     "SNE",
 176:     "SUBR",
 177:     "PRINT",
 178:     "CHDIR",
 179:     "DIE",
 180:     "EXIT",
 181:     "RESET",
 182:     "LIST",
 183:     "SELECT",
 184:     "EOF",
 185:     "TELL",
 186:     "SEEK",
 187:     "LAST",
 188:     "NEXT",
 189:     "REDO",
 190:     "GOTO",/* shudder */
 191:     "INDEX",
 192:     "TIME",
 193:     "TIMES",
 194:     "LOCALTIME",
 195:     "GMTIME",
 196:     "STAT",
 197:     "CRYPT",
 198:     "EXP",
 199:     "LOG",
 200:     "SQRT",
 201:     "INT",
 202:     "PRINTF",
 203:     "ORD",
 204:     "SLEEP",
 205:     "FLIP",
 206:     "FLOP",
 207:     "KEYS",
 208:     "VALUES",
 209:     "EACH",
 210:     "CHOP",
 211:     "FORK",
 212:     "EXEC",
 213:     "SYSTEM",
 214:     "OCT",
 215:     "HEX",
 216:     "CHMOD",
 217:     "CHOWN",
 218:     "KILL",
 219:     "RENAME",
 220:     "UNLINK",
 221:     "UMASK",
 222:     "UNSHIFT",
 223:     "LINK",
 224:     "REPEAT",
 225:     "105"
 226: };
 227: #endif
 228: 
 229: #define A_NULL 0
 230: #define A_EXPR 1
 231: #define A_CMD 2
 232: #define A_STAB 3
 233: #define A_LVAL 4
 234: #define A_SINGLE 5
 235: #define A_DOUBLE 6
 236: #define A_BACKTICK 7
 237: #define A_READ 8
 238: #define A_SPAT 9
 239: #define A_LEXPR 10
 240: #define A_ARYLEN 11
 241: #define A_NUMBER 12
 242: 
 243: #ifndef DOINIT
 244: extern char *argname[];
 245: #else
 246: char *argname[] = {
 247:     "A_NULL",
 248:     "EXPR",
 249:     "CMD",
 250:     "STAB",
 251:     "LVAL",
 252:     "SINGLE",
 253:     "DOUBLE",
 254:     "BACKTICK",
 255:     "READ",
 256:     "SPAT",
 257:     "LEXPR",
 258:     "ARYLEN",
 259:     "NUMBER",
 260:     "13"
 261: };
 262: #endif
 263: 
 264: #ifndef DOINIT
 265: extern bool hoistable[];
 266: #else
 267: bool hoistable[] = {0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0};
 268: #endif
 269: 
 270: struct arg {
 271:     union argptr {
 272:     ARG *arg_arg;
 273:     char    *arg_cval;
 274:     STAB    *arg_stab;
 275:     SPAT    *arg_spat;
 276:     CMD *arg_cmd;
 277:     STR *arg_str;
 278:     double  arg_nval;
 279:     } arg_ptr;
 280:     short   arg_len;
 281:     char    arg_type;
 282:     char    arg_flags;
 283: };
 284: 
 285: #define AF_SPECIAL 1        /* op wants to evaluate this arg itself */
 286: #define AF_POST 2       /* post *crement this item */
 287: #define AF_PRE 4        /* pre *crement this item */
 288: #define AF_UP 8         /* increment rather than decrement */
 289: #define AF_COMMON 16        /* left and right have symbols in common */
 290: #define AF_NUMERIC 32       /* return as numeric rather than string */
 291: #define AF_LISTISH 64       /* turn into list if important */
 292: 
 293: /*
 294:  * Most of the ARG pointers are used as pointers to arrays of ARG.  When
 295:  * so used, the 0th element is special, and represents the operator to
 296:  * use on the list of arguments following.  The arg_len in the 0th element
 297:  * gives the maximum argument number, and the arg_str is used to store
 298:  * the return value in a more-or-less static location.  Sorry it's not
 299:  * re-entrant, but it sure makes it efficient.  The arg_type of the
 300:  * 0th element is an operator (O_*) rather than an argument type (A_*).
 301:  */
 302: 
 303: #define Nullarg Null(ARG*)
 304: 
 305: EXT char opargs[MAXO];
 306: 
 307: int do_trans();
 308: int do_split();
 309: bool do_eof();
 310: long do_tell();
 311: bool do_seek();
 312: int do_tms();
 313: int do_time();
 314: int do_stat();

Defined variables

argname declared in line 244; defined in line 246; used 1 times
opargs defined in line 305; used 103 times
opname declared in line 117; defined in line 119; used 6 times

Defined struct's

arg defined in line 270; used 2 times

Defined union's

argptr defined in line 271; never used

Defined macros

AF_LISTISH defined in line 291; never used
AF_NUMERIC defined in line 290; used 1 times
A_ARYLEN defined in line 240; used 1 times
A_BACKTICK defined in line 236; never used
A_CMD defined in line 231; never used
A_DOUBLE defined in line 235; never used
A_EXPR defined in line 230; used 1 times
A_LEXPR defined in line 239; never used
A_LVAL defined in line 233; used 3 times
A_NULL defined in line 229; used 1 times
A_NUMBER defined in line 241; never used
A_READ defined in line 237; never used
A_SINGLE defined in line 234; never used
A_SPAT defined in line 238; never used
A_STAB defined in line 232; used 41 times
MAXO defined in line 114; used 1 times
Nullarg defined in line 303; used 160 times
O_CHDIR defined in line 67; used 1 times
O_CHMOD defined in line 105; used 1 times
O_CHOWN defined in line 106; used 1 times
O_CRYPT defined in line 86; used 1 times
O_DIE defined in line 68; used 1 times
O_EACH defined in line 98; used 1 times
O_EXEC defined in line 101; used 1 times
O_EXIT defined in line 69; used 1 times
O_EXP defined in line 87; used 1 times
O_FORK defined in line 100; used 1 times
O_GMTIME defined in line 84; used 1 times
O_GOTO defined in line 79; used 1 times
O_HEX defined in line 104; used 1 times
O_INDEX defined in line 80; used 1 times
O_INT defined in line 90; used 1 times
O_ITEM2 defined in line 11; used 4 times
O_ITEM3 defined in line 12; used 2 times
O_KEYS defined in line 96; used 2 times
O_KILL defined in line 107; used 1 times
O_LARRAY defined in line 49; used 1 times
O_LAST defined in line 76; used 1 times
O_LENGTH defined in line 55; used 1 times
O_LHASH defined in line 50; used 1 times
O_LINK defined in line 112; used 1 times
O_LOCALTIME defined in line 83; used 1 times
O_LOG defined in line 88; used 1 times
O_NEXT defined in line 77; used 1 times
O_NSUBST defined in line 17; used 1 times
O_NTRANS defined in line 45; used 1 times
O_NULL defined in line 9; never used
O_OCT defined in line 103; used 1 times
O_ORD defined in line 92; used 1 times
O_PRINT defined in line 66; used 2 times
O_PRTF defined in line 91; used 2 times
O_PUSH defined in line 51; used 1 times
O_REDO defined in line 78; used 1 times
O_RENAME defined in line 108; used 1 times
O_RESET defined in line 70; used 1 times
O_SELECT defined in line 72; used 2 times
O_SLEEP defined in line 93; used 1 times
O_SPLIT defined in line 54; used 1 times
O_SQRT defined in line 89; used 1 times
O_SUBST defined in line 16; used 1 times
O_SUBSTR defined in line 57; used 1 times
O_SYSTEM defined in line 102; used 1 times
O_TIME defined in line 81; used 1 times
O_TMS defined in line 82; used 1 times
O_TRANS defined in line 44; used 1 times
O_UMASK defined in line 110; used 1 times
O_UNLINK defined in line 109; used 1 times
O_UNSHIFT defined in line 111; used 1 times
O_VALUES defined in line 97; used 1 times

Usage of this include

Last modified: 1988-01-31
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 4191
Valid CSS Valid XHTML 1.0 Strict