Files
BlitzLLVM/code_compiler/source/ast/function.hpp
T

51 lines
1.3 KiB
C++
Raw Normal View History

2024-06-25 18:59:15 +02:00
/// AUTOGENERATED COPYRIGHT HEADER START
// Copyright (C) 2024 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
// AUTOGENERATED COPYRIGHT HEADER END
2024-06-06 13:37:13 +02:00
#pragma once
#include "ast.hpp"
#include "value.hpp"
#include <list>
#include <memory>
#include <string>
2024-06-06 14:04:34 +02:00
namespace blitz {
2024-06-25 18:59:15 +02:00
namespace ast {
class ScopeExpression : public expression {
2024-06-06 13:37:13 +02:00
public:
ScopeExpression();
virtual ~ScopeExpression();
2024-06-25 18:59:15 +02:00
void AddExpression(std::unique_ptr<expression> ex);
2024-06-06 13:37:13 +02:00
private:
2024-06-25 18:59:15 +02:00
std::list<std::unique_ptr<expression>> m_expressions;
2024-06-06 13:37:13 +02:00
};
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;
};
2024-06-25 18:59:15 +02:00
class CallExpression : public expression {
2024-06-06 13:37:13 +02:00
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;
};
}
}