compile script-engine with treat warnings as error

This commit is contained in:
Sinaei 2024-03-18 12:31:11 +09:00
parent 7c4c087d0a
commit cc9aab9ef3
10 changed files with 384 additions and 260 deletions

View file

@ -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);

View file

@ -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,

View file

@ -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");
//