mirror of
https://github.com/HyperDbg/HyperDbg.git
synced 2026-08-31 01:56:24 +00:00
compile script-engine with treat warnings as error
This commit is contained in:
parent
7c4c087d0a
commit
cc9aab9ef3
10 changed files with 384 additions and 260 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
||||
//
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue