IoMessage newParseNextMessageChain(IoState state, IoLexer lexer)
{
IoMessage msg = clone(state) as IoMessage;
if (lexer.top() != null && lexer.top().isValidMessageName())
{
msg.parseName(state, lexer);
}
if (lexer.topType() == IoTokenType.OPENPAREN_TOKEN)
{
msg.parseArgs(lexer);
}
if (lexer.top() != null && lexer.top().isValidMessageName())
{
msg.parseNext(lexer);
}
while (lexer.topType() == IoTokenType.TERMINATOR_TOKEN)
{
lexer.pop();
if (lexer.top() != null && lexer.top().isValidMessageName())
{
IoMessage eol = IoMessage.newWithName(state, state.semicolonSymbol);
msg.next = eol;
eol.parseNext(lexer);
}
}
return(msg);
}