diff --git a/source/script/args.c b/source/script/args.c index 0d30a55..fb7c847 100644 --- a/source/script/args.c +++ b/source/script/args.c @@ -263,6 +263,10 @@ Variable_t solveEquation(scriptCtx_t* ctx, lexarToken_t* tokens, u32 len, u8 sho res.integerType = res.integerType & val.integerType; ELIFT(OR) res.integerType = res.integerType | val.integerType; + ELIFT(BitShiftLeft) + res.integerType = res.integerType << val.integerType; + ELIFT(BitShiftRight) + res.integerType = res.integerType >> val.integerType; else return ErrValue(ERRBADOPERATOR); } @@ -396,7 +400,7 @@ Variable_t solveEquation(scriptCtx_t* ctx, lexarToken_t* tokens, u32 len, u8 sho res = val; } } - else if (tokens[i].token >= Plus && tokens[i].token <= Selector) { + else if (tokens[i].token >= Plus && tokens[i].token <= BitShiftRight) { lastToken = tokens[i].token; } } diff --git a/source/script/lexer.c b/source/script/lexer.c index 9b5c4da..ecb3308 100644 --- a/source/script/lexer.c +++ b/source/script/lexer.c @@ -36,8 +36,6 @@ lexarTranslation_t lexarTranslations[] = { {'*', Multiply}, {'/', Division}, {'%', Mod}, - {'<', Smaller}, - {'>', Bigger}, {'!', Not}, {':', Selector}, {')', RBracket}, @@ -46,6 +44,8 @@ lexarTranslation_t lexarTranslations[] = { {'{', LCBracket}, {'=', Equal}, {'[', LSBracket}, + {'<', Smaller}, + {'>', Bigger}, {'\0', 0}, }; @@ -240,6 +240,22 @@ Vector_t runLexar(const char* in, u32 len) { vecAddElement(&vec, makeLexarToken(OR, 0)); } } + ELIFC('>'){ + if (in[1] == '>'){ + vecAddElement(&vec, makeLexarToken(BitShiftRight, 0)); + in++; + } + else + vecAddElement(&vec, makeLexarToken(Bigger, 0)); + } + ELIFC('<'){ + if (in[1] == '<'){ + vecAddElement(&vec, makeLexarToken(BitShiftLeft, 0)); + in++; + } + else + vecAddElement(&vec, makeLexarToken(Smaller, 0)); + } else { int val = 0; diff --git a/source/script/types.h b/source/script/types.h index 44bdb1b..52f8983 100644 --- a/source/script/types.h +++ b/source/script/types.h @@ -38,6 +38,8 @@ enum Tokens { AND, OR, Selector, + BitShiftLeft, + BitShiftRight, EquationSeperator, };