Implement division
This commit is contained in:
@ -6,7 +6,7 @@ namespace elna::source
|
||||
/**
|
||||
* AST node.
|
||||
*/
|
||||
void node::accept(ParserVisitor *)
|
||||
void node::accept(parser_visitor *)
|
||||
{
|
||||
}
|
||||
|
||||
@ -15,7 +15,7 @@ namespace elna::source
|
||||
{
|
||||
}
|
||||
|
||||
void definition::accept(ParserVisitor *visitor)
|
||||
void definition::accept(parser_visitor *visitor)
|
||||
{
|
||||
visitor->visit(this);
|
||||
}
|
||||
@ -35,7 +35,7 @@ namespace elna::source
|
||||
{
|
||||
}
|
||||
|
||||
void block::accept(ParserVisitor *visitor)
|
||||
void block::accept(parser_visitor *visitor)
|
||||
{
|
||||
visitor->visit(this);
|
||||
}
|
||||
@ -55,7 +55,7 @@ namespace elna::source
|
||||
{
|
||||
}
|
||||
|
||||
void integer_literal::accept(ParserVisitor *visitor)
|
||||
void integer_literal::accept(parser_visitor *visitor)
|
||||
{
|
||||
visitor->visit(this);
|
||||
}
|
||||
@ -70,7 +70,7 @@ namespace elna::source
|
||||
{
|
||||
}
|
||||
|
||||
void variable_expression::accept(ParserVisitor *visitor)
|
||||
void variable_expression::accept(parser_visitor *visitor)
|
||||
{
|
||||
visitor->visit(this);
|
||||
}
|
||||
@ -103,7 +103,7 @@ namespace elna::source
|
||||
}
|
||||
}
|
||||
|
||||
void binary_expression::accept(ParserVisitor *visitor)
|
||||
void binary_expression::accept(parser_visitor *visitor)
|
||||
{
|
||||
visitor->visit(this);
|
||||
}
|
||||
@ -128,7 +128,7 @@ namespace elna::source
|
||||
{
|
||||
}
|
||||
|
||||
void bang_statement::accept(ParserVisitor *visitor)
|
||||
void bang_statement::accept(parser_visitor *visitor)
|
||||
{
|
||||
visitor->visit(this);
|
||||
}
|
||||
@ -182,16 +182,16 @@ namespace elna::source
|
||||
{
|
||||
return lhs;
|
||||
}
|
||||
auto _operator = tokens->identifier()[0];
|
||||
++tokens;
|
||||
|
||||
auto rhs = parse_factor();
|
||||
if (rhs != nullptr)
|
||||
while (tokens->of() == source::token::type::factor_operator)
|
||||
{
|
||||
return std::make_unique<binary_expression>(std::move(lhs),
|
||||
auto _operator = tokens->identifier()[0];
|
||||
++tokens;
|
||||
|
||||
auto rhs = parse_factor();
|
||||
lhs = std::make_unique<binary_expression>(std::move(lhs),
|
||||
std::move(rhs), _operator);
|
||||
}
|
||||
return nullptr;
|
||||
return lhs;
|
||||
}
|
||||
|
||||
std::unique_ptr<expression> parser::parse_expression()
|
||||
@ -201,17 +201,16 @@ namespace elna::source
|
||||
{
|
||||
return term;
|
||||
}
|
||||
auto _operator = tokens->identifier()[0];
|
||||
++tokens;
|
||||
|
||||
auto rhs = parse_expression();
|
||||
|
||||
if (rhs != nullptr)
|
||||
while (tokens->of() == source::token::type::term_operator)
|
||||
{
|
||||
return std::make_unique<binary_expression>(std::move(term),
|
||||
auto _operator = tokens->identifier()[0];
|
||||
++tokens;
|
||||
|
||||
auto rhs = parse_term();
|
||||
term = std::make_unique<binary_expression>(std::move(term),
|
||||
std::move(rhs), _operator);
|
||||
}
|
||||
return nullptr;
|
||||
return term;
|
||||
}
|
||||
|
||||
std::unique_ptr<definition> parser::parse_definition()
|
||||
|
Reference in New Issue
Block a user