From d218acee6b555518da8c43d323684f9054d41abe Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Mon, 20 Mar 2017 19:34:48 +0100 Subject: [PATCH] Create a default implementation of leafs. --- jedi/parser/parser.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/jedi/parser/parser.py b/jedi/parser/parser.py index 92b01aaa..8296ab9a 100644 --- a/jedi/parser/parser.py +++ b/jedi/parser/parser.py @@ -34,6 +34,10 @@ class BaseParser(object): node_map = {} default_node = tree.Node + leaf_map = { + } + default_leaf = tree.Leaf + def __init__(self, grammar, start_symbol='file_input', error_recovery=False): self._grammar = grammar self._start_symbol = start_symbol @@ -62,13 +66,16 @@ class BaseParser(object): else: raise ParserSyntaxError('SyntaxError: invalid syntax', start_pos) - def convert_node(self, grammar, type, children): + def convert_node(self, grammar, type_, children): # TODO REMOVE symbol, we don't want type here. - symbol = grammar.number2symbol[type] + symbol = grammar.number2symbol[type_] try: return self.node_map[symbol](children) except KeyError: return self.default_node(symbol, children) - def convert_leaf(self, grammar, type, value, prefix, start_pos): - raise NotImplementedError + def convert_leaf(self, grammar, type_, value, prefix, start_pos): + try: + return self.leaf_map[type_](value, start_pos, prefix) + except KeyError: + return self.default_leaf(value, start_pos, prefix)