diff --git a/hyperdbg/hprdbgctrl/code/debugger/script-engine-wrapper/script-engine-wrapper.cpp b/hyperdbg/hprdbgctrl/code/debugger/script-engine-wrapper/script-engine-wrapper.cpp
index 4d855637..6fc0bb77 100644
--- a/hyperdbg/hprdbgctrl/code/debugger/script-engine-wrapper/script-engine-wrapper.cpp
+++ b/hyperdbg/hprdbgctrl/code/debugger/script-engine-wrapper/script-engine-wrapper.cpp
@@ -320,6 +320,14 @@ ScriptEngineEvalWrapper(PGUEST_REGS GuestRegs,
if (!g_ScriptGlobalVariables)
{
g_ScriptGlobalVariables = (UINT64 *)malloc(MAX_VAR_COUNT * sizeof(UINT64));
+
+ if (g_ScriptGlobalVariables == NULL)
+ {
+ ShowMessages("err, could not allocate memory for user-mode global variables");
+
+ return;
+ }
+
RtlZeroMemory(g_ScriptGlobalVariables, MAX_VAR_COUNT * sizeof(UINT64));
}
@@ -331,6 +339,16 @@ ScriptEngineEvalWrapper(PGUEST_REGS GuestRegs,
if (!g_ScriptLocalVariables)
{
g_ScriptLocalVariables = (UINT64 *)malloc(MAX_VAR_COUNT * sizeof(UINT64));
+
+ if (g_ScriptLocalVariables == NULL)
+ {
+ free(g_ScriptGlobalVariables);
+
+ ShowMessages("err, could not allocate memory for user-mode local variables");
+
+ return;
+ }
+
RtlZeroMemory(g_ScriptLocalVariables, MAX_VAR_COUNT * sizeof(UINT64));
}
@@ -342,6 +360,17 @@ ScriptEngineEvalWrapper(PGUEST_REGS GuestRegs,
if (!g_ScriptTempVariables)
{
g_ScriptTempVariables = (UINT64 *)malloc(MAX_TEMP_COUNT * sizeof(UINT64));
+
+ if (g_ScriptTempVariables == NULL)
+ {
+ free(g_ScriptGlobalVariables);
+ free(g_ScriptLocalVariables);
+
+ ShowMessages("err, could not allocate memory for user-mode temp variables");
+
+ return;
+ }
+
RtlZeroMemory(g_ScriptTempVariables, MAX_TEMP_COUNT * sizeof(UINT64));
}
@@ -498,9 +527,22 @@ AllocateStructForCasting(PALLOCATED_MEMORY_FOR_SCRIPT_ENGINE_CASTING Allocations
WCHAR MyString1[40] = L"Hi come from stupid struct 1!";
UINT32 SizeOfMyString1 = (UINT32)wcslen(MyString1) * sizeof(WCHAR) + 2;
PUNICODE_STRING UnicodeStr1 = (PUNICODE_STRING)malloc(sizeof(UNICODE_STRING));
- AllocationsForCastings->Buff1 = (CHAR *)UnicodeStr1;
- WCHAR * Buff1 = (WCHAR *)malloc(SizeOfMyString1);
- AllocationsForCastings->Buff2 = (CHAR *)Buff1;
+
+ if (UnicodeStr1 == NULL)
+ {
+ return NULL;
+ }
+
+ AllocationsForCastings->Buff1 = (CHAR *)UnicodeStr1;
+ WCHAR * Buff1 = (WCHAR *)malloc(SizeOfMyString1);
+
+ if (Buff1 == NULL)
+ {
+ free(UnicodeStr1);
+ return NULL;
+ }
+
+ AllocationsForCastings->Buff2 = (CHAR *)Buff1;
RtlZeroMemory(Buff1, SizeOfMyString1);
UnicodeStr1->Buffer = Buff1;
UnicodeStr1->Length = UnicodeStr1->MaximumLength = SizeOfMyString1;
@@ -512,9 +554,28 @@ AllocateStructForCasting(PALLOCATED_MEMORY_FOR_SCRIPT_ENGINE_CASTING Allocations
WCHAR MyString2[40] = L"Goodbye I'm at stupid struct 2!";
UINT32 SizeOfMyString2 = (UINT32)wcslen(MyString2) * sizeof(WCHAR) + 2;
PUNICODE_STRING UnicodeStr2 = (PUNICODE_STRING)malloc(sizeof(UNICODE_STRING));
- AllocationsForCastings->Buff3 = (CHAR *)UnicodeStr2;
- WCHAR * Buff2 = (WCHAR *)malloc(SizeOfMyString2);
- AllocationsForCastings->Buff4 = (CHAR *)Buff2;
+
+ if (UnicodeStr2 == NULL)
+ {
+ free(UnicodeStr1);
+ free(Buff1);
+
+ return NULL;
+ }
+
+ AllocationsForCastings->Buff3 = (CHAR *)UnicodeStr2;
+ WCHAR * Buff2 = (WCHAR *)malloc(SizeOfMyString2);
+
+ if (Buff2 == NULL)
+ {
+ free(UnicodeStr1);
+ free(Buff1);
+ free(UnicodeStr2);
+
+ return NULL;
+ }
+
+ AllocationsForCastings->Buff4 = (CHAR *)Buff2;
RtlZeroMemory(Buff2, SizeOfMyString2);
UnicodeStr2->Buffer = Buff2;
UnicodeStr2->Length = UnicodeStr2->MaximumLength = SizeOfMyString2;
@@ -524,6 +585,17 @@ AllocateStructForCasting(PALLOCATED_MEMORY_FOR_SCRIPT_ENGINE_CASTING Allocations
// Allocate STUPID_STRUCT1
//
PSTUPID_STRUCT1 StupidStruct1 = (PSTUPID_STRUCT1)malloc(sizeof(STUPID_STRUCT1));
+
+ if (StupidStruct1 == NULL)
+ {
+ free(UnicodeStr1);
+ free(Buff1);
+ free(UnicodeStr2);
+ free(Buff2);
+
+ return NULL;
+ }
+
AllocationsForCastings->Buff5 = (CHAR *)StupidStruct1;
StupidStruct1->Flag32 = 0x3232;
StupidStruct1->Flag64 = 0x6464;
@@ -534,6 +606,18 @@ AllocateStructForCasting(PALLOCATED_MEMORY_FOR_SCRIPT_ENGINE_CASTING Allocations
// Allocate STUPID_STRUCT2
//
PSTUPID_STRUCT2 StupidStruct2 = (PSTUPID_STRUCT2)malloc(sizeof(STUPID_STRUCT2));
+
+ if (StupidStruct2 == NULL)
+ {
+ free(UnicodeStr1);
+ free(Buff1);
+ free(UnicodeStr2);
+ free(Buff2);
+ free(StupidStruct1);
+
+ return NULL;
+ }
+
AllocationsForCastings->Buff6 = (CHAR *)StupidStruct2;
StupidStruct2->Sina32 = 0x32;
@@ -566,6 +650,12 @@ ScriptEngineWrapperTestParser(const string & Expr)
} TEST_STRUCT, *PTEST_STRUCT;
PTEST_STRUCT TestStruct = (PTEST_STRUCT)malloc(sizeof(TEST_STRUCT));
+
+ if (TestStruct == NULL)
+ {
+ return;
+ }
+
RtlZeroMemory(TestStruct, sizeof(TEST_STRUCT));
TestStruct->Var1 = 0x41414141;
@@ -577,8 +667,16 @@ ScriptEngineWrapperTestParser(const string & Expr)
wchar_t testw[] =
L"A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 "
L"9 a b c d e f g h i j k l m n o p q r s t u v w x y z";
+
char * RspReg = (char *)malloc(0x100);
- memcpy(RspReg, testw, 0x100);
+
+ if (RspReg == NULL)
+ {
+ ShowMessages("err, unable to allocate stack for script engine tests");
+ return;
+ }
+
+ memcpy(RspReg, testw, sizeof(testw));
GuestRegs.rax = 0x1;
GuestRegs.rcx = (UINT64)AllocateStructForCasting(&AllocationsForCastings); // TestStruct
diff --git a/hyperdbg/script-engine/code/common.c b/hyperdbg/script-engine/code/common.c
index 9262e0f3..b5e4c2ef 100644
--- a/hyperdbg/script-engine/code/common.c
+++ b/hyperdbg/script-engine/code/common.c
@@ -74,7 +74,7 @@ NewToken(TOKEN_TYPE Type, char * Value)
//
// Init fields
//
- unsigned int Len = strlen(Value);
+ unsigned int Len = (unsigned int)strlen(Value);
Token->Type = Type;
Token->Len = Len;
Token->MaxLen = Len;
@@ -670,7 +670,7 @@ NewStackTemp(PSCRIPT_ENGINE_ERROR_TYPE Error)
void
FreeTemp(PTOKEN Temp)
{
- int id = DecimalToInt(Temp->Value);
+ int id = (int)DecimalToInt(Temp->Value);
if (Temp->Type == TEMP)
{
TempMap[id] = 0;
@@ -1336,11 +1336,11 @@ SetType(unsigned long long * Val, unsigned char Type)
* @param str
* @return unsigned long long int
*/
-unsigned long long int
+unsigned long long
DecimalToInt(char * str)
{
- unsigned long long int Acc = 0;
- size_t Len;
+ unsigned long long Acc = 0;
+ size_t Len;
Len = strlen(str);
for (int i = 0; i < Len; i++)
@@ -1355,13 +1355,13 @@ DecimalToInt(char * str)
* @brief Converts an decimal string to a signed integer
*
* @param str
- * @return unsigned long long int
+ * @return unsigned long long
*/
-unsigned long long int
+unsigned long long
DecimalToSignedInt(char * str)
{
- long long int Acc = 0;
- size_t Len;
+ long long Acc = 0;
+ size_t Len;
if (str[0] == '-')
{
@@ -1389,14 +1389,14 @@ DecimalToSignedInt(char * str)
* @brief Converts an hexadecimal string to integer
*
* @param str
- * @return unsigned long long int
+ * @return unsigned long long
*/
-unsigned long long int
+unsigned long long
HexToInt(char * str)
{
- char temp;
- size_t len = strlen(str);
- unsigned long long int Acc = 0;
+ char temp;
+ size_t len = strlen(str);
+ unsigned long long Acc = 0;
for (int i = 0; i < len; i++)
{
Acc <<= 4;
@@ -1422,13 +1422,13 @@ HexToInt(char * str)
* @brief Converts an octal string to integer
*
* @param str
- * @return unsigned long long int
+ * @return unsigned long long
*/
-unsigned long long int
+unsigned long long
OctalToInt(char * str)
{
- size_t Len;
- unsigned long long int Acc = 0;
+ size_t Len;
+ unsigned long long Acc = 0;
Len = strlen(str);
@@ -1444,13 +1444,13 @@ OctalToInt(char * str)
* @brief Converts a binary string to integer
*
* @param str
- * @return unsigned long long int
+ * @return unsigned long long
*/
-unsigned long long int
+unsigned long long
BinaryToInt(char * str)
{
- size_t Len;
- unsigned long long int Acc = 0;
+ size_t Len;
+ unsigned long long Acc = 0;
Len = strlen(str);
diff --git a/hyperdbg/script-engine/code/parse-table.c b/hyperdbg/script-engine/code/parse-table.c
index 88a4aa5d..739fdafb 100644
--- a/hyperdbg/script-engine/code/parse-table.c
+++ b/hyperdbg/script-engine/code/parse-table.c
@@ -204,211 +204,210 @@ const struct _TOKEN Lhs[RULES_COUNT]=
{NON_TERMINAL, "WstringNumber"},
{NON_TERMINAL, "WstringNumber"}
};
-const struct _TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
-{
- {{NON_TERMINAL, "STATEMENT"},{NON_TERMINAL, "S"}},
- {{SPECIAL_TOKEN, "{"},{NON_TERMINAL, "STATEMENT"},{NON_TERMINAL, "S"},{SPECIAL_TOKEN, "}"}},
- {{EPSILON, "eps"}},
- {{NON_TERMINAL, "IF_STATEMENT"}},
- {{NON_TERMINAL, "WHILE_STATEMENT"}},
- {{NON_TERMINAL, "DO_WHILE_STATEMENT"}},
- {{NON_TERMINAL, "FOR_STATEMENT"}},
- {{NON_TERMINAL, "L_VALUE"},{NON_TERMINAL, "L_VALUE2"}},
- {{NON_TERMINAL, "CALL_FUNC_STATEMENT"},{SPECIAL_TOKEN, ";"}},
- {{KEYWORD, "break"},{SEMANTIC_RULE, "@BREAK"},{SPECIAL_TOKEN, ";"}},
- {{KEYWORD, "continue"},{SEMANTIC_RULE, "@CONTINUE"},{SPECIAL_TOKEN, ";"}},
- {{NON_TERMINAL, "VARIABLE_TYPE3"}},
- {{NON_TERMINAL, "STATEMENT2"},{NON_TERMINAL, "S2"}},
- {{SPECIAL_TOKEN, "{"},{NON_TERMINAL, "STATEMENT2"},{NON_TERMINAL, "S2"},{SPECIAL_TOKEN, "}"}},
- {{EPSILON, "eps"}},
- {{NON_TERMINAL, "IF_STATEMENT"}},
- {{NON_TERMINAL, "WHILE_STATEMENT"}},
- {{NON_TERMINAL, "DO_WHILE_STATEMENT"}},
- {{NON_TERMINAL, "FOR_STATEMENT"}},
- {{NON_TERMINAL, "L_VALUE"},{NON_TERMINAL, "L_VALUE2"}},
- {{NON_TERMINAL, "CALL_FUNC_STATEMENT"},{SPECIAL_TOKEN, ";"}},
- {{KEYWORD, "break"},{SEMANTIC_RULE, "@BREAK"},{SPECIAL_TOKEN, ";"}},
- {{KEYWORD, "continue"},{SEMANTIC_RULE, "@CONTINUE"},{SPECIAL_TOKEN, ";"}},
- {{NON_TERMINAL, "VARIABLE_TYPE1"},{NON_TERMINAL, "VARIABLE_TYPE2"},{NON_TERMINAL, "L_VALUE"},{SPECIAL_TOKEN, "="},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@MOV"},{SPECIAL_TOKEN, ";"}},
- {{KEYWORD, "return"},{NON_TERMINAL, "RETURN"},{SPECIAL_TOKEN, ";"}},
- {{EPSILON, "eps"},{SEMANTIC_RULE, "@RETURN_OF_USER_DEFINED_FUNCTION_WITHOUT_VALUE"}},
- {{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@RETURN_OF_USER_DEFINED_FUNCTION_WITH_VALUE"}},
- {{SEMANTIC_RULE, "@VOID"},{KEYWORD, "void"}},
- {{SEMANTIC_RULE, "@BOOL"},{KEYWORD, "bool"}},
- {{SEMANTIC_RULE, "@CHAR"},{KEYWORD, "char"}},
- {{SEMANTIC_RULE, "@SHORT"},{KEYWORD, "short"}},
- {{SEMANTIC_RULE, "@INT"},{KEYWORD, "int"}},
- {{SEMANTIC_RULE, "@LONG"},{KEYWORD, "long"}},
- {{SEMANTIC_RULE, "@UNSIGNED"},{KEYWORD, "unsigned"}},
- {{SEMANTIC_RULE, "@SIGNED"},{KEYWORD, "signed"}},
- {{SEMANTIC_RULE, "@FLOAT"},{KEYWORD, "float"}},
- {{SEMANTIC_RULE, "@DOUBLE"},{KEYWORD, "double"}},
- {{NON_TERMINAL, "VARIABLE_TYPE1"}},
- {{EPSILON, "eps"}},
- {{NON_TERMINAL, "VARIABLE_TYPE1"},{NON_TERMINAL, "VARIABLE_TYPE2"},{NON_TERMINAL, "L_VALUE"},{NON_TERMINAL, "VARIABLE_TYPE4"}},
- {{SPECIAL_TOKEN, "="},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@MOV"},{SPECIAL_TOKEN, ";"}},
- {{SEMANTIC_RULE, "@START_OF_USER_DEFINED_FUNCTION"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "VARIABLE_TYPE5"},{SPECIAL_TOKEN, ")"},{SPECIAL_TOKEN, "{"},{NON_TERMINAL, "S2"},{SEMANTIC_RULE, "@END_OF_USER_DEFINED_FUNCTION"},{SPECIAL_TOKEN, "}"}},
- {{EPSILON, "eps"}},
- {{NON_TERMINAL, "VARIABLE_TYPE1"},{NON_TERMINAL, "VARIABLE_TYPE2"},{NON_TERMINAL, "L_VALUE"},{SEMANTIC_RULE, "@FUNCTION_PARAMETER"},{NON_TERMINAL, "VARIABLE_TYPE6"}},
- {{SPECIAL_TOKEN, ","},{NON_TERMINAL, "VARIABLE_TYPE1"},{NON_TERMINAL, "VARIABLE_TYPE2"},{NON_TERMINAL, "L_VALUE"},{SEMANTIC_RULE, "@FUNCTION_PARAMETER"},{NON_TERMINAL, "VARIABLE_TYPE6"}},
- {{EPSILON, "eps"}},
- {{NON_TERMINAL, "ASSIGNMENT_STATEMENT'"},{SPECIAL_TOKEN, ";"}},
- {{SEMANTIC_RULE, "@CALL_USER_DEFINED_FUNCTION"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "CALL_USER_DEFINED_FUNCTION_PARAMETER"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@END_OF_CALLING_USER_DEFINED_FUNCTION_WITHOUT_RETURNING_VALUE"},{SPECIAL_TOKEN, ";"}},
- {{EPSILON, "eps"}},
- {{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@CALL_USER_DEFINED_FUNCTION_PARAMETER"},{NON_TERMINAL, "CALL_USER_DEFINED_FUNCTION_PARAMETER2"}},
- {{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@CALL_USER_DEFINED_FUNCTION_PARAMETER"},{NON_TERMINAL, "CALL_USER_DEFINED_FUNCTION_PARAMETER2"}},
- {{EPSILON, "eps"}},
- {{SPECIAL_TOKEN, "++"},{SEMANTIC_RULE, "@INC"}},
- {{SPECIAL_TOKEN, "--"},{SEMANTIC_RULE, "@DEC"}},
- {{SPECIAL_TOKEN, "="},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@MOV"}},
- {{KEYWORD, "print"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@PRINT"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "formats"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@FORMATS"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "event_enable"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_ENABLE"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "event_disable"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_DISABLE"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "event_clear"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_CLEAR"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "test_statement"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@TEST_STATEMENT"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "spinlock_lock"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@SPINLOCK_LOCK"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "spinlock_unlock"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@SPINLOCK_UNLOCK"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "event_sc"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_SC"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "printf"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "STRING"},{SEMANTIC_RULE, "@VARGSTART"},{NON_TERMINAL, "VA"},{SEMANTIC_RULE, "@PRINTF"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "pause"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@PAUSE"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "flush"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@FLUSH"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "event_trace_step"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_STEP"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "event_trace_step_in"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_STEP_IN"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "event_trace_step_out"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_STEP_OUT"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "event_trace_instrumentation_step"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_INSTRUMENTATION_STEP"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "event_trace_instrumentation_step_in"},{SPECIAL_TOKEN, "("},{SEMANTIC_RULE, "@EVENT_TRACE_INSTRUMENTATION_STEP_IN"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "spinlock_lock_custom_wait"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@SPINLOCK_LOCK_CUSTOM_WAIT"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "event_inject"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_INJECT"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "db"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DB"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "dd"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DD"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "dw"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DW"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "dq"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DQ"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "neg"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@NEG"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "hi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@HI"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "low"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@LOW"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "not"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@NOT"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "check_address"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@CHECK_ADDRESS"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "disassemble_len"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "disassemble_len32"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN32"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "disassemble_len64"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN64"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "interlocked_increment"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "interlocked_decrement"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "reference"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@REFERENCE"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "physical_to_virtual"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@PHYSICAL_TO_VIRTUAL"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "virtual_to_physical"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@VIRTUAL_TO_PHYSICAL"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "ed"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@ED"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "eb"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EB"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "eq"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EQ"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "interlocked_exchange"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@INTERLOCKED_EXCHANGE"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "interlocked_exchange_add"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@INTERLOCKED_EXCHANGE_ADD"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "interlocked_compare_exchange"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@INTERLOCKED_COMPARE_EXCHANGE"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "strlen"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "StringNumber"},{SEMANTIC_RULE, "@STRLEN"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "strcmp"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "StringNumber"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "StringNumber"},{SEMANTIC_RULE, "@STRCMP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "memcmp"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "StringNumber"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "StringNumber"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@MEMCMP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "wcslen"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "WstringNumber"},{SEMANTIC_RULE, "@WCSLEN"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "wcscmp"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "WstringNumber"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "WstringNumber"},{SEMANTIC_RULE, "@WCSCMP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}},
- {{KEYWORD, "event_inject_error_code"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_INJECT_ERROR_CODE"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "memcpy"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@MEMCPY"},{SPECIAL_TOKEN, ")"}},
- {{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{NON_TERMINAL, "VA"}},
- {{EPSILON, "eps"}},
- {{KEYWORD, "if"},{SEMANTIC_RULE, "@START_OF_IF"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "BOOLEAN_EXPRESSION"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@JZ"},{SPECIAL_TOKEN, "{"},{NON_TERMINAL, "S2"},{SPECIAL_TOKEN, "}"},{NON_TERMINAL, "ELSIF_STATEMENT"},{NON_TERMINAL, "ELSE_STATEMENT"},{SEMANTIC_RULE, "@END_OF_IF"},{NON_TERMINAL, "END_OF_IF"}},
- {{KEYWORD, "elsif"},{SEMANTIC_RULE, "@JMP_TO_END_AND_JZCOMPLETED"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "BOOLEAN_EXPRESSION"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@JZ"},{SPECIAL_TOKEN, "{"},{NON_TERMINAL, "S2"},{SPECIAL_TOKEN, "}"},{NON_TERMINAL, "ELSIF_STATEMENT"}},
- {{SEMANTIC_RULE, "@JMP_TO_END_AND_JZCOMPLETED"},{NON_TERMINAL, "ELSIF_STATEMENT'"}},
- {{EPSILON, "eps"}},
- {{KEYWORD, "else"},{SPECIAL_TOKEN, "{"},{NON_TERMINAL, "S2"},{SPECIAL_TOKEN, "}"}},
- {{EPSILON, "eps"}},
- {{EPSILON, "eps"}},
- {{KEYWORD, "while"},{SEMANTIC_RULE, "@START_OF_WHILE"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "BOOLEAN_EXPRESSION"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@START_OF_WHILE_COMMANDS"},{SPECIAL_TOKEN, "{"},{NON_TERMINAL, "S2"},{SEMANTIC_RULE, "@END_OF_WHILE"},{SPECIAL_TOKEN, "}"}},
- {{KEYWORD, "do"},{SEMANTIC_RULE, "@START_OF_DO_WHILE"},{SPECIAL_TOKEN, "{"},{NON_TERMINAL, "S2"},{SPECIAL_TOKEN, "}"},{KEYWORD, "while"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "BOOLEAN_EXPRESSION"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@END_OF_DO_WHILE"},{SPECIAL_TOKEN, ";"}},
- {{KEYWORD, "for"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "SIMPLE_ASSIGNMENT"},{SPECIAL_TOKEN, ";"},{SEMANTIC_RULE, "@START_OF_FOR"},{NON_TERMINAL, "BOOLEAN_EXPRESSION"},{SPECIAL_TOKEN, ";"},{SEMANTIC_RULE, "@FOR_INC_DEC"},{NON_TERMINAL, "INC_DEC"},{SPECIAL_TOKEN, ")"},{SPECIAL_TOKEN, "{"},{SEMANTIC_RULE, "@START_OF_FOR_COMMANDS"},{NON_TERMINAL, "S2"},{SEMANTIC_RULE, "@END_OF_FOR"},{SPECIAL_TOKEN, "}"}},
- {{NON_TERMINAL, "VARIABLE_TYPE1"},{NON_TERMINAL, "VARIABLE_TYPE2"},{NON_TERMINAL, "L_VALUE"},{SPECIAL_TOKEN, "="},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@MOV"},{NON_TERMINAL, "SIMPLE_ASSIGNMENT'"}},
- {{NON_TERMINAL, "L_VALUE"},{SPECIAL_TOKEN, "="},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@MOV"},{NON_TERMINAL, "SIMPLE_ASSIGNMENT'"}},
- {{EPSILON, "eps"}},
- {{EPSILON, "eps"}},
- {{NON_TERMINAL, "L_VALUE"},{NON_TERMINAL, "INC_DEC'"}},
- {{SPECIAL_TOKEN, "++"},{SEMANTIC_RULE, "@INC"}},
- {{SPECIAL_TOKEN, "--"},{SEMANTIC_RULE, "@DEC"}},
- {{SPECIAL_TOKEN, "="},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@MOV"},{NON_TERMINAL, "SIMPLE_ASSIGNMENT'"}},
- {{EPSILON, "eps"}},
- {{EPSILON, "eps"}},
- {{NON_TERMINAL, "E1"},{NON_TERMINAL, "E0'"}},
- {{SPECIAL_TOKEN, "|"},{NON_TERMINAL, "E1"},{SEMANTIC_RULE, "@OR"},{NON_TERMINAL, "E0'"}},
- {{EPSILON, "eps"}},
- {{NON_TERMINAL, "E2"},{NON_TERMINAL, "E1'"}},
- {{SPECIAL_TOKEN, "^"},{NON_TERMINAL, "E2"},{SEMANTIC_RULE, "@XOR"},{NON_TERMINAL, "E1'"}},
- {{EPSILON, "eps"}},
- {{NON_TERMINAL, "E3"},{NON_TERMINAL, "E2'"}},
- {{SPECIAL_TOKEN, "&"},{NON_TERMINAL, "E3"},{SEMANTIC_RULE, "@AND"},{NON_TERMINAL, "E2'"}},
- {{EPSILON, "eps"}},
- {{NON_TERMINAL, "E4"},{NON_TERMINAL, "E3'"}},
- {{SPECIAL_TOKEN, ">>"},{NON_TERMINAL, "E4"},{SEMANTIC_RULE, "@ASR"},{NON_TERMINAL, "E3'"}},
- {{SPECIAL_TOKEN, "<<"},{NON_TERMINAL, "E4"},{SEMANTIC_RULE, "@ASL"},{NON_TERMINAL, "E3'"}},
- {{EPSILON, "eps"}},
- {{NON_TERMINAL, "E5"},{NON_TERMINAL, "E4'"}},
- {{SPECIAL_TOKEN, "+"},{NON_TERMINAL, "E5"},{SEMANTIC_RULE, "@ADD"},{NON_TERMINAL, "E4'"}},
- {{SPECIAL_TOKEN, "-"},{NON_TERMINAL, "E5"},{SEMANTIC_RULE, "@SUB"},{NON_TERMINAL, "E4'"}},
- {{EPSILON, "eps"}},
- {{NON_TERMINAL, "E12"},{NON_TERMINAL, "E5'"}},
- {{SPECIAL_TOKEN, "/"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@DIV"},{NON_TERMINAL, "E5'"}},
- {{SPECIAL_TOKEN, "%"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@MOD"},{NON_TERMINAL, "E5'"}},
- {{SPECIAL_TOKEN, "*"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@MUL"},{NON_TERMINAL, "E5'"}},
- {{EPSILON, "eps"}},
- {{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "db"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DB"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "dd"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DD"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "dw"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DW"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "dq"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DQ"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "neg"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@NEG"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "hi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@HI"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "low"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@LOW"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "not"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@NOT"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "check_address"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@CHECK_ADDRESS"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "disassemble_len"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "disassemble_len32"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN32"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "disassemble_len64"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@DISASSEMBLE_LEN64"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "interlocked_increment"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "interlocked_decrement"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "reference"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@REFERENCE"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "physical_to_virtual"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@PHYSICAL_TO_VIRTUAL"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "virtual_to_physical"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@VIRTUAL_TO_PHYSICAL"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "ed"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@ED"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "eb"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EB"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "eq"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EQ"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "interlocked_exchange"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@INTERLOCKED_EXCHANGE"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "interlocked_exchange_add"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@INTERLOCKED_EXCHANGE_ADD"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "interlocked_compare_exchange"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@INTERLOCKED_COMPARE_EXCHANGE"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "strlen"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "StringNumber"},{SEMANTIC_RULE, "@STRLEN"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "strcmp"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "StringNumber"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "StringNumber"},{SEMANTIC_RULE, "@STRCMP"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "memcmp"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "StringNumber"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "StringNumber"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@MEMCMP"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "wcslen"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "WstringNumber"},{SEMANTIC_RULE, "@WCSLEN"},{SPECIAL_TOKEN, ")"}},
- {{KEYWORD, "wcscmp"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "WstringNumber"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "WstringNumber"},{SEMANTIC_RULE, "@WCSCMP"},{SPECIAL_TOKEN, ")"}},
- {{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ")"}},
- {{NON_TERMINAL, "L_VALUE"},{NON_TERMINAL, "E13"}},
- {{EPSILON, "eps"}},
- {{SEMANTIC_RULE, "@CALL_USER_DEFINED_FUNCTION"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "CALL_USER_DEFINED_FUNCTION_PARAMETER"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@END_OF_CALLING_USER_DEFINED_FUNCTION_WITH_RETURNING_VALUE"}},
- {{SEMANTIC_RULE, "@PUSH"},{HEX, "_hex"}},
- {{SEMANTIC_RULE, "@PUSH"},{DECIMAL, "_decimal"}},
- {{SEMANTIC_RULE, "@PUSH"},{OCTAL, "_octal"}},
- {{SEMANTIC_RULE, "@PUSH"},{BINARY, "_binary"}},
- {{SEMANTIC_RULE, "@PUSH"},{PSEUDO_REGISTER, "_pseudo_register"}},
- {{SPECIAL_TOKEN, "-"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@NEG"}},
- {{SPECIAL_TOKEN, "+"},{NON_TERMINAL, "E12"}},
- {{SPECIAL_TOKEN, "~"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@NOT"}},
- {{SPECIAL_TOKEN, "*"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@POI"}},
- {{SPECIAL_TOKEN, "&"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@REFERENCE"}},
- {{SEMANTIC_RULE, "@PUSH"},{STRING, "_string"}},
- {{SEMANTIC_RULE, "@PUSH"},{WSTRING, "_wstring"}},
- {{SEMANTIC_RULE, "@PUSH"},{GLOBAL_ID, "_global_id"}},
- {{SEMANTIC_RULE, "@PUSH"},{LOCAL_ID, "_local_id"}},
- {{SEMANTIC_RULE, "@PUSH"},{REGISTER, "_register"}},
- {{SEMANTIC_RULE, "@PUSH"},{FUNCTION_PARAMETER_ID, "_function_parameter_id"}},
- {{NON_TERMINAL, "EXPRESSION"}},
- {{NON_TERMINAL, "STRING"}},
- {{NON_TERMINAL, "EXPRESSION"}},
- {{NON_TERMINAL, "WSTRING"}}
-};
+const struct _TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN] =
+ {
+ {{NON_TERMINAL, "STATEMENT"}, {NON_TERMINAL, "S"}},
+ {{SPECIAL_TOKEN, "{"}, {NON_TERMINAL, "STATEMENT"}, {NON_TERMINAL, "S"}, {SPECIAL_TOKEN, "}"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "IF_STATEMENT"}},
+ {{NON_TERMINAL, "WHILE_STATEMENT"}},
+ {{NON_TERMINAL, "DO_WHILE_STATEMENT"}},
+ {{NON_TERMINAL, "FOR_STATEMENT"}},
+ {{NON_TERMINAL, "L_VALUE"}, {NON_TERMINAL, "L_VALUE2"}},
+ {{NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {SPECIAL_TOKEN, ";"}},
+ {{KEYWORD, "break"}, {SEMANTIC_RULE, "@BREAK"}, {SPECIAL_TOKEN, ";"}},
+ {{KEYWORD, "continue"}, {SEMANTIC_RULE, "@CONTINUE"}, {SPECIAL_TOKEN, ";"}},
+ {{NON_TERMINAL, "VARIABLE_TYPE3"}},
+ {{NON_TERMINAL, "STATEMENT2"}, {NON_TERMINAL, "S2"}},
+ {{SPECIAL_TOKEN, "{"}, {NON_TERMINAL, "STATEMENT2"}, {NON_TERMINAL, "S2"}, {SPECIAL_TOKEN, "}"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "IF_STATEMENT"}},
+ {{NON_TERMINAL, "WHILE_STATEMENT"}},
+ {{NON_TERMINAL, "DO_WHILE_STATEMENT"}},
+ {{NON_TERMINAL, "FOR_STATEMENT"}},
+ {{NON_TERMINAL, "L_VALUE"}, {NON_TERMINAL, "L_VALUE2"}},
+ {{NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {SPECIAL_TOKEN, ";"}},
+ {{KEYWORD, "break"}, {SEMANTIC_RULE, "@BREAK"}, {SPECIAL_TOKEN, ";"}},
+ {{KEYWORD, "continue"}, {SEMANTIC_RULE, "@CONTINUE"}, {SPECIAL_TOKEN, ";"}},
+ {{NON_TERMINAL, "VARIABLE_TYPE1"}, {NON_TERMINAL, "VARIABLE_TYPE2"}, {NON_TERMINAL, "L_VALUE"}, {SPECIAL_TOKEN, "="}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@MOV"}, {SPECIAL_TOKEN, ";"}},
+ {{KEYWORD, "return"}, {NON_TERMINAL, "RETURN"}, {SPECIAL_TOKEN, ";"}},
+ {{EPSILON, "eps"}, {SEMANTIC_RULE, "@RETURN_OF_USER_DEFINED_FUNCTION_WITHOUT_VALUE"}},
+ {{NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@RETURN_OF_USER_DEFINED_FUNCTION_WITH_VALUE"}},
+ {{SEMANTIC_RULE, "@VOID"}, {KEYWORD, "void"}},
+ {{SEMANTIC_RULE, "@BOOL"}, {KEYWORD, "bool"}},
+ {{SEMANTIC_RULE, "@CHAR"}, {KEYWORD, "char"}},
+ {{SEMANTIC_RULE, "@SHORT"}, {KEYWORD, "short"}},
+ {{SEMANTIC_RULE, "@INT"}, {KEYWORD, "int"}},
+ {{SEMANTIC_RULE, "@LONG"}, {KEYWORD, "long"}},
+ {{SEMANTIC_RULE, "@UNSIGNED"}, {KEYWORD, "unsigned"}},
+ {{SEMANTIC_RULE, "@SIGNED"}, {KEYWORD, "signed"}},
+ {{SEMANTIC_RULE, "@FLOAT"}, {KEYWORD, "float"}},
+ {{SEMANTIC_RULE, "@DOUBLE"}, {KEYWORD, "double"}},
+ {{NON_TERMINAL, "VARIABLE_TYPE1"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "VARIABLE_TYPE1"}, {NON_TERMINAL, "VARIABLE_TYPE2"}, {NON_TERMINAL, "L_VALUE"}, {NON_TERMINAL, "VARIABLE_TYPE4"}},
+ {{SPECIAL_TOKEN, "="}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@MOV"}, {SPECIAL_TOKEN, ";"}},
+ {{SEMANTIC_RULE, "@START_OF_USER_DEFINED_FUNCTION"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "VARIABLE_TYPE5"}, {SPECIAL_TOKEN, ")"}, {SPECIAL_TOKEN, "{"}, {NON_TERMINAL, "S2"}, {SEMANTIC_RULE, "@END_OF_USER_DEFINED_FUNCTION"}, {SPECIAL_TOKEN, "}"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "VARIABLE_TYPE1"}, {NON_TERMINAL, "VARIABLE_TYPE2"}, {NON_TERMINAL, "L_VALUE"}, {SEMANTIC_RULE, "@FUNCTION_PARAMETER"}, {NON_TERMINAL, "VARIABLE_TYPE6"}},
+ {{SPECIAL_TOKEN, ","}, {NON_TERMINAL, "VARIABLE_TYPE1"}, {NON_TERMINAL, "VARIABLE_TYPE2"}, {NON_TERMINAL, "L_VALUE"}, {SEMANTIC_RULE, "@FUNCTION_PARAMETER"}, {NON_TERMINAL, "VARIABLE_TYPE6"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "ASSIGNMENT_STATEMENT'"}, {SPECIAL_TOKEN, ";"}},
+ {{SEMANTIC_RULE, "@CALL_USER_DEFINED_FUNCTION"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "CALL_USER_DEFINED_FUNCTION_PARAMETER"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@END_OF_CALLING_USER_DEFINED_FUNCTION_WITHOUT_RETURNING_VALUE"}, {SPECIAL_TOKEN, ";"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@CALL_USER_DEFINED_FUNCTION_PARAMETER"}, {NON_TERMINAL, "CALL_USER_DEFINED_FUNCTION_PARAMETER2"}},
+ {{SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@CALL_USER_DEFINED_FUNCTION_PARAMETER"}, {NON_TERMINAL, "CALL_USER_DEFINED_FUNCTION_PARAMETER2"}},
+ {{EPSILON, "eps"}},
+ {{SPECIAL_TOKEN, "++"}, {SEMANTIC_RULE, "@INC"}},
+ {{SPECIAL_TOKEN, "--"}, {SEMANTIC_RULE, "@DEC"}},
+ {{SPECIAL_TOKEN, "="}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@MOV"}},
+ {{KEYWORD, "print"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@PRINT"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "formats"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@FORMATS"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "event_enable"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@EVENT_ENABLE"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "event_disable"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@EVENT_DISABLE"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "event_clear"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@EVENT_CLEAR"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "test_statement"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@TEST_STATEMENT"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "spinlock_lock"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@SPINLOCK_LOCK"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "spinlock_unlock"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@SPINLOCK_UNLOCK"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "event_sc"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@EVENT_SC"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "printf"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "STRING"}, {SEMANTIC_RULE, "@VARGSTART"}, {NON_TERMINAL, "VA"}, {SEMANTIC_RULE, "@PRINTF"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "pause"}, {SPECIAL_TOKEN, "("}, {SEMANTIC_RULE, "@PAUSE"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "flush"}, {SPECIAL_TOKEN, "("}, {SEMANTIC_RULE, "@FLUSH"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "event_trace_step"}, {SPECIAL_TOKEN, "("}, {SEMANTIC_RULE, "@EVENT_TRACE_STEP"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "event_trace_step_in"}, {SPECIAL_TOKEN, "("}, {SEMANTIC_RULE, "@EVENT_TRACE_STEP_IN"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "event_trace_step_out"}, {SPECIAL_TOKEN, "("}, {SEMANTIC_RULE, "@EVENT_TRACE_STEP_OUT"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "event_trace_instrumentation_step"}, {SPECIAL_TOKEN, "("}, {SEMANTIC_RULE, "@EVENT_TRACE_INSTRUMENTATION_STEP"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "event_trace_instrumentation_step_in"}, {SPECIAL_TOKEN, "("}, {SEMANTIC_RULE, "@EVENT_TRACE_INSTRUMENTATION_STEP_IN"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "spinlock_lock_custom_wait"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@SPINLOCK_LOCK_CUSTOM_WAIT"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "event_inject"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@EVENT_INJECT"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "poi"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@POI"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "db"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DB"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "dd"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DD"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "dw"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DW"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "dq"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DQ"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "neg"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@NEG"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "hi"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@HI"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "low"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@LOW"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "not"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@NOT"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "check_address"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@CHECK_ADDRESS"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "disassemble_len"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DISASSEMBLE_LEN"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "disassemble_len32"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DISASSEMBLE_LEN32"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "disassemble_len64"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DISASSEMBLE_LEN64"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "interlocked_increment"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "interlocked_decrement"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "reference"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@REFERENCE"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "physical_to_virtual"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@PHYSICAL_TO_VIRTUAL"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "virtual_to_physical"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@VIRTUAL_TO_PHYSICAL"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "ed"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@ED"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "eb"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@EB"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "eq"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@EQ"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "interlocked_exchange"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@INTERLOCKED_EXCHANGE"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "interlocked_exchange_add"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@INTERLOCKED_EXCHANGE_ADD"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "interlocked_compare_exchange"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@INTERLOCKED_COMPARE_EXCHANGE"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "strlen"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "StringNumber"}, {SEMANTIC_RULE, "@STRLEN"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "strcmp"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "StringNumber"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "StringNumber"}, {SEMANTIC_RULE, "@STRCMP"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "memcmp"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "StringNumber"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "StringNumber"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@MEMCMP"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "wcslen"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "WstringNumber"}, {SEMANTIC_RULE, "@WCSLEN"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "wcscmp"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "WstringNumber"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "WstringNumber"}, {SEMANTIC_RULE, "@WCSCMP"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@IGNORE_LVALUE"}},
+ {{KEYWORD, "event_inject_error_code"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@EVENT_INJECT_ERROR_CODE"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "memcpy"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@MEMCPY"}, {SPECIAL_TOKEN, ")"}},
+ {{SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {NON_TERMINAL, "VA"}},
+ {{EPSILON, "eps"}},
+ {{KEYWORD, "if"}, {SEMANTIC_RULE, "@START_OF_IF"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "BOOLEAN_EXPRESSION"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@JZ"}, {SPECIAL_TOKEN, "{"}, {NON_TERMINAL, "S2"}, {SPECIAL_TOKEN, "}"}, {NON_TERMINAL, "ELSIF_STATEMENT"}, {NON_TERMINAL, "ELSE_STATEMENT"}, {SEMANTIC_RULE, "@END_OF_IF"}, {NON_TERMINAL, "END_OF_IF"}},
+ {{KEYWORD, "elsif"}, {SEMANTIC_RULE, "@JMP_TO_END_AND_JZCOMPLETED"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "BOOLEAN_EXPRESSION"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@JZ"}, {SPECIAL_TOKEN, "{"}, {NON_TERMINAL, "S2"}, {SPECIAL_TOKEN, "}"}, {NON_TERMINAL, "ELSIF_STATEMENT"}},
+ {{SEMANTIC_RULE, "@JMP_TO_END_AND_JZCOMPLETED"}, {NON_TERMINAL, "ELSIF_STATEMENT'"}},
+ {{EPSILON, "eps"}},
+ {{KEYWORD, "else"}, {SPECIAL_TOKEN, "{"}, {NON_TERMINAL, "S2"}, {SPECIAL_TOKEN, "}"}},
+ {{EPSILON, "eps"}},
+ {{EPSILON, "eps"}},
+ {{KEYWORD, "while"}, {SEMANTIC_RULE, "@START_OF_WHILE"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "BOOLEAN_EXPRESSION"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@START_OF_WHILE_COMMANDS"}, {SPECIAL_TOKEN, "{"}, {NON_TERMINAL, "S2"}, {SEMANTIC_RULE, "@END_OF_WHILE"}, {SPECIAL_TOKEN, "}"}},
+ {{KEYWORD, "do"}, {SEMANTIC_RULE, "@START_OF_DO_WHILE"}, {SPECIAL_TOKEN, "{"}, {NON_TERMINAL, "S2"}, {SPECIAL_TOKEN, "}"}, {KEYWORD, "while"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "BOOLEAN_EXPRESSION"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@END_OF_DO_WHILE"}, {SPECIAL_TOKEN, ";"}},
+ {{KEYWORD, "for"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "SIMPLE_ASSIGNMENT"}, {SPECIAL_TOKEN, ";"}, {SEMANTIC_RULE, "@START_OF_FOR"}, {NON_TERMINAL, "BOOLEAN_EXPRESSION"}, {SPECIAL_TOKEN, ";"}, {SEMANTIC_RULE, "@FOR_INC_DEC"}, {NON_TERMINAL, "INC_DEC"}, {SPECIAL_TOKEN, ")"}, {SPECIAL_TOKEN, "{"}, {SEMANTIC_RULE, "@START_OF_FOR_COMMANDS"}, {NON_TERMINAL, "S2"}, {SEMANTIC_RULE, "@END_OF_FOR"}, {SPECIAL_TOKEN, "}"}},
+ {{NON_TERMINAL, "VARIABLE_TYPE1"}, {NON_TERMINAL, "VARIABLE_TYPE2"}, {NON_TERMINAL, "L_VALUE"}, {SPECIAL_TOKEN, "="}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@MOV"}, {NON_TERMINAL, "SIMPLE_ASSIGNMENT'"}},
+ {{NON_TERMINAL, "L_VALUE"}, {SPECIAL_TOKEN, "="}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@MOV"}, {NON_TERMINAL, "SIMPLE_ASSIGNMENT'"}},
+ {{EPSILON, "eps"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "L_VALUE"}, {NON_TERMINAL, "INC_DEC'"}},
+ {{SPECIAL_TOKEN, "++"}, {SEMANTIC_RULE, "@INC"}},
+ {{SPECIAL_TOKEN, "--"}, {SEMANTIC_RULE, "@DEC"}},
+ {{SPECIAL_TOKEN, "="}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@MOV"}, {NON_TERMINAL, "SIMPLE_ASSIGNMENT'"}},
+ {{EPSILON, "eps"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "E1"}, {NON_TERMINAL, "E0'"}},
+ {{SPECIAL_TOKEN, "|"}, {NON_TERMINAL, "E1"}, {SEMANTIC_RULE, "@OR"}, {NON_TERMINAL, "E0'"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "E2"}, {NON_TERMINAL, "E1'"}},
+ {{SPECIAL_TOKEN, "^"}, {NON_TERMINAL, "E2"}, {SEMANTIC_RULE, "@XOR"}, {NON_TERMINAL, "E1'"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "E3"}, {NON_TERMINAL, "E2'"}},
+ {{SPECIAL_TOKEN, "&"}, {NON_TERMINAL, "E3"}, {SEMANTIC_RULE, "@AND"}, {NON_TERMINAL, "E2'"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "E4"}, {NON_TERMINAL, "E3'"}},
+ {{SPECIAL_TOKEN, ">>"}, {NON_TERMINAL, "E4"}, {SEMANTIC_RULE, "@ASR"}, {NON_TERMINAL, "E3'"}},
+ {{SPECIAL_TOKEN, "<<"}, {NON_TERMINAL, "E4"}, {SEMANTIC_RULE, "@ASL"}, {NON_TERMINAL, "E3'"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "E5"}, {NON_TERMINAL, "E4'"}},
+ {{SPECIAL_TOKEN, "+"}, {NON_TERMINAL, "E5"}, {SEMANTIC_RULE, "@ADD"}, {NON_TERMINAL, "E4'"}},
+ {{SPECIAL_TOKEN, "-"}, {NON_TERMINAL, "E5"}, {SEMANTIC_RULE, "@SUB"}, {NON_TERMINAL, "E4'"}},
+ {{EPSILON, "eps"}},
+ {{NON_TERMINAL, "E12"}, {NON_TERMINAL, "E5'"}},
+ {{SPECIAL_TOKEN, "/"}, {NON_TERMINAL, "E12"}, {SEMANTIC_RULE, "@DIV"}, {NON_TERMINAL, "E5'"}},
+ {{SPECIAL_TOKEN, "%"}, {NON_TERMINAL, "E12"}, {SEMANTIC_RULE, "@MOD"}, {NON_TERMINAL, "E5'"}},
+ {{SPECIAL_TOKEN, "*"}, {NON_TERMINAL, "E12"}, {SEMANTIC_RULE, "@MUL"}, {NON_TERMINAL, "E5'"}},
+ {{EPSILON, "eps"}},
+ {{KEYWORD, "poi"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@POI"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "db"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DB"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "dd"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DD"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "dw"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DW"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "dq"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DQ"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "neg"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@NEG"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "hi"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@HI"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "low"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@LOW"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "not"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@NOT"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "check_address"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@CHECK_ADDRESS"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "disassemble_len"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DISASSEMBLE_LEN"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "disassemble_len32"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DISASSEMBLE_LEN32"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "disassemble_len64"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@DISASSEMBLE_LEN64"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "interlocked_increment"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "interlocked_decrement"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "reference"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@REFERENCE"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "physical_to_virtual"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@PHYSICAL_TO_VIRTUAL"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "virtual_to_physical"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@VIRTUAL_TO_PHYSICAL"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "ed"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@ED"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "eb"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@EB"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "eq"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@EQ"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "interlocked_exchange"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@INTERLOCKED_EXCHANGE"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "interlocked_exchange_add"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@INTERLOCKED_EXCHANGE_ADD"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "interlocked_compare_exchange"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@INTERLOCKED_COMPARE_EXCHANGE"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "strlen"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "StringNumber"}, {SEMANTIC_RULE, "@STRLEN"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "strcmp"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "StringNumber"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "StringNumber"}, {SEMANTIC_RULE, "@STRCMP"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "memcmp"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "StringNumber"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "StringNumber"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "EXPRESSION"}, {SEMANTIC_RULE, "@MEMCMP"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "wcslen"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "WstringNumber"}, {SEMANTIC_RULE, "@WCSLEN"}, {SPECIAL_TOKEN, ")"}},
+ {{KEYWORD, "wcscmp"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "WstringNumber"}, {SPECIAL_TOKEN, ","}, {NON_TERMINAL, "WstringNumber"}, {SEMANTIC_RULE, "@WCSCMP"}, {SPECIAL_TOKEN, ")"}},
+ {{SPECIAL_TOKEN, "("}, {NON_TERMINAL, "EXPRESSION"}, {SPECIAL_TOKEN, ")"}},
+ {{NON_TERMINAL, "L_VALUE"}, {NON_TERMINAL, "E13"}},
+ {{EPSILON, "eps"}},
+ {{SEMANTIC_RULE, "@CALL_USER_DEFINED_FUNCTION"}, {SPECIAL_TOKEN, "("}, {NON_TERMINAL, "CALL_USER_DEFINED_FUNCTION_PARAMETER"}, {SPECIAL_TOKEN, ")"}, {SEMANTIC_RULE, "@END_OF_CALLING_USER_DEFINED_FUNCTION_WITH_RETURNING_VALUE"}},
+ {{SEMANTIC_RULE, "@PUSH"}, {HEX, "_hex"}},
+ {{SEMANTIC_RULE, "@PUSH"}, {DECIMAL, "_decimal"}},
+ {{SEMANTIC_RULE, "@PUSH"}, {OCTAL, "_octal"}},
+ {{SEMANTIC_RULE, "@PUSH"}, {BINARY, "_binary"}},
+ {{SEMANTIC_RULE, "@PUSH"}, {PSEUDO_REGISTER, "_pseudo_register"}},
+ {{SPECIAL_TOKEN, "-"}, {NON_TERMINAL, "E12"}, {SEMANTIC_RULE, "@NEG"}},
+ {{SPECIAL_TOKEN, "+"}, {NON_TERMINAL, "E12"}},
+ {{SPECIAL_TOKEN, "~"}, {NON_TERMINAL, "E12"}, {SEMANTIC_RULE, "@NOT"}},
+ {{SPECIAL_TOKEN, "*"}, {NON_TERMINAL, "E12"}, {SEMANTIC_RULE, "@POI"}},
+ {{SPECIAL_TOKEN, "&"}, {NON_TERMINAL, "E12"}, {SEMANTIC_RULE, "@REFERENCE"}},
+ {{SEMANTIC_RULE, "@PUSH"}, {STRING, "_string"}},
+ {{SEMANTIC_RULE, "@PUSH"}, {WSTRING, "_wstring"}},
+ {{SEMANTIC_RULE, "@PUSH"}, {GLOBAL_ID, "_global_id"}},
+ {{SEMANTIC_RULE, "@PUSH"}, {LOCAL_ID, "_local_id"}},
+ {{SEMANTIC_RULE, "@PUSH"}, {REGISTER, "_register"}},
+ {{SEMANTIC_RULE, "@PUSH"}, {FUNCTION_PARAMETER_ID, "_function_parameter_id"}},
+ {{NON_TERMINAL, "EXPRESSION"}},
+ {{NON_TERMINAL, "STRING"}},
+ {{NON_TERMINAL, "EXPRESSION"}},
+ {{NON_TERMINAL, "WSTRING"}}};
const unsigned int RhsSize[RULES_COUNT]=
{
2,
diff --git a/hyperdbg/script-engine/code/script-engine.c b/hyperdbg/script-engine/code/script-engine.c
index 204fbb2e..42a247a7 100644
--- a/hyperdbg/script-engine/code/script-engine.c
+++ b/hyperdbg/script-engine/code/script-engine.c
@@ -229,7 +229,7 @@ ScriptEngineSymbolAbortLoading()
//
// A wrapper for aborting download and reload
//
- return SymbolAbortLoading();
+ SymbolAbortLoading();
}
/**
@@ -393,7 +393,7 @@ ScriptEngineParse(char * str)
//
for (int i = RhsSize[RuleId] - 1; i >= 0; i--)
{
- PTOKEN Token = &Rhs[RuleId][i];
+ PTOKEN Token = (PTOKEN)&Rhs[RuleId][i];
if (Token->Type == EPSILON)
break;
@@ -2153,7 +2153,7 @@ ScriptEngineBooleanExpresssionParse(
{
TopToken = Top(Stack);
int TerminalId = LalrGetTerminalId(CurrentIn);
- StateId = DecimalToSignedInt(TopToken->Value);
+ StateId = (int)DecimalToSignedInt(TopToken->Value);
if (StateId == INVALID || TerminalId < 0)
{
*Error = SCRIPT_ENGINE_ERROR_SYNTAX;
@@ -2208,9 +2208,9 @@ ScriptEngineBooleanExpresssionParse(
else if (Action < 0) // Reduce
{
StateId = -Action;
- Lhs = &LalrLhs[StateId - 1];
+ Lhs = (PTOKEN)&LalrLhs[StateId - 1];
RhsSize = LalrGetRhsSize(StateId - 1);
- SemanticRule = &LalrSemanticRules[StateId - 1];
+ SemanticRule = (PTOKEN)&LalrSemanticRules[StateId - 1];
for (int i = 0; i < 2 * RhsSize; i++)
{
@@ -2248,7 +2248,7 @@ ScriptEngineBooleanExpresssionParse(
}
Temp = Top(Stack);
- StateId = DecimalToSignedInt(Temp->Value);
+ StateId = (int)DecimalToSignedInt(Temp->Value);
Goto = LalrGotoTable[StateId][LalrGetNonTerminalId(Lhs)];
@@ -2378,7 +2378,7 @@ NewFunctionSymbol(char * FunctionName, VARIABLE_TYPE * VariableType)
Symbol->Value = (unsigned long long)calloc(Length + 1, sizeof(char));
- if (Symbol->Value == NULL)
+ if (Symbol->Value == 0ull)
{
//
// There was an error allocating buffer
@@ -2408,7 +2408,7 @@ NewFunctionSymbol(char * FunctionName, VARIABLE_TYPE * VariableType)
unsigned int
GetSymbolHeapSize(PSYMBOL Symbol)
{
- int Temp = (3 * sizeof(unsigned long long) + Symbol->Len) / sizeof(SYMBOL) + 1;
+ int Temp = (3 * sizeof(unsigned long long) + (int)Symbol->Len) / sizeof(SYMBOL) + 1;
return Temp;
}
@@ -2614,6 +2614,12 @@ PushSymbol(PSYMBOL_BUFFER SymbolBuffer, const PSYMBOL Symbol)
//
PSYMBOL NewHead = (PSYMBOL)malloc(NewSize * sizeof(SYMBOL));
+ if (NewHead == NULL)
+ {
+ printf("err, could not allocate buffer");
+ return NULL;
+ }
+
//
// Copy old buffer to new buffer
//
@@ -2816,8 +2822,8 @@ HandleError(PSCRIPT_ENGINE_ERROR_TYPE Error, char * str)
//
// add the line which error happened at
//
-
strncat(Message, (str + CurrentLineIdx), LineEnd - CurrentLineIdx);
+
strcat(Message, "\n");
//
diff --git a/hyperdbg/script-engine/header/common.h b/hyperdbg/script-engine/header/common.h
index 9752c8ae..f555e997 100644
--- a/hyperdbg/script-engine/header/common.h
+++ b/hyperdbg/script-engine/header/common.h
@@ -187,19 +187,19 @@ IsOctal(char c);
void
SetType(unsigned long long * Val, unsigned char Type);
-unsigned long long int
+unsigned long long
DecimalToInt(char * str);
-unsigned long long int
+unsigned long long
DecimalToSignedInt(char * str);
-unsigned long long int
+unsigned long long
HexToInt(char * str);
-unsigned long long int
+unsigned long long
OctalToInt(char * str);
-unsigned long long int
+unsigned long long
BinaryToInt(char * str);
void
diff --git a/hyperdbg/script-engine/header/script-engine.h b/hyperdbg/script-engine/header/script-engine.h
index 1749b313..119d76fc 100644
--- a/hyperdbg/script-engine/header/script-engine.h
+++ b/hyperdbg/script-engine/header/script-engine.h
@@ -100,7 +100,7 @@ PSYMBOL
ToSymbol(PTOKEN PTOKEN, PSCRIPT_ENGINE_ERROR_TYPE Error);
__declspec(dllexport) PSYMBOL_BUFFER ScriptEngineParse(char * str);
-__declspec(dllimport) PSYMBOL_BUFFER GetStackBuffer();
+__declspec(dllexport) PSYMBOL_BUFFER GetStackBuffer();
void
ScriptEngineBooleanExpresssionParse(
diff --git a/hyperdbg/script-engine/script-engine.vcxproj b/hyperdbg/script-engine/script-engine.vcxproj
index ecdd32e9..46bbecb5 100644
--- a/hyperdbg/script-engine/script-engine.vcxproj
+++ b/hyperdbg/script-engine/script-engine.vcxproj
@@ -64,7 +64,7 @@
pch.h
MultiThreadedDebug
$(SolutionDir)\script-engine\header;$(SolutionDir)\include;$(SolutionDir)\script-engine;$(SolutionDir)\script-eval;%(AdditionalIncludeDirectories)
- false
+ true
Windows
diff --git a/hyperdbg/symbol-parser/code/casting.cpp b/hyperdbg/symbol-parser/code/casting.cpp
index 0763c874..e17d647c 100644
--- a/hyperdbg/symbol-parser/code/casting.cpp
+++ b/hyperdbg/symbol-parser/code/casting.cpp
@@ -69,13 +69,13 @@ typedef struct _STUPID_STRUCT2
* safely use the details
*/
BOOLEAN
-SymCastingQueryForFiledsAndTypes(_In_ const char * StructName,
- _In_ const char * FiledOfStructName,
- _Out_ PBOOLEAN IsStructNamePointerOrNot,
- _Out_ PBOOLEAN IsFiledOfStructNamePointerOrNot,
- _Out_ char ** NewStructOrTypeName,
- _Out_ UINT32 * OffsetOfFieldFromTop,
- _Out_ UINT32 * SizeOfField)
+SymCastingQueryForFiledsAndTypes(const char * StructName,
+ const char * FiledOfStructName,
+ PBOOLEAN IsStructNamePointerOrNot,
+ PBOOLEAN IsFiledOfStructNamePointerOrNot,
+ char ** NewStructOrTypeName,
+ UINT32 * OffsetOfFieldFromTop,
+ UINT32 * SizeOfField)
{
BOOLEAN IsPointer = FALSE;
BOOLEAN IsTheStructItselfAPointer = FALSE;
@@ -245,7 +245,7 @@ SymCastingQueryForFiledsAndTypes(_In_ const char * StructName,
* details
*/
BOOLEAN
-SymQuerySizeof(_In_ const char * StructNameOrTypeName, _Out_ UINT32 * SizeOfField)
+SymQuerySizeof(const char * StructNameOrTypeName, UINT32 * SizeOfField)
{
if (strcmp(StructNameOrTypeName, "STUPID_STRUCT1") == 0)
{
diff --git a/hyperdbg/symbol-parser/code/symbol-parser.cpp b/hyperdbg/symbol-parser/code/symbol-parser.cpp
index 7f5393b9..2e619cfa 100644
--- a/hyperdbg/symbol-parser/code/symbol-parser.cpp
+++ b/hyperdbg/symbol-parser/code/symbol-parser.cpp
@@ -983,6 +983,13 @@ SymGetFieldOffset(CHAR * TypeName, CHAR * FieldName, UINT32 * FieldOffset)
//
const size_t TypeNameSize = strlen(TypeName) + 1;
WCHAR * TypeNameW = (WCHAR *)malloc(sizeof(wchar_t) * TypeNameSize);
+
+ if (TypeNameW == NULL)
+ {
+ printf("err, could not allocate buffer");
+ return FALSE;
+ }
+
RtlZeroMemory(TypeNameW, sizeof(wchar_t) * TypeNameSize);
mbstowcs(TypeNameW, TypeName, TypeNameSize);
@@ -992,6 +999,13 @@ SymGetFieldOffset(CHAR * TypeName, CHAR * FieldName, UINT32 * FieldOffset)
//
const size_t FieldNameSize = strlen(FieldName) + 1;
WCHAR * FieldNameW = (WCHAR *)malloc(sizeof(wchar_t) * FieldNameSize);
+
+ if (FieldNameW == NULL)
+ {
+ printf("err, could not allocate buffer");
+ return FALSE;
+ }
+
RtlZeroMemory(FieldNameW, sizeof(wchar_t) * FieldNameSize);
mbstowcs(FieldNameW, FieldName, FieldNameSize);
@@ -1057,6 +1071,13 @@ SymGetDataTypeSize(CHAR * TypeName, UINT64 * TypeSize)
//
const size_t TypeNameSize = strlen(TypeName) + 1;
WCHAR * TypeNameW = (WCHAR *)malloc(sizeof(wchar_t) * TypeNameSize);
+
+ if (TypeNameW == NULL)
+ {
+ printf("err, could not allocate buffer");
+ return FALSE;
+ }
+
RtlZeroMemory(TypeNameW, sizeof(wchar_t) * TypeNameSize);
mbstowcs(TypeNameW, TypeName, TypeNameSize);
diff --git a/hyperdbg/symbol-parser/header/symbol-parser.h b/hyperdbg/symbol-parser/header/symbol-parser.h
index 0faa038d..f5763f92 100644
--- a/hyperdbg/symbol-parser/header/symbol-parser.h
+++ b/hyperdbg/symbol-parser/header/symbol-parser.h
@@ -63,8 +63,8 @@ __declspec(dllexport) BOOLEAN SymConvertFileToPdbPath(const char * LocalFilePath
__declspec(dllexport) BOOLEAN SymConvertFileToPdbFileAndGuidAndAgeDetails(const char * LocalFilePath, char * PdbFilePath, char * GuidAndAgeDetails, BOOLEAN Is32BitModule);
__declspec(dllexport) BOOLEAN SymbolInitLoad(PVOID BufferToStoreDetails, UINT32 StoredLength, BOOLEAN DownloadIfAvailable, const char * SymbolPath, BOOLEAN IsSilentLoad);
__declspec(dllexport) BOOLEAN SymShowDataBasedOnSymbolTypes(const char * TypeName, UINT64 Address, BOOLEAN IsStruct, PVOID BufferAddress, const char * AdditionalParameters);
-__declspec(dllexport) BOOLEAN SymQuerySizeof(_In_ const char * StructNameOrTypeName, _Out_ UINT32 * SizeOfField);
-__declspec(dllexport) BOOLEAN SymCastingQueryForFiledsAndTypes(_In_ const char * StructName, _In_ const char * FiledOfStructName, _Out_ PBOOLEAN IsStructNamePointerOrNot, _Out_ PBOOLEAN IsFiledOfStructNamePointerOrNot, _Out_ char ** NewStructOrTypeName, _Out_ UINT32 * OffsetOfFieldFromTop, _Out_ UINT32 * SizeOfField);
+__declspec(dllexport) BOOLEAN SymQuerySizeof( const char * StructNameOrTypeName, UINT32 * SizeOfField);
+__declspec(dllexport) BOOLEAN SymCastingQueryForFiledsAndTypes( const char * StructName, const char * FiledOfStructName, PBOOLEAN IsStructNamePointerOrNot, PBOOLEAN IsFiledOfStructNamePointerOrNot, char ** NewStructOrTypeName, UINT32 * OffsetOfFieldFromTop, UINT32 * SizeOfField);
}
//////////////////////////////////////////////////