gameServer2/src/protocol/hwprotocol.lalrpop
changeset 12136 a4d22f197bd2
parent 12135 6273f89ab13d
--- a/gameServer2/src/protocol/hwprotocol.lalrpop	Thu Jan 05 19:07:01 2017 +0300
+++ b/gameServer2/src/protocol/hwprotocol.lalrpop	Fri Jan 06 01:00:21 2017 +0300
@@ -1,17 +1,40 @@
-use std::str;
+use std::string;
+use std::str::FromStr;
 
 use super::messages::HWProtocolMessage::*;
-use super::messages::HWProtocolMessage;
+use super::messages::*;
 
 grammar;
 
-pub ProtocolMessage: HWProtocolMessage<'input> = {
-    "NICK" <s:Str> => Nick(s),
+pub ProtocolMessage: HWProtocolMessage = {
+    <SpecificMessage> "\n\n",
+};
+
+SpecificMessage: HWProtocolMessage = {
+    "NICK" "\n" <ProtocolString> => Nick(<>),
+    "PONG" => Pong,
+    "PING" => Ping,
+    "PROTO" "\n" <Num32> => Proto(<>),
 };
 
-Str: &'input str = {
-    <s:r"[^\n]\n"> => s,
+Num32: u32 =
+    <Digit*> => number(<>);
+
+ProtocolString: String =
+    <ProtocolChar*> => <>.join("");
+
+ProtocolChar: &'input str =
+    r"[^\n]" => <>;
+
+Digit: u8 = {
+    "0" => 0,
+    "1" => 1,
+    "2" => 2,
+    "3" => 3,
+    "4" => 4,
+    "5" => 5,
+    "6" => 6,
+    "7" => 7,
+    "8" => 8,
+    "9" => 9,
 };
-
-
-//Num32: i32 = <s:r"[0-9]+"> => i32::from_str(s).unwrap();