Rework identifier handling, adds typedef statement.

This commit is contained in:
2020-10-08 19:53:02 +02:00
parent e99b1af78d
commit 2fb1b68ead
9 changed files with 295 additions and 119 deletions

View File

@@ -37,12 +37,12 @@ namespace MalachScript::Parser {
};
class ParsedClassStatement : public ParsedStatementImpl<ParsedStatementKind::Class> {
std::u8string_view _identifier;
std::vector<std::u8string_view> _inherits;
Identifier _identifier;
std::vector<Identifier> _inherits;
std::vector<std::unique_ptr<const ParsedStatement>> _body;
public:
ParsedClassStatement(TextSpan span, std::u8string_view identifier, std::vector<std::u8string_view> inherits,
ParsedClassStatement(TextSpan span, Identifier identifier, std::vector<Identifier> inherits,
const std::vector<const ParsedStatement*>& body)
: ParsedStatementImpl<ParsedStatementKind::Class>(span), _identifier(identifier), _inherits(inherits),
_body(body.size()) {
@@ -50,6 +50,18 @@ namespace MalachScript::Parser {
_body[i] = std::unique_ptr<const ParsedStatement>(body[i]);
}
};
class ParsedTypeDefStatement : public ParsedStatementImpl<ParsedStatementKind::TypeDef> {
Identifier _defineFrom;
Identifier _defineTo;
public:
ParsedTypeDefStatement(TextSpan span, const Identifier& defineFrom, const Identifier& defineTo)
: ParsedStatementImpl<ParsedStatementKind::TypeDef>(span), _defineFrom(defineFrom), _defineTo(defineTo) {}
inline const Identifier& GetDefineFrom() const noexcept { return _defineFrom; }
inline const Identifier& GetDefineTo() const noexcept { return _defineTo; }
};
}
#endif // MALACHSCRIPT_PARSEDSTATEMENT_HPP