Implements assignment parsing
This commit is contained in:
@@ -1,30 +1,32 @@
|
||||
#include <utility>
|
||||
|
||||
#include <utility>
|
||||
|
||||
|
||||
#ifndef PORYGONLANG_PARSEDSTATEMENT_HPP
|
||||
#define PORYGONLANG_PARSEDSTATEMENT_HPP
|
||||
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include "../ParsedExpressions/ParsedExpression.hpp"
|
||||
|
||||
enum class ParsedStatementKind{
|
||||
Bad,
|
||||
Script,
|
||||
Block,
|
||||
Expression,
|
||||
Assignment
|
||||
};
|
||||
|
||||
class ParsedStatement {
|
||||
unsigned int _start;
|
||||
unsigned int _length;
|
||||
public:
|
||||
virtual ParsedStatementKind GetKind() = 0;
|
||||
ParsedStatement(unsigned int start, unsigned int length){
|
||||
_start = start;
|
||||
_length = length;
|
||||
}
|
||||
virtual ~ParsedStatement() = default;
|
||||
virtual ParsedStatementKind GetKind() = 0;
|
||||
|
||||
unsigned int GetStartPosition(){
|
||||
return _start;
|
||||
@@ -35,6 +37,14 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class ParsedBadStatement : public ParsedStatement{
|
||||
public:
|
||||
ParsedBadStatement(unsigned int start, unsigned int length) : ParsedStatement(start, length){};
|
||||
ParsedStatementKind GetKind() final{
|
||||
return ParsedStatementKind ::Bad;
|
||||
}
|
||||
};
|
||||
|
||||
class ParsedBlockStatement : public ParsedStatement{
|
||||
std::vector<ParsedStatement*> _statements;
|
||||
public:
|
||||
@@ -86,4 +96,36 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class ParsedAssignmentStatement : public ParsedStatement{
|
||||
bool _local;
|
||||
std::string _identifier;
|
||||
ParsedExpression* _expression;
|
||||
public:
|
||||
ParsedAssignmentStatement(bool local, std::string identifier, ParsedExpression* expression, unsigned int start, unsigned int length)
|
||||
: ParsedStatement(start, length){
|
||||
_local = local;
|
||||
_identifier = std::move(identifier);
|
||||
_expression = expression;
|
||||
}
|
||||
~ParsedAssignmentStatement() final{
|
||||
delete _expression;
|
||||
}
|
||||
|
||||
ParsedStatementKind GetKind() final{
|
||||
return ParsedStatementKind ::Assignment;
|
||||
}
|
||||
|
||||
bool IsLocal(){
|
||||
return _local;
|
||||
}
|
||||
|
||||
std::string GetIdentifier(){
|
||||
return _identifier;
|
||||
}
|
||||
|
||||
ParsedExpression* GetExpression(){
|
||||
return _expression;
|
||||
}
|
||||
};
|
||||
|
||||
#endif //PORYGONLANG_PARSEDSTATEMENT_HPP
|
||||
|
||||
Reference in New Issue
Block a user