unit grammar IRC::Client::Grammar; token TOP { + } token left-overs { \N* } token SPACE { ' '+ } token message { [':' ]? \n } token prefix { [ || ['!' ]? ['@' ]? ] > } token servername { } token nick { # the RFC grammar states nicks have to start with a letter, # however, modern server support and nick use disagrees with that # and nicks can start with special chars too [ | ] [ | | ]* } token user { <-[\ \x[0]\r\n]>+? | '@']>} token host { <-[\s!@]>+ } token command { + | **3 } token params { * [ ':' | ]? } token middle { <-[:\ \x[0]\r\n]> <-[\ \x[0]\r\n]>* } token trailing { <-[\x[0]\r\n]>* } token letter { <[a..zA..Z]> } token number { <[0..9]> } token special { <[-_\[\]\\`^{}]> }