#pragma once #include #include #include "types.h" class Symbol { public: explicit Symbol(std::string name, SymbolType type, std::string data_type, int scope); std::string getName(); SymbolType getSymbolType(); std::string getDataType(); int getScopeLevel(); bool isInitialized(); void setInitialized(bool init); bool isParameter(); void setParameter(bool is_param); std::vector getParameterTypes(); void setParameterTypes(std::vector types); std::string getReturnType(); void setReturnType(std::string type); int getLineDeclared(); void setLineDeclared(int line); std::string toString(); private: std::string name; SymbolType symbol_type std::string data_type int scope_level bool is_initialized bool is_parameter std::vector parameter_types std::string return_type int line_declared int column_declared };