aboutsummaryrefslogtreecommitdiff
path: root/lib/old-IRC/Grammar.pm6
diff options
context:
space:
mode:
authorZoffix Znet <cpan@zoffix.com>2016-05-19 19:49:39 -0400
committerZoffix Znet <cpan@zoffix.com>2016-05-19 19:49:39 -0400
commit3f65d48264430428a2165f6a9f5a4e16f823f6b8 (patch)
tree6da1f46181c3070b3eeb4ede56c3cba3623d0258 /lib/old-IRC/Grammar.pm6
parente997c1b0b5ad796425abfc9f81b91947357172ce (diff)
Start new design docs
Diffstat (limited to 'lib/old-IRC/Grammar.pm6')
-rw-r--r--lib/old-IRC/Grammar.pm620
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/old-IRC/Grammar.pm6 b/lib/old-IRC/Grammar.pm6
new file mode 100644
index 0000000..c05322c
--- /dev/null
+++ b/lib/old-IRC/Grammar.pm6
@@ -0,0 +1,20 @@
+unit grammar IRC::Grammar;
+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 { <-[\ \x0\r\n]>+? <before [<SPACE> | '@']>}
+ token host { <-[\s!@]>+ }
+ token command { <letter>+ | <number>**3 }
+ token params { <SPACE>* [ ':' <trailing> | <middle> <params> ]? }
+ token middle { <-[:\ \x0\r\n]> <-[\ \x0\r\n]>* }
+ token trailing { <-[\x0\r\n]>* }
+
+ token letter { <[a..zA..Z]> }
+ token number { <[0..9]> }
+ token special { <[-_\[\]\\`^{}]> }