Latest stuff, rewriting lexer
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
/// AUTOGENERATED COPYRIGHT HEADER START
|
||||
// Copyright (C) 2017-2024 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
|
||||
// AUTOGENERATED COPYRIGHT HEADER END
|
||||
#include "arithmetic.hpp"
|
||||
|
||||
blitz::AST::ArithmeticExpression::ArithmeticExpression(Operator op, std::unique_ptr<Expression> left, std::unique_ptr<Expression> right)
|
||||
blitz::ast::arithmetic_expression::arithmetic_expression(expression_operator op, std::unique_ptr<expression> left, std::unique_ptr<expression> right)
|
||||
: m_operator(op), m_left(std::move(left)), m_right(std::move(right)) {}
|
||||
|
||||
blitz::AST::ArithmeticExpression::~ArithmeticExpression() {}
|
||||
blitz::ast::arithmetic_expression::~arithmetic_expression() {}
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
/// AUTOGENERATED COPYRIGHT HEADER START
|
||||
// Copyright (C) 2017-2024 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
|
||||
// AUTOGENERATED COPYRIGHT HEADER END
|
||||
#pragma once
|
||||
#include "ast.hpp"
|
||||
#include "value.hpp"
|
||||
|
||||
namespace blitz {
|
||||
namespace AST {
|
||||
enum class Operator : int8_t {
|
||||
namespace ast {
|
||||
enum class expression_operator : int8_t {
|
||||
Add, /*+*/
|
||||
Subtract, /*-*/
|
||||
Multiply, /***/
|
||||
@@ -14,14 +17,14 @@ namespace blitz {
|
||||
Equal, /*=*/
|
||||
};
|
||||
|
||||
class ArithmeticExpression : public Expression {
|
||||
class arithmetic_expression : public expression {
|
||||
public:
|
||||
ArithmeticExpression(Operator op, std::unique_ptr<Expression> left, std::unique_ptr<Expression> right);
|
||||
virtual ~ArithmeticExpression();
|
||||
arithmetic_expression(expression_operator op, std::unique_ptr<expression> left, std::unique_ptr<expression> right);
|
||||
virtual ~arithmetic_expression();
|
||||
|
||||
private:
|
||||
Operator m_operator;
|
||||
std::unique_ptr<Expression> m_left, m_right;
|
||||
expression_operator m_operator;
|
||||
std::unique_ptr<expression> m_left, m_right;
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,13 @@
|
||||
/// AUTOGENERATED COPYRIGHT HEADER START
|
||||
// Copyright (C) 2017-2024 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
|
||||
// AUTOGENERATED COPYRIGHT HEADER END
|
||||
#pragma once
|
||||
|
||||
namespace blitz {
|
||||
namespace AST {
|
||||
class Expression {
|
||||
namespace ast {
|
||||
class expression {
|
||||
public:
|
||||
virtual ~Expression() {};
|
||||
virtual ~expression() {};
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,17 @@
|
||||
/// AUTOGENERATED COPYRIGHT HEADER START
|
||||
// Copyright (C) 2024 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
|
||||
// AUTOGENERATED COPYRIGHT HEADER END
|
||||
#include "function.hpp"
|
||||
|
||||
blitz::AST::ScopeExpression::ScopeExpression() {}
|
||||
blitz::ast::ScopeExpression::ScopeExpression() {}
|
||||
|
||||
blitz::AST::ScopeExpression::~ScopeExpression() {}
|
||||
blitz::ast::ScopeExpression::~ScopeExpression() {}
|
||||
|
||||
void blitz::AST::ScopeExpression::AddExpression(std::unique_ptr<Expression> ex) {
|
||||
void blitz::ast::ScopeExpression::AddExpression(std::unique_ptr<expression> ex) {
|
||||
m_expressions.push_back(std::move(ex));
|
||||
}
|
||||
|
||||
blitz::AST::FunctionExpression::FunctionExpression(ValueType returnType,
|
||||
blitz::ast::FunctionExpression::FunctionExpression(ValueType returnType,
|
||||
std::string& m_name,
|
||||
std::list<std::unique_ptr<VariableExpression>> parameters,
|
||||
std::unique_ptr<ScopeExpression> scope)
|
||||
@@ -16,11 +19,11 @@ blitz::AST::FunctionExpression::FunctionExpression(ValueType returnType,
|
||||
|
||||
}
|
||||
|
||||
blitz::AST::FunctionExpression::~FunctionExpression() {}
|
||||
blitz::ast::FunctionExpression::~FunctionExpression() {}
|
||||
|
||||
blitz::AST::CallExpression::CallExpression(std::string& name, std::list<std::unique_ptr<VariableExpression>> arguments)
|
||||
blitz::ast::CallExpression::CallExpression(std::string& name, std::list<std::unique_ptr<VariableExpression>> arguments)
|
||||
: m_name(name), m_arguments(std::move(arguments)) {
|
||||
|
||||
}
|
||||
|
||||
blitz::AST::CallExpression::~CallExpression() {}
|
||||
blitz::ast::CallExpression::~CallExpression() {}
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/// 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"
|
||||
@@ -6,16 +9,16 @@
|
||||
#include <string>
|
||||
|
||||
namespace blitz {
|
||||
namespace AST {
|
||||
class ScopeExpression : public Expression {
|
||||
namespace ast {
|
||||
class ScopeExpression : public expression {
|
||||
public:
|
||||
ScopeExpression();
|
||||
virtual ~ScopeExpression();
|
||||
|
||||
void AddExpression(std::unique_ptr<Expression> ex);
|
||||
void AddExpression(std::unique_ptr<expression> ex);
|
||||
|
||||
private:
|
||||
std::list<std::unique_ptr<Expression>> m_expressions;
|
||||
std::list<std::unique_ptr<expression>> m_expressions;
|
||||
};
|
||||
|
||||
class FunctionExpression : public ScopeExpression {
|
||||
@@ -33,7 +36,7 @@ namespace blitz {
|
||||
std::unique_ptr<ScopeExpression> m_content;
|
||||
};
|
||||
|
||||
class CallExpression : public Expression {
|
||||
class CallExpression : public expression {
|
||||
public:
|
||||
CallExpression(std::string& name, std::list<std::unique_ptr<VariableExpression>> arguments);
|
||||
virtual ~CallExpression();
|
||||
|
||||
@@ -1,43 +1,46 @@
|
||||
/// AUTOGENERATED COPYRIGHT HEADER START
|
||||
// Copyright (C) 2024 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
|
||||
// AUTOGENERATED COPYRIGHT HEADER END
|
||||
#include "value.hpp"
|
||||
|
||||
blitz::AST::VariableExpression::VariableExpression(std::string& name, ValueType type /*= ValueType::Number*/)
|
||||
blitz::ast::VariableExpression::VariableExpression(std::string& name, ValueType type /*= ValueType::Number*/)
|
||||
: m_name(name), m_type(type) {}
|
||||
|
||||
blitz::AST::VariableExpression::~VariableExpression() {}
|
||||
blitz::ast::VariableExpression::~VariableExpression() {}
|
||||
|
||||
blitz::AST::ValueType blitz::AST::VariableExpression::GetType() {
|
||||
blitz::ast::ValueType blitz::ast::VariableExpression::GetType() {
|
||||
return m_type;
|
||||
}
|
||||
|
||||
blitz::AST::NumberExpression::NumberExpression(int32_t value) : value(value) {}
|
||||
blitz::ast::NumberExpression::NumberExpression(int32_t value) : value(value) {}
|
||||
|
||||
blitz::AST::NumberExpression::~NumberExpression() {}
|
||||
blitz::ast::NumberExpression::~NumberExpression() {}
|
||||
|
||||
blitz::AST::ValueType blitz::AST::NumberExpression::GetType() {
|
||||
blitz::ast::ValueType blitz::ast::NumberExpression::GetType() {
|
||||
return ValueType::Number;
|
||||
}
|
||||
|
||||
blitz::AST::DecimalExpression::DecimalExpression(float_t value) : value(value) {}
|
||||
blitz::ast::DecimalExpression::DecimalExpression(float_t value) : value(value) {}
|
||||
|
||||
blitz::AST::DecimalExpression::~DecimalExpression() {}
|
||||
blitz::ast::DecimalExpression::~DecimalExpression() {}
|
||||
|
||||
blitz::AST::ValueType blitz::AST::DecimalExpression::GetType() {
|
||||
blitz::ast::ValueType blitz::ast::DecimalExpression::GetType() {
|
||||
return ValueType::Decimal;
|
||||
}
|
||||
|
||||
blitz::AST::StringExpression::StringExpression(std::string value) : value(value) {}
|
||||
blitz::ast::StringExpression::StringExpression(std::string value) : value(value) {}
|
||||
|
||||
blitz::AST::StringExpression::~StringExpression() {}
|
||||
blitz::ast::StringExpression::~StringExpression() {}
|
||||
|
||||
blitz::AST::ValueType blitz::AST::StringExpression::GetType() {
|
||||
blitz::ast::ValueType blitz::ast::StringExpression::GetType() {
|
||||
return ValueType::String;
|
||||
}
|
||||
|
||||
blitz::AST::ConstExpression::ConstExpression(std::string& name, std::unique_ptr<ValueExpression> value)
|
||||
blitz::ast::ConstExpression::ConstExpression(std::string& name, std::unique_ptr<ValueExpression> value)
|
||||
: m_name(name), m_value(std::move(value)) {}
|
||||
|
||||
blitz::AST::ConstExpression::~ConstExpression() {}
|
||||
blitz::ast::ConstExpression::~ConstExpression() {}
|
||||
|
||||
blitz::AST::ValueType blitz::AST::ConstExpression::GetType() {
|
||||
blitz::ast::ValueType blitz::ast::ConstExpression::GetType() {
|
||||
return m_value->GetType();
|
||||
}
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/// AUTOGENERATED COPYRIGHT HEADER START
|
||||
// Copyright (C) 2024 Michael Fabian 'Xaymar' Dirks <info@xaymar.com>
|
||||
// AUTOGENERATED COPYRIGHT HEADER END
|
||||
#pragma once
|
||||
#include "ast.hpp"
|
||||
#include "lexer.hpp"
|
||||
@@ -8,7 +11,7 @@
|
||||
#include <string>
|
||||
|
||||
namespace blitz {
|
||||
namespace AST {
|
||||
namespace ast {
|
||||
enum class ValueType : int8_t {
|
||||
Unknown,
|
||||
Number,
|
||||
@@ -17,7 +20,7 @@ namespace blitz {
|
||||
Type,
|
||||
};
|
||||
|
||||
class ValueExpression : public Expression {
|
||||
class ValueExpression : public expression {
|
||||
public:
|
||||
virtual ValueType GetType() = 0;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user