unexpose some APIs
parent
0010511b6e
commit
364ca98e54
|
@ -10,6 +10,52 @@
|
|||
|
||||
namespace cscript {
|
||||
|
||||
static constexpr int MaxArguments = 25;
|
||||
static constexpr int MaxResults = 7;
|
||||
static constexpr int MaxComargs = 12;
|
||||
|
||||
enum {
|
||||
CODE_START = 0,
|
||||
CODE_OFFSET,
|
||||
CODE_NULL, CODE_TRUE, CODE_FALSE, CODE_NOT,
|
||||
CODE_POP,
|
||||
CODE_ENTER, CODE_ENTER_RESULT,
|
||||
CODE_EXIT, CODE_RESULT_ARG,
|
||||
CODE_VAL, CODE_VALI,
|
||||
CODE_DUP,
|
||||
CODE_MACRO,
|
||||
CODE_BOOL,
|
||||
CODE_BLOCK, CODE_EMPTY,
|
||||
CODE_COMPILE, CODE_COND,
|
||||
CODE_FORCE,
|
||||
CODE_RESULT,
|
||||
CODE_IDENT, CODE_IDENTU, CODE_IDENTARG,
|
||||
CODE_COM, CODE_COMD, CODE_COMC, CODE_COMV,
|
||||
CODE_CONC, CODE_CONCW, CODE_CONCM, CODE_DOWN,
|
||||
CODE_SVAR, CODE_SVARM, CODE_SVAR1,
|
||||
CODE_IVAR, CODE_IVAR1, CODE_IVAR2, CODE_IVAR3,
|
||||
CODE_FVAR, CODE_FVAR1,
|
||||
CODE_LOOKUP, CODE_LOOKUPU, CODE_LOOKUPARG,
|
||||
CODE_LOOKUPM, CODE_LOOKUPMU, CODE_LOOKUPMARG,
|
||||
CODE_ALIAS, CODE_ALIASU, CODE_ALIASARG,
|
||||
CODE_CALL, CODE_CALLU, CODE_CALLARG,
|
||||
CODE_PRINT,
|
||||
CODE_LOCAL,
|
||||
CODE_DO, CODE_DOARGS,
|
||||
CODE_JUMP, CODE_JUMP_TRUE, CODE_JUMP_FALSE,
|
||||
CODE_JUMP_RESULT_TRUE, CODE_JUMP_RESULT_FALSE,
|
||||
|
||||
CODE_OP_MASK = 0x3F,
|
||||
CODE_RET = 6,
|
||||
CODE_RET_MASK = 0xC0,
|
||||
|
||||
/* return type flags */
|
||||
RET_NULL = VAL_NULL << CODE_RET,
|
||||
RET_STR = VAL_STR << CODE_RET,
|
||||
RET_INT = VAL_INT << CODE_RET,
|
||||
RET_FLOAT = VAL_FLOAT << CODE_RET,
|
||||
};
|
||||
|
||||
static inline int parseint(char const *s) {
|
||||
return int(strtoul(s, nullptr, 0));
|
||||
}
|
||||
|
@ -134,6 +180,10 @@ struct NullValue: TaggedValue {
|
|||
static TaggedValue no_ret = null_value;
|
||||
|
||||
CsState::CsState(): result(&no_ret) {
|
||||
noalias.id = nullptr;
|
||||
noalias.next = nullptr;
|
||||
noalias.usedargs = (1 << MaxArguments) - 1;
|
||||
noalias.argstack = nullptr;
|
||||
for (int i = 0; i < MaxArguments; ++i) {
|
||||
char buf[32];
|
||||
snprintf(buf, sizeof(buf), "arg%d", i + 1);
|
||||
|
|
|
@ -17,58 +17,12 @@
|
|||
|
||||
namespace cscript {
|
||||
|
||||
static constexpr int MaxArguments = 25;
|
||||
static constexpr int MaxResults = 7;
|
||||
static constexpr int MaxComargs = 12;
|
||||
|
||||
enum {
|
||||
VAL_NULL = 0, VAL_INT, VAL_FLOAT, VAL_STR,
|
||||
VAL_ANY, VAL_CODE, VAL_MACRO, VAL_IDENT, VAL_CSTR,
|
||||
VAL_CANY, VAL_WORD, VAL_POP, VAL_COND
|
||||
};
|
||||
|
||||
enum {
|
||||
CODE_START = 0,
|
||||
CODE_OFFSET,
|
||||
CODE_NULL, CODE_TRUE, CODE_FALSE, CODE_NOT,
|
||||
CODE_POP,
|
||||
CODE_ENTER, CODE_ENTER_RESULT,
|
||||
CODE_EXIT, CODE_RESULT_ARG,
|
||||
CODE_VAL, CODE_VALI,
|
||||
CODE_DUP,
|
||||
CODE_MACRO,
|
||||
CODE_BOOL,
|
||||
CODE_BLOCK, CODE_EMPTY,
|
||||
CODE_COMPILE, CODE_COND,
|
||||
CODE_FORCE,
|
||||
CODE_RESULT,
|
||||
CODE_IDENT, CODE_IDENTU, CODE_IDENTARG,
|
||||
CODE_COM, CODE_COMD, CODE_COMC, CODE_COMV,
|
||||
CODE_CONC, CODE_CONCW, CODE_CONCM, CODE_DOWN,
|
||||
CODE_SVAR, CODE_SVARM, CODE_SVAR1,
|
||||
CODE_IVAR, CODE_IVAR1, CODE_IVAR2, CODE_IVAR3,
|
||||
CODE_FVAR, CODE_FVAR1,
|
||||
CODE_LOOKUP, CODE_LOOKUPU, CODE_LOOKUPARG,
|
||||
CODE_LOOKUPM, CODE_LOOKUPMU, CODE_LOOKUPMARG,
|
||||
CODE_ALIAS, CODE_ALIASU, CODE_ALIASARG,
|
||||
CODE_CALL, CODE_CALLU, CODE_CALLARG,
|
||||
CODE_PRINT,
|
||||
CODE_LOCAL,
|
||||
CODE_DO, CODE_DOARGS,
|
||||
CODE_JUMP, CODE_JUMP_TRUE, CODE_JUMP_FALSE,
|
||||
CODE_JUMP_RESULT_TRUE, CODE_JUMP_RESULT_FALSE,
|
||||
|
||||
CODE_OP_MASK = 0x3F,
|
||||
CODE_RET = 6,
|
||||
CODE_RET_MASK = 0xC0,
|
||||
|
||||
/* return type flags */
|
||||
RET_NULL = VAL_NULL << CODE_RET,
|
||||
RET_STR = VAL_STR << CODE_RET,
|
||||
RET_INT = VAL_INT << CODE_RET,
|
||||
RET_FLOAT = VAL_FLOAT << CODE_RET,
|
||||
};
|
||||
|
||||
enum {
|
||||
ID_UNKNOWN = -1, ID_VAR, ID_FVAR, ID_SVAR, ID_COMMAND, ID_ALIAS,
|
||||
ID_LOCAL, ID_DO, ID_DOARGS, ID_IF, ID_RESULT, ID_NOT, ID_AND, ID_OR
|
||||
|
@ -360,9 +314,7 @@ struct OSTD_EXPORT CsState {
|
|||
Ident *dummy = nullptr;
|
||||
TaggedValue *result = nullptr;
|
||||
|
||||
IdentLink noalias = {
|
||||
nullptr, nullptr, (1 << MaxArguments) - 1, nullptr
|
||||
};
|
||||
IdentLink noalias;
|
||||
IdentLink *stack = &noalias;
|
||||
|
||||
ostd::ConstCharRange src_file;
|
||||
|
|
Loading…
Reference in New Issue