aboutsummaryrefslogtreecommitdiff
path: root/lib/IRC/Client/Grammar.pm6
diff options
context:
space:
mode:
authorZoffix Znet <zoffixznet@users.noreply.github.com>2016-07-26 08:50:02 -0400
committerGitHub <noreply@github.com>2016-07-26 08:50:02 -0400
commite0478c07e2096d85e20764c08c83a3d16c002e94 (patch)
tree592510005886adaadb49848d289c5c712279ecee /lib/IRC/Client/Grammar.pm6
parente997c1b0b5ad796425abfc9f81b91947357172ce (diff)
parentcc19189ff6b74bea5211d521a59dbff0c71a0749 (diff)
Merge Rewrite 2.0 version into master
Old version should not be used anymore and 2.0 is ready to go, sans some bugs
Diffstat (limited to 'lib/IRC/Client/Grammar.pm6')
-rw-r--r--lib/IRC/Client/Grammar.pm621
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/IRC/Client/Grammar.pm6 b/lib/IRC/Client/Grammar.pm6
new file mode 100644
index 0000000..feec9fd
--- /dev/null
+++ b/lib/IRC/Client/Grammar.pm6
@@ -0,0 +1,21 @@
+unit grammar IRC::Client::Grammar;
+token TOP { <message>+ <left-overs> }
+token left-overs { \N* }
+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 { <-[\ \x[0]\r\n]>+? <before [<SPACE> | '@']>}
+ token host { <-[\s!@]>+ }
+ token command { <letter>+ | <number>**3 }
+ token params { <SPACE>* [ ':' <trailing> | <middle> <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 { <[-_\[\]\\`^{}]> }