TUPLE: irc sender mask chan ; EBNF: parse-irc nobang = (!("!").)+ => [[ >string ]] word = (!(" ").)+ => [[ >string ]] any = (.)* => [[ >string ]] privmsg = ":" nobang:sender "!" word:mask " PRIVMSG " word:chan " :" any:msg => [[ sender mask chan irc boa ]] ;EBNF