initial revision of pycol
[pycol.git] / token_parser.py
1 #!/usr/bin/python3
2
3 import shlex
4 from io import StringIO
5
6 class SHL(shlex.shlex):
7     def __init__(self, *args, **kvargs):
8         shlex.shlex.__init__(self, *args, **kvargs)
9     def read_token(self, *args, **kvargs):
10         x = shlex.shlex.read_token(self, *args, **kvargs)
11         print("read_token <%s>"%x)
12         return x
13     def get_token(self, *args, **kvargs):
14         x = shlex.shlex.get_token(self, *args, **kvargs)
15         print("get_token <%s>"%x)
16         return x
17     def __next__(self, *args, **kvargs):
18         x = shlex.shlex.__next__(self, *args, **kvargs)
19         print("__next__ <%s>"%x)
20         return x
21
22 class XIO(StringIO):
23     def __init__(self, *args, **kvargs):
24         StringIO.__init__(self, *args, **kvargs)
25     def readline(self, *args, **kvargs):
26         print("readline")
27         return StringIO.readline(self, *args, **kvargs)
28     def read(self, *args, **kvargs):
29         x = StringIO.readline(self, *args, **kvargs)
30         print("read <%s>"%x)
31         return x
32
33 s = SHL("", posix=True)
34 s.debug = 1
35 s.whitespace_split = True
36
37 s.state = ' '
38 s.push_source(XIO("xx xx"))
39 print("------------- %s"%list(s))
40
41 s.state = ' '
42 s.push_source(XIO("yy yy"))
43 print("------------- %s"%list(s))
44
45 s.state = ' '
46 s.push_source(XIO('a "c cds cds" d'))
47 print("------------- %s"%list(s))