Annotation of parser3/src/include/code.h, revision 1.22
1.1 paf 1: /*
1.19 paf 2: Parser
3: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
1.20 paf 4: Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
1.19 paf 5:
1.22 ! paf 6: $Id: code.h,v 1.21 2001/03/13 14:28:50 paf Exp $
1.1 paf 7: */
8:
9: #ifndef CODE_H
10: #define CODE_H
11:
1.2 paf 12: #include "pa_string.h"
13: #include "pa_array.h"
14:
1.1 paf 15: enum OPCODE {
1.10 paf 16: // literals
1.16 paf 17: OP_VALUE, OP_CODE__STORE_PARAM,
1.10 paf 18:
19: // actions
1.8 paf 20: OP_WITH_SELF, OP_WITH_ROOT, OP_WITH_READ, OP_WITH_WRITE,
1.16 paf 21: OP_GET_CLASS,
1.17 paf 22: OP_CONSTRUCT_VALUE, OP_CONSTRUCT_EXPR,
1.22 ! paf 23: OP_WRITE_VALUE, OP_WRITE_EXPR_RESULT, OP_STRING__WRITE,
1.5 paf 24: OP_GET_ELEMENT, OP_GET_ELEMENT__WRITE,
1.1 paf 25: OP_CREATE_EWPOOL, OP_REDUCE_EWPOOL,
26: OP_CREATE_RWPOOL, OP_REDUCE_RWPOOL,
1.10 paf 27: OP_CREATE_SWPOOL, OP_REDUCE_SWPOOL,
1.1 paf 28: OP_GET_METHOD_FRAME,
29: OP_STORE_PARAM,
1.10 paf 30: OP_CALL,
31:
32: // expression ops: unary
33: OP_NEG, OP_INV, OP_NOT, OP_DEF, OP_IN, OP_FEXISTS,
34: // expression ops: binary
1.11 paf 35: OP_SUB, OP_ADD, OP_MUL, OP_DIV, OP_MOD,
1.14 paf 36: OP_BIN_AND, OP_BIN_OR, OP_BIN_XOR,
37: OP_LOG_AND, OP_LOG_OR, OP_LOG_XOR,
1.10 paf 38: OP_NUM_LT, OP_NUM_GT, OP_NUM_LE, OP_NUM_GE, OP_NUM_EQ, OP_NUM_NE,
1.21 paf 39: OP_STR_LT, OP_STR_GT, OP_STR_LE, OP_STR_GE, OP_STR_EQ, OP_STR_NE,
40: OP_IS
1.11 paf 41: };
1.2 paf 42:
43: union Operation {
44: void *cast; // casting helper
45:
46: OPCODE code;
47: String *string;
48: Array *array;
1.1 paf 49: };
50:
51: #endif
E-mail: