當前位置: 首頁>>代碼示例>>C#>>正文


C# VisitorArgument.DecrementDepth方法代碼示例

本文整理匯總了C#中Unicoen.Processor.VisitorArgument.DecrementDepth方法的典型用法代碼示例。如果您正苦於以下問題:C# VisitorArgument.DecrementDepth方法的具體用法?C# VisitorArgument.DecrementDepth怎麽用?C# VisitorArgument.DecrementDepth使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在Unicoen.Processor.VisitorArgument的用法示例。


在下文中一共展示了VisitorArgument.DecrementDepth方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的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(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

示例3: 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.DecrementDepth方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。