public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { textWriter.WriteLine(); context.Indentation--; textWriter.Write(context.IndentationText); textWriter.Write("}"); }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { context.Indentation++; textWriter.Write("while ("); _condition.GenerateJavaScript(context, textWriter); textWriter.Write(") {"); }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { textWriter.Write("if ("); _condition.GenerateJavaScript(context, textWriter); textWriter.WriteLine(") {"); context.Indentation++; textWriter.Write(context.IndentationText); _thenExpression.GenerateJavaScript(context, textWriter); textWriter.WriteLine(); context.Indentation--; textWriter.Write(context.IndentationText); if (_elseExpression != null) { textWriter.WriteLine("} else {"); context.Indentation++; textWriter.Write(context.IndentationText); _elseExpression.GenerateJavaScript(context, textWriter); context.Indentation--; textWriter.WriteLine(); textWriter.Write(context.IndentationText); } textWriter.WriteLine("}"); }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { if (LineTypes == LineTypes.None) { throw new ApplicationException("Line type not set for line " + LineNumber); } if ((LineTypes & LineTypes.FunctionStart) > 0) { textWriter.Write(context.IndentationText); textWriter.WriteLine("function line" + LineNumber + "() {"); context.Indentation++; } textWriter.Write(context.IndentationText); StatementList.GenerateJavaScript(context, textWriter); textWriter.WriteLine(); if ((LineTypes & LineTypes.FunctionEnd) > 0) { if (!string.IsNullOrEmpty(ReturnText)) { textWriter.Write(context.IndentationText); textWriter.WriteLine(ReturnText); } context.Indentation--; textWriter.Write(context.IndentationText); textWriter.WriteLine("}"); } }
public static void GenerateNodes(JSContext context, TextWriter textWriter, AstNodeList nodes) { foreach (AstNode node in nodes) { GenerateNode(context, textWriter, node); } }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { context.Indentation++; textWriter.Write("for (var "); _assignment.GenerateJavaScript(context, textWriter); textWriter.Write(" "); GeneratorHelper.GenerateNode(context, textWriter, _assignment.Variable); if (_step > 0) { textWriter.Write("<="); } else if (_step < 0) { textWriter.Write(">="); } else { throw new BasicSyntaxErrorException("A step amount of 0 is not allowed."); } _upperBound.GenerateJavaScript(context, textWriter); textWriter.Write("; "); GeneratorHelper.GenerateNode(context, textWriter, _assignment.Variable); textWriter.Write(" += " + _step); textWriter.Write(") {"); }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { textWriter.WriteLine("/* Generated by the JSBasic compiler at " + DateTime.Now.ToString("HH:mm:ss dd/MMM/yy", CultureInfo.CurrentCulture) + " */"); foreach (LineNode line in Lines) { line.GenerateJavaScript(context, textWriter); } }
public override void GenerateJavaScript(JSContext context, TextWriter textWriter) { textWriter.Write("console.setCursorPos("); GeneratorHelper.GenerateNode(context, textWriter, TargetRow); textWriter.Write(", "); GeneratorHelper.GenerateNode(context, textWriter, TargetColumn); textWriter.Write(");"); }
public static void GenerateNode(JSContext context, TextWriter textWriter, AstNode node) { if (node == null) { throw new ArgumentNullException("node"); } if (node is IJSBasicNode) { IJSBasicNode jsBasicNode = (IJSBasicNode)node; jsBasicNode.GenerateJavaScript(context, textWriter); } else if (node is Token) { Token t = (Token)node; switch (t.Terminal.Name) { case "VARIABLE": if (t.Text.EndsWith("$")) { textWriter.Write("s_" + t.Text.Substring(0, t.Text.Length - 1)); } else { throw new BasicSyntaxErrorException("Invalid variable name: " + t.Text); } break; case "BOOLEAN_OP": { switch (t.Text.ToLowerInvariant()) { case "and": textWriter.Write("&&"); break; case "or": textWriter.Write("||"); break; default: textWriter.Write(t.Text); break; } } break; default: textWriter.Write(ConvertToJavascript(t.Text)); break; } textWriter.Write(" "); } else { throw new ApplicationException("Unhandled statement type: " + node.GetType().FullName); } }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { GeneratorHelper.GenerateNode(context, textWriter, _variable); textWriter.Write("= console.input("); if (_toPrint != null) { _toPrint.GenerateJavaScript(context, textWriter); } textWriter.Write(");"); }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { bool isFirst = true; foreach (var expr in Expressions) { if (!isFirst) { textWriter.Write("+ "); } expr.GenerateJavaScript(context, textWriter); isFirst = false; } }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { base.GenerateJavaScript(context, textWriter); // put semi-colons on the end of expression-statements. if (ChildNodes.Count == 1) { ExpressionNode expr = ChildNodes[0] as ExpressionNode; if (expr != null) { textWriter.Write(";"); } } }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { bool isFirst = true; foreach (var stmt in Statements) { if (!isFirst) { textWriter.WriteLine(); textWriter.Write(context.IndentationText); } stmt.GenerateJavaScript(context, textWriter); isFirst = false; } }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { if (BranchType == BranchType.Gosub) { textWriter.Write("line" + DestinationLine + "();"); } else if (BranchType == BranchType.Return) { textWriter.Write("return;"); } else { textWriter.Write("return line" + DestinationLine + ";"); } }
public override void GenerateJavaScript(JSContext context, TextWriter textWriter) { textWriter.Write("tempVar = "); GeneratorHelper.GenerateNode(context, textWriter, Variable1); textWriter.WriteLine(";"); textWriter.Write(context.IndentationText); GeneratorHelper.GenerateNode(context, textWriter, Variable1); textWriter.Write(" = "); GeneratorHelper.GenerateNode(context, textWriter, Variable2); textWriter.WriteLine(";"); textWriter.Write(context.IndentationText); GeneratorHelper.GenerateNode(context, textWriter, Variable2); textWriter.WriteLine(" = tempVar;"); textWriter.Write(context.IndentationText); textWriter.Write("tempVar = null;"); }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { string op; switch (_operator.Text) { case "=": op = "=="; break; case "<>": op = "!="; break; case "and": op = "&&"; break; case "or": op = "||"; break; default: op = _operator.Text; break; } textWriter.Write(op); }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { switch (FunctionName.Text.ToLowerInvariant()) { case "len": Write(context, textWriter, InputParameter1, ".length"); break; case "left$": Write(context, textWriter, InputParameter1, ".substring(0, ", InputParameter2, ")"); break; case "right$": Write(context, textWriter, InputParameter1, ".substring(", InputParameter1, ".length - ", InputParameter2, ")"); break; case "mid$": if (InputParameter3 == null) { Write(context, textWriter, InputParameter1, ".substring(", InputParameter2, "-1)"); } else { Write(context, textWriter, InputParameter1, ".substring(", InputParameter2, "-1,", InputParameter2, "-1+",InputParameter3, ")"); } break; case "abs": Write(context, textWriter, "Math.abs(", InputParameter1, ")"); break; case "asc": Write(context, textWriter, InputParameter1, ".charCodeAt(0)"); break; case "chr$": Write(context, textWriter, "String.fromCharCode(", InputParameter1, ")"); break; case "cint": Write(context, textWriter, "Math.round(", InputParameter1, ")"); break; case "cvi": Write(context, textWriter, "parseInt(", InputParameter1, ")"); break; case "cvs": case "cvd": Write(context, textWriter, "parseFloat(", InputParameter1, ")"); break; case "exp": Write(context, textWriter, "Math.exp(", InputParameter1, ")"); break; case "fix": Write(context, textWriter, "Math.floor(", InputParameter1, ")"); break; case "pos": Write(context, textWriter, "console.cursorPosition.column"); break; case "sgn": Write(context, textWriter, "(", InputParameter1 + " == 0 ? 0 : (", InputParameter1 , " > 0 ? 1 : -1))"); break; case "sin": Write(context, textWriter, "Math.sin(", InputParameter1, ")"); break; case "cos": Write(context, textWriter, "Math.cos(", InputParameter1, ")"); break; case "tan": Write(context, textWriter, "Math.tan(", InputParameter1, ")"); break; case "spc": case "space$": Write(context, textWriter, "getSpaces(", InputParameter1, ")"); break; case "instr": if (InputParameter3 == null) { Write(context, textWriter, "(" + InputParameter1, ".indexOf(", InputParameter2, ")+1)"); } else { Write(context, textWriter, "(" + InputParameter2, ".indexOf(", InputParameter3, "," + InputParameter1 + ")+1)"); } break; case "log": Write(context, textWriter, "Math.log(", InputParameter1, ")"); break; case "sqr": Write(context, textWriter, "Math.sqrt(", InputParameter1, ")"); break; case "str$": Write(context, textWriter, "('' + ", InputParameter1, ")"); break; case "string$": Write(context, textWriter, "generateString(", InputParameter1, ",", InputParameter2, ")"); break; case "val": Write(context, textWriter, "parseInt(", InputParameter1, ")"); break; default: throw new BasicSyntaxErrorException("Unknown global function " + FunctionName.Text); } }
private static void Write(JSContext context, TextWriter textWriter, params object[] values) { foreach (object val in values) { if (val is AstNode) { textWriter.Write("("); GeneratorHelper.GenerateNode(context, textWriter, (AstNode)val); textWriter.Write(")"); } else { textWriter.Write(val); } } }
public virtual void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { GeneratorHelper.GenerateNodes(context, textWriter, ChildNodes); }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { GeneratorHelper.GenerateNodes(context, textWriter, ChildNodes); textWriter.Write(";"); }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { textWriter.Write("// " + _comment); }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { textWriter.Write("console.println("); _exprList.GenerateJavaScript(context, textWriter); textWriter.Write(");"); }
public override void GenerateJavaScript(JSContext context, System.IO.TextWriter textWriter) { textWriter.Write("// " + _comment); }