diff --git a/Transition.py b/Transition.py index 9607198d4842edc2e560aa8171f44a336f9604d1..c82ca1c929756309aa96f13f5cc844308a60a052 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 8a18b49654a3c1e86b0a6fc32bdf1dbd3492c9fa..026bce0b9472bab5356b2e61deae02aaf60821b9 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" :