HyperDbg/hyperdbg/script-engine/src/parse_table.h
2020-11-28 19:39:08 +03:30

281 lines
10 KiB
C

#ifndef PARSE_TABLE_H
#define PARSE_TABLE_H
#include "scanner.h"
#define RULES_COUNT 56
#define TERMINAL_COUNT 36
#define NONETERMINAL_COUNT 25
#define START_VARIABLE "S"
#define MAX_RHS_LEN 6
const struct _TOKEN Lhs[RULES_COUNT]=
{
{NON_TERMINAL, "S"},
{NON_TERMINAL, "S'"},
{NON_TERMINAL, "S'"},
{NON_TERMINAL, "C"},
{NON_TERMINAL, "C"},
{NON_TERMINAL, "C'"},
{NON_TERMINAL, "E0"},
{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, "E4"},
{NON_TERMINAL, "E4'"},
{NON_TERMINAL, "E4'"},
{NON_TERMINAL, "E5"},
{NON_TERMINAL, "E5'"},
{NON_TERMINAL, "E5'"},
{NON_TERMINAL, "E6"},
{NON_TERMINAL, "E6'"},
{NON_TERMINAL, "E6'"},
{NON_TERMINAL, "E7"},
{NON_TERMINAL, "E7'"},
{NON_TERMINAL, "E7'"},
{NON_TERMINAL, "E8"},
{NON_TERMINAL, "E8'"},
{NON_TERMINAL, "E8'"},
{NON_TERMINAL, "E9"},
{NON_TERMINAL, "E9'"},
{NON_TERMINAL, "E9'"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"},
{NON_TERMINAL, "E10"}
};
const struct _TOKEN Rhs[RULES_COUNT][MAX_RHS_LEN]=
{
{{NON_TERMINAL, "C"},{SPECIAL_TOKEN, ";"},{NON_TERMINAL, "S'"}},
{{NON_TERMINAL, "C"},{SPECIAL_TOKEN, ";"},{NON_TERMINAL, "S'"}},
{{EPSILON, "eps"}},
{{SEMANTIC_RULE, "@PUSH"},{ID, "_id"},{SPECIAL_TOKEN, "="},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@MOV"},{NON_TERMINAL, "C'"}},
{{KEYWORD, "print"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@PRINT"},{SPECIAL_TOKEN, ")"}},
{{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'"}},
{{EPSILON, "eps"}},
{{NON_TERMINAL, "E5"},{NON_TERMINAL, "E4'"}},
{{SPECIAL_TOKEN, "<<"},{NON_TERMINAL, "E5"},{SEMANTIC_RULE, "@ASL"},{NON_TERMINAL, "E4'"}},
{{EPSILON, "eps"}},
{{NON_TERMINAL, "E6"},{NON_TERMINAL, "E5'"}},
{{SPECIAL_TOKEN, "+"},{NON_TERMINAL, "E6"},{SEMANTIC_RULE, "@ADD"},{NON_TERMINAL, "E5'"}},
{{EPSILON, "eps"}},
{{NON_TERMINAL, "E7"},{NON_TERMINAL, "E6'"}},
{{SPECIAL_TOKEN, "-"},{NON_TERMINAL, "E7"},{SEMANTIC_RULE, "@SUB"},{NON_TERMINAL, "E6'"}},
{{EPSILON, "eps"}},
{{NON_TERMINAL, "E8"},{NON_TERMINAL, "E7'"}},
{{SPECIAL_TOKEN, "*"},{NON_TERMINAL, "E8"},{SEMANTIC_RULE, "@MUL"},{NON_TERMINAL, "E7'"}},
{{EPSILON, "eps"}},
{{NON_TERMINAL, "E9"},{NON_TERMINAL, "E8'"}},
{{SPECIAL_TOKEN, "/"},{NON_TERMINAL, "E9"},{SEMANTIC_RULE, "@DIV"},{NON_TERMINAL, "E8'"}},
{{EPSILON, "eps"}},
{{NON_TERMINAL, "E10"},{NON_TERMINAL, "E9'"}},
{{SPECIAL_TOKEN, "%"},{NON_TERMINAL, "E10"},{SEMANTIC_RULE, "@MOD"},{NON_TERMINAL, "E9'"}},
{{EPSILON, "eps"}},
{{KEYWORD, "poi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@POI"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "db"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@DB"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "dd"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@DD"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "dw"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@DW"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "dq"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@DQ"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "str"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@STR"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "wstr"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@WSTR"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "sizeof"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@SIZEOF"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "not"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@NOT"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "neg"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@NEG"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "hi"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@HI"},{SPECIAL_TOKEN, ")"}},
{{KEYWORD, "low"},{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SEMANTIC_RULE, "@LOW"},{SPECIAL_TOKEN, ")"}},
{{SPECIAL_TOKEN, "("},{NON_TERMINAL, "E0"},{SPECIAL_TOKEN, ")"}},
{{SEMANTIC_RULE, "@PUSH"},{REGISTER, "_register"}},
{{SEMANTIC_RULE, "@PUSH"},{HEX, "_hex"}},
{{SEMANTIC_RULE, "@PUSH"},{DECIMAL, "_decimal"}},
{{SEMANTIC_RULE, "@PUSH"},{OCTAL, "_octal"}},
{{SEMANTIC_RULE, "@PUSH"},{BINARY, "_binary"}},
{{SEMANTIC_RULE, "@PUSH"},{KEYWORD, "func"}},
{{SEMANTIC_RULE, "@PUSH"},{PSEUDO_REGISTER, "_pseudo_register"}}
};
const unsigned int RhsSize[RULES_COUNT]=
{
3,
3,
1,
6,
5,
1,
2,
4,
1,
2,
4,
1,
2,
4,
1,
2,
4,
1,
2,
4,
1,
2,
4,
1,
2,
4,
1,
2,
4,
1,
2,
4,
1,
2,
4,
1,
5,
5,
5,
5,
5,
5,
5,
5,
5,
5,
5,
5,
3,
2,
2,
2,
2,
2,
2,
2
};
const char* NoneTerminalMap[NONETERMINAL_COUNT]=
{
"S",
"E6",
"E10",
"E7'",
"E5",
"E8'",
"S'",
"E2'",
"E9'",
"E9",
"E2",
"E4",
"E8",
"E0'",
"E3'",
"E7",
"E5'",
"E3",
"C",
"E6'",
"E4'",
"E1",
"C'",
"E1'",
"E0"
};
const char* TerminalMap[TERMINAL_COUNT]=
{
"&",
"neg",
"<<",
"|",
"_octal",
"dq",
"*",
"_hex",
")",
"sizeof",
"_pseudo_register",
"wstr",
"hi",
"not",
"_register",
"str",
"_id",
"-",
"/",
"func",
"%",
"print",
"(",
"low",
";",
"_binary",
">>",
"db",
"$",
"_decimal",
"dw",
"=",
"^",
"poi",
"dd",
"+"
};
const int ParseTable[NONETERMINAL_COUNT][TERMINAL_COUNT]=
{
{-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,0 ,-1 ,-1 ,-1 ,-1 ,0 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 },
{-1 ,24 ,-1 ,-1 ,24 ,24 ,-1 ,24 ,-1 ,24 ,24 ,24 ,24 ,24 ,24 ,24 ,-1 ,-1 ,-1 ,24 ,-1 ,-1 ,24 ,24 ,-1 ,24 ,-1 ,24 ,-1 ,24 ,24 ,-1 ,-1 ,24 ,24 ,-1 },
{-1 ,45 ,-1 ,-1 ,52 ,40 ,-1 ,50 ,-1 ,43 ,55 ,42 ,46 ,44 ,49 ,41 ,-1 ,-1 ,-1 ,54 ,-1 ,-1 ,48 ,47 ,-1 ,53 ,-1 ,37 ,-1 ,51 ,39 ,-1 ,-1 ,36 ,38 ,-1 },
{29 ,-1 ,29 ,29 ,-1 ,-1 ,28 ,-1 ,29 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,29 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,29 ,-1 ,29 ,-1 ,-1 ,-1 ,-1 ,-1 ,29 ,-1 ,-1 ,29 },
{-1 ,21 ,-1 ,-1 ,21 ,21 ,-1 ,21 ,-1 ,21 ,21 ,21 ,21 ,21 ,21 ,21 ,-1 ,-1 ,-1 ,21 ,-1 ,-1 ,21 ,21 ,-1 ,21 ,-1 ,21 ,-1 ,21 ,21 ,-1 ,-1 ,21 ,21 ,-1 },
{32 ,-1 ,32 ,32 ,-1 ,-1 ,32 ,-1 ,32 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,32 ,31 ,-1 ,-1 ,-1 ,-1 ,-1 ,32 ,-1 ,32 ,-1 ,-1 ,-1 ,-1 ,-1 ,32 ,-1 ,-1 ,32 },
{-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,1 ,-1 ,-1 ,-1 ,-1 ,1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,2 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 },
{13 ,-1 ,-1 ,14 ,-1 ,-1 ,-1 ,-1 ,14 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,14 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,14 ,-1 ,-1 ,-1 },
{35 ,-1 ,35 ,35 ,-1 ,-1 ,35 ,-1 ,35 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,35 ,35 ,-1 ,34 ,-1 ,-1 ,-1 ,35 ,-1 ,35 ,-1 ,-1 ,-1 ,-1 ,-1 ,35 ,-1 ,-1 ,35 },
{-1 ,33 ,-1 ,-1 ,33 ,33 ,-1 ,33 ,-1 ,33 ,33 ,33 ,33 ,33 ,33 ,33 ,-1 ,-1 ,-1 ,33 ,-1 ,-1 ,33 ,33 ,-1 ,33 ,-1 ,33 ,-1 ,33 ,33 ,-1 ,-1 ,33 ,33 ,-1 },
{-1 ,12 ,-1 ,-1 ,12 ,12 ,-1 ,12 ,-1 ,12 ,12 ,12 ,12 ,12 ,12 ,12 ,-1 ,-1 ,-1 ,12 ,-1 ,-1 ,12 ,12 ,-1 ,12 ,-1 ,12 ,-1 ,12 ,12 ,-1 ,-1 ,12 ,12 ,-1 },
{-1 ,18 ,-1 ,-1 ,18 ,18 ,-1 ,18 ,-1 ,18 ,18 ,18 ,18 ,18 ,18 ,18 ,-1 ,-1 ,-1 ,18 ,-1 ,-1 ,18 ,18 ,-1 ,18 ,-1 ,18 ,-1 ,18 ,18 ,-1 ,-1 ,18 ,18 ,-1 },
{-1 ,30 ,-1 ,-1 ,30 ,30 ,-1 ,30 ,-1 ,30 ,30 ,30 ,30 ,30 ,30 ,30 ,-1 ,-1 ,-1 ,30 ,-1 ,-1 ,30 ,30 ,-1 ,30 ,-1 ,30 ,-1 ,30 ,30 ,-1 ,-1 ,30 ,30 ,-1 },
{-1 ,-1 ,-1 ,7 ,-1 ,-1 ,-1 ,-1 ,8 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,8 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 },
{17 ,-1 ,-1 ,17 ,-1 ,-1 ,-1 ,-1 ,17 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,17 ,-1 ,16 ,-1 ,-1 ,-1 ,-1 ,-1 ,17 ,-1 ,-1 ,-1 },
{-1 ,27 ,-1 ,-1 ,27 ,27 ,-1 ,27 ,-1 ,27 ,27 ,27 ,27 ,27 ,27 ,27 ,-1 ,-1 ,-1 ,27 ,-1 ,-1 ,27 ,27 ,-1 ,27 ,-1 ,27 ,-1 ,27 ,27 ,-1 ,-1 ,27 ,27 ,-1 },
{23 ,-1 ,23 ,23 ,-1 ,-1 ,-1 ,-1 ,23 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,23 ,-1 ,23 ,-1 ,-1 ,-1 ,-1 ,-1 ,23 ,-1 ,-1 ,22 },
{-1 ,15 ,-1 ,-1 ,15 ,15 ,-1 ,15 ,-1 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,-1 ,-1 ,-1 ,15 ,-1 ,-1 ,15 ,15 ,-1 ,15 ,-1 ,15 ,-1 ,15 ,15 ,-1 ,-1 ,15 ,15 ,-1 },
{-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,3 ,-1 ,-1 ,-1 ,-1 ,4 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 },
{26 ,-1 ,26 ,26 ,-1 ,-1 ,-1 ,-1 ,26 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,25 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,26 ,-1 ,26 ,-1 ,-1 ,-1 ,-1 ,-1 ,26 ,-1 ,-1 ,26 },
{20 ,-1 ,19 ,20 ,-1 ,-1 ,-1 ,-1 ,20 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,20 ,-1 ,20 ,-1 ,-1 ,-1 ,-1 ,-1 ,20 ,-1 ,-1 ,-1 },
{-1 ,9 ,-1 ,-1 ,9 ,9 ,-1 ,9 ,-1 ,9 ,9 ,9 ,9 ,9 ,9 ,9 ,-1 ,-1 ,-1 ,9 ,-1 ,-1 ,9 ,9 ,-1 ,9 ,-1 ,9 ,-1 ,9 ,9 ,-1 ,-1 ,9 ,9 ,-1 },
{-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,5 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 },
{-1 ,-1 ,-1 ,11 ,-1 ,-1 ,-1 ,-1 ,11 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,11 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,10 ,-1 ,-1 ,-1 },
{-1 ,6 ,-1 ,-1 ,6 ,6 ,-1 ,6 ,-1 ,6 ,6 ,6 ,6 ,6 ,6 ,6 ,-1 ,-1 ,-1 ,6 ,-1 ,-1 ,6 ,6 ,-1 ,6 ,-1 ,6 ,-1 ,6 ,6 ,-1 ,-1 ,6 ,6 ,-1 }
};
#endif