From a4848044ea9165c60441120d8caccf6ed6009d50 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Tue, 6 Aug 2024 09:42:38 -0400 Subject: [PATCH] xo-parser: feat: + parser.has_incomplete_expr() --- include/xo/parser/parser.hpp | 6 ++++++ src/parser/parser.cpp | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/include/xo/parser/parser.hpp b/include/xo/parser/parser.hpp index e4e8943a..deabaab8 100644 --- a/include/xo/parser/parser.hpp +++ b/include/xo/parser/parser.hpp @@ -327,6 +327,12 @@ namespace xo { return exprstatetype::invalid; } + /** true iff parser contains state for an incomplete expression. + * For this to be true, parser must have consumed at least one token + * since end of last toplevel expression + **/ + bool has_incomplete_expr() const; + /** put parser into state for beginning of a translation unit * (i.e. input stream) **/ diff --git a/src/parser/parser.cpp b/src/parser/parser.cpp index 8a60bbbd..71da1798 100644 --- a/src/parser/parser.cpp +++ b/src/parser/parser.cpp @@ -689,6 +689,11 @@ namespace xo { // ----- parser ----- + bool + parser::has_incomplete_expr() const { + return !xs_stack_.empty(); + } + void parser::begin_translation_unit() { xs_stack_.push_exprstate