18#define PRETTYPRINT_INDENTATION_AMOUNT 4
32 std::vector<std::shared_ptr<ASTNode>>
children;
48 void addChild(
const std::shared_ptr<ASTNode>& child);
49 void addChildren(
const std::vector<std::shared_ptr<ASTNode>>& childs);
50 const std::vector<std::shared_ptr<ASTNode>>&
getChildren()
const;
61 std::shared_ptr<ASTNode>
getChildAt(
size_t index)
const;
69 virtual std::ostream&
prettyPrint(std::ostream& os,
size_t indentation_level = 0)
const = 0;
The base class for all non-terminal nodes in the Bash++ AST. Each ASTNode contains information about ...
Definition ASTNode.h:28
virtual ~ASTNode()=default
void setEndPosition(const AST::FilePosition &pos)
Definition ASTNode.cpp:89
virtual std::ostream & prettyPrint(std::ostream &os, size_t indentation_level=0) const =0
void clearChildren()
Definition ASTNode.cpp:144
const AST::FilePosition & getPosition() const
Definition ASTNode.cpp:85
AST::FilePosition position
Definition ASTNode.h:33
const std::vector< std::shared_ptr< ASTNode > > & getChildren() const
Definition ASTNode.cpp:72
std::shared_ptr< ASTNode > getLastChild() const
Definition ASTNode.cpp:128
AST::FilePosition end_position
Definition ASTNode.h:34
void addChildren(const std::vector< std::shared_ptr< ASTNode > > &childs)
Add a vector of child nodes to this AST node. This function also:
Definition ASTNode.cpp:44
constexpr AST::NodeType getType() const
Definition ASTNode.h:46
std::shared_ptr< ASTNode > getChildAt(size_t index) const
Definition ASTNode.cpp:114
size_t getChildrenCount() const
Definition ASTNode.cpp:135
std::shared_ptr< ASTNode > getFirstChild() const
Definition ASTNode.cpp:121
std::vector< std::shared_ptr< ASTNode > > children
Definition ASTNode.h:32
uint32_t getCharPositionInLine() const
Definition ASTNode.cpp:110
ASTNode(ASTNode &&other) noexcept=default
ASTNode & operator=(const ASTNode &other)=default
friend std::ostream & operator<<(std::ostream &os, const ASTNode &node)
Definition ASTNode.h:70
void setPosition(const AST::FilePosition &pos)
Definition ASTNode.cpp:76
AST::NodeType _type
Definition ASTNode.h:30
void clear()
Definition ASTNode.cpp:139
const AST::FilePosition & getEndPosition() const
Definition ASTNode.cpp:98
constexpr ASTNode(AST::NodeType type)
Definition ASTNode.h:38
void addChild(const std::shared_ptr< ASTNode > &child)
Add a child node to this AST node. This function also:
Definition ASTNode.cpp:21
uint32_t getLine() const
Definition ASTNode.cpp:106
ASTNode(const ASTNode &other)=default
ASTNode & operator=(ASTNode &&other) noexcept=default
Definition AccessModifier.h:10
NodeType
Definition NodeTypes.h:12