예제 #1
0
 public override bool Visit(UnifiedProgram element, VisitorArgument arg)
 {
     element.MagicComment.TryAccept(this, arg);
     Writer.WriteLine();
     element.Body.TryAccept(this, arg);
     return(false);
 }
예제 #2
0
 public override bool Visit(UnifiedImport element, VisitorArgument arg)
 {
     Writer.Write("import ");
     element.Modifiers.TryAccept(this, arg);
     element.Name.TryAccept(this, arg);
     return(false);
 }
예제 #3
0
 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);
 }
예제 #5
0
 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);
 }
예제 #7
0
 public override bool Visit(UnifiedProperty element, VisitorArgument arg)
 {
     element.Owner.TryAccept(this, arg);
     Writer.Write(element.Delimiter);
     element.Name.TryAccept(this, arg);
     return(false);
 }
예제 #8
0
 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);
 }
예제 #14
0
 // 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);
 }
예제 #16
0
 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);
 }
예제 #18
0
 public override bool Visit(UnifiedLambda element, VisitorArgument arg)
 {
     element.Parameters.TryAccept(this, arg);
     Writer.Write(" => ");
     element.Body.Accept(this, arg);
     return(true);
 }
예제 #19
0
 //小数リテラル
 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);
 }
예제 #23
0
 //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);
 }
예제 #24
0
 //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);
 }
예제 #25
0
 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);
 }
예제 #28
0
 // 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);
 }
예제 #29
0
        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);
 }