#include "pch.h" const struct _TOKEN Lhs[RULES_COUNT]= { {NON_TERMINAL, "S"}, {NON_TERMINAL, "S"}, {NON_TERMINAL, "S"}, {NON_TERMINAL, "STATEMENT"}, {NON_TERMINAL, "STATEMENT"}, {NON_TERMINAL, "STATEMENT"}, {NON_TERMINAL, "STATEMENT"}, {NON_TERMINAL, "STATEMENT"}, {NON_TERMINAL, "STATEMENT"}, {NON_TERMINAL, "STATEMENT"}, {NON_TERMINAL, "STATEMENT"}, {NON_TERMINAL, "ASSIGNMENT_STATEMENT"}, {NON_TERMINAL, "ASSIGNMENT_STATEMENT'"}, {NON_TERMINAL, "ASSIGNMENT_STATEMENT'"}, {NON_TERMINAL, "ASSIGNMENT_STATEMENT'"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "CALL_FUNC_STATEMENT"}, {NON_TERMINAL, "VA"}, {NON_TERMINAL, "VA"}, {NON_TERMINAL, "IF_STATEMENT"}, {NON_TERMINAL, "ELSIF_STATEMENT"}, {NON_TERMINAL, "ELSIF_STATEMENT"}, {NON_TERMINAL, "ELSIF_STATEMENT'"}, {NON_TERMINAL, "ELSE_STATEMENT"}, {NON_TERMINAL, "ELSE_STATEMENT"}, {NON_TERMINAL, "END_OF_IF"}, {NON_TERMINAL, "WHILE_STATEMENT"}, {NON_TERMINAL, "DO_WHILE_STATEMENT"}, {NON_TERMINAL, "FOR_STATEMENT"}, {NON_TERMINAL, "SIMPLE_ASSIGNMENT"}, {NON_TERMINAL, "SIMPLE_ASSIGNMENT"}, {NON_TERMINAL, "SIMPLE_ASSIGNMENT'"}, {NON_TERMINAL, "INC_DEC"}, {NON_TERMINAL, "INC_DEC'"}, {NON_TERMINAL, "INC_DEC'"}, {NON_TERMINAL, "INC_DEC'"}, {NON_TERMINAL, "INC_DEC'"}, {NON_TERMINAL, "BOOLEAN_EXPRESSION"}, {NON_TERMINAL, "EXPRESSION"}, {NON_TERMINAL, "E0'"}, {NON_TERMINAL, "E0'"}, {NON_TERMINAL, "E1"}, {NON_TERMINAL, "E1'"}, {NON_TERMINAL, "E1'"}, {NON_TERMINAL, "E2"}, {NON_TERMINAL, "E2'"}, {NON_TERMINAL, "E2'"}, {NON_TERMINAL, "E3"}, {NON_TERMINAL, "E3'"}, {NON_TERMINAL, "E3'"}, {NON_TERMINAL, "E3'"}, {NON_TERMINAL, "E4"}, {NON_TERMINAL, "E4'"}, {NON_TERMINAL, "E4'"}, {NON_TERMINAL, "E4'"}, {NON_TERMINAL, "E5"}, {NON_TERMINAL, "E5'"}, {NON_TERMINAL, "E5'"}, {NON_TERMINAL, "E5'"}, {NON_TERMINAL, "E5'"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "STRING"}, {NON_TERMINAL, "L_VALUE"}, {NON_TERMINAL, "L_VALUE"}, {NON_TERMINAL, "L_VALUE"} }; 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, "ASSIGNMENT_STATEMENT"},{SPECIAL_TOKEN, ";"}}, {{NON_TERMINAL, "CALL_FUNC_STATEMENT"},{SPECIAL_TOKEN, ";"}}, {{KEYWORD, "break"},{SEMANTIC_RULE, "@BREAK"},{SPECIAL_TOKEN, ";"}}, {{KEYWORD, "continue"},{SEMANTIC_RULE, "@CONTINUE"},{SPECIAL_TOKEN, ";"}}, {{NON_TERMINAL, "L_VALUE"},{NON_TERMINAL, "ASSIGNMENT_STATEMENT'"}}, {{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, "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, "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, "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, "strlen"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@STRLEN"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}}, {{KEYWORD, "wcslen"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@WCSLEN"},{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, "event_sc"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_SC"},{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, "strcmp"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@STRCMP"},{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, "memcpy"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@MEMCPY"},{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, ")"},{SEMANTIC_RULE, "@IGNORE_LVALUE"}}, {{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, "S"},{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, "S"},{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, "S"},{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, "S"},{SEMANTIC_RULE, "@END_OF_WHILE"},{SPECIAL_TOKEN, "}"}}, {{KEYWORD, "do"},{SEMANTIC_RULE, "@START_OF_DO_WHILE"},{SPECIAL_TOKEN, "{"},{NON_TERMINAL, "S"},{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, "S"},{SEMANTIC_RULE, "@END_OF_FOR"},{SPECIAL_TOKEN, "}"}}, {{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, "strlen"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@STRLEN"},{SPECIAL_TOKEN, ")"}}, {{KEYWORD, "wcslen"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@WCSLEN"},{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, "event_sc"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@EVENT_SC"},{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, "strcmp"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@STRCMP"},{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, "memcpy"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXPRESSION"},{SEMANTIC_RULE, "@MEMCPY"},{SPECIAL_TOKEN, ")"}}, {{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, ")"}}, {{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXPRESSION"},{SPECIAL_TOKEN, ")"}}, {{SEMANTIC_RULE, "@PUSH"},{REGISTER, "_register"}}, {{SEMANTIC_RULE, "@PUSH"},{LOCAL_ID, "_local_id"}}, {{SEMANTIC_RULE, "@PUSH"},{GLOBAL_ID, "_global_id"}}, {{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"},{GLOBAL_ID, "_global_id"}}, {{SEMANTIC_RULE, "@PUSH"},{LOCAL_ID, "_local_id"}}, {{SEMANTIC_RULE, "@PUSH"},{REGISTER, "_register"}} }; const unsigned int RhsSize[RULES_COUNT]= { 2, 4, 1, 1, 1, 1, 1, 2, 2, 3, 3, 2, 2, 2, 3, 5, 5, 5, 5, 5, 5, 5, 7, 4, 4, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8, 8, 8, 10, 10, 10, 3, 1, 13, 10, 2, 1, 4, 1, 1, 10, 11, 15, 5, 1, 1, 2, 2, 2, 4, 1, 1, 2, 4, 1, 2, 4, 1, 2, 4, 1, 2, 4, 4, 1, 2, 4, 4, 1, 2, 4, 4, 4, 1, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 9, 9, 9, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 3, 3, 2, 2, 2, 2 }; const char* NoneTerminalMap[NONETERMINAL_COUNT]= { }; const char* KeywordList[]= { "print", "formats", "event_enable", "event_disable", "test_statement", "spinlock_lock", "spinlock_unlock", "printf", "pause", "flush", "spinlock_lock_custom_wait", "event_inject", "poi", "db", "dd", "dw", "dq", "neg", "hi", "low", "not", "check_address", "strlen", "wcslen", "disassemble_len", "disassemble_len32", "disassemble_len64", "interlocked_increment", "interlocked_decrement", "reference", "physical_to_virtual", "virtual_to_physical", "event_sc", "ed", "eb", "eq", "interlocked_exchange", "interlocked_exchange_add", "strcmp", "interlocked_compare_exchange", "memcpy", "event_inject_error_code", "poi", "db", "dd", "dw", "dq", "neg", "hi", "low", "not", "check_address", "strlen", "wcslen", "disassemble_len", "disassemble_len32", "disassemble_len64", "interlocked_increment", "interlocked_decrement", "reference", "physical_to_virtual", "virtual_to_physical", "event_sc", "ed", "eb", "eq", "interlocked_exchange", "interlocked_exchange_add", "strcmp", "interlocked_compare_exchange", "memcpy", "event_inject_error_code" }; const char* OperatorsTwoOperandList[]= { "@OR", "@XOR", "@AND", "@ASR", "@ASL", "@ADD", "@SUB", "@MUL", "@DIV", "@MOD", "@GT", "@LT", "@EGT", "@ELT", "@EQUAL", "@NEQ" }; const char* OperatorsOneOperandList[]= { "@INC", "@DEC", "@REFERENCE", "@DEREFERENCE" }; const char* ThreeOpFunc1[] = { "@INTERLOCKED_COMPARE_EXCHANGE", "@MEMCPY", "@EVENT_INJECT_ERROR_CODE", }; const char* TwoOpFunc1[] = { "@ED", "@EB", "@EQ", "@INTERLOCKED_EXCHANGE", "@INTERLOCKED_EXCHANGE_ADD", "@STRCMP", }; const char* TwoOpFunc2[] = { "@SPINLOCK_LOCK_CUSTOM_WAIT", "@EVENT_INJECT", }; const char* OneOpFunc1[] = { "@POI", "@DB", "@DD", "@DW", "@DQ", "@NEG", "@HI", "@LOW", "@NOT", "@CHECK_ADDRESS", "@STRLEN", "@WCSLEN", "@DISASSEMBLE_LEN", "@DISASSEMBLE_LEN32", "@DISASSEMBLE_LEN64", "@INTERLOCKED_INCREMENT", "@INTERLOCKED_DECREMENT", "@REFERENCE", "@PHYSICAL_TO_VIRTUAL", "@VIRTUAL_TO_PHYSICAL", "@EVENT_SC", }; const char* OneOpFunc2[] = { "@PRINT", "@FORMATS", "@EVENT_ENABLE", "@EVENT_DISABLE", "@TEST_STATEMENT", "@SPINLOCK_LOCK", "@SPINLOCK_UNLOCK", }; const char* ZeroOpFunc1[] = { "@PAUSE", "@FLUSH", }; const char* VarArgFunc1[] = { "@PRINTF" }; const SYMBOL_MAP SemanticRulesMapList[]= { {"@INC", FUNC_INC}, {"@DEC", FUNC_DEC}, {"@REFERENCE", FUNC_REFERENCE}, {"@DEREFERENCE", FUNC_DEREFERENCE}, {"@OR", FUNC_OR}, {"@XOR", FUNC_XOR}, {"@AND", FUNC_AND}, {"@ASR", FUNC_ASR}, {"@ASL", FUNC_ASL}, {"@ADD", FUNC_ADD}, {"@SUB", FUNC_SUB}, {"@MUL", FUNC_MUL}, {"@DIV", FUNC_DIV}, {"@MOD", FUNC_MOD}, {"@GT", FUNC_GT}, {"@LT", FUNC_LT}, {"@EGT", FUNC_EGT}, {"@ELT", FUNC_ELT}, {"@EQUAL", FUNC_EQUAL}, {"@NEQ", FUNC_NEQ}, {"@START_OF_IF", FUNC_START_OF_IF}, {"@JMP", FUNC_JMP}, {"@JZ", FUNC_JZ}, {"@JNZ", FUNC_JNZ}, {"@JMP_TO_END_AND_JZCOMPLETED", FUNC_JMP_TO_END_AND_JZCOMPLETED}, {"@END_OF_IF", FUNC_END_OF_IF}, {"@START_OF_WHILE", FUNC_START_OF_WHILE}, {"@END_OF_WHILE", FUNC_END_OF_WHILE}, {"@VARGSTART", FUNC_VARGSTART}, {"@MOV", FUNC_MOV}, {"@START_OF_DO_WHILE", FUNC_START_OF_DO_WHILE}, {"@", FUNC_}, {"@START_OF_DO_WHILE_COMMANDS", FUNC_START_OF_DO_WHILE_COMMANDS}, {"@END_OF_DO_WHILE", FUNC_END_OF_DO_WHILE}, {"@START_OF_FOR", FUNC_START_OF_FOR}, {"@FOR_INC_DEC", FUNC_FOR_INC_DEC}, {"@START_OF_FOR_OMMANDS", FUNC_START_OF_FOR_OMMANDS}, {"@END_OF_IF", FUNC_END_OF_IF}, {"@IGNORE_LVALUE", FUNC_IGNORE_LVALUE}, {"@PRINT", FUNC_PRINT}, {"@FORMATS", FUNC_FORMATS}, {"@EVENT_ENABLE", FUNC_EVENT_ENABLE}, {"@EVENT_DISABLE", FUNC_EVENT_DISABLE}, {"@TEST_STATEMENT", FUNC_TEST_STATEMENT}, {"@SPINLOCK_LOCK", FUNC_SPINLOCK_LOCK}, {"@SPINLOCK_UNLOCK", FUNC_SPINLOCK_UNLOCK}, {"@PRINTF", FUNC_PRINTF}, {"@PAUSE", FUNC_PAUSE}, {"@FLUSH", FUNC_FLUSH}, {"@SPINLOCK_LOCK_CUSTOM_WAIT", FUNC_SPINLOCK_LOCK_CUSTOM_WAIT}, {"@EVENT_INJECT", FUNC_EVENT_INJECT}, {"@POI", FUNC_POI}, {"@DB", FUNC_DB}, {"@DD", FUNC_DD}, {"@DW", FUNC_DW}, {"@DQ", FUNC_DQ}, {"@NEG", FUNC_NEG}, {"@HI", FUNC_HI}, {"@LOW", FUNC_LOW}, {"@NOT", FUNC_NOT}, {"@CHECK_ADDRESS", FUNC_CHECK_ADDRESS}, {"@STRLEN", FUNC_STRLEN}, {"@WCSLEN", FUNC_WCSLEN}, {"@DISASSEMBLE_LEN", FUNC_DISASSEMBLE_LEN}, {"@DISASSEMBLE_LEN32", FUNC_DISASSEMBLE_LEN32}, {"@DISASSEMBLE_LEN64", FUNC_DISASSEMBLE_LEN64}, {"@INTERLOCKED_INCREMENT", FUNC_INTERLOCKED_INCREMENT}, {"@INTERLOCKED_DECREMENT", FUNC_INTERLOCKED_DECREMENT}, {"@REFERENCE", FUNC_REFERENCE}, {"@PHYSICAL_TO_VIRTUAL", FUNC_PHYSICAL_TO_VIRTUAL}, {"@VIRTUAL_TO_PHYSICAL", FUNC_VIRTUAL_TO_PHYSICAL}, {"@EVENT_SC", FUNC_EVENT_SC}, {"@ED", FUNC_ED}, {"@EB", FUNC_EB}, {"@EQ", FUNC_EQ}, {"@INTERLOCKED_EXCHANGE", FUNC_INTERLOCKED_EXCHANGE}, {"@INTERLOCKED_EXCHANGE_ADD", FUNC_INTERLOCKED_EXCHANGE_ADD}, {"@STRCMP", FUNC_STRCMP}, {"@INTERLOCKED_COMPARE_EXCHANGE", FUNC_INTERLOCKED_COMPARE_EXCHANGE}, {"@MEMCPY", FUNC_MEMCPY}, {"@EVENT_INJECT_ERROR_CODE", FUNC_EVENT_INJECT_ERROR_CODE}, {"@POI", FUNC_POI}, {"@DB", FUNC_DB}, {"@DD", FUNC_DD}, {"@DW", FUNC_DW}, {"@DQ", FUNC_DQ}, {"@NEG", FUNC_NEG}, {"@HI", FUNC_HI}, {"@LOW", FUNC_LOW}, {"@NOT", FUNC_NOT}, {"@CHECK_ADDRESS", FUNC_CHECK_ADDRESS}, {"@STRLEN", FUNC_STRLEN}, {"@WCSLEN", FUNC_WCSLEN}, {"@DISASSEMBLE_LEN", FUNC_DISASSEMBLE_LEN}, {"@DISASSEMBLE_LEN32", FUNC_DISASSEMBLE_LEN32}, {"@DISASSEMBLE_LEN64", FUNC_DISASSEMBLE_LEN64}, {"@INTERLOCKED_INCREMENT", FUNC_INTERLOCKED_INCREMENT}, {"@INTERLOCKED_DECREMENT", FUNC_INTERLOCKED_DECREMENT}, {"@REFERENCE", FUNC_REFERENCE}, {"@PHYSICAL_TO_VIRTUAL", FUNC_PHYSICAL_TO_VIRTUAL}, {"@VIRTUAL_TO_PHYSICAL", FUNC_VIRTUAL_TO_PHYSICAL}, {"@EVENT_SC", FUNC_EVENT_SC}, {"@ED", FUNC_ED}, {"@EB", FUNC_EB}, {"@EQ", FUNC_EQ}, {"@INTERLOCKED_EXCHANGE", FUNC_INTERLOCKED_EXCHANGE}, {"@INTERLOCKED_EXCHANGE_ADD", FUNC_INTERLOCKED_EXCHANGE_ADD}, {"@STRCMP", FUNC_STRCMP}, {"@INTERLOCKED_COMPARE_EXCHANGE", FUNC_INTERLOCKED_COMPARE_EXCHANGE}, {"@MEMCPY", FUNC_MEMCPY}, {"@EVENT_INJECT_ERROR_CODE", FUNC_EVENT_INJECT_ERROR_CODE}, }; const SYMBOL_MAP RegisterMapList[]= { {"rax", REGISTER_RAX}, {"eax", REGISTER_EAX}, {"ax", REGISTER_AX}, {"ah", REGISTER_AH}, {"al", REGISTER_AL}, {"rcx", REGISTER_RCX}, {"ecx", REGISTER_ECX}, {"cx", REGISTER_CX}, {"ch", REGISTER_CH}, {"cl", REGISTER_CL}, {"rdx", REGISTER_RDX}, {"edx", REGISTER_EDX}, {"dx", REGISTER_DX}, {"dh", REGISTER_DH}, {"dl", REGISTER_DL}, {"rbx", REGISTER_RBX}, {"ebx", REGISTER_EBX}, {"bx", REGISTER_BX}, {"bh", REGISTER_BH}, {"bl", REGISTER_BL}, {"rsp", REGISTER_RSP}, {"esp", REGISTER_ESP}, {"sp", REGISTER_SP}, {"spl", REGISTER_SPL}, {"rbp", REGISTER_RBP}, {"ebp", REGISTER_EBP}, {"bp", REGISTER_BP}, {"bpl", REGISTER_BPL}, {"rsi", REGISTER_RSI}, {"esi", REGISTER_ESI}, {"si", REGISTER_SI}, {"sil", REGISTER_SIL}, {"rdi", REGISTER_RDI}, {"edi", REGISTER_EDI}, {"di", REGISTER_DI}, {"dil", REGISTER_DIL}, {"r8", REGISTER_R8}, {"r8d", REGISTER_R8D}, {"r8w", REGISTER_R8W}, {"r8h", REGISTER_R8H}, {"r8l", REGISTER_R8L}, {"r9", REGISTER_R9}, {"r9d", REGISTER_R9D}, {"r9w", REGISTER_R9W}, {"r9h", REGISTER_R9H}, {"r9l", REGISTER_R9L}, {"r10", REGISTER_R10}, {"r10d", REGISTER_R10D}, {"r10w", REGISTER_R10W}, {"r10h", REGISTER_R10H}, {"r10l", REGISTER_R10L}, {"r11", REGISTER_R11}, {"r11d", REGISTER_R11D}, {"r11w", REGISTER_R11W}, {"r11h", REGISTER_R11H}, {"r11l", REGISTER_R11L}, {"r12", REGISTER_R12}, {"r12d", REGISTER_R12D}, {"r12w", REGISTER_R12W}, {"r12h", REGISTER_R12H}, {"r12l", REGISTER_R12L}, {"r13", REGISTER_R13}, {"r13d", REGISTER_R13D}, {"r13w", REGISTER_R13W}, {"r13h", REGISTER_R13H}, {"r13l", REGISTER_R13L}, {"r14", REGISTER_R14}, {"r14d", REGISTER_R14D}, {"r14w", REGISTER_R14W}, {"r14h", REGISTER_R14H}, {"r14l", REGISTER_R14L}, {"r15", REGISTER_R15}, {"r15d", REGISTER_R15D}, {"r15w", REGISTER_R15W}, {"r15h", REGISTER_R15H}, {"r15l", REGISTER_R15L}, {"ds", REGISTER_DS}, {"es", REGISTER_ES}, {"fs", REGISTER_FS}, {"gs", REGISTER_GS}, {"cs", REGISTER_CS}, {"ss", REGISTER_SS}, {"rflags", REGISTER_RFLAGS}, {"eflags", REGISTER_EFLAGS}, {"flags", REGISTER_FLAGS}, {"cf", REGISTER_CF}, {"pf", REGISTER_PF}, {"af", REGISTER_AF}, {"zf", REGISTER_ZF}, {"sf", REGISTER_SF}, {"tf", REGISTER_TF}, {"if", REGISTER_IF}, {"df", REGISTER_DF}, {"of", REGISTER_OF}, {"iopl", REGISTER_IOPL}, {"nt", REGISTER_NT}, {"rf", REGISTER_RF}, {"vm", REGISTER_VM}, {"ac", REGISTER_AC}, {"vif", REGISTER_VIF}, {"vip", REGISTER_VIP}, {"id", REGISTER_ID}, {"rip", REGISTER_RIP}, {"eip", REGISTER_EIP}, {"ip", REGISTER_IP}, {"idtr", REGISTER_IDTR}, {"ldtr", REGISTER_LDTR}, {"gdtr", REGISTER_GDTR}, {"tr", REGISTER_TR}, {"cr0", REGISTER_CR0}, {"cr2", REGISTER_CR2}, {"cr3", REGISTER_CR3}, {"cr4", REGISTER_CR4}, {"cr8", REGISTER_CR8}, {"dr0", REGISTER_DR0}, {"dr1", REGISTER_DR1}, {"dr2", REGISTER_DR2}, {"dr3", REGISTER_DR3}, {"dr6", REGISTER_DR6}, {"dr7", REGISTER_DR7} }; const SYMBOL_MAP PseudoRegisterMapList[]= { {"pid", PSEUDO_REGISTER_PID}, {"tid", PSEUDO_REGISTER_TID}, {"pname", PSEUDO_REGISTER_PNAME}, {"core", PSEUDO_REGISTER_CORE}, {"proc", PSEUDO_REGISTER_PROC}, {"thread", PSEUDO_REGISTER_THREAD}, {"peb", PSEUDO_REGISTER_PEB}, {"teb", PSEUDO_REGISTER_TEB}, {"ip", PSEUDO_REGISTER_IP}, {"buffer", PSEUDO_REGISTER_BUFFER}, {"context", PSEUDO_REGISTER_CONTEXT}, {"tag", PSEUDO_REGISTER_TAG}, {"id", PSEUDO_REGISTER_ID}, {"stage", PSEUDO_REGISTER_STAGE} }; const struct _TOKEN LalrLhs[RULES_COUNT]= { {NON_TERMINAL, "S"}, {NON_TERMINAL, "BE"}, {NON_TERMINAL, "B1"}, {NON_TERMINAL, "B1"}, {NON_TERMINAL, "B2"}, {NON_TERMINAL, "B2"}, {NON_TERMINAL, "B3"}, {NON_TERMINAL, "B3"}, {NON_TERMINAL, "B4"}, {NON_TERMINAL, "B4"}, {NON_TERMINAL, "B5"}, {NON_TERMINAL, "B5"}, {NON_TERMINAL, "B6"}, {NON_TERMINAL, "CMP"}, {NON_TERMINAL, "CMP"}, {NON_TERMINAL, "CMP"}, {NON_TERMINAL, "CMP"}, {NON_TERMINAL, "CMP"}, {NON_TERMINAL, "CMP"}, {NON_TERMINAL, "CMP"}, {NON_TERMINAL, "EXP"}, {NON_TERMINAL, "E3"}, {NON_TERMINAL, "E3"}, {NON_TERMINAL, "E3"}, {NON_TERMINAL, "E4"}, {NON_TERMINAL, "E4"}, {NON_TERMINAL, "E4"}, {NON_TERMINAL, "E5"}, {NON_TERMINAL, "E5"}, {NON_TERMINAL, "E5"}, {NON_TERMINAL, "E5"}, {NON_TERMINAL, "E10"}, {NON_TERMINAL, "E10"}, {NON_TERMINAL, "E10"}, {NON_TERMINAL, "E10"}, {NON_TERMINAL, "E10"}, {NON_TERMINAL, "E10"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"}, {NON_TERMINAL, "E12"} }; const struct _TOKEN LalrRhs[RULES_COUNT][MAX_RHS_LEN]= { {{NON_TERMINAL, "BE"}}, {{NON_TERMINAL, "B1"}}, {{NON_TERMINAL, "B1"},{SPECIAL_TOKEN, "||"},{NON_TERMINAL, "B2"},{SEMANTIC_RULE, "@OR"}}, {{NON_TERMINAL, "B2"}}, {{NON_TERMINAL, "B1"},{SPECIAL_TOKEN, "&&"},{NON_TERMINAL, "B3"},{SEMANTIC_RULE, "@AND"}}, {{NON_TERMINAL, "B3"}}, {{NON_TERMINAL, "B3"},{SPECIAL_TOKEN, "|"},{NON_TERMINAL, "B4"},{SEMANTIC_RULE, "@OR"}}, {{NON_TERMINAL, "B4"}}, {{NON_TERMINAL, "B4"},{SPECIAL_TOKEN, "^"},{NON_TERMINAL, "B5"},{SEMANTIC_RULE, "@XOR"}}, {{NON_TERMINAL, "B5"}}, {{NON_TERMINAL, "B5"},{SPECIAL_TOKEN, "&"},{NON_TERMINAL, "B6"},{SEMANTIC_RULE, "@AND"}}, {{NON_TERMINAL, "B6"}}, {{NON_TERMINAL, "CMP"}}, {{NON_TERMINAL, "CMP"},{KEYWORD, ">"},{NON_TERMINAL, "EXP"},{SEMANTIC_RULE, "@GT"}}, {{NON_TERMINAL, "CMP"},{KEYWORD, "<"},{NON_TERMINAL, "EXP"},{SEMANTIC_RULE, "@LT"}}, {{NON_TERMINAL, "CMP"},{SPECIAL_TOKEN, ">="},{NON_TERMINAL, "EXP"},{SEMANTIC_RULE, "@EGT"}}, {{NON_TERMINAL, "CMP"},{SPECIAL_TOKEN, "<="},{NON_TERMINAL, "EXP"},{SEMANTIC_RULE, "@ELT"}}, {{NON_TERMINAL, "CMP"},{SPECIAL_TOKEN, "=="},{NON_TERMINAL, "EXP"},{SEMANTIC_RULE, "@EQUAL"}}, {{NON_TERMINAL, "CMP"},{SPECIAL_TOKEN, "!="},{NON_TERMINAL, "EXP"},{SEMANTIC_RULE, "@NEQ"}}, {{NON_TERMINAL, "EXP"}}, {{NON_TERMINAL, "E3"}}, {{NON_TERMINAL, "E3"},{SPECIAL_TOKEN, ">>"},{NON_TERMINAL, "E4"},{SEMANTIC_RULE, "@ASR"}}, {{NON_TERMINAL, "E3"},{SPECIAL_TOKEN, "<<"},{NON_TERMINAL, "E4"},{SEMANTIC_RULE, "@ASL"}}, {{NON_TERMINAL, "E4"}}, {{NON_TERMINAL, "E4"},{SPECIAL_TOKEN, "+"},{NON_TERMINAL, "E5"},{SEMANTIC_RULE, "@ADD"}}, {{NON_TERMINAL, "E4"},{SPECIAL_TOKEN, "-"},{NON_TERMINAL, "E5"},{SEMANTIC_RULE, "@SUB"}}, {{NON_TERMINAL, "E5"}}, {{NON_TERMINAL, "E5"},{SPECIAL_TOKEN, "/"},{NON_TERMINAL, "E10"},{SEMANTIC_RULE, "@DIV"}}, {{NON_TERMINAL, "E5"},{SPECIAL_TOKEN, "%"},{NON_TERMINAL, "E10"},{SEMANTIC_RULE, "@MOD"}}, {{NON_TERMINAL, "E5"},{SPECIAL_TOKEN, "*"},{NON_TERMINAL, "E10"},{SEMANTIC_RULE, "@MUL"}}, {{NON_TERMINAL, "E10"}}, {{NON_TERMINAL, "E12"}}, {{SPECIAL_TOKEN, "-"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@NEG"}}, {{SPECIAL_TOKEN, "+"},{NON_TERMINAL, "E12"}}, {{KEYWORD, "~"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@NOT"}}, {{SPECIAL_TOKEN, "*"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@POI"}}, {{SPECIAL_TOKEN, "&"},{NON_TERMINAL, "E12"},{SEMANTIC_RULE, "@REFERENCE"}}, {{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@POI"}}, {{KEYWORD, "db"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DB"}}, {{KEYWORD, "dd"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DD"}}, {{KEYWORD, "dw"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DW"}}, {{KEYWORD, "dq"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@DQ"}}, {{KEYWORD, "neg"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@NEG"}}, {{KEYWORD, "hi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@HI"}}, {{KEYWORD, "low"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@LOW"}}, {{KEYWORD, "not"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@NOT"}}, {{KEYWORD, "check_address"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@CHECK_ADDRESS"}}, {{KEYWORD, "strlen"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@STRLEN"}}, {{KEYWORD, "wcslen"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@WCSLEN"}}, {{KEYWORD, "interlocked_increment"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_INCREMENT"}}, {{KEYWORD, "interlocked_decrement"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_DECREMENT"}}, {{KEYWORD, "reference"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@REFERENCE"}}, {{KEYWORD, "physical_to_virtual"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@PHYSICAL_TO_VIRTUAL"}}, {{KEYWORD, "virtual_to_physical"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@VIRTUAL_TO_PHYSICAL"}}, {{KEYWORD, "ed"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@ED"}}, {{KEYWORD, "eb"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@EB"}}, {{KEYWORD, "eq"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@EQ"}}, {{KEYWORD, "interlocked_exchange"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_EXCHANGE"}}, {{KEYWORD, "interlocked_exchange_add"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_EXCHANGE_ADD"}}, {{KEYWORD, "interlocked_compare_exchange"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ","},{NON_TERMINAL, "EXP"},{SPECIAL_TOKEN, ")"},{SEMANTIC_RULE, "@INTERLOCKED_COMPARE_EXCHANGE"}}, {{SPECIAL_TOKEN, "("},{NON_TERMINAL, "BE"},{SPECIAL_TOKEN, ")"}}, {{REGISTER, "_register"},{SEMANTIC_RULE, "@PUSH"}}, {{GLOBAL_ID, "_global_id"},{SEMANTIC_RULE, "@PUSH"}}, {{LOCAL_ID, "_local_id"},{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"},{SEMANTIC_RULE, "@PUSH"}} }; const unsigned int LalrRhsSize[RULES_COUNT]= { 1, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 1, 4, 4, 4, 4, 4, 4, 1, 1, 4, 4, 1, 4, 4, 1, 4, 4, 4, 1, 1, 3, 2, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 9, 3, 2, 2, 2, 2, 2, 2, 2, 2 }; const char* LalrNoneTerminalMap[NONETERMINAL_COUNT]= { {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,73 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {14 ,11 ,15 ,5 ,3 ,8 ,9 ,7 ,75 ,12 ,10 ,6 ,4 ,13 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,76 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,77 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,81 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,83 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,86 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,91 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,92 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {14 ,11 ,15 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,12 ,166 ,-999 ,-999 ,13 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {14 ,11 ,15 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,12 ,168 ,-999 ,-999 ,13 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {166 ,-999 ,-999 ,-999 ,-999 ,13 ,-999 ,11 ,-999 ,15 ,-999 ,14 ,-999 ,-999 ,12 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {167 ,-999 ,-999 ,-999 ,-999 ,13 ,-999 ,11 ,-999 ,15 ,-999 ,14 ,-999 ,-999 ,12 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {14 ,11 ,15 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,12 ,170 ,-999 ,-999 ,13 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {14 ,11 ,15 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,12 ,171 ,-999 ,-999 ,13 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {171 ,-999 ,-999 ,-999 ,-999 ,13 ,-999 ,11 ,-999 ,15 ,-999 ,14 ,-999 ,-999 ,12 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {178 ,-999 ,-999 ,-999 ,-999 ,13 ,-999 ,11 ,-999 ,15 ,-999 ,14 ,-999 ,-999 ,12 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {14 ,11 ,15 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,12 ,178 ,-999 ,-999 ,13 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 }, {-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 ,-999 } }; const int LalrActionTable {SEMANTIC_RULE, "@EQ"}, {SEMANTIC_RULE, "@INTERLOCKED_EXCHANGE"}, {SEMANTIC_RULE, "@INTERLOCKED_EXCHANGE_ADD"}, {SEMANTIC_RULE, "@INTERLOCKED_COMPARE_EXCHANGE"}, {UNKNOWN, ""}, {SEMANTIC_RULE, "@PUSH"}, {SEMANTIC_RULE, "@PUSH"}, {SEMANTIC_RULE, "@PUSH"}, {SEMANTIC_RULE, "@PUSH"}, {SEMANTIC_RULE, "@PUSH"}, {SEMANTIC_RULE, "@PUSH"}, {SEMANTIC_RULE, "@PUSH"}, {SEMANTIC_RULE, "@PUSH"} };