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();
}
}