renamed let to let_stmt
This commit is contained in:
@@ -1,16 +1,16 @@
|
|||||||
#include "let.hpp"
|
#include "let.hpp"
|
||||||
|
|
||||||
namespace ast {
|
namespace ast {
|
||||||
let::let(token::token token)
|
let_stmt::let_stmt(token::token token)
|
||||||
: token(std::move(token)),
|
: token(std::move(token)),
|
||||||
name(nullptr),
|
name(nullptr),
|
||||||
value(nullptr) {}
|
value(nullptr) {}
|
||||||
|
|
||||||
std::string let::token_literal() const {
|
std::string let_stmt::token_literal() const {
|
||||||
return token.literal;
|
return token.literal;
|
||||||
}
|
}
|
||||||
|
|
||||||
let::~let() {
|
let_stmt::~let_stmt() {
|
||||||
delete name;
|
delete name;
|
||||||
delete value;
|
delete value;
|
||||||
};
|
};
|
||||||
|
@@ -5,8 +5,8 @@
|
|||||||
#include "token/token.hpp"
|
#include "token/token.hpp"
|
||||||
|
|
||||||
namespace ast {
|
namespace ast {
|
||||||
struct let : statement {
|
struct let_stmt : statement {
|
||||||
let(token::token token);
|
let_stmt(token::token token);
|
||||||
|
|
||||||
token::token token;
|
token::token token;
|
||||||
identifier* name;
|
identifier* name;
|
||||||
@@ -14,6 +14,6 @@ namespace ast {
|
|||||||
|
|
||||||
std::string token_literal() const override;
|
std::string token_literal() const override;
|
||||||
|
|
||||||
~let();
|
~let_stmt();
|
||||||
};
|
};
|
||||||
} // namespace ast
|
} // namespace ast
|
||||||
|
@@ -35,6 +35,8 @@ namespace parser {
|
|||||||
switch (current.type) {
|
switch (current.type) {
|
||||||
case token::type::LET:
|
case token::type::LET:
|
||||||
return parse_let();
|
return parse_let();
|
||||||
|
case token::type::RETURN:
|
||||||
|
return parse_return();
|
||||||
default:
|
default:
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
@@ -49,8 +51,8 @@ namespace parser {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ast::let* parser::parse_let() {
|
ast::let_stmt* parser::parse_let() {
|
||||||
ast::let* stmt = new ast::let(current);
|
ast::let_stmt* stmt = new ast::let_stmt(current);
|
||||||
|
|
||||||
if (!expect_next(token::type::IDENTIFIER)) {
|
if (!expect_next(token::type::IDENTIFIER)) {
|
||||||
delete stmt;
|
delete stmt;
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
#include "ast/ast.hpp"
|
#include "ast/ast.hpp"
|
||||||
#include "ast/errors/error.hpp"
|
#include "ast/errors/error.hpp"
|
||||||
#include "ast/statements/let.hpp"
|
#include "ast/statements/let.hpp"
|
||||||
|
#include "ast/statements/return.hpp"
|
||||||
#include "lexer/lexer.hpp"
|
#include "lexer/lexer.hpp"
|
||||||
#include "token/token.hpp"
|
#include "token/token.hpp"
|
||||||
|
|
||||||
@@ -20,7 +21,8 @@ namespace parser {
|
|||||||
|
|
||||||
void next_token();
|
void next_token();
|
||||||
ast::statement* parse_statement();
|
ast::statement* parse_statement();
|
||||||
ast::let* parse_let();
|
ast::let_stmt* parse_let();
|
||||||
|
ast::return_stmt* parse_return();
|
||||||
bool expect_next(token::type);
|
bool expect_next(token::type);
|
||||||
void next_error(token::type);
|
void next_error(token::type);
|
||||||
};
|
};
|
||||||
|
@@ -10,8 +10,8 @@
|
|||||||
|
|
||||||
void test_let_statement(ast::statement* stmt, const std::string name) {
|
void test_let_statement(ast::statement* stmt, const std::string name) {
|
||||||
REQUIRE(stmt->token_literal() == "let");
|
REQUIRE(stmt->token_literal() == "let");
|
||||||
ast::let* let_stmt;
|
ast::let_stmt* let_stmt;
|
||||||
REQUIRE_NOTHROW(let_stmt = dynamic_cast<ast::let*>(stmt));
|
REQUIRE_NOTHROW(let_stmt = dynamic_cast<ast::let_stmt*>(stmt));
|
||||||
REQUIRE_MESSAGE(
|
REQUIRE_MESSAGE(
|
||||||
let_stmt != nullptr,
|
let_stmt != nullptr,
|
||||||
"Couldn't cast statement to a let statement"
|
"Couldn't cast statement to a let statement"
|
||||||
|
@@ -27,8 +27,8 @@ return 103213;\
|
|||||||
|
|
||||||
for (const auto stmt : program->statements) {
|
for (const auto stmt : program->statements) {
|
||||||
REQUIRE(stmt->token_literal() == "return");
|
REQUIRE(stmt->token_literal() == "return");
|
||||||
ast::let* let_stmt;
|
ast::let_stmt* let_stmt;
|
||||||
REQUIRE_NOTHROW(let_stmt = dynamic_cast<ast::let*>(stmt));
|
REQUIRE_NOTHROW(let_stmt = dynamic_cast<ast::let_stmt*>(stmt));
|
||||||
REQUIRE_MESSAGE(
|
REQUIRE_MESSAGE(
|
||||||
let_stmt != nullptr,
|
let_stmt != nullptr,
|
||||||
"Couldn't cast statement to a return statement"
|
"Couldn't cast statement to a return statement"
|
||||||
|
Reference in New Issue
Block a user