private T4MissingTokenInserter()

in Backend/Core/ForTea.Core/Parsing/T4MissingTokenInserter.cs [12:44]


    private T4MissingTokenInserter(
      ILexer lexer,
      ITokenOffsetProvider offsetProvider,
      ITokenIntern intern
    ) : base(offsetProvider, intern) => myLexer = lexer;

    protected override void ProcessLeafElement(TreeElement leafElement)
    {
      int elemOffset = GetLeafOffset(leafElement).Offset;
      if (myLexer.TokenType != null && myLexer.TokenStart < elemOffset)
      {
        var anchor = leafElement;
        var parent = anchor.parent;
        while (anchor == parent.firstChild && parent.parent != null)
        {
          anchor = parent;
          parent = parent.parent;
        }

        while (myLexer.TokenType != null && myLexer.TokenStart < elemOffset)
        {
          var newToken = (TreeElement)TreeElementFactory.CreateLeafElement(myLexer);
          parent.AddChildBefore(newToken, anchor);
          myLexer.Advance();
        }
      }

      int skipTo = elemOffset + leafElement.GetTextLength();
      while (myLexer.TokenType != null && myLexer.TokenStart < skipTo)
      {
        myLexer.Advance();
      }
    }