00001
00013 #ifndef NEWTBC_H
00014 #define NEWTBC_H
00015
00016
00017 #include "NewtType.h"
00018 #include "NewtParser.h"
00019
00020
00021
00022
00023
00024 #define kNBCFieldMask 0x07
00025
00026 #define kNBCInstructionsLen 26
00027 #define kNBCSimpleInstructionsLen 8
00028 #define kBCFuncsLen 25
00029
00030
00031
00032
00033 enum {
00034 kNBCPop = 000,
00035 kNBCDup = 001,
00036 kNBCReturn = 002,
00037 kNBCPushSelf = 003,
00038 kNBCSetLexScope = 004,
00039 kNBCIterNext = 005,
00040 kNBCIterDone = 006,
00041 kNBCPopHandlers = 007
00042 };
00043
00044
00045 enum {
00046 kNBCPush = 0030,
00047 kNBCPushConstant = 0040,
00048 kNBCCall = 0050,
00049 kNBCInvoke = 0060,
00050 kNBCSend = 0070,
00051 kNBCSendIfDefined = 0100,
00052 kNBCResend = 0110,
00053 kNBCResendIfDefined = 0120,
00054 kNBCBranch = 0130,
00055 kNBCBranchIfTrue = 0140,
00056 kNBCBranchIfFalse = 0150,
00057 kNBCFindVar = 0160,
00058 kNBCGetVar = 0170,
00059 kNBCMakeFrame = 0200,
00060 kNBCMakeArray = 0210,
00061 kNBCGetPath = 0220,
00062 kNBCSetPath = 0230,
00063 kNBCSetVar = 0240,
00064 kNBCFindAndSetVar = 0250,
00065 kNBCIncrVar = 0260,
00066 kNBCBranchIfLoopNotDone = 0270,
00067 kNBCFreqFunc = 0300,
00068 kNBCNewHandlers = 0310
00069 };
00070
00071
00072 enum {
00073 kNBCAdd = 0,
00074 kNBCSubtract = 1,
00075 kNBCAref = 2,
00076 kNBCSetAref = 3,
00077 kNBCEquals = 4,
00078 kNBCNot = 5,
00079 kNBCNotEqual = 6,
00080 kNBCMultiply = 7,
00081 kNBCDivide = 8,
00082 kNBCDiv = 9,
00083 kNBCLessThan = 10,
00084 kNBCGreaterThan = 11,
00085 kNBCGreaterOrEqual = 12,
00086 kNBCLessOrEqual = 13,
00087 kNBCBitAnd = 14,
00088 kNBCBitOr = 15,
00089 kNBCBitNot = 16,
00090 kNBCNewIterator = 17,
00091 kNBCLength = 18,
00092 kNBCClone = 19,
00093 kNBCSetClass = 20,
00094 kNBCAddArraySlot = 21,
00095 kNBCStringer = 22,
00096 kNBCHasPath = 23,
00097 kNBCClassOf = 24
00098 };
00099
00100
00101
00102
00103 #ifdef __cplusplus
00104 extern "C" {
00105 #endif
00106
00107
00108 newtRef NBCGenBC(nps_syntax_node_t * stree, uint32_t size, bool ret);
00109 newtRef NBCCompileFile(char * s, bool ret);
00110 newtRef NBCCompileStr(char * s, bool ret);
00111 void NBError(int32_t err);
00112
00113
00114 #ifdef __cplusplus
00115 }
00116 #endif
00117
00118
00119 #endif
00120
00121