HyperDbg/hyperdbg/script-engine/header/script-engine.h

130 lines
2.8 KiB
C
Raw Permalink Normal View History

2020-10-22 18:56:58 +03:30
/**
2021-06-10 17:33:05 +04:30
* @file script-engine.h
2022-01-18 22:38:56 +03:30
* @author M.H. Gholamrezaei (mh@hyperdbg.org)
2020-10-24 12:19:10 +03:30
* @brief Script engine parser and codegen
2020-10-22 18:56:58 +03:30
* @details
* @version 0.1
* @date 2020-10-22
*
* @copyright This project is released under the GNU Public License v3.
*
*/
2020-11-04 15:50:14 +03:30
#pragma once
#include "type.h"
2020-12-03 18:02:49 +03:30
#ifndef SCRIPT_ENGINE_H
2021-03-22 18:19:39 +04:30
# define SCRIPT_ENGINE_H
2020-12-01 22:26:46 +03:30
2020-10-20 19:35:15 +03:30
VOID
ShowMessages(const char * Fmt, ...);
2021-03-22 18:19:39 +04:30
PSYMBOL
NewSymbol(void);
2020-12-01 22:26:46 +03:30
2021-03-22 18:19:39 +04:30
PSYMBOL
NewStringSymbol(PSCRIPT_ENGINE_TOKEN Token);
2020-12-03 18:02:49 +03:30
PSYMBOL
NewWstringSymbol(PSCRIPT_ENGINE_TOKEN Token);
2021-03-22 18:19:39 +04:30
unsigned int
GetSymbolHeapSize(PSYMBOL Symbol);
2021-03-22 18:19:39 +04:30
void
2022-05-19 20:16:57 +09:00
RemoveSymbol(PSYMBOL * Symbol);
2020-12-02 02:32:49 +03:30
2021-03-22 18:19:39 +04:30
PSYMBOL_BUFFER
NewSymbolBuffer(void);
2020-12-02 02:32:49 +03:30
2021-03-22 18:19:39 +04:30
PSYMBOL_BUFFER
PushSymbol(PSYMBOL_BUFFER SymbolBuffer, const PSYMBOL Symbol);
2020-12-02 02:32:49 +03:30
2021-03-22 18:19:39 +04:30
PSYMBOL
ToSymbol(PSCRIPT_ENGINE_TOKEN PTOKEN, PSCRIPT_ENGINE_ERROR_TYPE Error);
2020-10-20 19:35:15 +03:30
void
2021-04-11 18:27:23 +04:30
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);
2021-04-11 18:27:23 +04:30
void
CodeGen(
PSCRIPT_ENGINE_TOKEN_LIST MatchedStack,
PSYMBOL_BUFFER CodeBuffer,
PSCRIPT_ENGINE_TOKEN Operator,
2026-01-06 16:38:22 +08:00
PSCRIPT_ENGINE_ERROR_TYPE Error,
char** ScriptSource
);
2020-10-20 19:35:15 +03:30
2021-03-22 18:19:39 +04:30
unsigned long long int
RegisterToInt(char * str);
2020-10-20 19:35:15 +03:30
2021-03-22 18:19:39 +04:30
unsigned long long int
PseudoRegToInt(char * str);
2020-10-20 19:35:15 +03:30
2021-03-22 18:19:39 +04:30
unsigned long long int
SemanticRuleToInt(char * str);
2020-10-20 19:35:15 +03:30
2021-03-22 18:19:39 +04:30
char *
2021-06-27 19:48:25 +04:30
HandleError(PSCRIPT_ENGINE_ERROR_TYPE Error, char * str);
int
NewGlobalIdentifier(PSCRIPT_ENGINE_TOKEN PTOKEN);
2021-03-03 16:53:19 +03:30
2021-03-22 18:19:39 +04:30
int
GetGlobalIdentifierVal(PSCRIPT_ENGINE_TOKEN PTOKEN);
VOID
2025-10-21 12:56:21 +02:00
SetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, VARIABLE_TYPE * VariableType);
2025-10-21 12:56:21 +02:00
VARIABLE_TYPE *
GetGlobalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token);
BOOLEAN
GetGlobalIdentifierIsImplicitType(PSCRIPT_ENGINE_TOKEN Token);
2025-10-21 16:46:49 +08:00
unsigned long long
NewLocalIdentifier(PSCRIPT_ENGINE_TOKEN PTOKEN, unsigned int VariableSize);
2021-03-03 16:53:19 +03:30
2021-04-11 18:27:23 +04:30
int
GetLocalIdentifierVal(PSCRIPT_ENGINE_TOKEN PTOKEN);
2021-04-11 18:27:23 +04:30
VOID
2025-10-21 12:56:21 +02:00
SetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token, VARIABLE_TYPE * VariableType);
2025-10-21 12:56:21 +02:00
VARIABLE_TYPE *
GetLocalIdentifierVariableType(PSCRIPT_ENGINE_TOKEN Token);
2021-04-11 18:27:23 +04:30
BOOLEAN
GetLocalIdentifierIsImplicitType(PSCRIPT_ENGINE_TOKEN Token);
int
NewFunctionParameterIdentifier(PSCRIPT_ENGINE_TOKEN Token);
int
GetFunctionParameterIdentifier(PSCRIPT_ENGINE_TOKEN Token);
2024-06-17 17:35:23 +09:00
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);
2020-12-03 18:02:49 +03:30
#endif