feat(furc): introduce while loop statement

Refs: #2
This commit is contained in:
2026-06-12 23:10:26 +02:00
parent 97c01bc96c
commit 767970c69b
11 changed files with 151 additions and 24 deletions
+3 -2
View File
@@ -27,6 +27,7 @@ public:
void visit(const ast::function_definition_node& funcDef) override;
void visit(const ast::return_statement_node& returnStmt) override;
void visit(const ast::if_statement_node& node) override;
void visit(const ast::while_statement_node& node) override;
void visit(const ast::compound_statement_node& node) override;
void visit(const ast::string_literal_node& node) override;
void visit(const ast::integer_literal_node& node) override;
@@ -42,7 +43,7 @@ private:
}
}
furlang::ir::block_index push_block();
furlang::ir::block_index push_block(bool validate = true);
private:
furlang::ir::module m_module;
std::unique_ptr<furlang::ir::function> m_currentFunction;
@@ -55,4 +56,4 @@ private:
} // namespace front
} // namespace furc
#endif // FURC_FRONT_IR_GENERATOR_HPP
#endif // FURC_FRONT_IR_GENERATOR_HPP
+4 -1
View File
@@ -145,6 +145,7 @@ enum class keyword_token {
Return, /**< `return` */
If, /**< `if` */
Else, /**< `else` */
While, /**< `while` */
};
static inline std::ostream& operator<<(std::ostream& os, keyword_token keyword) {
@@ -154,6 +155,7 @@ static inline std::ostream& operator<<(std::ostream& os, keyword_token keyword)
case keyword_token::Return: return os << "return";
case keyword_token::If: return os << "if";
case keyword_token::Else: return os << "else";
case keyword_token::While: return os << "while";
}
return os;
}
@@ -165,6 +167,7 @@ static inline std::string operator+(const std::string& str, keyword_token keywor
case keyword_token::Return: return str + "return";
case keyword_token::If: return str + "if";
case keyword_token::Else: return str + "else";
case keyword_token::While: return str + "while";
}
return str;
}
@@ -377,4 +380,4 @@ using token_r = furlang::result<token, token_error>; /**< Alias to a token resul
} // namespace front
} // namespace furc
#endif // FURC_FRONT_TOKEN_HPP
#endif // FURC_FRONT_TOKEN_HPP