`PRIMARY KEY (key1,key2,key3)` VS `PRIMARY KEY key1,key2,key3`

```
create database test;
use test;

create table dict_table ( key1 UInt64, key2 String, key3 String, S String)
Engine MergeTree order by (key1, key2, key3);

CREATE DICTIONARY item_dict ( key1 UInt64, key2 String, key3 String, S String ) 
PRIMARY KEY (key1,key2,key3) 
SOURCE(CLICKHOUSE(TABLE dict_table DB 'test' USER 'default')) 
LAYOUT(complex_key_direct());

Expected one of: list of elements, identifier

CREATE DICTIONARY item_dict ( key1 UInt64, key2 String, key3 String, S String ) 
PRIMARY KEY key1,key2,key3
SOURCE(CLICKHOUSE(TABLE dict_table DB 'test' USER 'default')) 
LAYOUT(complex_key_direct());
Ok.

0 rows in set. Elapsed: 0.007 sec.
```
if (!ast_settings && settings_keyword.ignore(pos, expected))
        {
            if (!open.ignore(pos))
                return false;
            if (!settings_p.parse(pos, ast_settings, expected))
                return false;
            if (!close.ignore(pos))
                return false;
            continue;
        }
        break;
    }
    auto query = std::make_shared<ASTDictionary>();
    node = query;
    if (primary_key)
        query->set(query->primary_key, primary_key);
    if (ast_source)
        query->set(query->source, ast_source);
    if (ast_lifetime)
        query->set(query->lifetime, ast_lifetime);
    if (ast_layout)
        query->set(query->layout, ast_layout);
    if (ast_range)
        query->set(query->range, ast_range);
    if (ast_settings)
        query->set(query->dict_settings, ast_settings);
    return true;
}
}