Result<Statement[]> IStatementsProvider.Get (List type, Syntax syntax, IDefaultScopeProvider container) { if(type != null && type != this) return null; var leftStatements = CreateStatements(syntax.Left, syntax, container); var rightStatements = CreateStatements(syntax.Right, syntax, container); var target = leftStatements?.Target.plus(rightStatements?.Target); var issues = leftStatements?.Issues.plus(rightStatements?.Issues); return new Result<Statement[]>(target, issues); }
public Statements(List type, IEnumerable<Statement> data) { Type = type; Data = data.ToArray(); StopByObjectIds(); }
internal Result<Statement[]> GetStatements(List type = null) { var statements = Option.GetStatements(type); if(statements != null) return statements; var statement = Option.Statement; if(statement != null) return statement.Convert(x => new[] {x}); var value = Option.Value; if(value != null) return Statement.CreateStatements(value, Option.DefaultScopeProvider); return new Result<Statement[]> (new Statement[0], IssueId.InvalidListOperandSequence.Create(this.SourcePart)); }
internal Result<Statement[]> GetStatements(List type = null) => (Parent.TokenClass as IStatementsProvider)?.Get(type, Parent, DefaultScopeProvider);