From 3aa386c5c318f29e020bf72d129fed0cda1c7db8 Mon Sep 17 00:00:00 2001 From: ChenXL97 <908926798@qq.com> Date: Wed, 8 Nov 2023 10:26:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E4=B8=8Echatglm3?= =?UTF-8?q?=E7=9A=84=E9=80=9A=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../behavior_library.cpython-310.pyc | Bin 4754 -> 0 bytes robowaiter/behavior_tree/ptml/test/test.dot | 15 + robowaiter/behavior_tree/ptml/test/test.png | Bin 0 -> 15484 bytes robowaiter/behavior_tree/ptml/test/test.svg | 67 +++ robowaiter/behavior_tree/test/ptml.interp | 51 ++ robowaiter/behavior_tree/test/ptml.tokens | 29 + .../behavior_tree/test/ptmlLexer.interp | 68 +++ robowaiter/behavior_tree/test/ptmlLexer.py | 119 ++++ .../behavior_tree/test/ptmlLexer.tokens | 29 + robowaiter/behavior_tree/test/ptmlListener.py | 66 +++ robowaiter/behavior_tree/test/ptmlParser.py | 514 ++++++++++++++++++ robowaiter/llm_client/ask_llm.py | 18 +- 12 files changed, 972 insertions(+), 4 deletions(-) delete mode 100644 behavior_tree/__pycache__/behavior_library.cpython-310.pyc create mode 100644 robowaiter/behavior_tree/ptml/test/test.dot create mode 100644 robowaiter/behavior_tree/ptml/test/test.png create mode 100644 robowaiter/behavior_tree/ptml/test/test.svg create mode 100644 robowaiter/behavior_tree/test/ptml.interp create mode 100644 robowaiter/behavior_tree/test/ptml.tokens create mode 100644 robowaiter/behavior_tree/test/ptmlLexer.interp create mode 100644 robowaiter/behavior_tree/test/ptmlLexer.py create mode 100644 robowaiter/behavior_tree/test/ptmlLexer.tokens create mode 100644 robowaiter/behavior_tree/test/ptmlListener.py create mode 100644 robowaiter/behavior_tree/test/ptmlParser.py diff --git a/behavior_tree/__pycache__/behavior_library.cpython-310.pyc b/behavior_tree/__pycache__/behavior_library.cpython-310.pyc deleted file mode 100644 index 66410e4b7975f7c90fe775daf90618639beac1ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4754 zcmcJT-*4Mg6vusICvnoGKhm!I$(HfE0}2vszyydg5EQX$qD7NJgyrVCt-Ji%wZm4k zr>)YY2~FY^fwW3ItPec!G8GX2hu>x;$5Bm5D;@4N5m#q~r10z5Bmif3)`f=Effn?)1=G<3wZXBqOu|x1 zjOs)6u+)XbO=W@V#MRYYN#mN8k$jAJ6FoyR5YbDK&u<^v(wJGCDV27`l7GZ&6-t7$V>u(?`r$p8m2FuhE{;U}F|(-OXJ7rVMIQ`lE$?OOTE#(d+VX}gvv&s$68w{}Aq zuCT1_QPrLordXM5u817PM5wnTlV!sz180YmJ_ z0G(R}5?J*znsS~756w@Jx-^Ln`PdCNZf7X zCk8(UGnCV%e!PJlPY^TejCYJM7H+Y!WK}K^IK_y|$;mm|@MKfibyu7q+n@wt9sE?Q z$xYWnIkr$_ooUP)iFgR+{cPR3VmLv&pc0*jO0>vrNGA3LHZom1ZJLkBN0iOrS=}2 zcIHg%(Nx8?8+F-`PwjA_laa(r069T-@g3y?4$ndlmc4^<_hEkp9Uw~ z;vmE!h$9eP@Pd*Tpg&3iTN7Q(FA_?zsm;YU~hd4=w zXo=#EmWZWFZ6RdYp3o8!h*yvWmWl?AnFjqJ!0yv`?j@MZwaVq3!mw+tAntYO5z0H% z6(vMnyozgHgOE)tg>)r(JWUf=vv>;vqn->7O*^xVn&mDLhUXi?>JNl6zJ!pL67#<= z6uyn+N(yOz;^F#(;aLPIlJJgn2iOaTCwFidPqrtB?;{Th;&^u+{UmV;VI+yvb@3E; zi{cq_@h03z6fo+EqTYGd=?{aSBf4a8q~myB;5&~v628GOPJgJo0MA7d-e~A~FSs2I zaI>yjl@^{Mi=mgEpv@w*1Z^lZ>L+0r;a?I~2>tICEp+=d>?K+l^+YQdy=nIcuQD=_ zcpZp3-xtIT#FB^=VzK&z**v@#Nq7fi-uHsqiEh+lo_gYDAq9!sXw0ym$k~V?ksFW2 z*e!PNkp0*2A+f`#Cw9X@ApEZO^AWF(EF^k|y94YCewPtX;@7U+_JaEKnCBuwk%V`2 z$BOoX;d4*MFp_Ui6t5r^iDJ7OBF6p1@jJwkI3C%t sequence_BNun8ZFM; +Chatting [fillcolor=gray, fontcolor=black, fontsize=9, label=Chatting, shape=ellipse, style=filled]; +sequence_BNun8ZFM -> Chatting; +DealChat [fillcolor=gray, fontcolor=black, fontsize=9, label=DealChat, shape=ellipse, style=filled]; +sequence_BNun8ZFM -> DealChat; +"At(Coffee,Table)" [fillcolor=gray, fontcolor=black, fontsize=9, label="At(Coffee,Table)", shape=ellipse, style=filled]; +selector_4aUN4FAA -> "At(Coffee,Table)"; +} diff --git a/robowaiter/behavior_tree/ptml/test/test.png b/robowaiter/behavior_tree/ptml/test/test.png new file mode 100644 index 0000000000000000000000000000000000000000..64b20fe0cf2a12eebb5619b1d2c45124a9fc9d00 GIT binary patch literal 15484 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 sf|T?B`*7~3gK1ar* + + + + + +pastafarianism + + + +selector_4aUN4FAA + +selector_4aUN4FAA + + + +sequence_BNun8ZFM + +sequence_BNun8ZFM + + + +selector_4aUN4FAA->sequence_BNun8ZFM + + + + + +At(Coffee,Table) + +At(Coffee,Table) + + + +selector_4aUN4FAA->At(Coffee,Table) + + + + + +Chatting + +Chatting + + + +sequence_BNun8ZFM->Chatting + + + + + +DealChat + +DealChat + + + +sequence_BNun8ZFM->DealChat + + + + + diff --git a/robowaiter/behavior_tree/test/ptml.interp b/robowaiter/behavior_tree/test/ptml.interp new file mode 100644 index 0000000..a96ef7d --- /dev/null +++ b/robowaiter/behavior_tree/test/ptml.interp @@ -0,0 +1,51 @@ +token literal names: +null +'{' +'}' +'sequence' +'selector' +'parallel' +'task' +'cond' +'(' +')' +',' +'True' +'False' +null +null +null +null +null + +token symbolic names: +null +null +null +null +null +null +null +null +null +null +null +null +null +Names +Integer +Float +LINE_COMMENT +WS + +rule names: +root +tree +internal_node +action_sign +action_parm +boolean + + +atn: +[4, 1, 17, 62, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 1, 0, 4, 0, 14, 8, 0, 11, 0, 12, 0, 15, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 24, 8, 1, 11, 1, 12, 1, 25, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 34, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 40, 8, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 3, 4, 47, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 53, 8, 4, 5, 4, 55, 8, 4, 10, 4, 12, 4, 58, 9, 4, 1, 5, 1, 5, 1, 5, 0, 0, 6, 0, 2, 4, 6, 8, 10, 0, 2, 1, 0, 6, 7, 1, 0, 11, 12, 66, 0, 13, 1, 0, 0, 0, 2, 19, 1, 0, 0, 0, 4, 33, 1, 0, 0, 0, 6, 35, 1, 0, 0, 0, 8, 46, 1, 0, 0, 0, 10, 59, 1, 0, 0, 0, 12, 14, 3, 2, 1, 0, 13, 12, 1, 0, 0, 0, 14, 15, 1, 0, 0, 0, 15, 13, 1, 0, 0, 0, 15, 16, 1, 0, 0, 0, 16, 17, 1, 0, 0, 0, 17, 18, 5, 0, 0, 1, 18, 1, 1, 0, 0, 0, 19, 20, 3, 4, 2, 0, 20, 23, 5, 1, 0, 0, 21, 24, 3, 6, 3, 0, 22, 24, 3, 2, 1, 0, 23, 21, 1, 0, 0, 0, 23, 22, 1, 0, 0, 0, 24, 25, 1, 0, 0, 0, 25, 23, 1, 0, 0, 0, 25, 26, 1, 0, 0, 0, 26, 27, 1, 0, 0, 0, 27, 28, 5, 2, 0, 0, 28, 3, 1, 0, 0, 0, 29, 34, 5, 3, 0, 0, 30, 34, 5, 4, 0, 0, 31, 32, 5, 5, 0, 0, 32, 34, 5, 14, 0, 0, 33, 29, 1, 0, 0, 0, 33, 30, 1, 0, 0, 0, 33, 31, 1, 0, 0, 0, 34, 5, 1, 0, 0, 0, 35, 36, 7, 0, 0, 0, 36, 37, 5, 13, 0, 0, 37, 39, 5, 8, 0, 0, 38, 40, 3, 8, 4, 0, 39, 38, 1, 0, 0, 0, 39, 40, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 42, 5, 9, 0, 0, 42, 7, 1, 0, 0, 0, 43, 47, 5, 14, 0, 0, 44, 47, 5, 15, 0, 0, 45, 47, 3, 10, 5, 0, 46, 43, 1, 0, 0, 0, 46, 44, 1, 0, 0, 0, 46, 45, 1, 0, 0, 0, 47, 56, 1, 0, 0, 0, 48, 52, 5, 10, 0, 0, 49, 53, 5, 14, 0, 0, 50, 53, 5, 15, 0, 0, 51, 53, 3, 10, 5, 0, 52, 49, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 51, 1, 0, 0, 0, 53, 55, 1, 0, 0, 0, 54, 48, 1, 0, 0, 0, 55, 58, 1, 0, 0, 0, 56, 54, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 9, 1, 0, 0, 0, 58, 56, 1, 0, 0, 0, 59, 60, 7, 1, 0, 0, 60, 11, 1, 0, 0, 0, 8, 15, 23, 25, 33, 39, 46, 52, 56] \ No newline at end of file diff --git a/robowaiter/behavior_tree/test/ptml.tokens b/robowaiter/behavior_tree/test/ptml.tokens new file mode 100644 index 0000000..1f7a813 --- /dev/null +++ b/robowaiter/behavior_tree/test/ptml.tokens @@ -0,0 +1,29 @@ +T__0=1 +T__1=2 +T__2=3 +T__3=4 +T__4=5 +T__5=6 +T__6=7 +T__7=8 +T__8=9 +T__9=10 +T__10=11 +T__11=12 +Names=13 +Integer=14 +Float=15 +LINE_COMMENT=16 +WS=17 +'{'=1 +'}'=2 +'sequence'=3 +'selector'=4 +'parallel'=5 +'task'=6 +'cond'=7 +'('=8 +')'=9 +','=10 +'True'=11 +'False'=12 diff --git a/robowaiter/behavior_tree/test/ptmlLexer.interp b/robowaiter/behavior_tree/test/ptmlLexer.interp new file mode 100644 index 0000000..823b753 --- /dev/null +++ b/robowaiter/behavior_tree/test/ptmlLexer.interp @@ -0,0 +1,68 @@ +token literal names: +null +'{' +'}' +'sequence' +'selector' +'parallel' +'task' +'cond' +'(' +')' +',' +'True' +'False' +null +null +null +null +null + +token symbolic names: +null +null +null +null +null +null +null +null +null +null +null +null +null +Names +Integer +Float +LINE_COMMENT +WS + +rule names: +T__0 +T__1 +T__2 +T__3 +T__4 +T__5 +T__6 +T__7 +T__8 +T__9 +T__10 +T__11 +Names +Integer +Float +LINE_COMMENT +WS + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 17, 156, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 5, 12, 96, 8, 12, 10, 12, 12, 12, 99, 9, 12, 1, 13, 3, 13, 102, 8, 13, 1, 13, 1, 13, 5, 13, 106, 8, 13, 10, 13, 12, 13, 109, 9, 13, 1, 13, 3, 13, 112, 8, 13, 1, 14, 4, 14, 115, 8, 14, 11, 14, 12, 14, 116, 1, 14, 1, 14, 5, 14, 121, 8, 14, 10, 14, 12, 14, 124, 9, 14, 1, 14, 1, 14, 4, 14, 128, 8, 14, 11, 14, 12, 14, 129, 3, 14, 132, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 138, 8, 15, 10, 15, 12, 15, 141, 9, 15, 1, 15, 3, 15, 144, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 4, 16, 151, 8, 16, 11, 16, 12, 16, 152, 1, 16, 1, 16, 1, 139, 0, 17, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 1, 0, 5, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 49, 57, 1, 0, 48, 57, 3, 0, 9, 10, 12, 13, 32, 32, 166, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 1, 35, 1, 0, 0, 0, 3, 37, 1, 0, 0, 0, 5, 39, 1, 0, 0, 0, 7, 48, 1, 0, 0, 0, 9, 57, 1, 0, 0, 0, 11, 66, 1, 0, 0, 0, 13, 71, 1, 0, 0, 0, 15, 76, 1, 0, 0, 0, 17, 78, 1, 0, 0, 0, 19, 80, 1, 0, 0, 0, 21, 82, 1, 0, 0, 0, 23, 87, 1, 0, 0, 0, 25, 93, 1, 0, 0, 0, 27, 111, 1, 0, 0, 0, 29, 131, 1, 0, 0, 0, 31, 133, 1, 0, 0, 0, 33, 150, 1, 0, 0, 0, 35, 36, 5, 123, 0, 0, 36, 2, 1, 0, 0, 0, 37, 38, 5, 125, 0, 0, 38, 4, 1, 0, 0, 0, 39, 40, 5, 115, 0, 0, 40, 41, 5, 101, 0, 0, 41, 42, 5, 113, 0, 0, 42, 43, 5, 117, 0, 0, 43, 44, 5, 101, 0, 0, 44, 45, 5, 110, 0, 0, 45, 46, 5, 99, 0, 0, 46, 47, 5, 101, 0, 0, 47, 6, 1, 0, 0, 0, 48, 49, 5, 115, 0, 0, 49, 50, 5, 101, 0, 0, 50, 51, 5, 108, 0, 0, 51, 52, 5, 101, 0, 0, 52, 53, 5, 99, 0, 0, 53, 54, 5, 116, 0, 0, 54, 55, 5, 111, 0, 0, 55, 56, 5, 114, 0, 0, 56, 8, 1, 0, 0, 0, 57, 58, 5, 112, 0, 0, 58, 59, 5, 97, 0, 0, 59, 60, 5, 114, 0, 0, 60, 61, 5, 97, 0, 0, 61, 62, 5, 108, 0, 0, 62, 63, 5, 108, 0, 0, 63, 64, 5, 101, 0, 0, 64, 65, 5, 108, 0, 0, 65, 10, 1, 0, 0, 0, 66, 67, 5, 116, 0, 0, 67, 68, 5, 97, 0, 0, 68, 69, 5, 115, 0, 0, 69, 70, 5, 107, 0, 0, 70, 12, 1, 0, 0, 0, 71, 72, 5, 99, 0, 0, 72, 73, 5, 111, 0, 0, 73, 74, 5, 110, 0, 0, 74, 75, 5, 100, 0, 0, 75, 14, 1, 0, 0, 0, 76, 77, 5, 40, 0, 0, 77, 16, 1, 0, 0, 0, 78, 79, 5, 41, 0, 0, 79, 18, 1, 0, 0, 0, 80, 81, 5, 44, 0, 0, 81, 20, 1, 0, 0, 0, 82, 83, 5, 84, 0, 0, 83, 84, 5, 114, 0, 0, 84, 85, 5, 117, 0, 0, 85, 86, 5, 101, 0, 0, 86, 22, 1, 0, 0, 0, 87, 88, 5, 70, 0, 0, 88, 89, 5, 97, 0, 0, 89, 90, 5, 108, 0, 0, 90, 91, 5, 115, 0, 0, 91, 92, 5, 101, 0, 0, 92, 24, 1, 0, 0, 0, 93, 97, 7, 0, 0, 0, 94, 96, 7, 1, 0, 0, 95, 94, 1, 0, 0, 0, 96, 99, 1, 0, 0, 0, 97, 95, 1, 0, 0, 0, 97, 98, 1, 0, 0, 0, 98, 26, 1, 0, 0, 0, 99, 97, 1, 0, 0, 0, 100, 102, 5, 45, 0, 0, 101, 100, 1, 0, 0, 0, 101, 102, 1, 0, 0, 0, 102, 103, 1, 0, 0, 0, 103, 107, 7, 2, 0, 0, 104, 106, 7, 3, 0, 0, 105, 104, 1, 0, 0, 0, 106, 109, 1, 0, 0, 0, 107, 105, 1, 0, 0, 0, 107, 108, 1, 0, 0, 0, 108, 112, 1, 0, 0, 0, 109, 107, 1, 0, 0, 0, 110, 112, 5, 48, 0, 0, 111, 101, 1, 0, 0, 0, 111, 110, 1, 0, 0, 0, 112, 28, 1, 0, 0, 0, 113, 115, 7, 3, 0, 0, 114, 113, 1, 0, 0, 0, 115, 116, 1, 0, 0, 0, 116, 114, 1, 0, 0, 0, 116, 117, 1, 0, 0, 0, 117, 118, 1, 0, 0, 0, 118, 122, 5, 46, 0, 0, 119, 121, 7, 3, 0, 0, 120, 119, 1, 0, 0, 0, 121, 124, 1, 0, 0, 0, 122, 120, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 132, 1, 0, 0, 0, 124, 122, 1, 0, 0, 0, 125, 127, 5, 46, 0, 0, 126, 128, 7, 3, 0, 0, 127, 126, 1, 0, 0, 0, 128, 129, 1, 0, 0, 0, 129, 127, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 132, 1, 0, 0, 0, 131, 114, 1, 0, 0, 0, 131, 125, 1, 0, 0, 0, 132, 30, 1, 0, 0, 0, 133, 134, 5, 47, 0, 0, 134, 135, 5, 47, 0, 0, 135, 139, 1, 0, 0, 0, 136, 138, 9, 0, 0, 0, 137, 136, 1, 0, 0, 0, 138, 141, 1, 0, 0, 0, 139, 140, 1, 0, 0, 0, 139, 137, 1, 0, 0, 0, 140, 143, 1, 0, 0, 0, 141, 139, 1, 0, 0, 0, 142, 144, 5, 13, 0, 0, 143, 142, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 146, 5, 10, 0, 0, 146, 147, 1, 0, 0, 0, 147, 148, 6, 15, 0, 0, 148, 32, 1, 0, 0, 0, 149, 151, 7, 4, 0, 0, 150, 149, 1, 0, 0, 0, 151, 152, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0, 0, 153, 154, 1, 0, 0, 0, 154, 155, 6, 16, 0, 0, 155, 34, 1, 0, 0, 0, 12, 0, 97, 101, 107, 111, 116, 122, 129, 131, 139, 143, 152, 1, 6, 0, 0] \ No newline at end of file diff --git a/robowaiter/behavior_tree/test/ptmlLexer.py b/robowaiter/behavior_tree/test/ptmlLexer.py new file mode 100644 index 0000000..3f6d98b --- /dev/null +++ b/robowaiter/behavior_tree/test/ptmlLexer.py @@ -0,0 +1,119 @@ +# Generated from ptml.g4 by ANTLR 4.13.1 +from antlr4 import * +from io import StringIO +import sys +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO + + +def serializedATN(): + return [ + 4,0,17,156,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5, + 2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2, + 13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,1,0,1,0,1,1,1,1,1,2,1,2,1, + 2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1, + 4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1, + 6,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,11, + 1,11,1,11,1,11,1,11,1,11,1,12,1,12,5,12,96,8,12,10,12,12,12,99,9, + 12,1,13,3,13,102,8,13,1,13,1,13,5,13,106,8,13,10,13,12,13,109,9, + 13,1,13,3,13,112,8,13,1,14,4,14,115,8,14,11,14,12,14,116,1,14,1, + 14,5,14,121,8,14,10,14,12,14,124,9,14,1,14,1,14,4,14,128,8,14,11, + 14,12,14,129,3,14,132,8,14,1,15,1,15,1,15,1,15,5,15,138,8,15,10, + 15,12,15,141,9,15,1,15,3,15,144,8,15,1,15,1,15,1,15,1,15,1,16,4, + 16,151,8,16,11,16,12,16,152,1,16,1,16,1,139,0,17,1,1,3,2,5,3,7,4, + 9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16, + 33,17,1,0,5,3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95,97,122, + 1,0,49,57,1,0,48,57,3,0,9,10,12,13,32,32,166,0,1,1,0,0,0,0,3,1,0, + 0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0, + 0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0, + 0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0, + 0,1,35,1,0,0,0,3,37,1,0,0,0,5,39,1,0,0,0,7,48,1,0,0,0,9,57,1,0,0, + 0,11,66,1,0,0,0,13,71,1,0,0,0,15,76,1,0,0,0,17,78,1,0,0,0,19,80, + 1,0,0,0,21,82,1,0,0,0,23,87,1,0,0,0,25,93,1,0,0,0,27,111,1,0,0,0, + 29,131,1,0,0,0,31,133,1,0,0,0,33,150,1,0,0,0,35,36,5,123,0,0,36, + 2,1,0,0,0,37,38,5,125,0,0,38,4,1,0,0,0,39,40,5,115,0,0,40,41,5,101, + 0,0,41,42,5,113,0,0,42,43,5,117,0,0,43,44,5,101,0,0,44,45,5,110, + 0,0,45,46,5,99,0,0,46,47,5,101,0,0,47,6,1,0,0,0,48,49,5,115,0,0, + 49,50,5,101,0,0,50,51,5,108,0,0,51,52,5,101,0,0,52,53,5,99,0,0,53, + 54,5,116,0,0,54,55,5,111,0,0,55,56,5,114,0,0,56,8,1,0,0,0,57,58, + 5,112,0,0,58,59,5,97,0,0,59,60,5,114,0,0,60,61,5,97,0,0,61,62,5, + 108,0,0,62,63,5,108,0,0,63,64,5,101,0,0,64,65,5,108,0,0,65,10,1, + 0,0,0,66,67,5,116,0,0,67,68,5,97,0,0,68,69,5,115,0,0,69,70,5,107, + 0,0,70,12,1,0,0,0,71,72,5,99,0,0,72,73,5,111,0,0,73,74,5,110,0,0, + 74,75,5,100,0,0,75,14,1,0,0,0,76,77,5,40,0,0,77,16,1,0,0,0,78,79, + 5,41,0,0,79,18,1,0,0,0,80,81,5,44,0,0,81,20,1,0,0,0,82,83,5,84,0, + 0,83,84,5,114,0,0,84,85,5,117,0,0,85,86,5,101,0,0,86,22,1,0,0,0, + 87,88,5,70,0,0,88,89,5,97,0,0,89,90,5,108,0,0,90,91,5,115,0,0,91, + 92,5,101,0,0,92,24,1,0,0,0,93,97,7,0,0,0,94,96,7,1,0,0,95,94,1,0, + 0,0,96,99,1,0,0,0,97,95,1,0,0,0,97,98,1,0,0,0,98,26,1,0,0,0,99,97, + 1,0,0,0,100,102,5,45,0,0,101,100,1,0,0,0,101,102,1,0,0,0,102,103, + 1,0,0,0,103,107,7,2,0,0,104,106,7,3,0,0,105,104,1,0,0,0,106,109, + 1,0,0,0,107,105,1,0,0,0,107,108,1,0,0,0,108,112,1,0,0,0,109,107, + 1,0,0,0,110,112,5,48,0,0,111,101,1,0,0,0,111,110,1,0,0,0,112,28, + 1,0,0,0,113,115,7,3,0,0,114,113,1,0,0,0,115,116,1,0,0,0,116,114, + 1,0,0,0,116,117,1,0,0,0,117,118,1,0,0,0,118,122,5,46,0,0,119,121, + 7,3,0,0,120,119,1,0,0,0,121,124,1,0,0,0,122,120,1,0,0,0,122,123, + 1,0,0,0,123,132,1,0,0,0,124,122,1,0,0,0,125,127,5,46,0,0,126,128, + 7,3,0,0,127,126,1,0,0,0,128,129,1,0,0,0,129,127,1,0,0,0,129,130, + 1,0,0,0,130,132,1,0,0,0,131,114,1,0,0,0,131,125,1,0,0,0,132,30,1, + 0,0,0,133,134,5,47,0,0,134,135,5,47,0,0,135,139,1,0,0,0,136,138, + 9,0,0,0,137,136,1,0,0,0,138,141,1,0,0,0,139,140,1,0,0,0,139,137, + 1,0,0,0,140,143,1,0,0,0,141,139,1,0,0,0,142,144,5,13,0,0,143,142, + 1,0,0,0,143,144,1,0,0,0,144,145,1,0,0,0,145,146,5,10,0,0,146,147, + 1,0,0,0,147,148,6,15,0,0,148,32,1,0,0,0,149,151,7,4,0,0,150,149, + 1,0,0,0,151,152,1,0,0,0,152,150,1,0,0,0,152,153,1,0,0,0,153,154, + 1,0,0,0,154,155,6,16,0,0,155,34,1,0,0,0,12,0,97,101,107,111,116, + 122,129,131,139,143,152,1,6,0,0 + ] + +class ptmlLexer(Lexer): + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + T__0 = 1 + T__1 = 2 + T__2 = 3 + T__3 = 4 + T__4 = 5 + T__5 = 6 + T__6 = 7 + T__7 = 8 + T__8 = 9 + T__9 = 10 + T__10 = 11 + T__11 = 12 + Names = 13 + Integer = 14 + Float = 15 + LINE_COMMENT = 16 + WS = 17 + + channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] + + modeNames = [ "DEFAULT_MODE" ] + + literalNames = [ "", + "'{'", "'}'", "'sequence'", "'selector'", "'parallel'", "'task'", + "'cond'", "'('", "')'", "','", "'True'", "'False'" ] + + symbolicNames = [ "", + "Names", "Integer", "Float", "LINE_COMMENT", "WS" ] + + ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", + "T__7", "T__8", "T__9", "T__10", "T__11", "Names", "Integer", + "Float", "LINE_COMMENT", "WS" ] + + grammarFileName = "ptml.g4" + + def __init__(self, input=None, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.13.1") + self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) + self._actions = None + self._predicates = None + + diff --git a/robowaiter/behavior_tree/test/ptmlLexer.tokens b/robowaiter/behavior_tree/test/ptmlLexer.tokens new file mode 100644 index 0000000..1f7a813 --- /dev/null +++ b/robowaiter/behavior_tree/test/ptmlLexer.tokens @@ -0,0 +1,29 @@ +T__0=1 +T__1=2 +T__2=3 +T__3=4 +T__4=5 +T__5=6 +T__6=7 +T__7=8 +T__8=9 +T__9=10 +T__10=11 +T__11=12 +Names=13 +Integer=14 +Float=15 +LINE_COMMENT=16 +WS=17 +'{'=1 +'}'=2 +'sequence'=3 +'selector'=4 +'parallel'=5 +'task'=6 +'cond'=7 +'('=8 +')'=9 +','=10 +'True'=11 +'False'=12 diff --git a/robowaiter/behavior_tree/test/ptmlListener.py b/robowaiter/behavior_tree/test/ptmlListener.py new file mode 100644 index 0000000..536aaf2 --- /dev/null +++ b/robowaiter/behavior_tree/test/ptmlListener.py @@ -0,0 +1,66 @@ +# Generated from ptml.g4 by ANTLR 4.13.1 +from antlr4 import * +if "." in __name__: + from .ptmlParser import ptmlParser +else: + from ptmlParser import ptmlParser + +# This class defines a complete listener for a parse tree produced by ptmlParser. +class ptmlListener(ParseTreeListener): + + # Enter a parse tree produced by ptmlParser#root. + def enterRoot(self, ctx:ptmlParser.RootContext): + pass + + # Exit a parse tree produced by ptmlParser#root. + def exitRoot(self, ctx:ptmlParser.RootContext): + pass + + + # Enter a parse tree produced by ptmlParser#tree. + def enterTree(self, ctx:ptmlParser.TreeContext): + pass + + # Exit a parse tree produced by ptmlParser#tree. + def exitTree(self, ctx:ptmlParser.TreeContext): + pass + + + # Enter a parse tree produced by ptmlParser#internal_node. + def enterInternal_node(self, ctx:ptmlParser.Internal_nodeContext): + pass + + # Exit a parse tree produced by ptmlParser#internal_node. + def exitInternal_node(self, ctx:ptmlParser.Internal_nodeContext): + pass + + + # Enter a parse tree produced by ptmlParser#action_sign. + def enterAction_sign(self, ctx:ptmlParser.Action_signContext): + pass + + # Exit a parse tree produced by ptmlParser#action_sign. + def exitAction_sign(self, ctx:ptmlParser.Action_signContext): + pass + + + # Enter a parse tree produced by ptmlParser#action_parm. + def enterAction_parm(self, ctx:ptmlParser.Action_parmContext): + pass + + # Exit a parse tree produced by ptmlParser#action_parm. + def exitAction_parm(self, ctx:ptmlParser.Action_parmContext): + pass + + + # Enter a parse tree produced by ptmlParser#boolean. + def enterBoolean(self, ctx:ptmlParser.BooleanContext): + pass + + # Exit a parse tree produced by ptmlParser#boolean. + def exitBoolean(self, ctx:ptmlParser.BooleanContext): + pass + + + +del ptmlParser \ No newline at end of file diff --git a/robowaiter/behavior_tree/test/ptmlParser.py b/robowaiter/behavior_tree/test/ptmlParser.py new file mode 100644 index 0000000..f222d07 --- /dev/null +++ b/robowaiter/behavior_tree/test/ptmlParser.py @@ -0,0 +1,514 @@ +# Generated from ptml.g4 by ANTLR 4.13.1 +# encoding: utf-8 +from antlr4 import * +from io import StringIO +import sys +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO + +def serializedATN(): + return [ + 4,1,17,62,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,1,0,4, + 0,14,8,0,11,0,12,0,15,1,0,1,0,1,1,1,1,1,1,1,1,4,1,24,8,1,11,1,12, + 1,25,1,1,1,1,1,2,1,2,1,2,1,2,3,2,34,8,2,1,3,1,3,1,3,1,3,3,3,40,8, + 3,1,3,1,3,1,4,1,4,1,4,3,4,47,8,4,1,4,1,4,1,4,1,4,3,4,53,8,4,5,4, + 55,8,4,10,4,12,4,58,9,4,1,5,1,5,1,5,0,0,6,0,2,4,6,8,10,0,2,1,0,6, + 7,1,0,11,12,66,0,13,1,0,0,0,2,19,1,0,0,0,4,33,1,0,0,0,6,35,1,0,0, + 0,8,46,1,0,0,0,10,59,1,0,0,0,12,14,3,2,1,0,13,12,1,0,0,0,14,15,1, + 0,0,0,15,13,1,0,0,0,15,16,1,0,0,0,16,17,1,0,0,0,17,18,5,0,0,1,18, + 1,1,0,0,0,19,20,3,4,2,0,20,23,5,1,0,0,21,24,3,6,3,0,22,24,3,2,1, + 0,23,21,1,0,0,0,23,22,1,0,0,0,24,25,1,0,0,0,25,23,1,0,0,0,25,26, + 1,0,0,0,26,27,1,0,0,0,27,28,5,2,0,0,28,3,1,0,0,0,29,34,5,3,0,0,30, + 34,5,4,0,0,31,32,5,5,0,0,32,34,5,14,0,0,33,29,1,0,0,0,33,30,1,0, + 0,0,33,31,1,0,0,0,34,5,1,0,0,0,35,36,7,0,0,0,36,37,5,13,0,0,37,39, + 5,8,0,0,38,40,3,8,4,0,39,38,1,0,0,0,39,40,1,0,0,0,40,41,1,0,0,0, + 41,42,5,9,0,0,42,7,1,0,0,0,43,47,5,14,0,0,44,47,5,15,0,0,45,47,3, + 10,5,0,46,43,1,0,0,0,46,44,1,0,0,0,46,45,1,0,0,0,47,56,1,0,0,0,48, + 52,5,10,0,0,49,53,5,14,0,0,50,53,5,15,0,0,51,53,3,10,5,0,52,49,1, + 0,0,0,52,50,1,0,0,0,52,51,1,0,0,0,53,55,1,0,0,0,54,48,1,0,0,0,55, + 58,1,0,0,0,56,54,1,0,0,0,56,57,1,0,0,0,57,9,1,0,0,0,58,56,1,0,0, + 0,59,60,7,1,0,0,60,11,1,0,0,0,8,15,23,25,33,39,46,52,56 + ] + +class ptmlParser ( Parser ): + + grammarFileName = "ptml.g4" + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + sharedContextCache = PredictionContextCache() + + literalNames = [ "", "'{'", "'}'", "'sequence'", "'selector'", + "'parallel'", "'task'", "'cond'", "'('", "')'", "','", + "'True'", "'False'" ] + + symbolicNames = [ "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "Names", "Integer", "Float", "LINE_COMMENT", + "WS" ] + + RULE_root = 0 + RULE_tree = 1 + RULE_internal_node = 2 + RULE_action_sign = 3 + RULE_action_parm = 4 + RULE_boolean = 5 + + ruleNames = [ "root", "tree", "internal_node", "action_sign", "action_parm", + "boolean" ] + + EOF = Token.EOF + T__0=1 + T__1=2 + T__2=3 + T__3=4 + T__4=5 + T__5=6 + T__6=7 + T__7=8 + T__8=9 + T__9=10 + T__10=11 + T__11=12 + Names=13 + Integer=14 + Float=15 + LINE_COMMENT=16 + WS=17 + + def __init__(self, input:TokenStream, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.13.1") + self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) + self._predicates = None + + + + + class RootContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def EOF(self): + return self.getToken(ptmlParser.EOF, 0) + + def tree(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ptmlParser.TreeContext) + else: + return self.getTypedRuleContext(ptmlParser.TreeContext,i) + + + def getRuleIndex(self): + return ptmlParser.RULE_root + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRoot" ): + listener.enterRoot(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRoot" ): + listener.exitRoot(self) + + + + + def root(self): + + localctx = ptmlParser.RootContext(self, self._ctx, self.state) + self.enterRule(localctx, 0, self.RULE_root) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 13 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 12 + self.tree() + self.state = 15 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 56) != 0)): + break + + self.state = 17 + self.match(ptmlParser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class TreeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def internal_node(self): + return self.getTypedRuleContext(ptmlParser.Internal_nodeContext,0) + + + def action_sign(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ptmlParser.Action_signContext) + else: + return self.getTypedRuleContext(ptmlParser.Action_signContext,i) + + + def tree(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ptmlParser.TreeContext) + else: + return self.getTypedRuleContext(ptmlParser.TreeContext,i) + + + def getRuleIndex(self): + return ptmlParser.RULE_tree + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTree" ): + listener.enterTree(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTree" ): + listener.exitTree(self) + + + + + def tree(self): + + localctx = ptmlParser.TreeContext(self, self._ctx, self.state) + self.enterRule(localctx, 2, self.RULE_tree) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 19 + self.internal_node() + self.state = 20 + self.match(ptmlParser.T__0) + self.state = 23 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 23 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [6, 7]: + self.state = 21 + self.action_sign() + pass + elif token in [3, 4, 5]: + self.state = 22 + self.tree() + pass + else: + raise NoViableAltException(self) + + self.state = 25 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 248) != 0)): + break + + self.state = 27 + self.match(ptmlParser.T__1) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Internal_nodeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def Integer(self): + return self.getToken(ptmlParser.Integer, 0) + + def getRuleIndex(self): + return ptmlParser.RULE_internal_node + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInternal_node" ): + listener.enterInternal_node(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInternal_node" ): + listener.exitInternal_node(self) + + + + + def internal_node(self): + + localctx = ptmlParser.Internal_nodeContext(self, self._ctx, self.state) + self.enterRule(localctx, 4, self.RULE_internal_node) + try: + self.state = 33 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3]: + self.enterOuterAlt(localctx, 1) + self.state = 29 + self.match(ptmlParser.T__2) + pass + elif token in [4]: + self.enterOuterAlt(localctx, 2) + self.state = 30 + self.match(ptmlParser.T__3) + pass + elif token in [5]: + self.enterOuterAlt(localctx, 3) + self.state = 31 + self.match(ptmlParser.T__4) + self.state = 32 + self.match(ptmlParser.Integer) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Action_signContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def Names(self): + return self.getToken(ptmlParser.Names, 0) + + def action_parm(self): + return self.getTypedRuleContext(ptmlParser.Action_parmContext,0) + + + def getRuleIndex(self): + return ptmlParser.RULE_action_sign + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAction_sign" ): + listener.enterAction_sign(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAction_sign" ): + listener.exitAction_sign(self) + + + + + def action_sign(self): + + localctx = ptmlParser.Action_signContext(self, self._ctx, self.state) + self.enterRule(localctx, 6, self.RULE_action_sign) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 35 + _la = self._input.LA(1) + if not(_la==6 or _la==7): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 36 + self.match(ptmlParser.Names) + self.state = 37 + self.match(ptmlParser.T__7) + self.state = 39 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 55296) != 0): + self.state = 38 + self.action_parm() + + + self.state = 41 + self.match(ptmlParser.T__8) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class Action_parmContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + def Integer(self, i:int=None): + if i is None: + return self.getTokens(ptmlParser.Integer) + else: + return self.getToken(ptmlParser.Integer, i) + + def Float(self, i:int=None): + if i is None: + return self.getTokens(ptmlParser.Float) + else: + return self.getToken(ptmlParser.Float, i) + + def boolean(self, i:int=None): + if i is None: + return self.getTypedRuleContexts(ptmlParser.BooleanContext) + else: + return self.getTypedRuleContext(ptmlParser.BooleanContext,i) + + + def getRuleIndex(self): + return ptmlParser.RULE_action_parm + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAction_parm" ): + listener.enterAction_parm(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAction_parm" ): + listener.exitAction_parm(self) + + + + + def action_parm(self): + + localctx = ptmlParser.Action_parmContext(self, self._ctx, self.state) + self.enterRule(localctx, 8, self.RULE_action_parm) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 46 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [14]: + self.state = 43 + self.match(ptmlParser.Integer) + pass + elif token in [15]: + self.state = 44 + self.match(ptmlParser.Float) + pass + elif token in [11, 12]: + self.state = 45 + self.boolean() + pass + else: + raise NoViableAltException(self) + + self.state = 56 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la==10: + self.state = 48 + self.match(ptmlParser.T__9) + self.state = 52 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [14]: + self.state = 49 + self.match(ptmlParser.Integer) + pass + elif token in [15]: + self.state = 50 + self.match(ptmlParser.Float) + pass + elif token in [11, 12]: + self.state = 51 + self.boolean() + pass + else: + raise NoViableAltException(self) + + self.state = 58 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + class BooleanContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) + self.parser = parser + + + def getRuleIndex(self): + return ptmlParser.RULE_boolean + + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBoolean" ): + listener.enterBoolean(self) + + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBoolean" ): + listener.exitBoolean(self) + + + + + def boolean(self): + + localctx = ptmlParser.BooleanContext(self, self._ctx, self.state) + self.enterRule(localctx, 10, self.RULE_boolean) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 59 + _la = self._input.LA(1) + if not(_la==11 or _la==12): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + + + + diff --git a/robowaiter/llm_client/ask_llm.py b/robowaiter/llm_client/ask_llm.py index 15172fd..e5d7460 100644 --- a/robowaiter/llm_client/ask_llm.py +++ b/robowaiter/llm_client/ask_llm.py @@ -10,17 +10,27 @@ import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) def ask_llm(question): - url = "https://45.125.46.134:25344/v1/completions" + url = "https://45.125.46.134:25344/v1/chat/completions" headers = {"Content-Type": "application/json"} data = { - "prompt": question - } + "model": "RoboWaiter", + "messages": [ + { + "role": "system", + "content": "你是一个机器人服务员:RoboWaiter. 你的职责是为顾客提供对话及具身服务。" + }, + { + "role": "user", + "content": question + } + ] + } response = requests.post(url, headers=headers, json=data, verify=False) if response.status_code == 200: result = response.json() - return result['choices'][0]['text'] + return result['choices'][0]['message']['content'] else: return "大模型请求失败:", response.status_code