Latest stuff, rewriting lexer

This commit is contained in:
Michael Fabian 'Xaymar' Dirks
2024-06-25 18:59:15 +02:00
parent 7f669f55e2
commit fa81c2a7fa
23 changed files with 1263 additions and 310 deletions
+5 -2
View File
@@ -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() {}
+10 -7
View File
@@ -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;
};
}
}
+6 -3
View File
@@ -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() {};
};
}
}
+10 -7
View File
@@ -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() {}
+8 -5
View File
@@ -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();
+18 -15
View File
@@ -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();
}
+5 -2
View File
@@ -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;
};