feat(furc): implement a basic parser

This commit is contained in:
2026-08-06 10:54:54 +02:00
parent 854343a5a3
commit db485af7f6
4 changed files with 343 additions and 14 deletions
+10 -14
View File
@@ -1,18 +1,14 @@
#include "furc/front/lexer.hpp"
#include <iostream>
#include "furc/front/parser.hpp"
#include "furlang/arena.hpp"
int main(void) {
furc::lexer lexer = { "<AK>", "func main(argc: u64) -> s32 { return '\\\\'; }" };
while (true) {
furc::token token = lexer.next_token();
std::cout << token.loc.filepath << ':' << token.loc.row + 1 << ':' << token.loc.col + 1 << ": " << token
<< '\n';
switch (token.type) {
case furc::token::UnexpectedCharacter:
case furc::token::UnexpectedEOF: return 1;
case furc::token::EndOfFile: return 0;
default: break;
}
}
furlang::arena arena;
furc::lexer lexer = { "<AK>", "func main(argc: u64) -> s32 { x: s32 = '\\\\'; }" };
furc::parser parser = { std::move(lexer), arena };
auto program = parser.parse();
return 0;
}