public ParsingFrame GetParentFor(ParsingFrame frame) { ParsingFrame parent = this; while (frame.LastSymbolIndex < parent.LastSymbolIndex || parent.NumberIndex == frame.NumberIndex) { parent = parent.Parent !; } return(parent); }
public override void ProcessLine(ReadOnlySpan <char> line) { var frame = new ParsingFrame(line); // Starting a new thread if (frame.LastSymbolIndex == -1) { CallGraph.Add(new Thread(frame.Frame)); } else { var parent = lastFrame !.GetParentFor(frame); parent.Frame.AddChild(frame.Frame, true); frame.Parent = parent; } lastFrame = frame; }
public bool Equals(ParsingFrame other) { return(ind == other.ind && Misc.AreEqual(module, other.module)); }
public bool Equals(ParsingFrame other) { return ind == other.ind && Misc.AreEqual(module, other.module); }