diff --git a/hyperdbg/script-engine/ScriptEngine.c b/hyperdbg/script-engine/ScriptEngine.c index 27e9ebd7..0515ade6 100644 --- a/hyperdbg/script-engine/ScriptEngine.c +++ b/hyperdbg/script-engine/ScriptEngine.c @@ -261,14 +261,30 @@ void CodeGen(TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, TOKEN Operator) FreeTemp(Op0); FreeTemp(Op1); } - else if (HasTwoOperand(Operator)) + else if (IsType2Func(Operator)) + { + printf("%s\t%s\n", Operator->Value, Op0->Value); + printf("_____________\n"); + + } + else if (IsType1Func(Operator)) + { + Temp = NewTemp(); + Push(MatchedStack, Temp); + TempSymbol = ToSymbol(Temp); + PushSymbol(CodeBuffer, TempSymbol); + printf("%s\t%s,\t%s\n", Operator->Value, Temp->Value, Op0->Value); + printf("_____________\n"); + // Free the operand if it is a temp value + FreeTemp(Op0); + } + else { - Op1 = Pop(MatchedStack); Op1Symbol = ToSymbol(Op1); PushSymbol(CodeBuffer, Op1Symbol); - + Temp = NewTemp(); Push(MatchedStack, Temp); @@ -282,30 +298,12 @@ void CodeGen(TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, TOKEN Operator) // Free the operand if it is a temp value FreeTemp(Op0); FreeTemp(Op1); - } - else - { - if (strcmp(Operator->Value, "@PRINT")) - { - Temp = NewTemp(); - Push(MatchedStack, Temp); - TempSymbol = ToSymbol(Temp); - PushSymbol(CodeBuffer, TempSymbol); - printf("%s\t%s,\t%s\n", Operator->Value, Temp->Value, Op0->Value); - printf("_____________\n"); - } - - else - { - printf("%s\t%s\n", Operator->Value, Op0->Value); - printf("_____________\n"); - } + } - // Free the operand if it is a temp value - FreeTemp(Op0); - } + + return; diff --git a/hyperdbg/script-engine/ScriptEngine.h b/hyperdbg/script-engine/ScriptEngine.h index b21e7260..42de45d4 100644 --- a/hyperdbg/script-engine/ScriptEngine.h +++ b/hyperdbg/script-engine/ScriptEngine.h @@ -41,8 +41,6 @@ __declspec(dllexport) PSYMBOL_BUFFER ScriptEngineParse(char* str); void CodeGen(TOKEN_LIST MatchedStack, PSYMBOL_BUFFER CodeBuffer, TOKEN Operator); -char HasTwoOperand(TOKEN Operator); - unsigned long long int RegisterToInt(char* str); unsigned long long int PseudoRegToInt(char* str); diff --git a/hyperdbg/script-engine/common.c b/hyperdbg/script-engine/common.c index 4b59282c..217c2994 100644 --- a/hyperdbg/script-engine/common.c +++ b/hyperdbg/script-engine/common.c @@ -440,17 +440,30 @@ void FreeTemp(TOKEN Temp) } -char HasTwoOperand(TOKEN Operator) +char IsType1Func(TOKEN Operator) { unsigned int n = ONEOPFUNC1_LENGTH; for (int i = 0; i < n; i++) { if (!strcmp(Operator->Value, OneOpFunc1[i])) { - return 0; + return 1; } } - return 1; + return 0; +} + +char IsType2Func(TOKEN Operator) +{ + unsigned int n = ONEOPFUNC2_LENGTH; + for (int i = 0; i < n; i++) + { + if (!strcmp(Operator->Value, OneOpFunc2[i])) + { + return 1; + } + } + return 0; } /** diff --git a/hyperdbg/script-engine/common.h b/hyperdbg/script-engine/common.h index c2701d64..3218b278 100644 --- a/hyperdbg/script-engine/common.h +++ b/hyperdbg/script-engine/common.h @@ -92,7 +92,7 @@ void FreeTemp(TOKEN Temp); //////////////////////////////////////////////////// -// TOKEN_LIST related functions // +// TOKEN_LIST related functions // //////////////////////////////////////////////////// TOKEN_LIST NewTokenList(void); @@ -118,8 +118,9 @@ int GetTerminalId(TOKEN Token); //////////////////////////////////////////////////// -// Util Functions // +// Util Functions // //////////////////////////////////////////////////// + char IsHex(char c); char IsDecimal(char c); @@ -139,9 +140,12 @@ unsigned long long int HexToInt(char* str); unsigned long long int OctalToInt(char* str); unsigned long long int BinaryToInt(char* str); +//////////////////////////////////////////////////// +// Semantic Rule Related Functions // +//////////////////////////////////////////////////// - - +char IsType1Func(TOKEN Operator); +char IsType2Func(TOKEN Operator); #endif // !COMMON_H diff --git a/hyperdbg/script-engine/parse_table.c b/hyperdbg/script-engine/parse_table.c index de6e45cb..6557924a 100644 --- a/hyperdbg/script-engine/parse_table.c +++ b/hyperdbg/script-engine/parse_table.c @@ -56,6 +56,7 @@ const struct _TOKEN Lhs[RULES_COUNT]= {NON_TERMINAL, "E10"}, {NON_TERMINAL, "E10"}, {NON_TERMINAL, "E10"}, + {NON_TERMINAL, "E10"}, {NON_TERMINAL, "E10"} }; const struct _TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]= @@ -107,6 +108,7 @@ const struct _TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]= {{KEYWORD, "neg"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@NEG"},{SPECIAL_TOKEN, ")"}}, {{KEYWORD, "hi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@HI"},{SPECIAL_TOKEN, ")"}}, {{KEYWORD, "low"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@LOW"},{SPECIAL_TOKEN, ")"}}, + {{KEYWORD, "gg"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@GG"},{SPECIAL_TOKEN, ")"}}, {{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SPECIAL_TOKEN, ")"}}, {{SEMANTIC_RULE, "@PUSH"},{REGISTER, "_register"}}, {{SEMANTIC_RULE, "@PUSH"},{HEX, "_hex"}}, @@ -165,6 +167,7 @@ const unsigned int RhsSize[RULES_COUNT]= 5, 5, 5, +5, 3, 2, 2, @@ -176,97 +179,98 @@ const unsigned int RhsSize[RULES_COUNT]= }; const char* NoneTerminalMap[NONETERMINAL_COUNT]= { -"E8'", -"E4'", "E1'", +"E5'", +"S'", +"E2", +"E0", +"E7", +"E5", +"E9", +"E2'", +"E3", +"C'", +"E4'", +"E8", +"E8'", +"E7'", "C", "E1", -"E8", -"S", -"E3", -"E10", -"E9'", -"E0", -"E2", -"E5'", -"E9", -"E7'", -"E7", "E3'", "E4", -"E0'", -"C'", "E6", -"S'", -"E5", -"E2'", +"E10", +"S", +"E0'", +"E9'", "E6'" }; const char* TerminalMap[TERMINAL_COUNT]= { -"%", -"_hex", -"(", -"hi", -"func", -"low", -"<<", -"|", -"$", -"dw", -"str", -"neg", -"*", -"_pseudo_register", -";", -"&", "_id", -"_binary", -"-", -">>", -"_decimal", -"sizeof", -"dd", +"_register", +"_octal", +"%", +"gg", +"*", "=", -"dq", -")", +"dd", +">>", +"+", +"sizeof", +"_pseudo_register", +"_binary", "^", "db", -"poi", -"_register", -"wstr", -"/", +"_hex", "print", -"+", -"_octal" +"$", +"neg", +"str", +"-", +"&", +"func", +"wstr", +"poi", +"/", +"(", +"|", +";", +"<<", +"hi", +"_decimal", +")", +"dw", +"dq", +"low" }; const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]= { - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,32 ,32 ,-1 ,-1 ,-1 ,-1 ,32 ,-1 ,32 ,32 ,-1 ,-1 ,32 ,32 ,-1 ,-1 ,-1 ,-1 ,-1 ,32 ,32 ,-1 ,-1 ,-1 ,-1 ,31 ,-1 ,32 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,19 ,20 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,20 ,20 ,-1 ,-1 ,-1 ,20 ,-1 ,-1 ,-1 ,-1 ,-1 ,20 ,20 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,11 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,11 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,11 ,10 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,3 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,4 ,-1 ,-1 }, - {-1 ,9 ,9 ,9 ,9 ,9 ,-1 ,-1 ,-1 ,9 ,9 ,9 ,-1 ,9 ,-1 ,-1 ,-1 ,9 ,-1 ,-1 ,9 ,9 ,9 ,-1 ,9 ,-1 ,-1 ,9 ,9 ,9 ,9 ,-1 ,-1 ,-1 ,9 }, - {-1 ,30 ,30 ,30 ,30 ,30 ,-1 ,-1 ,-1 ,30 ,30 ,30 ,-1 ,30 ,-1 ,-1 ,-1 ,30 ,-1 ,-1 ,30 ,30 ,30 ,-1 ,30 ,-1 ,-1 ,30 ,30 ,30 ,30 ,-1 ,-1 ,-1 ,30 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,0 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,0 ,-1 ,-1 }, - {-1 ,15 ,15 ,15 ,15 ,15 ,-1 ,-1 ,-1 ,15 ,15 ,15 ,-1 ,15 ,-1 ,-1 ,-1 ,15 ,-1 ,-1 ,15 ,15 ,15 ,-1 ,15 ,-1 ,-1 ,15 ,15 ,15 ,15 ,-1 ,-1 ,-1 ,15 }, - {-1 ,49 ,47 ,45 ,53 ,46 ,-1 ,-1 ,-1 ,39 ,41 ,44 ,-1 ,54 ,-1 ,-1 ,-1 ,52 ,-1 ,-1 ,50 ,43 ,38 ,-1 ,40 ,-1 ,-1 ,37 ,36 ,48 ,42 ,-1 ,-1 ,-1 ,51 }, - {34 ,-1 ,-1 ,-1 ,-1 ,-1 ,35 ,35 ,-1 ,-1 ,-1 ,-1 ,35 ,-1 ,35 ,35 ,-1 ,-1 ,35 ,35 ,-1 ,-1 ,-1 ,-1 ,-1 ,35 ,35 ,-1 ,-1 ,-1 ,-1 ,35 ,-1 ,35 ,-1 }, - {-1 ,6 ,6 ,6 ,6 ,6 ,-1 ,-1 ,-1 ,6 ,6 ,6 ,-1 ,6 ,-1 ,-1 ,-1 ,6 ,-1 ,-1 ,6 ,6 ,6 ,-1 ,6 ,-1 ,-1 ,6 ,6 ,6 ,6 ,-1 ,-1 ,-1 ,6 }, - {-1 ,12 ,12 ,12 ,12 ,12 ,-1 ,-1 ,-1 ,12 ,12 ,12 ,-1 ,12 ,-1 ,-1 ,-1 ,12 ,-1 ,-1 ,12 ,12 ,12 ,-1 ,12 ,-1 ,-1 ,12 ,12 ,12 ,12 ,-1 ,-1 ,-1 ,12 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,23 ,23 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,23 ,23 ,-1 ,-1 ,-1 ,23 ,-1 ,-1 ,-1 ,-1 ,-1 ,23 ,23 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,22 ,-1 }, - {-1 ,33 ,33 ,33 ,33 ,33 ,-1 ,-1 ,-1 ,33 ,33 ,33 ,-1 ,33 ,-1 ,-1 ,-1 ,33 ,-1 ,-1 ,33 ,33 ,33 ,-1 ,33 ,-1 ,-1 ,33 ,33 ,33 ,33 ,-1 ,-1 ,-1 ,33 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,29 ,29 ,-1 ,-1 ,-1 ,-1 ,28 ,-1 ,29 ,29 ,-1 ,-1 ,29 ,29 ,-1 ,-1 ,-1 ,-1 ,-1 ,29 ,29 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,29 ,-1 }, - {-1 ,27 ,27 ,27 ,27 ,27 ,-1 ,-1 ,-1 ,27 ,27 ,27 ,-1 ,27 ,-1 ,-1 ,-1 ,27 ,-1 ,-1 ,27 ,27 ,27 ,-1 ,27 ,-1 ,-1 ,27 ,27 ,27 ,27 ,-1 ,-1 ,-1 ,27 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,17 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,17 ,17 ,-1 ,-1 ,-1 ,16 ,-1 ,-1 ,-1 ,-1 ,-1 ,17 ,17 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, - {-1 ,18 ,18 ,18 ,18 ,18 ,-1 ,-1 ,-1 ,18 ,18 ,18 ,-1 ,18 ,-1 ,-1 ,-1 ,18 ,-1 ,-1 ,18 ,18 ,18 ,-1 ,18 ,-1 ,-1 ,18 ,18 ,18 ,18 ,-1 ,-1 ,-1 ,18 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,7 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,8 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,8 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,5 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, - {-1 ,24 ,24 ,24 ,24 ,24 ,-1 ,-1 ,-1 ,24 ,24 ,24 ,-1 ,24 ,-1 ,-1 ,-1 ,24 ,-1 ,-1 ,24 ,24 ,24 ,-1 ,24 ,-1 ,-1 ,24 ,24 ,24 ,24 ,-1 ,-1 ,-1 ,24 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,2 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,1 ,-1 ,-1 }, - {-1 ,21 ,21 ,21 ,21 ,21 ,-1 ,-1 ,-1 ,21 ,21 ,21 ,-1 ,21 ,-1 ,-1 ,-1 ,21 ,-1 ,-1 ,21 ,21 ,21 ,-1 ,21 ,-1 ,-1 ,21 ,21 ,21 ,21 ,-1 ,-1 ,-1 ,21 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,14 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,14 ,13 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,14 ,14 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, - {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,26 ,26 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,26 ,26 ,-1 ,-1 ,25 ,26 ,-1 ,-1 ,-1 ,-1 ,-1 ,26 ,26 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,26 ,-1 } + {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,10 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,11 ,11 ,-1 ,-1 ,-1 ,11 ,-1 ,-1 ,-1 }, + {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,23 ,22 ,-1 ,-1 ,-1 ,23 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,23 ,-1 ,-1 ,-1 ,-1 ,-1 ,23 ,23 ,23 ,-1 ,-1 ,23 ,-1 ,-1 ,-1 }, + {1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,1 ,2 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, + {-1 ,12 ,12 ,-1 ,12 ,-1 ,-1 ,12 ,-1 ,-1 ,12 ,12 ,12 ,-1 ,12 ,12 ,-1 ,-1 ,12 ,12 ,-1 ,-1 ,12 ,12 ,12 ,-1 ,12 ,-1 ,-1 ,-1 ,12 ,12 ,-1 ,12 ,12 ,12 }, + {-1 ,6 ,6 ,-1 ,6 ,-1 ,-1 ,6 ,-1 ,-1 ,6 ,6 ,6 ,-1 ,6 ,6 ,-1 ,-1 ,6 ,6 ,-1 ,-1 ,6 ,6 ,6 ,-1 ,6 ,-1 ,-1 ,-1 ,6 ,6 ,-1 ,6 ,6 ,6 }, + {-1 ,27 ,27 ,-1 ,27 ,-1 ,-1 ,27 ,-1 ,-1 ,27 ,27 ,27 ,-1 ,27 ,27 ,-1 ,-1 ,27 ,27 ,-1 ,-1 ,27 ,27 ,27 ,-1 ,27 ,-1 ,-1 ,-1 ,27 ,27 ,-1 ,27 ,27 ,27 }, + {-1 ,21 ,21 ,-1 ,21 ,-1 ,-1 ,21 ,-1 ,-1 ,21 ,21 ,21 ,-1 ,21 ,21 ,-1 ,-1 ,21 ,21 ,-1 ,-1 ,21 ,21 ,21 ,-1 ,21 ,-1 ,-1 ,-1 ,21 ,21 ,-1 ,21 ,21 ,21 }, + {-1 ,33 ,33 ,-1 ,33 ,-1 ,-1 ,33 ,-1 ,-1 ,33 ,33 ,33 ,-1 ,33 ,33 ,-1 ,-1 ,33 ,33 ,-1 ,-1 ,33 ,33 ,33 ,-1 ,33 ,-1 ,-1 ,-1 ,33 ,33 ,-1 ,33 ,33 ,33 }, + {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,14 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,13 ,-1 ,-1 ,-1 ,-1 ,-1 ,14 ,14 ,-1 ,-1 ,-1 ,14 ,-1 ,-1 ,-1 }, + {-1 ,15 ,15 ,-1 ,15 ,-1 ,-1 ,15 ,-1 ,-1 ,15 ,15 ,15 ,-1 ,15 ,15 ,-1 ,-1 ,15 ,15 ,-1 ,-1 ,15 ,15 ,15 ,-1 ,15 ,-1 ,-1 ,-1 ,15 ,15 ,-1 ,15 ,15 ,15 }, + {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,5 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, + {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,20 ,-1 ,-1 ,-1 ,-1 ,20 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,20 ,-1 ,-1 ,-1 ,-1 ,-1 ,20 ,20 ,19 ,-1 ,-1 ,20 ,-1 ,-1 ,-1 }, + {-1 ,30 ,30 ,-1 ,30 ,-1 ,-1 ,30 ,-1 ,-1 ,30 ,30 ,30 ,-1 ,30 ,30 ,-1 ,-1 ,30 ,30 ,-1 ,-1 ,30 ,30 ,30 ,-1 ,30 ,-1 ,-1 ,-1 ,30 ,30 ,-1 ,30 ,30 ,30 }, + {-1 ,-1 ,-1 ,-1 ,-1 ,32 ,-1 ,-1 ,32 ,32 ,-1 ,-1 ,-1 ,32 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,32 ,32 ,-1 ,-1 ,-1 ,31 ,-1 ,32 ,32 ,32 ,-1 ,-1 ,32 ,-1 ,-1 ,-1 }, + {-1 ,-1 ,-1 ,-1 ,-1 ,28 ,-1 ,-1 ,29 ,29 ,-1 ,-1 ,-1 ,29 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,29 ,29 ,-1 ,-1 ,-1 ,-1 ,-1 ,29 ,29 ,29 ,-1 ,-1 ,29 ,-1 ,-1 ,-1 }, + {3 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,4 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, + {-1 ,9 ,9 ,-1 ,9 ,-1 ,-1 ,9 ,-1 ,-1 ,9 ,9 ,9 ,-1 ,9 ,9 ,-1 ,-1 ,9 ,9 ,-1 ,-1 ,9 ,9 ,9 ,-1 ,9 ,-1 ,-1 ,-1 ,9 ,9 ,-1 ,9 ,9 ,9 }, + {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,16 ,-1 ,-1 ,-1 ,-1 ,17 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,17 ,-1 ,-1 ,-1 ,-1 ,-1 ,17 ,17 ,-1 ,-1 ,-1 ,17 ,-1 ,-1 ,-1 }, + {-1 ,18 ,18 ,-1 ,18 ,-1 ,-1 ,18 ,-1 ,-1 ,18 ,18 ,18 ,-1 ,18 ,18 ,-1 ,-1 ,18 ,18 ,-1 ,-1 ,18 ,18 ,18 ,-1 ,18 ,-1 ,-1 ,-1 ,18 ,18 ,-1 ,18 ,18 ,18 }, + {-1 ,24 ,24 ,-1 ,24 ,-1 ,-1 ,24 ,-1 ,-1 ,24 ,24 ,24 ,-1 ,24 ,24 ,-1 ,-1 ,24 ,24 ,-1 ,-1 ,24 ,24 ,24 ,-1 ,24 ,-1 ,-1 ,-1 ,24 ,24 ,-1 ,24 ,24 ,24 }, + {-1 ,49 ,52 ,-1 ,47 ,-1 ,-1 ,38 ,-1 ,-1 ,43 ,55 ,53 ,-1 ,37 ,50 ,-1 ,-1 ,44 ,41 ,-1 ,-1 ,54 ,42 ,36 ,-1 ,48 ,-1 ,-1 ,-1 ,45 ,51 ,-1 ,39 ,40 ,46 }, + {0 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,0 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 }, + {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,7 ,8 ,-1 ,-1 ,-1 ,8 ,-1 ,-1 ,-1 }, + {-1 ,-1 ,-1 ,34 ,-1 ,35 ,-1 ,-1 ,35 ,35 ,-1 ,-1 ,-1 ,35 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,35 ,35 ,-1 ,-1 ,-1 ,35 ,-1 ,35 ,35 ,35 ,-1 ,-1 ,35 ,-1 ,-1 ,-1 }, + {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,26 ,26 ,-1 ,-1 ,-1 ,26 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,25 ,26 ,-1 ,-1 ,-1 ,-1 ,-1 ,26 ,26 ,26 ,-1 ,-1 ,26 ,-1 ,-1 ,-1 } }; const char* KeywordList[]= { "print", @@ -280,7 +284,8 @@ const char* KeywordList[]= { "sizeof", "neg", "hi", -"low" +"low", +"gg" }; const char* OneOpFunc1[] = { "@POI", @@ -294,6 +299,7 @@ const char* OneOpFunc1[] = { "@NEG", "@HI", "@LOW", +"@GG", }; const char* OneOpFunc2[] = { "@PRINT" diff --git a/hyperdbg/script-engine/parse_table.h b/hyperdbg/script-engine/parse_table.h index 6f14a0a3..e5350d1b 100644 --- a/hyperdbg/script-engine/parse_table.h +++ b/hyperdbg/script-engine/parse_table.h @@ -1,13 +1,13 @@ #ifndef PARSE_TABLE_H #define PARSE_TABLE_H #include "common.h" -#define RULES_COUNT 55 -#define TERMINAL_COUNT 35 +#define RULES_COUNT 56 +#define TERMINAL_COUNT 36 #define NONETERMINAL_COUNT 25 #define START_VARIABLE "S" #define MAX_RHS_LEN 6 -#define KEYWORD_LIST_LENGTH 12 -#define ONEOPFUNC1_LENGTH 11 +#define KEYWORD_LIST_LENGTH 13 +#define ONEOPFUNC1_LENGTH 12 #define ONEOPFUNC2_LENGTH 1 extern const struct _TOKEN Lhs[RULES_COUNT]; extern const struct _TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]; diff --git a/hyperdbg/script-engine/python/Grammar.txt b/hyperdbg/script-engine/python/Grammar.txt index 13d540d5..26aab0bd 100644 --- a/hyperdbg/script-engine/python/Grammar.txt +++ b/hyperdbg/script-engine/python/Grammar.txt @@ -1,5 +1,5 @@ # OneOpFunc1 input is a number and returns a number. -.OneOpFunc1->poi db dd dw dq str wstr sizeof neg hi low +.OneOpFunc1->poi db dd dw dq str wstr sizeof neg hi low # OneOpFunc2 input is a number. .OneOpFunc2->print