Annotation of parser3/src/include/pa_operation.h, revision 1.1.2.1
1.1.2.1 ! paf 1: /** @file
! 2: Parser: compiled code related decls.
! 3:
! 4: Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com)
! 5:
! 6: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
! 7: */
! 8:
! 9: #ifndef CODE_H
! 10: #define CODE_H
! 11:
! 12: static const char* IDENT_OPCODE_H="$Date: 2003/01/21 15:51:10 $";
! 13:
! 14: #include "pa_array.h"
! 15:
! 16: // forwards
! 17:
! 18: enum OPCODE;
! 19: class Value;
! 20: class ArrayOperation;
! 21:
! 22: /**
! 23: Parser source code got compiled into intermediate form of Operation-s,
! 24: which is executed afterwards.
! 25:
! 26: It is compiled into Array of Operation-s.
! 27: Each Operation can be either OPCODE or data pointer,
! 28: following the literal-instruction.
! 29: - OP_VALUE followed by Value*
! 30: - OP_CURLY_CODE__STORE_PARAM followed by Array*
! 31: - OP_EXPR_CODE__STORE_PARAM followed by Array*
! 32: - OP_NESTED_CODE followed by Array*
! 33: */
! 34: union Operation {
! 35: void *cast; ///< casting helper
! 36:
! 37: OPCODE code; ///< operation code
! 38: Value* value; ///< not an operation, but rather value stored after argumented op
! 39: ArrayOperation* array; ///< not an operation, but rather code array stored after argumented op
! 40: };
! 41:
! 42:
! 43: class ArrayOperation: public Array<Operation> {
! 44: public:
! 45: /// goes through byte-code and deletes value/array, see execute.C
! 46: override ~ArrayOperation();
! 47: };
! 48: DECLARE_OBJECT_PTR(ArrayOperation);
! 49:
! 50:
! 51: #endif
E-mail: