private ParseTree RunWeaveMacro(ParseTree source)
{
if (IsWeave(source))
{
var leftSide = source.Children.ElementAt(1);
var rightSide = source.Children.ElementAt(2);
var count = new Utils.Wrapper<Int32>(0);
ReplacePlaceholder(rightSide, leftSide, count);
if (count.Item == 0)
{
RaiseErrorAt(
"No replacement in postfix call (->, $).",
source.StartPos, source.EndPos);
}
return RunWeaveMacro(rightSide);
}
else
{
source.RunOnChildren(RunWeaveMacro);
return source;
}
}