Files
BlitzLLVM/code_compiler/source/ast/function.hpp
T
Michael Fabian 'Xaymar' Dirks fa81c2a7fa Latest stuff, rewriting lexer
2024-06-25 18:59:15 +02:00

51 lines
1.3 KiB
C++

/// AUTOGENERATED COPYRIGHT HEADER START
// Copyright (C) 2024 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
// AUTOGENERATED COPYRIGHT HEADER END
#pragma once
#include "ast.hpp"
#include "value.hpp"
#include <list>
#include <memory>
#include <string>
namespace blitz {
namespace ast {
class ScopeExpression : public expression {
public:
ScopeExpression();
virtual ~ScopeExpression();
void AddExpression(std::unique_ptr<expression> ex);
private:
std::list<std::unique_ptr<expression>> m_expressions;
};
class FunctionExpression : public ScopeExpression {
public:
FunctionExpression(ValueType returnType,
std::string& m_name,
std::list<std::unique_ptr<VariableExpression>> parameters,
std::unique_ptr<ScopeExpression> scope);
virtual ~FunctionExpression();
private:
ValueType m_returnType;
std::string m_name;
std::list<std::unique_ptr<VariableExpression>> m_parameters;
std::unique_ptr<ScopeExpression> m_content;
};
class CallExpression : public expression {
public:
CallExpression(std::string& name, std::list<std::unique_ptr<VariableExpression>> arguments);
virtual ~CallExpression();
private:
std::string m_name;
std::list<std::unique_ptr<VariableExpression>> m_arguments;
};
}
}