#ifndef VARIABLE_HPP
#define VARIABLE_HPP

#include "symbol.hpp"
#include "context.hpp"

class variable : public symbol_impl {
    std::string name;

public :
    explicit variable(const std::string& n);

    variable* clone() const override;
    symbol_impl* evaluate(const interpreter_context& context) const override;
    std::string serialize(const interpreter_context& context) const override;
    const std::string& type() const override;
    bool is_litteral() const override;
    std::pair<size_t,size_t> priority(const interpreter_context&) const override;

    static const std::string type_name;
};

#endif
