Skip to content

Commit d08d510

Browse files
author
whitequark
committedMay 29, 2015
Add pythonparser.parse_buffer.
1 parent 57f3b67 commit d08d510

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed
 

Diff for: ‎pythonparser/__init__.py

+27-20
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,31 @@
11
from __future__ import absolute_import, division, print_function, unicode_literals
22
import sys, pythonparser.source, pythonparser.lexer, pythonparser.parser, pythonparser.diagnostic
33

4+
def parse_buffer(buffer, mode='exec', flags=[], version=None, engine=None):
5+
"""
6+
Like :meth:`parse`, but accepts a :class:`source.Buffer` instead of
7+
source and filename."""
8+
9+
if version is None:
10+
version = sys.version_info[0:2]
11+
12+
if engine is None:
13+
engine = pythonparser.diagnostic.Engine()
14+
15+
lexer = pythonparser.lexer.Lexer(buffer, version, engine)
16+
if mode in ('single', 'eval'):
17+
lexer.interactive = True
18+
19+
parser = pythonparser.parser.Parser(lexer, version, engine)
20+
parser.add_flags(flags)
21+
22+
if mode == 'exec':
23+
return parser.file_input()
24+
elif mode == 'single':
25+
return parser.single_input()
26+
elif mode == 'eval':
27+
return parser.eval_input()
28+
429
def parse(source, filename='<unknown>', mode='exec',
530
flags=[], version=None, engine=None):
631
"""
@@ -24,24 +49,6 @@ def parse(source, filename='<unknown>', mode='exec',
2449
:raise: :class:`diagnostic.Error`
2550
if the source code is not well-formed
2651
"""
27-
if version is None:
28-
version = sys.version_info[0:2]
29-
30-
if engine is None:
31-
engine = pythonparser.diagnostic.Engine()
32-
33-
buffer = pythonparser.source.Buffer(source, filename)
34-
35-
lexer = pythonparser.lexer.Lexer(buffer, version, engine)
36-
if mode in ('single', 'eval'):
37-
lexer.interactive = True
52+
return parse_buffer(pythonparser.source.Buffer(source, filename),
53+
mode, flags, version, engine)
3854

39-
parser = pythonparser.parser.Parser(lexer, version, engine)
40-
parser.add_flags(flags)
41-
42-
if mode == 'exec':
43-
return parser.file_input()
44-
elif mode == 'single':
45-
return parser.single_input()
46-
elif mode == 'eval':
47-
return parser.eval_input()

0 commit comments

Comments
 (0)
Please sign in to comment.