forked from VimPlug/jedi
Simplify the parse method.
This commit is contained in:
@@ -57,30 +57,20 @@ class Parser(BaseParser):
|
|||||||
self.parse(tokens)
|
self.parse(tokens)
|
||||||
|
|
||||||
def parse(self, tokens):
|
def parse(self, tokens):
|
||||||
if self._parsed is not None:
|
node = super(Parser, self).parse(tokens)
|
||||||
return self._parsed
|
|
||||||
|
|
||||||
from jedi.parser.pgen2.parse import PgenParser
|
if self._start_symbol == 'file_input' != node.type:
|
||||||
start_number = self._grammar.symbol2number[self._start_symbol]
|
|
||||||
self.pgen_parser = PgenParser(
|
|
||||||
self._grammar, self.convert_node, self.convert_leaf,
|
|
||||||
self.error_recovery, start_number
|
|
||||||
)
|
|
||||||
|
|
||||||
self._parsed = self.pgen_parser.parse(tokens)
|
|
||||||
|
|
||||||
if self._start_symbol == 'file_input' != self._parsed.type:
|
|
||||||
# If there's only one statement, we get back a non-module. That's
|
# If there's only one statement, we get back a non-module. That's
|
||||||
# not what we want, we want a module, so we add it here:
|
# not what we want, we want a module, so we add it here:
|
||||||
self._parsed = self.convert_node(self._grammar,
|
self._parsed = node = self.convert_node(
|
||||||
self._grammar.symbol2number['file_input'],
|
self._grammar,
|
||||||
[self._parsed])
|
self._grammar.symbol2number['file_input'],
|
||||||
|
[node]
|
||||||
|
)
|
||||||
|
|
||||||
if self._added_newline:
|
if self._added_newline:
|
||||||
self._remove_last_newline()
|
self._remove_last_newline()
|
||||||
# The stack is empty now, we don't need it anymore.
|
return node
|
||||||
del self.pgen_parser
|
|
||||||
return self._parsed
|
|
||||||
|
|
||||||
def get_root_node(self):
|
def get_root_node(self):
|
||||||
return self._parsed
|
return self._parsed
|
||||||
|
|||||||
Reference in New Issue
Block a user