From c9a39157ca7472c4fc4aa84cb44da99b238beffd Mon Sep 17 00:00:00 2001 From: DrMaxNix Date: Sun, 2 Oct 2022 12:38:04 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20combine=20v?= =?UTF-8?q?ariable=20and=20scope=20stack?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/runner.js | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/runner.js b/src/runner.js index 637fa38..4f5af02 100644 --- a/src/runner.js +++ b/src/runner.js @@ -19,11 +19,11 @@ class Juicescript_runner { // command counter this.counter = 0; - // current scope - this.scope = null; - - // scope variable stack - this.variable_stack = [{}]; + // scope and variable stack + this.stack = [{ + scope: null, + variable: {} + }]; // warning and error counter this.warning_count = 0; @@ -112,6 +112,14 @@ class Juicescript_runner { this.command = this.scope_tree.command[this.counter]; } + + /* + GETTER: Return name of current scope (top of stack) + */ + get scope(){ + return this.stack[this.stack.length - 1].scope; + } + /* GETTER: Return tree of current scope */ @@ -314,11 +322,11 @@ class Juicescript_runner { /**/let is_global = false; // get index on stack - let stack_index = this.variable_stack.length - 1; + let stack_index = this.stack.length - 1; if(is_global) stack_index = 0; // get index' full variable list - let variable_list = this.variable_stack[stack_index]; + let variable_list = this.stack[stack_index].variable; // try to load value from stack let value = null; @@ -380,11 +388,11 @@ class Juicescript_runner { /**/let is_global = false; // get index on stack - let stack_index = this.variable_stack.length - 1; + let stack_index = this.stack.length - 1; if(is_global) stack_index = 0; // get index' full variable list - let variable_list = this.variable_stack[stack_index]; + let variable_list = this.stack[stack_index].variable; // set value on stack variable_list[variable.name] = value;