Files
fsh-oop/include/ast/ast_token.hpp
2024-12-06 22:05:41 +01:00

25 lines
683 B
C++

#pragma once
#include <memory>
#include "ast/ast_base.hpp"
#include "util/text.hpp"
namespace fsh {
// Genericni node namenjen kao wrapper za tokene
template <Lexer::TokenType T>
class TokenNode : public AstNode {
public:
using shared = std::shared_ptr<TokenNode>;
Lexer::TokenType gtoken_type() { return T; }
std::string& gvalue() { return value; };
static std::shared_ptr<TokenNode> build(std::list<Token>::iterator& it);
protected:
TokenNode(std::string value) : AstNode(NodeType::TOKEN, util::tokens[T]), value(value) {}
private:
std::string value;
};
}