示例#1
0
文件: List.cs 项目: hahoyer/reni.cs
        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);
        }
示例#2
0
 public Statements(List type, IEnumerable<Statement> data)
 {
     Type = type;
     Data = data.ToArray();
     StopByObjectIds();
 }
示例#3
0
文件: Syntax.cs 项目: hahoyer/reni.cs
        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));
        }
示例#4
0
 internal Result<Statement[]> GetStatements(List type = null)
     => (Parent.TokenClass as IStatementsProvider)?.Get(type, Parent, DefaultScopeProvider);