mirror of
https://github.com/HyperDbg/HyperDbg.git
synced 2026-07-12 18:49:32 +00:00
123 lines
2.7 KiB
C
123 lines
2.7 KiB
C
/**
|
|
* @file script-engine.h
|
|
* @author M.H. Gholamrezaei (mh@hyperdbg.org)
|
|
* @brief Script engine parser and codegen
|
|
* @details
|
|
* @version 0.1
|
|
* @date 2020-10-22
|
|
*
|
|
* @copyright This project is released under the GNU Public License v3.
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
#include "type.h"
|
|
|
|
#ifndef SCRIPT_ENGINE_H
|
|
# define SCRIPT_ENGINE_H
|
|
|
|
|
|
VOID
|
|
ShowMessages(const char * Fmt, ...);
|
|
|
|
PSYMBOL
|
|
NewSymbol(void);
|
|
|
|
PSYMBOL
|
|
NewStringSymbol(PSCRIPT_ENGINE_TOKEN Token);
|
|
|
|
PSYMBOL
|
|
NewWstringSymbol(PSCRIPT_ENGINE_TOKEN Token);
|
|
|
|
unsigned int
|
|
GetSymbolHeapSize(PSYMBOL Symbol);
|
|
|
|
void
|
|
RemoveSymbol(PSYMBOL * Symbol);
|
|
|
|
PSYMBOL_BUFFER
|
|
NewSymbolBuffer(void);
|
|
|
|
PSYMBOL_BUFFER
|
|
PushSymbol(PSYMBOL_BUFFER SymbolBuffer, const PSYMBOL Symbol);
|
|
|
|
PSYMBOL
|
|
ToSymbol(PSCRIPT_ENGINE_TOKEN PTOKEN, PSCRIPT_ENGINE_ERROR_TYPE Error);
|
|
|
|
void
|
|
ScriptEngineBooleanExpresssionParse(
|
|
UINT64 BooleanExpressionSize,
|
|
PSCRIPT_ENGINE_TOKEN FirstToken,
|
|
PSCRIPT_ENGINE_TOKEN_LIST MatchedStack,
|
|
PSYMBOL_BUFFER CodeBuffer,
|
|
char * str,
|
|
char * c,
|
|
PSCRIPT_ENGINE_ERROR_TYPE Error);
|
|
|
|
UINT64
|
|
BooleanExpressionExtractEnd(char * str, BOOL * WaitForWaitStatementBooleanExpression, PSCRIPT_ENGINE_TOKEN CurrentIn);
|
|
|
|
void
|
|
CodeGen(
|
|
PSCRIPT_ENGINE_TOKEN_LIST MatchedStack,
|
|
PSYMBOL_BUFFER CodeBuffer,
|
|
PSCRIPT_ENGINE_TOKEN Operator,
|
|
PSCRIPT_ENGINE_ERROR_TYPE Error,
|
|
char** ScriptSource
|
|
);
|
|
|
|
unsigned long long int
|
|
RegisterToInt(char * str);
|
|
|
|
unsigned long long int
|
|
PseudoRegToInt(char * str);
|
|
|
|
unsigned long long int
|
|
SemanticRuleToInt(char * str);
|
|
|
|
char *
|
|
HandleError(PSCRIPT_ENGINE_ERROR_TYPE Error, char * str);
|
|
|
|
int
|
|
NewGlobalIdentifier(PSCRIPT_ENGINE_TOKEN PTOKEN);
|
|
|
|
int
|
|
GetGlobalIdentifierVal(PSCRIPT_ENGINE_TOKEN PTOKEN);
|
|
|
|
VOID
|
|
SetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, VARIABLE_TYPE * VariableType);
|
|
|
|
VARIABLE_TYPE *
|
|
GetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token);
|
|
|
|
unsigned long long
|
|
NewLocalIdentifier(PSCRIPT_ENGINE_TOKEN PTOKEN, unsigned int VariableSize);
|
|
|
|
int
|
|
GetLocalIdentifierVal(PSCRIPT_ENGINE_TOKEN PTOKEN);
|
|
|
|
VOID
|
|
SetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, VARIABLE_TYPE * VariableType);
|
|
|
|
VARIABLE_TYPE *
|
|
GetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token);
|
|
|
|
int
|
|
NewFunctionParameterIdentifier(PSCRIPT_ENGINE_TOKEN Token);
|
|
|
|
int
|
|
GetFunctionParameterIdentifier(PSCRIPT_ENGINE_TOKEN Token);
|
|
|
|
int
|
|
LalrGetRhsSize(int RuleId);
|
|
|
|
BOOL
|
|
LalrIsOperandType(PSCRIPT_ENGINE_TOKEN PTOKEN);
|
|
|
|
PUSER_DEFINED_FUNCTION_NODE
|
|
GetUserDefinedFunctionNode(PSCRIPT_ENGINE_TOKEN Token);
|
|
|
|
BOOLEAN
|
|
FuncGetNumberOfOperands(UINT64 FuncType, UINT32 * NumberOfGetOperands, UINT32 * NumberOfSetOperands);
|
|
|
|
#endif
|