| Clazz.declarePackage ("JS"); | |
| Clazz.load (null, "JS.ScriptFlowContext", ["JS.ScriptCompiler"], function () { | |
| c$ = Clazz.decorateAsClass (function () { | |
| this.compiler = null; | |
| this.token = null; | |
| this.pt0 = 0; | |
| this.ptDefault = 0; | |
| this.$function = null; | |
| this.$var = null; | |
| this.parent = null; | |
| this.lineStart = 0; | |
| this.commandStart = 0; | |
| this.ptLine = 0; | |
| this.ptCommand = 0; | |
| this.forceEndIf = true; | |
| this.ident = null; | |
| this.addLine = 0; | |
| this.tok0 = 0; | |
| this.ichCommand = 0; | |
| this.line0 = 0; | |
| Clazz.instantialize (this, arguments); | |
| }, JS, "ScriptFlowContext"); | |
| Clazz.makeConstructor (c$, | |
| function (compiler, token, pt0, parent, ich, line0) { | |
| this.compiler = compiler; | |
| this.token = token; | |
| this.tok0 = token.tok; | |
| this.ident = token.value; | |
| this.pt0 = pt0; | |
| this.line0 = line0; | |
| this.parent = parent; | |
| this.ichCommand = ich; | |
| this.lineStart = this.ptLine = this.compiler.lineCurrent; | |
| this.commandStart = this.ptCommand = this.compiler.iCommand; | |
| }, "JS.ScriptCompiler,JS.ContextToken,~N,JS.ScriptFlowContext,~N,~N"); | |
| Clazz.defineMethod (c$, "getBreakableContext", | |
| function (nLevelsUp) { | |
| var f = this; | |
| while (f != null && (!JS.ScriptCompiler.isBreakableContext (f.token.tok) || nLevelsUp-- > 0)) f = f.parent; | |
| return f; | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "checkForceEndIf", | |
| function (offset) { | |
| if (this.ptCommand == this.compiler.iCommand && this.addLine > 0) this.addLine++; | |
| var test = this.forceEndIf && this.ptCommand < this.compiler.iCommand && this.ptLine + (this.addLine == 0 ? 0 : this.addLine + offset) == this.compiler.lineCurrent; | |
| if (test) this.forceEndIf = false; | |
| return test; | |
| }, "~N"); | |
| Clazz.defineMethod (c$, "setPt0", | |
| function (pt0, isDefault) { | |
| this.pt0 = pt0; | |
| if (isDefault) this.ptDefault = pt0; | |
| this.setLine (); | |
| return pt0; | |
| }, "~N,~B"); | |
| Clazz.defineMethod (c$, "setLine", | |
| function () { | |
| this.ptLine = this.compiler.lineCurrent; | |
| this.ptCommand = this.compiler.iCommand + 1; | |
| }); | |
| Clazz.overrideMethod (c$, "toString", | |
| function () { | |
| return "ident " + this.ident + " line " + this.lineStart + " command " + this.commandStart; | |
| }); | |
| Clazz.defineMethod (c$, "path", | |
| function () { | |
| var s = ""; | |
| var f = this; | |
| while (f != null) { | |
| s = f.ident + "-" + s; | |
| f = f.parent; | |
| } | |
| return "[" + s + "]"; | |
| }); | |
| Clazz.defineMethod (c$, "setFunction", | |
| function ($function) { | |
| this.$function = $function; | |
| }, "JS.ScriptFunction"); | |
| }); | |