MCPcopy Create free account
hub / github.com/HyperDbg/HyperDbg / ToSymbol

Function ToSymbol

hyperdbg/script-engine/code/script-engine.c:3814–3915  ·  view source on GitHub ↗

* @brief Converts Token to Symbol and returns the reference to it * * @param Token * @param Error * @return PSYMBOL */

Source from the content-addressed store, hash-verified

3812 * @return PSYMBOL
3813 */
3814PSYMBOL
3815ToSymbol(PSCRIPT_ENGINE_TOKEN Token, PSCRIPT_ENGINE_ERROR_TYPE Error)
3816{
3817 PSYMBOL Symbol = NewSymbol();
3818 switch (Token->Type)
3819 {
3820 case GLOBAL_ID:
3821 Symbol->Value = GetGlobalIdentifierVal(Token);
3822 SetType(&Symbol->Type, SYMBOL_GLOBAL_ID_TYPE);
3823 return Symbol;
3824
3825 case LOCAL_ID:
3826 {
3827 Symbol->Value = GetLocalIdentifierVal(Token);
3828
3829 if (((VARIABLE_TYPE *)Token->VariableType)->Kind == TY_ARRAY)
3830 {
3831 SetType(&Symbol->Type, SYMBOL_REFERENCE_LOCAL_ID_TYPE);
3832 }
3833 else
3834 {
3835 SetType(&Symbol->Type, SYMBOL_LOCAL_ID_TYPE);
3836 }
3837
3838 return Symbol;
3839 }
3840
3841 case DECIMAL:
3842 Symbol->Value = DecimalToInt(Token->Value);
3843 SetType(&Symbol->Type, SYMBOL_NUM_TYPE);
3844 return Symbol;
3845
3846 case HEX:
3847 Symbol->Value = HexToInt(Token->Value);
3848 SetType(&Symbol->Type, SYMBOL_NUM_TYPE);
3849 return Symbol;
3850
3851 case OCTAL:
3852 Symbol->Value = OctalToInt(Token->Value);
3853 SetType(&Symbol->Type, SYMBOL_NUM_TYPE);
3854 return Symbol;
3855
3856 case BINARY:
3857 Symbol->Value = BinaryToInt(Token->Value);
3858 SetType(&Symbol->Type, SYMBOL_NUM_TYPE);
3859 return Symbol;
3860
3861 case REGISTER:
3862 Symbol->Value = RegisterToInt(Token->Value);
3863 SetType(&Symbol->Type, SYMBOL_REGISTER_TYPE);
3864 return Symbol;
3865
3866 case PSEUDO_REGISTER:
3867 Symbol->Value = PseudoRegToInt(Token->Value);
3868 SetType(&Symbol->Type, SYMBOL_PSEUDO_REG_TYPE);
3869 return Symbol;
3870
3871 case SEMANTIC_RULE:

Callers 1

CodeGenFunction · 0.85

Calls 15

NewSymbolFunction · 0.85
GetGlobalIdentifierValFunction · 0.85
SetTypeFunction · 0.85
GetLocalIdentifierValFunction · 0.85
DecimalToIntFunction · 0.85
HexToIntFunction · 0.85
OctalToIntFunction · 0.85
BinaryToIntFunction · 0.85
RegisterToIntFunction · 0.85
PseudoRegToIntFunction · 0.85
SemanticRuleToIntFunction · 0.85
RemoveSymbolFunction · 0.85

Tested by

no test coverage detected