diff options
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 |