diff options
Diffstat (limited to 'lib/IRC/Grammar.pm6')
-rw-r--r-- | lib/IRC/Grammar.pm6 | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/lib/IRC/Grammar.pm6 b/lib/IRC/Grammar.pm6 index 2013b9b..46d71cc 100644 --- a/lib/IRC/Grammar.pm6 +++ b/lib/IRC/Grammar.pm6 @@ -1,24 +1,24 @@ # use Grammar::Debugger; unit grammar IRC::Grammar:ver<1.001001>; -token ws { ' ' } -token TOP { [ <message> \r\n ]* } -token message { [':' <prefix> ' '+ ]? <command> <params> } -token prefix { [<servername> | <nick>] [ '!' <user> ]? [ '@' <host> ]? } -token command { <letter>+ | <number>**3 } -token params { ' '+ [ ':' <trailing> | <middle> <params> ]? } -token middle { <-[: \0\r\n]> <-[ \0\r\n]>+ } -token trailing { <-[\0\r\n]>+ } -token target { <to> [ ',' <target> ]? } -token to { <channel> | <user> '@' <servername> | <nick> | <mask> } -token channel { ['#' | '&'] <chstring> } -token servername { \S+ } # see RFC 952 [DNS:4] for details on allowed hostnames -token nick { <letter> [ <letter> | <number> | <special> ]+ } -token mask { <[#$]> <chstring> } -token chstring { <-[ \a\0\r\l,]> } -token user { <-[ \0\r\l]>+ } -token letter { <[a..zA..Z]> } -token number { <[0..9]> } -token special { <[-\[\]\\`^{}]> } +token TOP { <message> } +token SPACE { ' '+ } +token message { [':' <prefix> <SPACE> ]? <command> <params> \n } + token prefix { + [ <servername> || <nick> ['!' <user>]? ['@' <host>]? ] + <before <SPACE>> + } + token servername { <host> } + token nick { <letter> [ <letter> | <number> | <special> ]* } + token user { <-[\ \0\r\n]>+? <before [<SPACE> | '@']>} + token host { <-[\s!@]>+ } + token command { <letter>+ | <number>**3 } + token params { <SPACE>* [ ':' <trailing> | <middle> <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: $<message>ยป.made } |