private QilNode CompileXPathExpressionWithinAvt(string expr, ref int pos)
{
Debug.Assert(expr != null);
XPathScanner scanner;
QilNode result;
int startPos = pos;
SetEnvironmentFlags(/*allowVariables:*/true, /*allowCurrent:*/true, /*allowKey:*/true);
try
{
scanner = new XPathScanner(expr, pos);
result = _xpathParser.Parse(scanner, _xpathBuilder, LexKind.RBrace);
pos = scanner.LexStart + 1;
}
catch (XslLoadException e)
{
if (_xslVersion != XslVersion.ForwardsCompatible)
{
ReportErrorInXPath(/*[XT0350][XT0360]*/e);
}
result = _f.Error(_f.String(e.Message));
pos = expr.Length;
}
if (result is QilIterator)
{
result = _f.Nop(result);
}
return result;
}