/// <summary> /// Visits the data blocks /// </summary> /// <param name="line">Line to add the tag for</param> /// <param name="context">DataBlockNode to visit</param> /// <param name="lineNo">Current line numer</param> /// <param name="collectedSpans">Collection of spancs found</param> private void Visit(ITextSnapshotLine line, DataBlockNode context, int lineNo, List <TagSpan <Z80TestTokenTag> > collectedSpans) { if (context == null || lineNo < context.Span.StartLine || lineNo > context.Span.EndLine) { return; } Visit(line, context.DataKeywordSpan, lineNo, collectedSpans, Z80TestTokenType.Keyword); foreach (var member in context.DataMembers) { Visit(line, member, lineNo, collectedSpans); } }
/// <summary> /// Visit a parse tree produced by <see cref="Z80TestParser.dataBlock"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public override object VisitDataBlock(Z80TestParser.DataBlockContext context) { if (IsInvalidContext(context)) { return(null); } var node = new DataBlockNode(context); foreach (var body in context.dataBlockBody()) { node.DataMembers.Add((DataMemberNode)VisitDataBlockBody(body)); } return(node); }
/// <summary> /// Visits the data blocks /// </summary> /// <param name="line">Line to add the tag for</param> /// <param name="context">DataBlockNode to visit</param> /// <param name="lineNo">Current line number</param> /// <param name="collectedSpans">Collection of spans found</param> private void Visit(ITextSnapshotLine line, DataBlockNode context, int lineNo, List <ClassificationSpan> collectedSpans) { if (context == null || lineNo < context.Span.StartLine || lineNo > context.Span.EndLine) { return; } Visit(line, context.DataKeywordSpan, lineNo, collectedSpans, _keyword); foreach (var member in context.DataMembers) { Visit(line, member, lineNo, collectedSpans); } }
/// <summary> /// Visit a data block /// </summary> /// <param name="plan">Test file plan</param> /// <param name="testSetPlan">TestSetPlan to visit</param> /// <param name="dataBlock">DataBlock syntax node</param> private void VisitDataBlock(TestFilePlan plan, TestSetPlan testSetPlan, DataBlockNode dataBlock) { if (dataBlock == null) { return; } foreach (var dataMember in dataBlock.DataMembers) { if (dataMember is ValueMemberNode valueMember) { VisitValueMember(plan, testSetPlan, valueMember); } else if (dataMember is MemoryPatternMemberNode mempatMember) { VisitMemoryPatternMember(plan, testSetPlan, mempatMember); } else if (dataMember is PortMockMemberNode portMockMember) { VisitPortMockMember(plan, testSetPlan, portMockMember); } } }