public OptimizerResult(IExpressionToken token) { this.ExpressionTokens = new List <IExpressionToken>() { token }; this.VariableTokens = new Dictionary <string, OptimizerResult>(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++; }
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; } }
/// <summary> /// Creates a new Token queue /// </summary> /// <param name="sourceExpression"></param> public ExpressionTokens(string sourceExpression) { SourceExpression = sourceExpression; _buffer = new IExpressionToken[_growSize]; }