private IList<IndexOption> IndexOptions()
{
IList<IndexOption> list = null;
for (;;)
{
switch (lexer.Token())
{
case MySqlToken.KwUsing:
{
lexer.NextToken();
var indexType = MatchIdentifier("BTREE", "HASH") == 0 ? IndexType.Btree : IndexType.Hash;
if (list == null)
{
list = new List<IndexOption>(1);
}
list.Add(new IndexOption(indexType));
goto main_switch_break;
}
case MySqlToken.KwWith:
{
lexer.NextToken();
MatchIdentifier("PARSER");
var id = Identifier();
if (list == null)
{
list = new List<IndexOption>(1);
}
list.Add(new IndexOption(id));
goto main_switch_break;
}
case MySqlToken.Identifier:
{
var si = specialIdentifiers.GetValue(lexer.GetStringValueUppercase());
if (si != SpecialIdentifier.None)
{
switch (si)
{
case SpecialIdentifier.KeyBlockSize:
{
lexer.NextToken();
if (lexer.Token() == MySqlToken.OpEquals)
{
lexer.NextToken();
}
var val = exprParser.Expression();
if (list == null)
{
list = new List<IndexOption>(1);
}
list.Add(new IndexOption(val));
goto main_switch_break;
}
case SpecialIdentifier.Comment:
{
lexer.NextToken();
var @string = (LiteralString)exprParser.Expression();
if (list == null)
{
list = new List<IndexOption>(1);
}
list.Add(new IndexOption(@string));
goto main_switch_break;
}
}
}
goto default;
}
default:
{
return list;
}
}
main_switch_break:
;
}
}