示例#1
0
 public OptimizerResult(IExpressionToken token)
 {
     this.ExpressionTokens = new List <IExpressionToken>()
     {
         token
     };
     this.VariableTokens = new Dictionary <string, OptimizerResult>(0);
 }
示例#2
0
        internal void Enqueue(IExpressionToken token)
        {
            if (_buffer.Length < _size + 1)
            {
                var nArray = new IExpressionToken[_size + _growSize];
                Array.Copy(_buffer, nArray, _buffer.Length);
                _buffer = nArray;
            }

            _buffer[_size] = token;
            _size++;
        }
示例#3
0
        internal void PeekLoop(
            Func <IExpressionToken, bool> condition,
            Action <IExpressionToken> action)
        {
            IExpressionToken peek;
            IExpressionToken oldPeek = default;

            while (Count > 0 &&
                   condition(peek = Peek()))
            {
                if (Equals(oldPeek, peek))
                {
                    throw new Exception();
                }
                action(peek);
                oldPeek = peek;
            }
        }
示例#4
0
 /// <summary>
 ///		Creates a new Token queue
 /// </summary>
 /// <param name="sourceExpression"></param>
 public ExpressionTokens(string sourceExpression)
 {
     SourceExpression = sourceExpression;
     _buffer          = new IExpressionToken[_growSize];
 }