**Describe the issue**
```
SELECT x[1]::UInt64

Syntax error: failed at position 12 ('::')
```

{
private:
    ParserLambdaExpression elem_parser;
protected:
    const char * getName() const override { return "table function expression"; }
    bool parseImpl(Pos & pos, ASTPtr & node, Expected & expected) override;
};
using ParserExpression = ParserLambdaExpression;
class ParserExpressionWithOptionalAlias : public IParserBase
{
public:
    explicit ParserExpressionWithOptionalAlias(bool allow_alias_without_as_keyword, bool is_table_function = false);
protected:
    ParserPtr impl;
    const char * getName() const override { return "expression with optional alias"; }
    bool parseImpl(Pos & pos, ASTPtr & node, Expected & expected) override
    {
        return impl->parse(pos, node, expected);
    }
};
class ParserExpressionList : public IParserBase