/// <summary>
 /// Visits the Setup/Cleanup/Act block
 /// </summary>
 /// <param name="line">Line to add the tag for</param>
 /// <param name="context">AssignmentsNode to visit</param>
 /// <param name="lineNo">Current line numer</param>
 /// <param name="collectedSpans">Collection of spancs found</param>
 private void Visit(ITextSnapshotLine line, InvokeCodeNode context, int lineNo, List <TagSpan <Z80TestTokenTag> > collectedSpans)
 {
     if (context == null ||
         lineNo < context.Span.StartLine ||
         lineNo > context.Span.EndLine)
     {
         return;
     }
     Visit(line, context.KeywordSpan, lineNo, collectedSpans, Z80TestTokenType.Keyword);
     Visit(line, context.CallOrStartSpan, lineNo, collectedSpans, Z80TestTokenType.Keyword);
     Visit(line, context.StopOrHaltSpan, lineNo, collectedSpans, Z80TestTokenType.Keyword);
     Visit(line, context.StartExpr, lineNo, collectedSpans);
     Visit(line, context.StopExpr, lineNo, collectedSpans);
 }
Esempio n. 2
0
 /// <summary>
 /// Visits the Setup/Cleanup/Act block
 /// </summary>
 /// <param name="line">Line to add the tag for</param>
 /// <param name="context">AssignmentsNode to visit</param>
 /// <param name="lineNo">Current line number</param>
 /// <param name="collectedSpans">Collection of spans found</param>
 private void Visit(ITextSnapshotLine line, InvokeCodeNode context, int lineNo,
                    List <ClassificationSpan> collectedSpans)
 {
     if (context == null ||
         lineNo < context.Span.StartLine ||
         lineNo > context.Span.EndLine)
     {
         return;
     }
     Visit(line, context.KeywordSpan, lineNo, collectedSpans, _keyword);
     Visit(line, context.CallOrStartSpan, lineNo, collectedSpans, _keyword);
     Visit(line, context.StopOrHaltSpan, lineNo, collectedSpans, _keyword);
     Visit(line, context.StartExpr, lineNo, collectedSpans);
     Visit(line, context.StopExpr, lineNo, collectedSpans);
 }
Esempio n. 3
0
        /// <summary>
        /// Visit an invoke node
        /// </summary>
        /// <param name="plan">Test file plan</param>
        /// <param name="testSetPlan">TestSetPlan to visit</param>
        /// <param name="invokeNode">Invoke syntax node</param>
        /// <returns>Invoke plan</returns>
        private InvokePlanBase VisitInvoke(TestFilePlan plan, TestSetPlan testSetPlan, InvokeCodeNode invokeNode)
        {
            // --- Get start address
            var start = Eval(plan, testSetPlan, invokeNode.StartExpr);

            if (start == null)
            {
                return(null);
            }

            if (invokeNode.IsCall)
            {
                return(new CallPlan(start.AsWord()));
            }

            if (invokeNode.IsHalt)
            {
                return(new StartPlan(start.AsWord(), null));
            }

            // --- Get Stop address
            var stop = Eval(plan, testSetPlan, invokeNode.StopExpr);

            return(stop == null
                ? null
                : new StartPlan(start.AsWord(), stop.AsWord()));
        }