schema_editor/comdel/parser/astnode.h

57 lines
1.1 KiB
C
Raw Normal View History

2022-03-29 19:31:45 +00:00
#ifndef ASTNODE_H
#define ASTNODE_H
#include "token.h"
/**
* AST base class, all AST node classes extand this class. Class contains basic
* information about a nodes location in file.
*/
class AstNode {
public:
Span span;
AstNode() = default;
virtual ~AstNode(); // this is defined in Ast.cpp just so that the
// compiler doesn't complain about not knowing which
// object file to include the vtable in
AstNode(AstNode&&) = default;
AstNode& operator=(AstNode&&) = default;
AstNode(const AstNode&) = default;
AstNode& operator=(const AstNode&) = default;
};
class StringNode: public AstNode {
public:
std::string value;
};
class IdentifierNode: public AstNode {
public:
std::string value;
};
class NumberNode: public AstNode {
public:
long long int value;
NumberNode(std::string expression);
NumberNode(): value(0) {}
};
class CountNode: public AstNode {
public:
NumberNode first;
NumberNode second;
CountNode(NumberNode first, NumberNode second): first(first), second(second) {}
CountNode() {}
};
#endif // ASTNODE_H