2025-01-25 Latest Changes

This commit is contained in:
Michael Fabian 'Xaymar' Dirks
2025-01-25 16:27:50 +01:00
parent f0ffbafee1
commit e191173e7b
18 changed files with 182 additions and 759 deletions
+16 -67
View File
@@ -30,85 +30,34 @@
namespace blitz {
namespace ast {
class expression {
class node {
public:
virtual ~expression() = default;
virtual ~node() = default;
};
// Values
class value_expression : public expression {
protected:
blitz::token _token;
class expression : public node {};
class variable : public node {
blitz::token _token;
std::shared_ptr<blitz::ast::expression> _value;
public:
virtual ~value_expression() = default;
value_expression(blitz::token token);
virtual ~variable();
variable(blitz::token token);
void set_value(std::shared_ptr<blitz::ast::expression> value);
};
class integer_expression : public value_expression {
protected:
int32_t _value;
class call : public node {};
class local : public node {
public:
virtual ~integer_expression() = default;
integer_expression(blitz::token token);
~local();
local();
};
class real_expression : public value_expression {
protected:
float _value;
class global : public node {};
public:
virtual ~real_expression() = default;
real_expression(blitz::token token);
};
class string_expression : public value_expression {
std::string _value;
public:
virtual ~string_expression() = default;
string_expression(blitz::token token);
};
/** One or more constant values
*
* Const var = Value, var2 = value
*/
class const_expression : public expression {
std::list<std::shared_ptr<variable_expression>> _values;
};
/** One or more local variables
*
* Local var, var2 = value, var3
*/
class local_expression : public expression {
std::list<std::shared_ptr<variable_expression>> _values;
};
/** One or more global variables
*
* Local var, var2 = value, var3
*/
class global_expression : public expression {
std::list<std::shared_ptr<variable_expression>> _values;
};
/** A variable definition
*
*
*/
class variable_expression : public expression {
blitz::token _assign;
std::string _name;
std::shared_ptr<value_expression> _value;
public:
virtual ~variable_expression() = default;
variable_expression(blitz::token token);
};
} // namespace ast
} // namespace blitz