3 #include "llvm/IR/Function.h"
4 #include "llvm/IR/Module.h"
5 #include "llvm/IR/Value.h"
74 virtual std::vector<std::shared_ptr<ASTNode>>
getChildren() {
return {}; }
87 virtual std::ostream &
print(std::ostream &out)
const = 0;
Abstract base class for all AST nodes.
Definition: ASTNode.h:34
void setLocation(int l, int c)
Definition: ASTNode.h:75
friend std::ostream & operator<<(std::ostream &os, const ASTNode &obj)
Definition: ASTNode.h:82
int getLine()
Definition: ASTNode.h:79
virtual ~ASTNode()=default
virtual llvm::Value * codegen()=0
Perform code generation and return an LLVM value the code.
int getColumn()
Definition: ASTNode.h:80
virtual std::vector< std::shared_ptr< ASTNode > > getChildren()
Return all of the children for the node.
Definition: ASTNode.h:74
virtual void accept(ASTVisitor *visitor)=0
Visit the children of this node and apply the visitor.
virtual std::ostream & print(std::ostream &out) const =0
Base class for AST visitors.
Definition: ASTVisitor.h:23