当前位置: 首页>>代码示例>>C#>>正文


C# VisitorArgument.IncrementDepth方法代码示例

本文整理汇总了C#中Unicoen.Processor.VisitorArgument.IncrementDepth方法的典型用法代码示例。如果您正苦于以下问题:C# VisitorArgument.IncrementDepth方法的具体用法?C# VisitorArgument.IncrementDepth怎么用?C# VisitorArgument.IncrementDepth使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Unicoen.Processor.VisitorArgument的用法示例。


在下文中一共展示了VisitorArgument.IncrementDepth方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Visit

        // ブロック(UnifiedBlock)
        public override bool Visit(UnifiedBlock element, VisitorArgument arg)
        {
            // 要素の左端に記述すべきものがある場合はそれを出力する
            // プログラム全体の場合は何も出力しないが、関数の場合には中括弧が必要になるなど
            if (!string.IsNullOrEmpty(arg.Decoration.MostLeft)) {
                Writer.WriteLine(arg.Decoration.MostLeft);
                arg = arg.IncrementDepth();
            }

            // ブロック内の要素を列挙する
            // セミコロンが必要な要素の場合にはセミコロンを出力する
            foreach (var stmt in element) {
                WriteIndent(arg);
                if (stmt.TryAccept(this, arg)) {
                    Writer.Write(";");
                }
                Writer.Write(arg.Decoration.EachRight);
            }

            // 要素の右端に記述すべきものがある場合はインデントを元に戻しそれを出力する
            if (!string.IsNullOrEmpty(arg.Decoration.MostRight)) {
                arg = arg.DecrementDepth();
                WriteIndent(arg);
                Writer.Write(arg.Decoration.MostRight);
            }
            return false;
        }
开发者ID:macc704,项目名称:UNICOEN,代码行数:28,代码来源:CCodeFactoryVisitor.Statements.cs

示例2: Visit

 public override bool Visit(
         UnifiedSet<UnifiedCase> element, VisitorArgument arg)
 {
     arg = arg.IncrementDepth();
     foreach (var caseElement in element) {
         WriteIndent(arg.IndentDepth);
         caseElement.TryAccept(this, arg);
     }
     return false;
 }
开发者ID:UnicoenProject,项目名称:UNICOEN,代码行数:10,代码来源:JavaScriptCodeFactoryVisitor.Collections.cs

示例3: Visit

        public override bool Visit(
                UnifiedFunctionDefinition element, VisitorArgument arg)
        {
            element.Annotations.TryAccept(this, arg);
            element.Modifiers.TryAccept(this, arg);
            Writer.Write("def ");
            element.Name.TryAccept(this, arg);
            element.Parameters.TryAccept(this, arg);
            Writer.WriteLine(":");

            element.Body.TryAccept(this, arg.IncrementDepth());
            return false;
        }
开发者ID:UnicoenProject,项目名称:UNICOEN,代码行数:13,代码来源:Python2CodeFactoryVisitor.Others.cs

示例4: Visit

 public override bool Visit(UnifiedBlock element, VisitorArgument arg)
 {
     // Write '{' which can be abbreviated
     if (!string.IsNullOrEmpty(arg.Decoration.MostLeft)) {
         Writer.WriteLine(arg.Decoration.MostLeft);
         arg = arg.IncrementDepth();
     }
     foreach (var stmt in element) {
         WriteIndent(arg);
         if (stmt.TryAccept(this, arg)) {
             Writer.Write(";");
         }
         Writer.Write(arg.Decoration.EachRight);
     }
     // Write '}' which can be abbreviated
     if (!string.IsNullOrEmpty(arg.Decoration.MostRight)) {
         arg = arg.DecrementDepth();
         WriteIndent(arg);
         Writer.WriteLine(arg.Decoration.MostRight);
     }
     return false;
 }
开发者ID:UnicoenProject,项目名称:UNICOEN,代码行数:22,代码来源:JavaLikeCodeFactoryVisitor.Others.cs

示例5: Visit

        //ブロック
        public override bool Visit(UnifiedBlock element, VisitorArgument arg)
        {
            //「いわゆるブロック」と「式のリストの入れ物としてのブロック」があるため、decorationでどちらかを判断する
            var decoration = arg.Decoration;

            //いわゆるブロックの場合 : e.g. while(true){ }の{ }の部分
            if (decoration.MostLeft == "{") {
                Writer.WriteLine(decoration.MostLeft);
                arg = arg.IncrementDepth(); //ブロック内部ではインデントを1つ下げる

                //ブロック内部の式を出力
                foreach (var stmt in element) {
                    WriteIndent(arg.IndentDepth);
                    if (stmt.TryAccept(this, arg)) {
                        Writer.Write(";");
                    }
                    Writer.Write(decoration.EachRight);
                }

                arg = arg.DecrementDepth(); //インデントを元に戻す
                WriteIndent(arg.IndentDepth);
                Writer.Write(decoration.MostRight);
                return false;
            }

            //式のリストの入れ物としてのブロックの場合 : e.g. return 1,2,3;の1,2,3の部分
            //式の数が0個の場合は何も出力せずに終了
            if (element.Count == 0) {
                return false;
            }

            //式が1つ以上ある場合
            //TODO なぜ括弧を出力するのか確認
            Writer.Write("(");
            var comma = "";
            foreach (var e in element) {
                Writer.Write(comma);
                e.TryAccept(this, arg);
                comma = decoration.Delimiter;
            }
            Writer.Write(")");
            return false;
        }
开发者ID:UnicoenProject,项目名称:UNICOEN,代码行数:44,代码来源:JavaScriptCodeFactoryVisitor.Others.cs


注:本文中的Unicoen.Processor.VisitorArgument.IncrementDepth方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。