| /* $Header$ | |
| * | |
| * Copyright (c) 1989, Larry Wall | |
| * | |
| * You may distribute under the terms of the GNU General Public License | |
| * as specified in the README file that comes with the perl 3.0 kit. | |
| * | |
| * $Log$ | |
| * Revision 1.2 2004/09/01 14:33:24 criswell | |
| * Migrating test suite out of the source tree. | |
| * | |
| * Revision 1.1 2004/02/17 22:21:15 criswell | |
| * Initial commit of the perl Malloc Benchmark. I've cheated a little by | |
| * generating the yacc output files and committing them directly, but it was | |
| * easier than disabling the Bison Voodoo that gets executed by default. | |
| * | |
| * Revision 4.0 91/03/20 01:03:09 lwall | |
| * 4.0 baseline. | |
| * | |
| */ | |
| #define O_NULL 0 | |
| #define O_RCAT 1 | |
| #define O_ITEM 2 | |
| #define O_SCALAR 3 | |
| #define O_ITEM2 4 | |
| #define O_ITEM3 5 | |
| #define O_CONCAT 6 | |
| #define O_REPEAT 7 | |
| #define O_MATCH 8 | |
| #define O_NMATCH 9 | |
| #define O_SUBST 10 | |
| #define O_NSUBST 11 | |
| #define O_ASSIGN 12 | |
| #define O_LOCAL 13 | |
| #define O_AASSIGN 14 | |
| #define O_SASSIGN 15 | |
| #define O_CHOP 16 | |
| #define O_DEFINED 17 | |
| #define O_UNDEF 18 | |
| #define O_STUDY 19 | |
| #define O_POW 20 | |
| #define O_MULTIPLY 21 | |
| #define O_DIVIDE 22 | |
| #define O_MODULO 23 | |
| #define O_ADD 24 | |
| #define O_SUBTRACT 25 | |
| #define O_LEFT_SHIFT 26 | |
| #define O_RIGHT_SHIFT 27 | |
| #define O_LT 28 | |
| #define O_GT 29 | |
| #define O_LE 30 | |
| #define O_GE 31 | |
| #define O_EQ 32 | |
| #define O_NE 33 | |
| #define O_NCMP 34 | |
| #define O_BIT_AND 35 | |
| #define O_XOR 36 | |
| #define O_BIT_OR 37 | |
| #define O_AND 38 | |
| #define O_OR 39 | |
| #define O_COND_EXPR 40 | |
| #define O_COMMA 41 | |
| #define O_NEGATE 42 | |
| #define O_NOT 43 | |
| #define O_COMPLEMENT 44 | |
| #define O_SELECT 45 | |
| #define O_WRITE 46 | |
| #define O_DBMOPEN 47 | |
| #define O_DBMCLOSE 48 | |
| #define O_OPEN 49 | |
| #define O_TRANS 50 | |
| #define O_NTRANS 51 | |
| #define O_CLOSE 52 | |
| #define O_EACH 53 | |
| #define O_VALUES 54 | |
| #define O_KEYS 55 | |
| #define O_LARRAY 56 | |
| #define O_ARRAY 57 | |
| #define O_AELEM 58 | |
| #define O_DELETE 59 | |
| #define O_LHASH 60 | |
| #define O_HASH 61 | |
| #define O_HELEM 62 | |
| #define O_LAELEM 63 | |
| #define O_LHELEM 64 | |
| #define O_LSLICE 65 | |
| #define O_ASLICE 66 | |
| #define O_HSLICE 67 | |
| #define O_LASLICE 68 | |
| #define O_LHSLICE 69 | |
| #define O_SPLICE 70 | |
| #define O_PUSH 71 | |
| #define O_POP 72 | |
| #define O_SHIFT 73 | |
| #define O_UNPACK 74 | |
| #define O_SPLIT 75 | |
| #define O_LENGTH 76 | |
| #define O_SPRINTF 77 | |
| #define O_SUBSTR 78 | |
| #define O_PACK 79 | |
| #define O_GREP 80 | |
| #define O_JOIN 81 | |
| #define O_SLT 82 | |
| #define O_SGT 83 | |
| #define O_SLE 84 | |
| #define O_SGE 85 | |
| #define O_SEQ 86 | |
| #define O_SNE 87 | |
| #define O_SCMP 88 | |
| #define O_SUBR 89 | |
| #define O_DBSUBR 90 | |
| #define O_CALLER 91 | |
| #define O_SORT 92 | |
| #define O_REVERSE 93 | |
| #define O_WARN 94 | |
| #define O_DIE 95 | |
| #define O_PRTF 96 | |
| #define O_PRINT 97 | |
| #define O_CHDIR 98 | |
| #define O_EXIT 99 | |
| #define O_RESET 100 | |
| #define O_LIST 101 | |
| #define O_EOF 102 | |
| #define O_GETC 103 | |
| #define O_TELL 104 | |
| #define O_RECV 105 | |
| #define O_READ 106 | |
| #define O_SYSREAD 107 | |
| #define O_SYSWRITE 108 | |
| #define O_SEND 109 | |
| #define O_SEEK 110 | |
| #define O_RETURN 111 | |
| #define O_REDO 112 | |
| #define O_NEXT 113 | |
| #define O_LAST 114 | |
| #define O_DUMP 115 | |
| #define O_GOTO 116 | |
| #define O_INDEX 117 | |
| #define O_RINDEX 118 | |
| #define O_TIME 119 | |
| #define O_TMS 120 | |
| #define O_LOCALTIME 121 | |
| #define O_GMTIME 122 | |
| #define O_TRUNCATE 123 | |
| #define O_LSTAT 124 | |
| #define O_STAT 125 | |
| #define O_CRYPT 126 | |
| #define O_ATAN2 127 | |
| #define O_SIN 128 | |
| #define O_COS 129 | |
| #define O_RAND 130 | |
| #define O_SRAND 131 | |
| #define O_EXP 132 | |
| #define O_LOG 133 | |
| #define O_SQRT 134 | |
| #define O_INT 135 | |
| #define O_ORD 136 | |
| #define O_ALARM 137 | |
| #define O_SLEEP 138 | |
| #define O_RANGE 139 | |
| #define O_F_OR_R 140 | |
| #define O_FLIP 141 | |
| #define O_FLOP 142 | |
| #define O_FORK 143 | |
| #define O_WAIT 144 | |
| #define O_WAITPID 145 | |
| #define O_SYSTEM 146 | |
| #define O_EXEC_OP 147 | |
| #define O_HEX 148 | |
| #define O_OCT 149 | |
| #define O_CHOWN 150 | |
| #define O_KILL 151 | |
| #define O_UNLINK 152 | |
| #define O_CHMOD 153 | |
| #define O_UTIME 154 | |
| #define O_UMASK 155 | |
| #define O_MSGGET 156 | |
| #define O_SHMGET 157 | |
| #define O_SEMGET 158 | |
| #define O_MSGCTL 159 | |
| #define O_SHMCTL 160 | |
| #define O_SEMCTL 161 | |
| #define O_MSGSND 162 | |
| #define O_MSGRCV 163 | |
| #define O_SEMOP 164 | |
| #define O_SHMREAD 165 | |
| #define O_SHMWRITE 166 | |
| #define O_RENAME 167 | |
| #define O_LINK 168 | |
| #define O_MKDIR 169 | |
| #define O_RMDIR 170 | |
| #define O_GETPPID 171 | |
| #define O_GETPGRP 172 | |
| #define O_SETPGRP 173 | |
| #define O_GETPRIORITY 174 | |
| #define O_SETPRIORITY 175 | |
| #define O_CHROOT 176 | |
| #define O_FCNTL 177 | |
| #define O_IOCTL 178 | |
| #define O_FLOCK 179 | |
| #define O_UNSHIFT 180 | |
| #define O_REQUIRE 181 | |
| #define O_DOFILE 182 | |
| #define O_EVAL 183 | |
| #define O_FTRREAD 184 | |
| #define O_FTRWRITE 185 | |
| #define O_FTREXEC 186 | |
| #define O_FTEREAD 187 | |
| #define O_FTEWRITE 188 | |
| #define O_FTEEXEC 189 | |
| #define O_FTIS 190 | |
| #define O_FTEOWNED 191 | |
| #define O_FTROWNED 192 | |
| #define O_FTZERO 193 | |
| #define O_FTSIZE 194 | |
| #define O_FTMTIME 195 | |
| #define O_FTATIME 196 | |
| #define O_FTCTIME 197 | |
| #define O_FTSOCK 198 | |
| #define O_FTCHR 199 | |
| #define O_FTBLK 200 | |
| #define O_FTFILE 201 | |
| #define O_FTDIR 202 | |
| #define O_FTPIPE 203 | |
| #define O_FTLINK 204 | |
| #define O_SYMLINK 205 | |
| #define O_READLINK 206 | |
| #define O_FTSUID 207 | |
| #define O_FTSGID 208 | |
| #define O_FTSVTX 209 | |
| #define O_FTTTY 210 | |
| #define O_FTTEXT 211 | |
| #define O_FTBINARY 212 | |
| #define O_SOCKET 213 | |
| #define O_BIND 214 | |
| #define O_CONNECT 215 | |
| #define O_LISTEN 216 | |
| #define O_ACCEPT 217 | |
| #define O_GHBYNAME 218 | |
| #define O_GHBYADDR 219 | |
| #define O_GHOSTENT 220 | |
| #define O_GNBYNAME 221 | |
| #define O_GNBYADDR 222 | |
| #define O_GNETENT 223 | |
| #define O_GPBYNAME 224 | |
| #define O_GPBYNUMBER 225 | |
| #define O_GPROTOENT 226 | |
| #define O_GSBYNAME 227 | |
| #define O_GSBYPORT 228 | |
| #define O_GSERVENT 229 | |
| #define O_SHOSTENT 230 | |
| #define O_SNETENT 231 | |
| #define O_SPROTOENT 232 | |
| #define O_SSERVENT 233 | |
| #define O_EHOSTENT 234 | |
| #define O_ENETENT 235 | |
| #define O_EPROTOENT 236 | |
| #define O_ESERVENT 237 | |
| #define O_SOCKPAIR 238 | |
| #define O_SHUTDOWN 239 | |
| #define O_GSOCKOPT 240 | |
| #define O_SSOCKOPT 241 | |
| #define O_GETSOCKNAME 242 | |
| #define O_GETPEERNAME 243 | |
| #define O_SSELECT 244 | |
| #define O_FILENO 245 | |
| #define O_BINMODE 246 | |
| #define O_VEC 247 | |
| #define O_GPWNAM 248 | |
| #define O_GPWUID 249 | |
| #define O_GPWENT 250 | |
| #define O_SPWENT 251 | |
| #define O_EPWENT 252 | |
| #define O_GGRNAM 253 | |
| #define O_GGRGID 254 | |
| #define O_GGRENT 255 | |
| #define O_SGRENT 256 | |
| #define O_EGRENT 257 | |
| #define O_GETLOGIN 258 | |
| #define O_OPENDIR 259 | |
| #define O_READDIR 260 | |
| #define O_TELLDIR 261 | |
| #define O_SEEKDIR 262 | |
| #define O_REWINDDIR 263 | |
| #define O_CLOSEDIR 264 | |
| #define O_SYSCALL 265 | |
| #define O_PIPE 266 | |
| #define MAXO 267 | |
| #ifndef DOINIT | |
| extern char *opname[]; | |
| #else | |
| char *opname[] = { | |
| "NULL", | |
| "RCAT", | |
| "ITEM", | |
| "SCALAR", | |
| "ITEM2", | |
| "ITEM3", | |
| "CONCAT", | |
| "REPEAT", | |
| "MATCH", | |
| "NMATCH", | |
| "SUBST", | |
| "NSUBST", | |
| "ASSIGN", | |
| "LOCAL", | |
| "AASSIGN", | |
| "SASSIGN", | |
| "CHOP", | |
| "DEFINED", | |
| "UNDEF", | |
| "STUDY", | |
| "POW", | |
| "MULTIPLY", | |
| "DIVIDE", | |
| "MODULO", | |
| "ADD", | |
| "SUBTRACT", | |
| "LEFT_SHIFT", | |
| "RIGHT_SHIFT", | |
| "LT", | |
| "GT", | |
| "LE", | |
| "GE", | |
| "EQ", | |
| "NE", | |
| "NCMP", | |
| "BIT_AND", | |
| "XOR", | |
| "BIT_OR", | |
| "AND", | |
| "OR", | |
| "COND_EXPR", | |
| "COMMA", | |
| "NEGATE", | |
| "NOT", | |
| "COMPLEMENT", | |
| "SELECT", | |
| "WRITE", | |
| "DBMOPEN", | |
| "DBMCLOSE", | |
| "OPEN", | |
| "TRANS", | |
| "NTRANS", | |
| "CLOSE", | |
| "EACH", | |
| "VALUES", | |
| "KEYS", | |
| "LARRAY", | |
| "ARRAY", | |
| "AELEM", | |
| "DELETE", | |
| "LHASH", | |
| "HASH", | |
| "HELEM", | |
| "LAELEM", | |
| "LHELEM", | |
| "LSLICE", | |
| "ASLICE", | |
| "HSLICE", | |
| "LASLICE", | |
| "LHSLICE", | |
| "SPLICE", | |
| "PUSH", | |
| "POP", | |
| "SHIFT", | |
| "UNPACK", | |
| "SPLIT", | |
| "LENGTH", | |
| "SPRINTF", | |
| "SUBSTR", | |
| "PACK", | |
| "GREP", | |
| "JOIN", | |
| "SLT", | |
| "SGT", | |
| "SLE", | |
| "SGE", | |
| "SEQ", | |
| "SNE", | |
| "SCMP", | |
| "SUBR", | |
| "DBSUBR", | |
| "CALLER", | |
| "SORT", | |
| "REVERSE", | |
| "WARN", | |
| "DIE", | |
| "PRINTF", | |
| "PRINT", | |
| "CHDIR", | |
| "EXIT", | |
| "RESET", | |
| "LIST", | |
| "EOF", | |
| "GETC", | |
| "TELL", | |
| "RECV", | |
| "READ", | |
| "SYSREAD", | |
| "SYSWRITE", | |
| "SEND", | |
| "SEEK", | |
| "RETURN", | |
| "REDO", | |
| "NEXT", | |
| "LAST", | |
| "DUMP", | |
| "GOTO",/* shudder */ | |
| "INDEX", | |
| "RINDEX", | |
| "TIME", | |
| "TIMES", | |
| "LOCALTIME", | |
| "GMTIME", | |
| "TRUNCATE", | |
| "LSTAT", | |
| "STAT", | |
| "CRYPT", | |
| "ATAN2", | |
| "SIN", | |
| "COS", | |
| "RAND", | |
| "SRAND", | |
| "EXP", | |
| "LOG", | |
| "SQRT", | |
| "INT", | |
| "ORD", | |
| "ALARM", | |
| "SLEEP", | |
| "RANGE", | |
| "FLIP_OR_RANGE", | |
| "FLIP", | |
| "FLOP", | |
| "FORK", | |
| "WAIT", | |
| "WAITPID", | |
| "SYSTEM", | |
| "EXEC", | |
| "HEX", | |
| "OCT", | |
| "CHOWN", | |
| "KILL", | |
| "UNLINK", | |
| "CHMOD", | |
| "UTIME", | |
| "UMASK", | |
| "MSGGET", | |
| "SHMGET", | |
| "SEMGET", | |
| "MSGCTL", | |
| "SHMCTL", | |
| "SEMCTL", | |
| "MSGSND", | |
| "MSGRCV", | |
| "SEMOP", | |
| "SHMREAD", | |
| "SHMWRITE", | |
| "RENAME", | |
| "LINK", | |
| "MKDIR", | |
| "RMDIR", | |
| "GETPPID", | |
| "GETPGRP", | |
| "SETPGRP", | |
| "GETPRIORITY", | |
| "SETPRIORITY", | |
| "CHROOT", | |
| "FCNTL", | |
| "SYSIOCTL", | |
| "FLOCK", | |
| "UNSHIFT", | |
| "REQUIRE", | |
| "DOFILE", | |
| "EVAL", | |
| "FTRREAD", | |
| "FTRWRITE", | |
| "FTREXEC", | |
| "FTEREAD", | |
| "FTEWRITE", | |
| "FTEEXEC", | |
| "FTIS", | |
| "FTEOWNED", | |
| "FTROWNED", | |
| "FTZERO", | |
| "FTSIZE", | |
| "FTMTIME", | |
| "FTATIME", | |
| "FTCTIME", | |
| "FTSOCK", | |
| "FTCHR", | |
| "FTBLK", | |
| "FTFILE", | |
| "FTDIR", | |
| "FTPIPE", | |
| "FTLINK", | |
| "SYMLINK", | |
| "READLINK", | |
| "FTSUID", | |
| "FTSGID", | |
| "FTSVTX", | |
| "FTTTY", | |
| "FTTEXT", | |
| "FTBINARY", | |
| "SOCKET", | |
| "BIND", | |
| "CONNECT", | |
| "LISTEN", | |
| "ACCEPT", | |
| "GHBYNAME", | |
| "GHBYADDR", | |
| "GHOSTENT", | |
| "GNBYNAME", | |
| "GNBYADDR", | |
| "GNETENT", | |
| "GPBYNAME", | |
| "GPBYNUMBER", | |
| "GPROTOENT", | |
| "GSBYNAME", | |
| "GSBYPORT", | |
| "GSERVENT", | |
| "SHOSTENT", | |
| "SNETENT", | |
| "SPROTOENT", | |
| "SSERVENT", | |
| "EHOSTENT", | |
| "ENETENT", | |
| "EPROTOENT", | |
| "ESERVENT", | |
| "SOCKPAIR", | |
| "SHUTDOWN", | |
| "GSOCKOPT", | |
| "SSOCKOPT", | |
| "GETSOCKNAME", | |
| "GETPEERNAME", | |
| "SSELECT", | |
| "FILENO", | |
| "BINMODE", | |
| "VEC", | |
| "GPWNAM", | |
| "GPWUID", | |
| "GPWENT", | |
| "SPWENT", | |
| "EPWENT", | |
| "GGRNAM", | |
| "GGRGID", | |
| "GGRENT", | |
| "SGRENT", | |
| "EGRENT", | |
| "GETLOGIN", | |
| "OPENDIR", | |
| "READDIR", | |
| "TELLDIR", | |
| "SEEKDIR", | |
| "REWINDDIR", | |
| "CLOSEDIR", | |
| "SYSCALL", | |
| "PIPE", | |
| "267" | |
| }; | |
| #endif | |
| #define A_NULL 0 | |
| #define A_EXPR 1 | |
| #define A_CMD 2 | |
| #define A_STAB 3 | |
| #define A_LVAL 4 | |
| #define A_SINGLE 5 | |
| #define A_DOUBLE 6 | |
| #define A_BACKTICK 7 | |
| #define A_READ 8 | |
| #define A_SPAT 9 | |
| #define A_LEXPR 10 | |
| #define A_ARYLEN 11 | |
| #define A_ARYSTAB 12 | |
| #define A_LARYLEN 13 | |
| #define A_GLOB 14 | |
| #define A_WORD 15 | |
| #define A_INDREAD 16 | |
| #define A_LARYSTAB 17 | |
| #define A_STAR 18 | |
| #define A_LSTAR 19 | |
| #define A_WANTARRAY 20 | |
| #define A_MASK 31 | |
| #define A_DONT 32 /* or this into type to suppress evaluation */ | |
| #ifndef DOINIT | |
| extern char *argname[]; | |
| #else | |
| char *argname[] = { | |
| "A_NULL", | |
| "EXPR", | |
| "CMD", | |
| "STAB", | |
| "LVAL", | |
| "SINGLE", | |
| "DOUBLE", | |
| "BACKTICK", | |
| "READ", | |
| "SPAT", | |
| "LEXPR", | |
| "ARYLEN", | |
| "ARYSTAB", | |
| "LARYLEN", | |
| "GLOB", | |
| "WORD", | |
| "INDREAD", | |
| "LARYSTAB", | |
| "STAR", | |
| "LSTAR", | |
| "WANTARRAY", | |
| "21" | |
| }; | |
| #endif | |
| #ifndef DOINIT | |
| extern bool hoistable[]; | |
| #else | |
| bool hoistable[] = | |
| {0, /* A_NULL */ | |
| 0, /* EXPR */ | |
| 1, /* CMD */ | |
| 1, /* STAB */ | |
| 0, /* LVAL */ | |
| 1, /* SINGLE */ | |
| 0, /* DOUBLE */ | |
| 0, /* BACKTICK */ | |
| 0, /* READ */ | |
| 0, /* SPAT */ | |
| 0, /* LEXPR */ | |
| 1, /* ARYLEN */ | |
| 1, /* ARYSTAB */ | |
| 0, /* LARYLEN */ | |
| 0, /* GLOB */ | |
| 1, /* WORD */ | |
| 0, /* INDREAD */ | |
| 0, /* LARYSTAB */ | |
| 1, /* STAR */ | |
| 1, /* LSTAR */ | |
| 1, /* WANTARRAY */ | |
| 0, /* 21 */ | |
| }; | |
| #endif | |
| union argptr { | |
| ARG *arg_arg; | |
| char *arg_cval; | |
| STAB *arg_stab; | |
| SPAT *arg_spat; | |
| CMD *arg_cmd; | |
| STR *arg_str; | |
| HASH *arg_hash; | |
| }; | |
| struct arg { | |
| union argptr arg_ptr; | |
| short arg_len; | |
| unsigned short arg_type; | |
| unsigned short arg_flags; | |
| }; | |
| #define AF_ARYOK 1 /* op can handle multiple values here */ | |
| #define AF_POST 2 /* post *crement this item */ | |
| #define AF_PRE 4 /* pre *crement this item */ | |
| #define AF_UP 8 /* increment rather than decrement */ | |
| #define AF_COMMON 16 /* left and right have symbols in common */ | |
| #define AF_DEPR 32 /* an older form of the construct */ | |
| #define AF_LISTISH 64 /* turn into list if important */ | |
| #define AF_LOCAL 128 /* list of local variables */ | |
| /* | |
| * Most of the ARG pointers are used as pointers to arrays of ARG. When | |
| * so used, the 0th element is special, and represents the operator to | |
| * use on the list of arguments following. The arg_len in the 0th element | |
| * gives the maximum argument number, and the arg_str is used to store | |
| * the return value in a more-or-less static location. Sorry it's not | |
| * re-entrant (yet), but it sure makes it efficient. The arg_type of the | |
| * 0th element is an operator (O_*) rather than an argument type (A_*). | |
| */ | |
| #define Nullarg Null(ARG*) | |
| #ifndef DOINIT | |
| EXT unsigned short opargs[MAXO+1]; | |
| #else | |
| #define A(e1,e2,e3) (e1+(e2<<2)+(e3<<4)) | |
| #define A5(e1,e2,e3,e4,e5) (e1+(e2<<2)+(e3<<4)+(e4<<6)+(e5<<8)) | |
| unsigned short opargs[MAXO+1] = { | |
| A(0,0,0), /* NULL */ | |
| A(1,1,0), /* RCAT */ | |
| A(1,0,0), /* ITEM */ | |
| A(1,0,0), /* SCALAR */ | |
| A(0,0,0), /* ITEM2 */ | |
| A(0,0,0), /* ITEM3 */ | |
| A(1,1,0), /* CONCAT */ | |
| A(3,1,0), /* REPEAT */ | |
| A(1,0,0), /* MATCH */ | |
| A(1,0,0), /* NMATCH */ | |
| A(1,0,0), /* SUBST */ | |
| A(1,0,0), /* NSUBST */ | |
| A(1,1,0), /* ASSIGN */ | |
| A(1,0,0), /* LOCAL */ | |
| A(3,3,0), /* AASSIGN */ | |
| A(0,0,0), /* SASSIGN */ | |
| A(3,0,0), /* CHOP */ | |
| A(1,0,0), /* DEFINED */ | |
| A(1,0,0), /* UNDEF */ | |
| A(1,0,0), /* STUDY */ | |
| A(1,1,0), /* POW */ | |
| A(1,1,0), /* MULTIPLY */ | |
| A(1,1,0), /* DIVIDE */ | |
| A(1,1,0), /* MODULO */ | |
| A(1,1,0), /* ADD */ | |
| A(1,1,0), /* SUBTRACT */ | |
| A(1,1,0), /* LEFT_SHIFT */ | |
| A(1,1,0), /* RIGHT_SHIFT */ | |
| A(1,1,0), /* LT */ | |
| A(1,1,0), /* GT */ | |
| A(1,1,0), /* LE */ | |
| A(1,1,0), /* GE */ | |
| A(1,1,0), /* EQ */ | |
| A(1,1,0), /* NE */ | |
| A(1,1,0), /* NCMP */ | |
| A(1,1,0), /* BIT_AND */ | |
| A(1,1,0), /* XOR */ | |
| A(1,1,0), /* BIT_OR */ | |
| A(1,0,0), /* AND */ | |
| A(1,0,0), /* OR */ | |
| A(1,0,0), /* COND_EXPR */ | |
| A(1,1,0), /* COMMA */ | |
| A(1,0,0), /* NEGATE */ | |
| A(1,0,0), /* NOT */ | |
| A(1,0,0), /* COMPLEMENT */ | |
| A(1,0,0), /* SELECT */ | |
| A(1,0,0), /* WRITE */ | |
| A(1,1,1), /* DBMOPEN */ | |
| A(1,0,0), /* DBMCLOSE */ | |
| A(1,1,0), /* OPEN */ | |
| A(1,0,0), /* TRANS */ | |
| A(1,0,0), /* NTRANS */ | |
| A(1,0,0), /* CLOSE */ | |
| A(0,0,0), /* EACH */ | |
| A(0,0,0), /* VALUES */ | |
| A(0,0,0), /* KEYS */ | |
| A(0,0,0), /* LARRAY */ | |
| A(0,0,0), /* ARRAY */ | |
| A(0,1,0), /* AELEM */ | |
| A(0,1,0), /* DELETE */ | |
| A(0,0,0), /* LHASH */ | |
| A(0,0,0), /* HASH */ | |
| A(0,1,0), /* HELEM */ | |
| A(0,1,0), /* LAELEM */ | |
| A(0,1,0), /* LHELEM */ | |
| A(0,3,3), /* LSLICE */ | |
| A(0,3,0), /* ASLICE */ | |
| A(0,3,0), /* HSLICE */ | |
| A(0,3,0), /* LASLICE */ | |
| A(0,3,0), /* LHSLICE */ | |
| A(0,3,1), /* SPLICE */ | |
| A(0,3,0), /* PUSH */ | |
| A(0,0,0), /* POP */ | |
| A(0,0,0), /* SHIFT */ | |
| A(1,1,0), /* UNPACK */ | |
| A(1,0,1), /* SPLIT */ | |
| A(1,0,0), /* LENGTH */ | |
| A(3,0,0), /* SPRINTF */ | |
| A(1,1,1), /* SUBSTR */ | |
| A(1,3,0), /* PACK */ | |
| A(0,3,0), /* GREP */ | |
| A(1,3,0), /* JOIN */ | |
| A(1,1,0), /* SLT */ | |
| A(1,1,0), /* SGT */ | |
| A(1,1,0), /* SLE */ | |
| A(1,1,0), /* SGE */ | |
| A(1,1,0), /* SEQ */ | |
| A(1,1,0), /* SNE */ | |
| A(1,1,0), /* SCMP */ | |
| A(0,3,0), /* SUBR */ | |
| A(0,3,0), /* DBSUBR */ | |
| A(1,0,0), /* CALLER */ | |
| A(1,3,0), /* SORT */ | |
| A(0,3,0), /* REVERSE */ | |
| A(0,3,0), /* WARN */ | |
| A(0,3,0), /* DIE */ | |
| A(1,3,0), /* PRINTF */ | |
| A(1,3,0), /* PRINT */ | |
| A(1,0,0), /* CHDIR */ | |
| A(1,0,0), /* EXIT */ | |
| A(1,0,0), /* RESET */ | |
| A(3,0,0), /* LIST */ | |
| A(1,0,0), /* EOF */ | |
| A(1,0,0), /* GETC */ | |
| A(1,0,0), /* TELL */ | |
| A5(1,1,1,1,0), /* RECV */ | |
| A(1,1,3), /* READ */ | |
| A(1,1,3), /* SYSREAD */ | |
| A(1,1,3), /* SYSWRITE */ | |
| A(1,1,3), /* SEND */ | |
| A(1,1,1), /* SEEK */ | |
| A(0,3,0), /* RETURN */ | |
| A(0,0,0), /* REDO */ | |
| A(0,0,0), /* NEXT */ | |
| A(0,0,0), /* LAST */ | |
| A(0,0,0), /* DUMP */ | |
| A(0,0,0), /* GOTO */ | |
| A(1,1,1), /* INDEX */ | |
| A(1,1,1), /* RINDEX */ | |
| A(0,0,0), /* TIME */ | |
| A(0,0,0), /* TIMES */ | |
| A(1,0,0), /* LOCALTIME */ | |
| A(1,0,0), /* GMTIME */ | |
| A(1,1,0), /* TRUNCATE */ | |
| A(1,0,0), /* LSTAT */ | |
| A(1,0,0), /* STAT */ | |
| A(1,1,0), /* CRYPT */ | |
| A(1,1,0), /* ATAN2 */ | |
| A(1,0,0), /* SIN */ | |
| A(1,0,0), /* COS */ | |
| A(1,0,0), /* RAND */ | |
| A(1,0,0), /* SRAND */ | |
| A(1,0,0), /* EXP */ | |
| A(1,0,0), /* LOG */ | |
| A(1,0,0), /* SQRT */ | |
| A(1,0,0), /* INT */ | |
| A(1,0,0), /* ORD */ | |
| A(1,0,0), /* ALARM */ | |
| A(1,0,0), /* SLEEP */ | |
| A(1,1,0), /* RANGE */ | |
| A(1,0,0), /* F_OR_R */ | |
| A(1,0,0), /* FLIP */ | |
| A(0,1,0), /* FLOP */ | |
| A(0,0,0), /* FORK */ | |
| A(0,0,0), /* WAIT */ | |
| A(1,1,0), /* WAITPID */ | |
| A(1,3,0), /* SYSTEM */ | |
| A(1,3,0), /* EXEC */ | |
| A(1,0,0), /* HEX */ | |
| A(1,0,0), /* OCT */ | |
| A(0,3,0), /* CHOWN */ | |
| A(0,3,0), /* KILL */ | |
| A(0,3,0), /* UNLINK */ | |
| A(0,3,0), /* CHMOD */ | |
| A(0,3,0), /* UTIME */ | |
| A(1,0,0), /* UMASK */ | |
| A(1,1,0), /* MSGGET */ | |
| A(1,1,1), /* SHMGET */ | |
| A(1,1,1), /* SEMGET */ | |
| A(1,1,1), /* MSGCTL */ | |
| A(1,1,1), /* SHMCTL */ | |
| A5(1,1,1,1,0), /* SEMCTL */ | |
| A(1,1,1), /* MSGSND */ | |
| A5(1,1,1,1,1), /* MSGRCV */ | |
| A(1,1,1), /* SEMOP */ | |
| A5(1,1,1,1,0), /* SHMREAD */ | |
| A5(1,1,1,1,0), /* SHMWRITE */ | |
| A(1,1,0), /* RENAME */ | |
| A(1,1,0), /* LINK */ | |
| A(1,1,0), /* MKDIR */ | |
| A(1,0,0), /* RMDIR */ | |
| A(0,0,0), /* GETPPID */ | |
| A(1,0,0), /* GETPGRP */ | |
| A(1,1,0), /* SETPGRP */ | |
| A(1,1,0), /* GETPRIORITY */ | |
| A(1,1,1), /* SETPRIORITY */ | |
| A(1,0,0), /* CHROOT */ | |
| A(1,1,1), /* FCNTL */ | |
| A(1,1,1), /* SYSIOCTL */ | |
| A(1,1,0), /* FLOCK */ | |
| A(0,3,0), /* UNSHIFT */ | |
| A(1,0,0), /* REQUIRE */ | |
| A(1,0,0), /* DOFILE */ | |
| A(1,0,0), /* EVAL */ | |
| A(1,0,0), /* FTRREAD */ | |
| A(1,0,0), /* FTRWRITE */ | |
| A(1,0,0), /* FTREXEC */ | |
| A(1,0,0), /* FTEREAD */ | |
| A(1,0,0), /* FTEWRITE */ | |
| A(1,0,0), /* FTEEXEC */ | |
| A(1,0,0), /* FTIS */ | |
| A(1,0,0), /* FTEOWNED */ | |
| A(1,0,0), /* FTROWNED */ | |
| A(1,0,0), /* FTZERO */ | |
| A(1,0,0), /* FTSIZE */ | |
| A(1,0,0), /* FTMTIME */ | |
| A(1,0,0), /* FTATIME */ | |
| A(1,0,0), /* FTCTIME */ | |
| A(1,0,0), /* FTSOCK */ | |
| A(1,0,0), /* FTCHR */ | |
| A(1,0,0), /* FTBLK */ | |
| A(1,0,0), /* FTFILE */ | |
| A(1,0,0), /* FTDIR */ | |
| A(1,0,0), /* FTPIPE */ | |
| A(1,0,0), /* FTLINK */ | |
| A(1,1,0), /* SYMLINK */ | |
| A(1,0,0), /* READLINK */ | |
| A(1,0,0), /* FTSUID */ | |
| A(1,0,0), /* FTSGID */ | |
| A(1,0,0), /* FTSVTX */ | |
| A(1,0,0), /* FTTTY */ | |
| A(1,0,0), /* FTTEXT */ | |
| A(1,0,0), /* FTBINARY */ | |
| A5(1,1,1,1,0), /* SOCKET */ | |
| A(1,1,0), /* BIND */ | |
| A(1,1,0), /* CONNECT */ | |
| A(1,1,0), /* LISTEN */ | |
| A(1,1,0), /* ACCEPT */ | |
| A(1,0,0), /* GHBYNAME */ | |
| A(1,1,0), /* GHBYADDR */ | |
| A(0,0,0), /* GHOSTENT */ | |
| A(1,0,0), /* GNBYNAME */ | |
| A(1,1,0), /* GNBYADDR */ | |
| A(0,0,0), /* GNETENT */ | |
| A(1,0,0), /* GPBYNAME */ | |
| A(1,0,0), /* GPBYNUMBER */ | |
| A(0,0,0), /* GPROTOENT */ | |
| A(1,1,0), /* GSBYNAME */ | |
| A(1,1,0), /* GSBYPORT */ | |
| A(0,0,0), /* GSERVENT */ | |
| A(1,0,0), /* SHOSTENT */ | |
| A(1,0,0), /* SNETENT */ | |
| A(1,0,0), /* SPROTOENT */ | |
| A(1,0,0), /* SSERVENT */ | |
| A(0,0,0), /* EHOSTENT */ | |
| A(0,0,0), /* ENETENT */ | |
| A(0,0,0), /* EPROTOENT */ | |
| A(0,0,0), /* ESERVENT */ | |
| A5(1,1,1,1,1), /* SOCKPAIR */ | |
| A(1,1,0), /* SHUTDOWN */ | |
| A(1,1,1), /* GSOCKOPT */ | |
| A5(1,1,1,1,0), /* SSOCKOPT */ | |
| A(1,0,0), /* GETSOCKNAME */ | |
| A(1,0,0), /* GETPEERNAME */ | |
| A5(1,1,1,1,0), /* SSELECT */ | |
| A(1,0,0), /* FILENO */ | |
| A(1,0,0), /* BINMODE */ | |
| A(1,1,1), /* VEC */ | |
| A(1,0,0), /* GPWNAM */ | |
| A(1,0,0), /* GPWUID */ | |
| A(0,0,0), /* GPWENT */ | |
| A(0,0,0), /* SPWENT */ | |
| A(0,0,0), /* EPWENT */ | |
| A(1,0,0), /* GGRNAM */ | |
| A(1,0,0), /* GGRGID */ | |
| A(0,0,0), /* GGRENT */ | |
| A(0,0,0), /* SGRENT */ | |
| A(0,0,0), /* EGRENT */ | |
| A(0,0,0), /* GETLOGIN */ | |
| A(1,1,0), /* OPENDIR */ | |
| A(1,0,0), /* READDIR */ | |
| A(1,0,0), /* TELLDIR */ | |
| A(1,1,0), /* SEEKDIR */ | |
| A(1,0,0), /* REWINDDIR */ | |
| A(1,0,0), /* CLOSEDIR */ | |
| A(1,3,0), /* SYSCALL */ | |
| A(1,1,0), /* PIPE */ | |
| 0 | |
| }; | |
| #undef A | |
| #undef A5 | |
| #endif | |
| int do_trans(); | |
| int do_split(); | |
| bool do_eof(); | |
| long do_tell(); | |
| bool do_seek(); | |
| int do_tms(); | |
| int do_time(); | |
| int do_stat(); | |
| STR *do_push(); | |
| FILE *nextargv(); | |
| STR *do_fttext(); | |
| int do_slice(); |