aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorZoffix Znet <cpan@zoffix.com>2015-12-05 15:42:25 -0500
committerZoffix Znet <cpan@zoffix.com>2015-12-05 15:42:25 -0500
commit976aaa5e7caa5506ead757bb511207462526cb26 (patch)
tree73ec88aea8cfdab7ed830c950052fba3c90a2fc9 /lib
parentccbd5ff10ce1fa1a2025a540635bc1c939484098 (diff)
Wrote working grammar
Diffstat (limited to 'lib')
-rw-r--r--lib/IRC/Grammar.pm638
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 }