Exemplo n.º 1
0
        private IArmString ParseInnerExpression(ref ArmExpressionTokenizer tokenizer, bool noLiteral = false)
        {
            ArmExpressionToken token = tokenizer.NextToken();

            switch (token.Type)
            {
            case ArmExpressionTokenType.String:
                if (noLiteral)
                {
                    throw Error($"Expected a literal token but found a string in '{tokenizer.Input}' at index {tokenizer.PreviousIndex}");
                }
                return(new ArmStringLiteral(token.CoerceToString()));

            case ArmExpressionTokenType.Identifier:
                return(ParseIdentifierExpression(ref tokenizer, (ArmExpressionIdentifierToken)token));

            default:
                throw Error($"Expected an expression token but found '{token}' in '{tokenizer.Input}' at index {tokenizer.PreviousIndex}");
            }
        }