# use Grammar::Debugger; unit grammar IRC::Grammar:ver<1.001001>; token TOP { } token SPACE { ' '+ } token message { [':' ]? \n } token prefix { [ || ['!' ]? ['@' ]? ] > } token servername { } token nick { [ | | ]* } token user { <-[\ \0\r\n]>+? | '@']>} token host { <-[\s!@]>+ } token command { + | **3 } token params { * [ ':' | ]? } token middle { <-[:\ \0\r\n]> <-[\ \0\r\n]>* } token trailing { <-[\0\r\n]>* } token letter { <[a..zA..Z]> } token number { <[0..9]> } token special { <[-\[\]\\`^{}]> } # unit class IRC::Grammar::Actions:ver<1.001001>; # method TOP ($/) { $/.make: $».made } # method message ($/) { $/.make: # prefix => $ .made, # command => $.made, # params => $ | ] [ '!' ]? [ '@' ]? } # method command ($/) { + | **3 } # method params ($/) { ' '+ [ ':' | ]? } # method middle ($/) { <-[: \0\r\n]> <-[ \0\r\n]>+ } # method trailing ($/) { <-[\0\r\n]> } # # method class ($/) { $/.make: ~$/ } # method rules ($/) { $/.make: ~$/ } # method pair ($/) { $/.make: $.made => $.made } # method TOP ($/) { $/.make: $».made }