%{
extern int m_text(), m_private(), m_who(), m_whois(), m_user(), m_list();
extern int m_topic(), m_invite(), m_channel(), m_version(), m_quit();
extern int m_server(), m_kill(), m_info(), m_links(), m_summon(), m_stats();
extern int m_users(), m_nick(), m_error(), m_help(), m_whoreply();
extern int m_squit(), m_restart(), m_away(), m_die(), m_connect();
extern int m_ping(), m_pong(), m_oper(), m_pass(), m_wall(), m_trace();
extern int m_time(), m_rehash(), m_names(), m_namreply(), m_admin();
extern int m_linreply(), m_notice(), m_lusers(), m_voice(), m_grph();
extern int m_xtra(), m_motd();
%}
struct Message {
  const char *cmd;
  int (* func)();
  int count;
  int parameters;
};
%%
NICK,    m_nick,     0, 1
MSG,     m_text,     0, 1
PRIVMSG, m_private,  0, 2
WHO,     m_who,      0, 1
WHOIS,   m_whois,    0, 4
USER,    m_user,     0, 4
SERVER,  m_server,   0, 2
LIST,    m_list,     0, 1
TOPIC,   m_topic,    0, 1
INVITE,  m_invite,   0, 2
CHANNEL, m_channel,  0, 1
VERSION, m_version,  0, 1
QUIT,    m_quit,     0, 2
SQUIT,   m_squit,    0, 2
KILL,    m_kill,     0, 2
INFO,    m_info,     0, 1
LINKS,   m_links,    0, 1
SUMMON,  m_summon,   0, 1
STATS,   m_stats,    0, 1
USERS,   m_users,    0, 1
RESTART, m_restart,  0, 1
WHOREPLY,m_whoreply, 0, 7
HELP,    m_help,     0, 2
ERROR,   m_error,    0, 1
AWAY,    m_away,     0, 1
DIE,     m_die,      0, 1
CONNECT, m_connect,  0, 3
PING,    m_ping,     0, 2
PONG,    m_pong,     0, 3
OPER,    m_oper,     0, 3
PASS,    m_pass,     0, 2
WALL,    m_wall,     0, 1
TIME,    m_time,     0, 1
REHASH,  m_rehash,   0, 1
NAMES,   m_names,    0, 1
NAMREPLY,m_namreply, 0, 3
ADMIN,   m_admin,    0, 1
TRACE,   m_trace,    0, 1
LINREPLY,m_linreply, 0, 2
NOTICE,  m_notice,   0, 2
LUSERS,  m_lusers,   0, 1
VOICE,   m_voice,    0, 2
GRPH,    m_grph,     0, 2
XTRA,    m_xtra,     0, 2
MOTD,    m_motd,     0, 2
