diff options
| author | Stefan Weigl-Bosker <stefan@s00.xyz> | 2026-02-23 22:18:22 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-23 22:18:22 -0500 |
| commit | 8f98dc579af1993ec85bd849656c4835b4039dd6 (patch) | |
| tree | 3ee45620d83b209c1c11248afc9ab83ffcf39691 /willow/tools/willowc/lib/parser.cpp | |
| parent | c2d4209f85f46cc91163bc47cc43db252c94acf6 (diff) | |
| download | compiler-8f98dc579af1993ec85bd849656c4835b4039dd6.tar.gz | |
[willow]: frontend plumbing (#13)
...
Diffstat (limited to 'willow/tools/willowc/lib/parser.cpp')
| -rw-r--r-- | willow/tools/willowc/lib/parser.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/willow/tools/willowc/lib/parser.cpp b/willow/tools/willowc/lib/parser.cpp index becc171..e658909 100644 --- a/willow/tools/willowc/lib/parser.cpp +++ b/willow/tools/willowc/lib/parser.cpp @@ -2,8 +2,27 @@ namespace willowc { -std::optional<std::unique_ptr<ModuleAST>> parse() { +std::optional<std::unique_ptr<ModuleAST>> Parser::run() { + bool failed = false; + while (true) { + Token t = tokenizer_.scan(); + if (t.kind == TokenKind::Eof) { + willow::emit(diagnostic_engine_, willow::Severity::Debug) + << std::format("[ <eof> :: {} : ({}, {}) ]", t.kind, t.start, t.end); + break; + } + willow::emit(diagnostic_engine_, willow::Severity::Debug) + << std::format("[ '{}' :: {} : ({}, {}) ]", + tokenizer_.buf.substr(t.start, t.end - t.start), t.kind, + t.start, t.end); + } + return std::nullopt; } +willow::DiagnosticBuilder Parser::emitParserError(Token t, willow::Severity severity) { + willow::Location loc = file_.getLoc(t.start); + return willow::DiagnosticBuilder(diagnostic_engine_, severity, loc); } + +} // namespace willowc |