From dacc99a7db7170ddd04ae5ddb33d33984ef1ff79 Mon Sep 17 00:00:00 2001
From: Franck Dary <franck.dary@lis-lab.fr>
Date: Tue, 4 May 2021 15:47:37 +0200
Subject: [PATCH] Added program argument --ts to specify back actions

---
 Transition.py | 7 +++----
 main.py       | 4 +++-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/Transition.py b/Transition.py
index 9607198..c82ca1c 100644
--- a/Transition.py
+++ b/Transition.py
@@ -4,12 +4,11 @@ from Util import isEmpty
 
 ################################################################################
 class Transition :
-  available = set({"RIGHT", "LEFT", "SHIFT", "REDUCE", "EOS", "BACK 2"})
+  available = lambda self,x: x in {"RIGHT", "LEFT", "SHIFT", "REDUCE", "EOS"} or ("BACK" in x and len(x.split()) == 2)
 
   def __init__(self, name) :
-    if name not in self.available :
-      print("'%s' is not a valid transition type."%name, file=sys.stdout)
-      exit(1)
+    if not self.available(name) :
+      raise(Exception("'%s' is not a valid transition type."%name))
     self.name = name
 
   def __lt__(self, other) :
diff --git a/main.py b/main.py
index 8a18b49..026bce0 100755
--- a/main.py
+++ b/main.py
@@ -36,6 +36,8 @@ if __name__ == "__main__" :
     help="Print debug infos on stderr.")
   parser.add_argument("--silent", "-s", default=False, action="store_true",
     help="Don't print advancement infos.")
+  parser.add_argument("--ts", default="",
+    help="Comma sepaarated list of supplementary transitions. Example \"BACK 1,BACK 2\"")
   args = parser.parse_args()
 
   if args.debug :
@@ -51,7 +53,7 @@ if __name__ == "__main__" :
   if args.bootstrap is not None :
     args.bootstrap = int(args.bootstrap)
 
-  transitionSet = [Transition(elem) for elem in ["RIGHT", "LEFT", "SHIFT", "REDUCE", "BACK 2"]]
+  transitionSet = [Transition(elem) for elem in (["SHIFT","REDUCE","LEFT","RIGHT"]+args.ts.split(',')) if len(elem) > 0]
   strategy = {"RIGHT" : 1, "SHIFT" : 1, "LEFT" : 0, "REDUCE" : 0}
 
   if args.mode == "train" :
-- 
GitLab