* @brief Converts Token to Symbol and returns the reference to it * * @param Token * @param Error * @return PSYMBOL */
| 3812 | * @return PSYMBOL |
| 3813 | */ |
| 3814 | PSYMBOL |
| 3815 | ToSymbol(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: |
no test coverage detected