From 46c5e1f894fd9a6c5614c59999adb2e7582f31da Mon Sep 17 00:00:00 2001 From: Ludovic 'Archivist' Lagouardette Date: Fri, 4 Aug 2023 10:28:40 +0200 Subject: [PATCH] made prepare configurable --- include/UserScript.h | 2 +- priv_include/UserScript/interpreter.h | 4 ++-- src/interpreter.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/UserScript.h b/include/UserScript.h index 4e5fe6c..4d3d57a 100644 --- a/include/UserScript.h +++ b/include/UserScript.h @@ -57,7 +57,7 @@ namespace scripting { virtual std::optional var_by_idx(int32_t idx) = 0; virtual script_value resolve(const std::string& name) = 0; virtual std::variant> executeAtOnce(std::string code) = 0; - virtual std::vector prepare(std::string code) = 0; + virtual std::vector prepare(std::string code, bool repeating = true) = 0; virtual std::optional stepOnce() = 0; virtual ~UserScript() = default; }; diff --git a/priv_include/UserScript/interpreter.h b/priv_include/UserScript/interpreter.h index c751855..198cc76 100644 --- a/priv_include/UserScript/interpreter.h +++ b/priv_include/UserScript/interpreter.h @@ -167,12 +167,12 @@ namespace scripting { return v; } - std::vector prepare(std::string code) final { + std::vector prepare(std::string code, bool repeating) final { std::vector errors; auto lexed = ast::lex(code, errors); auto parsed = ast::parse(lexed, errors); if (errors.empty()) { - bytecode = generate(errors, parsed, true); + bytecode = generate(errors, parsed, repeating); } return errors; diff --git a/src/interpreter.cpp b/src/interpreter.cpp index 2310b1d..4fba675 100644 --- a/src/interpreter.cpp +++ b/src/interpreter.cpp @@ -83,7 +83,7 @@ namespace scripting { std::unique_ptr prepare_interpreter(const std::string& code) { auto script = std::make_unique(); - script->prepare(code); + script->prepare(code, false); return script; }