private IList<string> ParseBlockParameters()
{
IList<string> parameterNames = new List<string>();
Token token = this.NextToken();
while (token != null && (token.Type == TokenType.Parameter || (token.Type == TokenType.Operator && token.Value == ":")))
{
// TODO improve parameter lexer
if (token.Type == TokenType.Operator)
parameterNames.Add(this.ParseName());
else
parameterNames.Add(token.Value);
token = this.NextToken();
}
if (parameterNames.Count == 0)
this.PushToken(token);
else if (token == null || token.Type != TokenType.Punctuation || token.Value != "|")
throw new ParserException("Expected '|'");
return parameterNames;
}