public override bool Visit(UnifiedProgram element, VisitorArgument arg) { element.MagicComment.TryAccept(this, arg); Writer.WriteLine(); element.Body.TryAccept(this, arg); return(false); }
public override bool Visit(UnifiedImport element, VisitorArgument arg) { Writer.Write("import "); element.Modifiers.TryAccept(this, arg); element.Name.TryAccept(this, arg); return(false); }
public override bool Visit( UnifiedGenericParameter element, VisitorArgument arg) { element.Type.TryAccept(this, arg); element.Constrains.TryAccept(this, arg.Set(AndDelimiter)); return(false); }
public override bool Visit( UnifiedInt64Literal element, VisitorArgument arg) { Writer.Write(element.Value); Writer.Write("l"); return(false); }
public override bool Visit(UnifiedImport element, VisitorArgument arg) { Writer.Write(ImportKeyword); element.Modifiers.TryAccept(this, arg); element.Name.TryAccept(this, arg); return(true); }
//typeof式 public override bool Visit(UnifiedTypeof element, VisitorArgument arg) { Writer.Write("typeof ("); element.Value.TryAccept(this, arg); Writer.Write(")"); return(true); }
public override bool Visit(UnifiedProperty element, VisitorArgument arg) { element.Owner.TryAccept(this, arg); Writer.Write(element.Delimiter); element.Name.TryAccept(this, arg); return(false); }
public override bool Visit(UnifiedAssert element, VisitorArgument arg) { Writer.Write("assert "); element.Value.TryAccept(this, arg); element.Message.TryAccept(this, arg.Set(CommaMostLeft)); return(true); }
public override bool Visit( UnifiedStaticInitializer element, VisitorArgument arg) { Writer.Write("static "); element.Body.TryAccept(this, arg.Set(ForBlock)); return(false); }
public override bool Visit( UnifiedVolatileType element, VisitorArgument arg) { Writer.Write("volatile "); element.Type.TryAccept(this, arg); return(false); }
public override bool Visit( UnifiedGenericType element, VisitorArgument arg) { element.Type.TryAccept(this, arg); element.Arguments.TryAccept(this, arg); return(false); }
public override bool Visit( UnifiedConstType element, VisitorArgument arg) { Writer.Write("final "); element.Type.TryAccept(this, arg); return(false); }
public override bool Visit( UnifiedReferenceType element, VisitorArgument arg) { Writer.Write("/* & */"); element.Type.TryAccept(this, arg); return(false); }
// e.g. <T1, T2> public override bool Visit( UnifiedGenericParameter element, VisitorArgument arg) { element.Modifiers.TryAccept(this, arg); element.Type.TryAccept(this, arg); return(false); }
public override bool Visit(UnifiedComment element, VisitorArgument arg) { Writer.Write("/*"); Writer.Write(element.Content); Writer.Write("*/"); return(false); }
public override bool Visit( UnifiedPrintChevron element, VisitorArgument arg) { Writer.Write("print >> "); element.Value.TryAccept(this, arg); return(false); }
public override bool Visit( UnifiedExtendConstrain element, VisitorArgument arg) { Writer.Write(arg.Decoration.Delimiter ?? " extends "); element.Type.TryAccept(this, arg); return(false); }
public override bool Visit(UnifiedLambda element, VisitorArgument arg) { element.Parameters.TryAccept(this, arg); Writer.Write(" => "); element.Body.Accept(this, arg); return(true); }
//小数リテラル public override bool Visit( UnifiedFractionLiteral element, VisitorArgument arg) { // TODO: そのまま出力しても良いのか? Writer.Write(element.Value.ToString("r")); return(false); }
public override bool Visit( UnifiedGenericArgument element, VisitorArgument arg) { element.Modifiers.TryAccept(this, arg); element.Value.TryAccept(this, arg); element.Constrains.TryAccept(this, arg.Set(AndDelimiter)); return(false); }
//goto文 public override bool Visit(UnifiedGoto element, VisitorArgument arg) { //JavaScriptではgoto文はサポートされていない Writer.Write("/* goto "); element.Target.TryAccept(this, arg); Writer.Write("*/"); return(true); }
// e.g. try{...}catch(E e){...}finally{...} public override bool Visit(UnifiedTry element, VisitorArgument arg) { Writer.Write("try"); element.Body.TryAccept(this, arg.Set(ForBlock)); element.Catches.TryAccept(this, arg); element.FinallyBody.TryAccept(this, arg, "finally"); return(false); }
//KeyValue式(オブジェクト) : e.g. {a : 1, b : 2, c : 3} public override bool Visit(UnifiedKeyValue element, VisitorArgument arg) { WriteIndent(arg.IndentDepth); element.Key.TryAccept(this, arg); Writer.Write(":"); element.Value.TryAccept(this, arg); return(false); }
//with文 public override bool Visit(UnifiedWith element, VisitorArgument arg) { Writer.Write("with ("); element.Value.TryAccept(this, arg); Writer.Write(")"); element.Body.TryAccept(this, arg.Set(ForBlock)); return(false); }
public override bool Visit(UnifiedArgument element, VisitorArgument arg) { Writer.Write("/*"); element.Modifiers.TryAccept(this, arg); Writer.Write("*/"); element.Value.TryAccept(this, arg); return(false); }
//assert文 public override bool Visit(UnifiedAssert element, VisitorArgument arg) { //TODO JavaScriptではassert文はサポートされていない? Writer.Write("/* assert("); element.Value.TryAccept(this, arg); Writer.Write(") */"); return(true); }
public override bool Visit(UnifiedArgument element, VisitorArgument arg) { // Javaはメソッド呼び出しにModifiersがないが element.Modifiers.TryAccept(this, arg); element.Target.TryAccept(this, arg, "", " = "); element.Value.TryAccept(this, arg); return(false); }
// e.g. (Int)a or (int)(a + b) public override bool Visit(UnifiedCast element, VisitorArgument arg) { Writer.Write("("); element.Type.TryAccept(this, arg); Writer.Write(")"); element.Expression.TryAccept(this, arg.Set(Paren)); return(false); }
public override bool Visit( UnifiedMapLiteral element, VisitorArgument arg) { return(false); //TODO Mseコンバーターのために一時的に例外を吐かないようにします throw new NotImplementedException(); }
public override bool Visit( UnifiedArrayType element, VisitorArgument arg) { element.Type.TryAccept(this, arg); Writer.Write("["); element.Arguments.TryAccept(this, arg.Set(CommaDelimiter)); Writer.Write("]"); return(false); }