!function(e){"use strict";e.peg=function(){function e(e,n){function t(){this.constructor=e}t.prototype=n.prototype,e.prototype=new t}function n(e,n,t,r,a,i){this.message=e,this.expected=n,this.found=t,this.offset=r,this.line=a,this.column=i,this.name="SyntaxError"}function t(e){function t(){return e.substring(Vt,Yt)}function r(n){function t(n,t,r){var a,i;for(a=t;r>a;a++)i=e.charAt(a),"\n"===i?(n.seenCR||n.line++,n.column=1,n.seenCR=!1):"\r"===i||"\u2028"===i||"\u2029"===i?(n.line++,n.column=1,n.seenCR=!0):(n.column++,n.seenCR=!1)}return Dt!==n&&(Dt>n&&(Dt=0,Bt={line:1,column:1,seenCR:!1}),t(Bt,Dt,n),Dt=n),Bt}function a(e){wt>Yt||(Yt>wt&&(wt=Yt,Pt=[]),Pt.push(e))}function i(t,a,i){function o(e){var n=1;for(e.sort(function(e,n){return e.descriptionn.description?1:0});n1?o.slice(0,-1).join(", ")+" or "+o[e.length-1]:o[0],a=n?'"'+t(n)+'"':"end of input","Expected "+r+" but "+a+" found."}var u=r(i),l=i1?arguments[1]:{},Ee={},Te={Root:o},ve=o,he="IT'S SHOWTIME",Oe={type:"literal",value:"IT'S SHOWTIME",description:'"IT\'S SHOWTIME"'},Ae="YOU HAVE BEEN TERMINATED",me={type:"literal",value:"YOU HAVE BEEN TERMINATED",description:'"YOU HAVE BEEN TERMINATED"'},Ie="LISTEN TO ME VERY CAREFULLY",Le={type:"literal",value:"LISTEN TO ME VERY CAREFULLY",description:'"LISTEN TO ME VERY CAREFULLY"'},ye="HASTA LA VISTA, BABY",Se={type:"literal",value:"HASTA LA VISTA, BABY",description:'"HASTA LA VISTA, BABY"'},Ne="HEY CHRISTMAS TREE",Re={type:"literal",value:"HEY CHRISTMAS TREE",description:'"HEY CHRISTMAS TREE"'},be="YOU SET US UP",ge={type:"literal",value:"YOU SET US UP",description:'"YOU SET US UP"'},Ue="GIVE YOU A LIFT",Ce={type:"literal",value:"GIVE YOU A LIFT",description:'"GIVE YOU A LIFT"'},He="GET UP",Me={type:"literal",value:"GET UP",description:'"GET UP"'},Ye="GET DOWN",Ve={type:"literal",value:"GET DOWN",description:'"GET DOWN"'},De="YOU'RE FIRED",Be={type:"literal",value:"YOU'RE FIRED",description:'"YOU\'RE FIRED"'},we="HE HAD TO SPLIT",Pe={type:"literal",value:"HE HAD TO SPLIT",description:'"HE HAD TO SPLIT"'},Fe="TALK TO THE HAND",Ge={type:"literal",value:"TALK TO THE HAND",description:'"TALK TO THE HAND"'},Ke="I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY",xe={type:"literal",value:"I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY",description:'"I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY"'},We="GET TO THE CHOPPER",ke={type:"literal",value:"GET TO THE CHOPPER",description:'"GET TO THE CHOPPER"'},ze="HERE IS MY INVITATION",_e={type:"literal",value:"HERE IS MY INVITATION",description:'"HERE IS MY INVITATION"'},Ze="ENOUGH TALK",je={type:"literal",value:"ENOUGH TALK",description:'"ENOUGH TALK"'},Je="I LIED",Qe={type:"literal",value:"I LIED",description:'"I LIED"'},$e="NO PROBLEMO",qe={type:"literal",value:"NO PROBLEMO",description:'"NO PROBLEMO"'},Xe="YOU ARE NOT YOU YOU ARE ME",en={type:"literal",value:"YOU ARE NOT YOU YOU ARE ME",description:'"YOU ARE NOT YOU YOU ARE ME"'},nn="LET OFF SOME STEAM BENNET",tn={type:"literal",value:"LET OFF SOME STEAM BENNET",description:'"LET OFF SOME STEAM BENNET"'},rn="CONSIDER THAT A DIVORCE",an={type:"literal",value:"CONSIDER THAT A DIVORCE",description:'"CONSIDER THAT A DIVORCE"'},on="KNOCK KNOCK",pn={type:"literal",value:"KNOCK KNOCK",description:'"KNOCK KNOCK"'},un="BECAUSE I'M GOING TO SAY PLEASE",ln={type:"literal",value:"BECAUSE I'M GOING TO SAY PLEASE",description:'"BECAUSE I\'M GOING TO SAY PLEASE"'},sn="BULLSHIT",cn={type:"literal",value:"BULLSHIT",description:'"BULLSHIT"'},dn="YOU HAVE NO RESPECT FOR LOGIC",fn={type:"literal",value:"YOU HAVE NO RESPECT FOR LOGIC",description:'"YOU HAVE NO RESPECT FOR LOGIC"'},En="STICK AROUND",Tn={type:"literal",value:"STICK AROUND",description:'"STICK AROUND"'},vn="CHILL",hn={type:"literal",value:"CHILL",description:'"CHILL"'},On="I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE",An={type:"literal",value:"I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE",description:'"I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE"'},mn="I'LL BE BACK",In={type:"literal",value:"I'LL BE BACK",description:'"I\'LL BE BACK"'},Ln="DO IT NOW",yn={type:"literal",value:"DO IT NOW",description:'"DO IT NOW"'},Sn="GIVE THESE PEOPLE AIR",Nn={type:"literal",value:"GIVE THESE PEOPLE AIR",description:'"GIVE THESE PEOPLE AIR"'},Rn="GET YOUR ASS TO MARS",bn={type:"literal",value:"GET YOUR ASS TO MARS",description:'"GET YOUR ASS TO MARS"'},gn="I LET HIM GO",Un={type:"literal",value:"I LET HIM GO",description:'"I LET HIM GO"'},Cn=Ee,Hn=null,Mn=function(e){return e},Yn=function(e){return{methodType:"Main",name:null,methodParameters:[],statements:e}},Vn=function(e){return e},Dn=function(e,n,t,r){return{methodType:t?"NonVoid":"Void",name:e,methodParameters:n,statements:r}},Bn=function(e,n){return{statementType:"DeclareInt",variableName:e,operand:n}},wn=function(e){return{statementType:"Print",operand:e}},Pn=function(e,n){return{statementType:"AssignVariable",variableName:e,expression:n}},Fn=function(e){return e},Gn=function(e,n,t){return{statementType:"Condition",conditionOperand:e,ifBranchStatements:n,elseBranchStatements:t}},Kn=function(e,n){return{statementType:"While",operand:e,statements:n}},xn=function(e){return e},Wn=function(e){return e},kn=function(e,n,t){return{statementType:"CallMethod",assignVariableName:e,methodName:n,methodArguments:t}},zn=function(e){return{statementType:"CallReadMethod",assignVariableName:e}},_n=function(e){return{statementType:"Return",operand:e}},Zn=function(e,n){return{operand:e,operations:n}},jn=function(e){return{operationType:"arithmetic",operator:"+",operand:e}},Jn=function(e){return{operationType:"arithmetic",operator:"-",operand:e}},Qn=function(e){return{operationType:"arithmetic",operator:"*",operand:e}},$n=function(e){return{operationType:"arithmetic",operator:"/",operand:e}},qn=function(e){return{operationType:"arithmetic",operator:"%",operand:e}},Xn=function(e){return{operationType:"logical",operator:"||",operand:e}},et=function(e){return{operationType:"logical",operator:"&&",operand:e}},nt=function(e){return{operationType:"logical",operator:"==",operand:e}},tt=function(e){return{operationType:"logical",operator:">",operand:e}},rt=function(){return{operandType:"Identifier",name:t()}},at=/^[A-Za-z]/,it={type:"class",value:"[A-Za-z]",description:"[A-Za-z]"},ot=/^[A-Za-z0-9]/,pt={type:"class",value:"[A-Za-z0-9]",description:"[A-Za-z0-9]"},ut=function(){return t()},lt="-",st={type:"literal",value:"-",description:'"-"'},ct=/^[0-9]/,dt={type:"class",value:"[0-9]",description:"[0-9]"},ft=function(){return{operandType:"Literal",valueType:"int",value:parseInt(t(),10)}},Et="@",Tt={type:"literal",value:"@",description:'"@"'},vt=function(){return{operandType:"Literal",valueType:"bool",value:!0}},ht=function(){return{operandType:"Literal",valueType:"bool",value:!1}},Ot=function(e){return{operandType:"Literal",valueType:"string",value:e}},At='"',mt={type:"literal",value:'"',description:'"\\""'},It=function(e){return e.join("")},Lt=/^[^"\\]/,yt={type:"class",value:'[^"\\\\]',description:'[^"\\\\]'},St=/^[\r\t ]/,Nt={type:"class",value:"[\\r\\t ]",description:"[\\r\\t ]"},Rt=/^[\n]/,bt={type:"class",value:"[\\n]",description:"[\\n]"},gt=/^[\r\n\t ]/,Ut={type:"class",value:"[\\r\\n\\t ]",description:"[\\r\\n\\t ]"},Ct=function(){return null},Ht=/^[ \t]/,Mt={type:"class",value:"[ \\t]",description:"[ \\t]"},Yt=0,Vt=0,Dt=0,Bt={line:1,column:1,seenCR:!1},wt=0,Pt=[],Ft=0;if("startRule"in fe){if(!(fe.startRule in Te))throw new Error("Can't start parsing from rule \""+fe.startRule+'".');ve=Te[fe.startRule]}if(de=ve(),de!==Ee&&Yt===e.length)return de;throw de!==Ee&&Yt0&&i.appendLine();var u=r.methods[p];o(a,u)}if(!a.isMainMethodDeclared())throw new S("Missing main method");return i.toString()}function t(){var e=i(),n={},t=[],o=function(){if(t.length<1)throw new S("No block scope is started");return t[t.length-1]},p=null,u={sb:e,startMethod:function(i,o){if(null!==p)throw new S("A method ("+p.methodName+") is already started.");if(i=i||"
",n[i])throw new S('Method "'+i+'" is already defined.');n[i]=i,p=a(i,o),t.push(r()),e.incrementIndentLevel()},endMethod:function(){if(1!==t.length)throw new S("Expected all block scopes to be ended, but there are "+(t.length-1)+" still open.");e.decrementIndentLevel(),t.pop(),p=null},isMainMethodDeclared:function(){return!!n["
"]},startBlock:function(){if(!p)throw new S("No method has not been started.");t.push(r()),e.incrementIndentLevel()},endBlock:function(){e.decrementIndentLevel(),t.pop()},declareVariable:function(e){var n=o();n.declareVariable(e),p.declareVariable(e)},referenceVariable:function(e){for(var n=!1,r=0;ri;i++)e.push(n);r=!0}e.push(a)},i={append:a,appendLine:function(n){n&&a(n),e.push("\n"),r=!1},incrementIndentLevel:function(){t++,r=!1},decrementIndentLevel:function(){t>0&&t--},toString:function(){return e.join("")}};return i}function o(e,n){var t=e.sb,r="Main"===n.methodType,a=!r&&"Void"!==n.methodType,i=n.methodParameters.map(function(e){return e.name}),o=i.map(function(e){return y(e)});r&&t.append("("),t.append("function"),n.name&&(t.append(" "),t.append(L(n.name))),t.append("("),t.append(o.join(", ")),t.appendLine(") {"),e.startMethod(n.name,a);for(var u=0;u0){t.appendLine(" else {"),e.startBlock();for(var o=0,u=n.elseBranchStatements;o0&&a.filter(function(e){return"Identifier"===e.operand.operandType&&e.operand.name===n.variableName}).length>0,o=i?"__temp":r;i&&t.append("var "),t.append(o),t.append(" = "),v(e,n.expression.operand),t.appendLine(";");for(var p=0,u=n.expression.operations;p0&&t.append(", ");var a=n.methodArguments[r];v(e,a)}t.appendLine(");")}function E(e,n){var t=e.sb;e.referenceVariable(n.assignVariableName);var r=y(n.assignVariableName);t.append(r),t.append(" = "),t.appendLine("prompt();"),t.append("if (/^\\s*[-+]?[0-9]+(\\s|$)/.test("),t.append(r),t.appendLine(") === false) {"),t.incrementIndentLevel(),t.append('throw new SyntaxError("input \\"" + '),t.append(r),t.appendLine(' + "\\" is not a number");'),t.decrementIndentLevel(),t.appendLine("}"),t.append(r),t.append(" = parseInt("),t.append(r),t.appendLine(", 10);"),t.append("if ("),t.append(r),t.append(" > 2147483647 || "),t.append(r),t.appendLine(" < -2147483648) {"),t.incrementIndentLevel(),t.appendLine('throw new RangeError("input is out of range for a 32-bit signed integer");'),t.decrementIndentLevel(),t.appendLine("}")}function T(e,n){var t=e.sb;e.declareReturnStatement(n.operand),t.append("return"),n.operand&&(t.append(" "),v(e,n.operand)),t.appendLine(";")}function v(e,n){if(n)if("Literal"===n.operandType)h(e,n);else{if("Identifier"!==n.operandType)throw new S("Unrecognized operand type: "+n.operandType);O(e,n)}}function h(e,n){var t=e.sb;if("int"===n.valueType){var r=n.value;(r>32767||-32768>r)&&(r=A(r)),t.append(r.toString())}else if("bool"===n.valueType)t.append(n.value?"1":"0");else{if("string"!==n.valueType)throw new S("Unrecognized literal value type: "+n.valueType);t.append('"'),t.append(I(n.value)),t.append('"')}}function O(e,n){e.referenceVariable(n.name),e.sb.append(y(n.name))}function A(e){return(e>32767||-32768>e)&&(e=m(e+32768,65536)-32768),e}function m(e,n){return(e%n+n)%n}function I(e){if(!e)return e;var n=e.replace(/\r/g,"\\r").replace(/\n/g,"\\n");return n}function L(e){var n=["break","default","function","return","var","case","delete","if","switch","void","catch","do","in","this","while","const","else","instanceof","throw","with","continue","finally","let","try","debugger","for","new","typeof"];if(n.indexOf(e)>=0){var t=e.substr(0,e.length-1),r="\\u"+("0000"+e.charCodeAt(e.length-1).toString(16)).slice(-4);e=t+r}return e}function y(e){return"_"+e}e.transpileToJs=n;var S=function(e){function n(n){e.call(this,n),this.name="TranspileError",this.message="WHAT THE FUCK DID I DO WRONG: "+n}return __extends(n,e),n}(Error);e.TranspileError=S}(arnoldc||(arnoldc={}));var arnoldc;!function(e){function n(n,r){var a=e.transpileToJs(n);return t(a,r)}function t(e,n){n||(n={});var t=n.log?{log:n.log}:console,r=n.prompt||prompt;new Function("console","prompt",e)(t,r)}e.transpileToJsAndExecute=n}(arnoldc||(arnoldc={}));