コード例 #1
0
ファイル: DaisyAstPrinter.cs プロジェクト: heneryville/Daisy
 protected override bool PreVisit(IGroupOperatorNode <IDaisyAstNode> node)
 {
     Pad(sb, indent);
     sb.Append("GROUP");
     if (!string.IsNullOrEmpty(node.Text))
     {
         sb.Append("@");
         sb.Append(node.Text);
     }
     sb.Append("\r\n");
     indent++;
     return(true);
 }
コード例 #2
0
            protected override bool PreVisit(IGroupOperatorNode <IDaisyAstNode> abstraceNode)
            {
                var node = (GroupOperatorNode)abstraceNode;

                if (node.HasCommand)
                {
                    var nextScope = linker.Link(node, scopes.Peek(), true);
                    if (nextScope == null)
                    {
                        return(false);
                    }
                    scopes.Push(nextScope);
                }
                else
                {
                    scopes.Push(scopes.Peek());
                }
                return(true);
            }
コード例 #3
0
        protected override bool PreVisit(IGroupOperatorNode <TraceNode> node)
        {
            var trace = (GroupOperatorTrace)node;

            if (isFirstStatementInGroup)
            {
                Pad(sb, indent);
            }
            sb.Append("GROUP");
            if (!string.IsNullOrEmpty(node.Text))
            {
                sb.Append("@");
                sb.Append(node.Text);
            }
            sb.Append(" (").Append(trace.Outcome).Append(")");
            foreach (var tracing in trace.Tracings)
            {
                sb.AppendLine();
                Pad(sb, indent);
                sb.Append("!").Append(tracing);
            }
            if (trace.Frames.Count > 0)
            {
                sb.AppendLine();
                foreach (var frame in trace.Frames)
                {
                    Pad(sb, indent + 1);
                    sb.AppendLine("******" + frame.Scope.GetType().Name + " " + frame.Scope + "=>(" + frame.Outcome +
                                  ")*******");
                    sb.Append(new DaisyTracePrinter(frame).Print(indent + 1));
                }
                Pad(sb, indent + 1);
                sb.AppendLine("***********");
            }
            else
            {
                sb.AppendLine();
            }
            indent++;
            isFirstStatementInGroup = true;
            return(false);
        }
コード例 #4
0
ファイル: DaisyAstPrinter.cs プロジェクト: heneryville/Daisy
 protected override void PostVisit(IGroupOperatorNode <IDaisyAstNode> node)
 {
     indent--;
 }
コード例 #5
0
 protected virtual bool PreVisit(IGroupOperatorNode <T> node)
 {
     return(true);
 }
コード例 #6
0
 protected virtual void PostVisit(IGroupOperatorNode <T> node)
 {
 }
コード例 #7
0
 protected override void PostVisit(IGroupOperatorNode <IDaisyAstNode> node)
 {
     scopes.Pop();
 }
コード例 #8
0
 protected override void PostVisit(IGroupOperatorNode <TraceNode> node)
 {
     indent--;
     isFirstStatementInGroup = false;
 }