**Use case**

```
CREATE TABLE t
(
    x UInt8,
    y UInt8,
)
```
{
    ParserKeyword s_type("TYPE");
    ParserKeyword s_granularity("GRANULARITY");
    ParserIdentifier name_p;
    ParserDataType data_type_p;
    ParserExpression expression_p;
    ParserUnsignedInteger granularity_p;
    ASTPtr name;
    ASTPtr expr;
    ASTPtr type;
    ASTPtr granularity;
    if (!name_p.parse(pos, name, expected))
        return false;
    if (!expression_p.parse(pos, expr, expected))
        return false;
    if (!s_type.ignore(pos, expected))
        return false;
    if (!data_type_p.parse(pos, type, expected))
        return false;
    if (!s_granularity.ignore(pos, expected))
        return false;
    if (!granularity_p.parse(pos, granularity, expected))
        return false;
    auto index = std::make_shared<ASTIndexDeclaration>();
    index->name = name->as<ASTIdentifier &>().name();
    index->granularity = granularity->as<ASTLiteral &>().value.safeGet<UInt64>();
    index->set(index->expr, expr);
    index->set(index->type, type);
    node = index;