File tree Expand file tree Collapse file tree 2 files changed +15
-2
lines changed Expand file tree Collapse file tree 2 files changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -71,8 +71,7 @@ def end(self):
71
71
def setNext (self , rule ):
72
72
if isinstance (rule , basestring ):
73
73
rule = (rule , )
74
- if not isinstance (rule , (list , tuple )):
75
- raise TypeError ("rule should be a string, list or a tuple." )
74
+ rule = tuple (rule )
76
75
return self .apply (rule [0 ], None , rule [1 :])
77
76
78
77
Original file line number Diff line number Diff line change @@ -34,6 +34,7 @@ def setUp(self):
34
34
_grammar = r"""
35
35
delimiter = '\r\n'
36
36
initial = <(~delimiter anything)*>:val delimiter -> receiver.receive(val)
37
+ witharg :arg1 :arg2 = <(~delimiter anything)*>:a delimiter -> receiver.receive(arg1+arg2+a)
37
38
"""
38
39
self .grammar = self ._parseGrammar (_grammar )
39
40
@@ -75,3 +76,16 @@ def test_bindings(self):
75
76
bindings = {'SMALL_INT' : 3 }
76
77
TrampolinedParser (self ._parseGrammar (grammar ), receiver , bindings ).receive ('0' )
77
78
self .assertEqual (receiver .received , [3 ])
79
+
80
+
81
+ def test_currentRuleWithArgs (self ):
82
+ """
83
+ TrampolinedParser should be able to invoke curruent rule with args.
84
+ """
85
+ receiver = TrampolinedReceiver ()
86
+ receiver .currentRule = "witharg" , "nice " , "day"
87
+ trampolinedParser = TrampolinedParser (self .grammar , receiver , {})
88
+ buf = b' oh yes\r \n '
89
+ for c in iterbytes (buf ):
90
+ trampolinedParser .receive (c )
91
+ self .assertEqual (receiver .received , ["nice day oh yes" ])
You can’t perform that action at this time.
0 commit comments