13
13
14
14
from __future__ import print_function , division , absolute_import , unicode_literals
15
15
16
+ from grako .buffering import Buffer
16
17
from grako .parsing import graken , Parser
17
18
from grako .util import re , RE_FLAGS , generic_main # noqa
18
19
19
20
20
- __version__ = (2016 , 8 , 6 , 7 , 46 , 58 , 5 )
21
+ __version__ = (2016 , 8 , 7 , 10 , 22 , 21 , 6 )
21
22
22
23
__all__ = [
23
24
'RQLParser' ,
28
29
KEYWORDS = set ([])
29
30
30
31
32
+ class RQLBuffer (Buffer ):
33
+ def __init__ (self ,
34
+ text ,
35
+ whitespace = None ,
36
+ nameguard = None ,
37
+ comments_re = None ,
38
+ eol_comments_re = None ,
39
+ ignorecase = None ,
40
+ namechars = '' ,
41
+ ** kwargs ):
42
+ super (RQLBuffer , self ).__init__ (
43
+ text ,
44
+ whitespace = whitespace ,
45
+ nameguard = nameguard ,
46
+ comments_re = comments_re ,
47
+ eol_comments_re = eol_comments_re ,
48
+ ignorecase = ignorecase ,
49
+ namechars = namechars ,
50
+ ** kwargs
51
+ )
52
+
53
+
31
54
class RQLParser (Parser ):
32
55
def __init__ (self ,
33
56
whitespace = None ,
@@ -51,6 +74,11 @@ def __init__(self,
51
74
** kwargs
52
75
)
53
76
77
+ def parse (self , text , * args , ** kwargs ):
78
+ if not isinstance (text , Buffer ):
79
+ text = RQLBuffer (text , ** kwargs )
80
+ return super (RQLParser , self ).parse (text , * args , ** kwargs )
81
+
54
82
@graken ()
55
83
def _start_ (self ):
56
84
self ._OREXPRESSION_ ()
@@ -64,7 +92,7 @@ def sep0():
64
92
65
93
def block0 ():
66
94
self ._ANDEXPRESSION_ ()
67
- self ._positive_closure (block0 , prefix = sep0 )
95
+ self ._closure (block0 , sep = sep0 )
68
96
69
97
@graken ()
70
98
def _ANDEXPRESSION_ (self ):
@@ -74,7 +102,7 @@ def sep0():
74
102
75
103
def block0 ():
76
104
self ._CONSTRAINT_ ()
77
- self ._positive_closure (block0 , prefix = sep0 )
105
+ self ._closure (block0 , sep = sep0 )
78
106
79
107
@graken ()
80
108
def _CONSTRAINT_ (self ):
@@ -163,7 +191,7 @@ def sep1():
163
191
164
192
def block1 ():
165
193
self ._VALUE_ ()
166
- self ._positive_closure (block1 , prefix = sep1 )
194
+ self ._closure (block1 , sep = sep1 )
167
195
self .name_last_node ('@' )
168
196
self ._token (')' )
169
197
0 commit comments