internal void Append(RawToken token) { if (token != null) { ValueBuilder.Append(token.ValueBuilder); } }
/// <summary> /// Appends the specified token to this expression. /// </summary> /// <param name="token">The token.</param> /// <exception cref="System.InvalidOperationException"></exception> public void Append(RawToken token) { if (IsFrozen) { throw new InvalidOperationException(FrozenErrorMsg); } if (_rawToken == null) { _rawToken = token; } else { _rawToken.Append(token); } }
static RawToken NewTokenIfNecessary(List<RawToken> tokens, RawToken lastToken, RawTokenType curTokenType, int position) { if (lastToken == null || lastToken.TokenType != curTokenType || curTokenType == RawTokenType.Symbol) // for symbol always let it be by itself { lastToken = new RawToken(curTokenType, position); tokens.Add(lastToken); } return lastToken; }
ExpressionToken HandleNonOperatorSymbolToken(ListReader<RawToken> reader, ExpressionToken lastExpToken, RawToken curRawToken) { switch (curRawToken.Value) { case ",": lastExpToken = new ExpressionToken { TokenType = ExpressionTokenType.Comma }; _currentTokens.Add(lastExpToken); lastExpToken.Append(curRawToken); break; case "(": // if last one is string make it a function if (lastExpToken != null && lastExpToken.TokenType == ExpressionTokenType.Value) { lastExpToken.TokenType = ExpressionTokenType.Function; } lastExpToken = new ExpressionToken { TokenType = ExpressionTokenType.OpenParenthesis }; _currentTokens.Add(lastExpToken); lastExpToken.Append(curRawToken); break; case ")": lastExpToken = new ExpressionToken { TokenType = ExpressionTokenType.CloseParenthesis }; _currentTokens.Add(lastExpToken); lastExpToken.Append(curRawToken); break; case "{": // read until end of } lastExpToken = ReadToLiteralAs(reader, "}", ExpressionTokenType.Field); break; case "\"": // read until end of " lastExpToken = ReadToLiteralAs(reader, "\"", ExpressionTokenType.DoubleQuoted); break; case "'": // read until end of ' lastExpToken = ReadToLiteralAs(reader, "'", ExpressionTokenType.SingleQuoted); break; } return lastExpToken; }