YAMP.GroupExpression.Scan C# (CSharp) Method

Scan() public method

public Scan ( ParseEngine engine ) : Expression
engine ParseEngine
return Expression
        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;
        }