コード例 #1
0
        /// <summary>
        /// Preenche os dados da instancia com a expressões informadas.
        /// </summary>
        /// <param name="expressions"></param>
        private void Fill(List <Text.InterpreterExpression.Expression> expressions)
        {
            int ownerIndex;
            int aliasIndex;

            GetParameters(expressions, out ownerIndex, out aliasIndex);
            IEnumerator <Text.InterpreterExpression.Expression> enumerator = null;

            if (aliasIndex >= 0)
            {
                enumerator = (IEnumerator <Text.InterpreterExpression.Expression>)expressions.Take(aliasIndex).GetEnumerator();
            }
            else
            {
                enumerator = (IEnumerator <Text.InterpreterExpression.Expression>)expressions.GetEnumerator();
            }
            if (enumerator.MoveNext())
            {
                _term = ConditionalParser.GetContainer(ref enumerator, new Text.InterpreterExpression.ContainerChars('(', ')'));
            }
            if (aliasIndex >= 0 && _alias == null)
            {
                _alias = expressions[aliasIndex + 1].Text;
            }
        }
コード例 #2
0
        /// <summary>
        /// Preenche os dados da instancia com a expressões informadas.
        /// </summary>
        /// <param name="expressions"></param>
        private void Fill(List <Colosoft.Text.InterpreterExpression.Expression> expressions)
        {
            var enumerator = (IEnumerator <Text.InterpreterExpression.Expression>)expressions.GetEnumerator();

            if (enumerator.MoveNext())
            {
                _term = ConditionalParser.GetContainer(ref enumerator, new Text.InterpreterExpression.ContainerChars('(', ')'));
            }
        }
コード例 #3
0
        /// <summary>
        /// Executa um parse na expressão informada.
        /// </summary>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static ConditionalTerm ParseTerm(string expression)
        {
            if (string.IsNullOrEmpty(expression))
            {
                throw new ArgumentNullException("expression");
            }
            var container = ConditionalParser.Parse(expression);

            if (container.ConditionalsCount == 1)
            {
                return(container.Conditionals.First());
            }
            return(container);
        }
コード例 #4
0
ファイル: SortEntry.cs プロジェクト: fabrimaciel/colosoft
        /// <summary>
        /// Preenche os dados da instancia com a expressões informadas.
        /// </summary>
        /// <param name="expressions"></param>
        private void Fill(List <Colosoft.Text.InterpreterExpression.Expression> expressions)
        {
            var last = expressions.Last();

            if (last.Token == (int)Parser.SqlTokenID.kDesc)
            {
                _reverse = true;
            }
            if (last.Token == (int)Parser.SqlTokenID.kAsc || last.Token == (int)Parser.SqlTokenID.kDesc)
            {
                expressions.RemoveAt(expressions.Count - 1);
            }
            var enumerator = (IEnumerator <Text.InterpreterExpression.Expression>)expressions.GetEnumerator();

            if (enumerator.MoveNext())
            {
                _term = ConditionalParser.GetContainer(ref enumerator, new Text.InterpreterExpression.ContainerChars('(', ')'));
            }
        }
コード例 #5
0
 /// <summary>
 /// Executa o parse da expressão para um ConditionalTerm.
 /// </summary>
 /// <param name="expression"></param>
 /// <returns></returns>
 public static ConditionalTerm ParseTerm(string expression)
 {
     return(ConditionalParser.ParseTerm(expression));
 }
コード例 #6
0
 /// <summary>
 /// Executa o parse da expressão para um container.
 /// </summary>
 /// <param name="expression"></param>
 /// <param name="parameters"></param>
 /// <returns></returns>
 public static ConditionalContainer Parse(string expression, params QueryParameter[] parameters)
 {
     return(ConditionalParser.Parse(expression).Add(parameters));
 }