43 lines
1.5 KiB
C++
43 lines
1.5 KiB
C++
#include <Util.h>
|
|
|
|
#include <NodeTypes.h>
|
|
|
|
namespace PashaBibko::LXC::AST
|
|
{
|
|
FunctionCall::FunctionCall (const Identifier& functionName, ValueList& arguments)
|
|
: NodeValue(NodeType::FunctionCall), m_FuncName(functionName), m_Arguments(std::move(arguments))
|
|
{}
|
|
|
|
IntLiteral::IntLiteral(const std::string_view& value)
|
|
: NodeValue(NodeType::IntLiteral), m_NumberValue(value)
|
|
{}
|
|
|
|
Operation::Operation(NodeValuePtr& left, Lexer::Token::TokenType operand, NodeValuePtr& right)
|
|
: NodeValue(NodeType::Operation), m_Lhs(std::move(left)), m_Operand(operand), m_Rhs(std::move(right))
|
|
{}
|
|
|
|
VarDeclaration::VarDeclaration(Identifier& name)
|
|
: Node(NodeType::Var_Declare), m_Name(std::move(name)), m_Value(nullptr)
|
|
{}
|
|
|
|
VarDeclaration::VarDeclaration(Identifier& name, NodeValuePtr& value)
|
|
: Node(NodeType::Var_Declare), m_Name(std::move(name)), m_Value(std::move(value))
|
|
{}
|
|
|
|
VarAssignment::VarAssignment(Identifier& name, NodeValuePtr& value)
|
|
: Node(NodeType::Var_Assign), m_Value(std::move(value))
|
|
{}
|
|
|
|
VarAccess::VarAccess(const Identifier& name)
|
|
: NodeValue(NodeType::Var_Access), m_Name(name)
|
|
{}
|
|
|
|
IfBranch::IfBranch(NodeValuePtr& condition, SyntaxBranch& body)
|
|
: Node(NodeType::IfBranch), m_Condition(std::move(condition)), m_Body(std::move(body))
|
|
{}
|
|
|
|
ReturnStatement::ReturnStatement(NodeValuePtr& value)
|
|
: Node(NodeType::ReturnVal), m_ReturnValue(std::move(value))
|
|
{}
|
|
}
|