public override Expression Scan(ParseEngine engine)
{
var start = engine.Pointer;
var chars = engine.Characters;
if (chars[start] == '{')
{
var index = start;
var line = engine.CurrentLine;
var column = engine.CurrentColumn;
engine.Advance();
index++;
var query = engine.Query;
var scope = new QueryContext(query, query.Input.Substring(index));
var eng = scope.Parser.SetOffset(line, column + 1).Parse();
if (!eng.IsTerminated)
{
engine.AddError(new YAMPScopeNotClosedError(line, column));
}
foreach (var error in eng.Errors)
{
engine.AddError(error);
}
engine.Advance(eng.Pointer);
return new GroupExpression(line, column, engine.Pointer - start, scope);
}
return null;
}