forked from VimPlug/jedi
Create a default implementation of leafs.
This commit is contained in:
@@ -34,6 +34,10 @@ class BaseParser(object):
|
|||||||
node_map = {}
|
node_map = {}
|
||||||
default_node = tree.Node
|
default_node = tree.Node
|
||||||
|
|
||||||
|
leaf_map = {
|
||||||
|
}
|
||||||
|
default_leaf = tree.Leaf
|
||||||
|
|
||||||
def __init__(self, grammar, start_symbol='file_input', error_recovery=False):
|
def __init__(self, grammar, start_symbol='file_input', error_recovery=False):
|
||||||
self._grammar = grammar
|
self._grammar = grammar
|
||||||
self._start_symbol = start_symbol
|
self._start_symbol = start_symbol
|
||||||
@@ -62,13 +66,16 @@ class BaseParser(object):
|
|||||||
else:
|
else:
|
||||||
raise ParserSyntaxError('SyntaxError: invalid syntax', start_pos)
|
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.
|
# TODO REMOVE symbol, we don't want type here.
|
||||||
symbol = grammar.number2symbol[type]
|
symbol = grammar.number2symbol[type_]
|
||||||
try:
|
try:
|
||||||
return self.node_map[symbol](children)
|
return self.node_map[symbol](children)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return self.default_node(symbol, children)
|
return self.default_node(symbol, children)
|
||||||
|
|
||||||
def convert_leaf(self, grammar, type, value, prefix, start_pos):
|
def convert_leaf(self, grammar, type_, value, prefix, start_pos):
|
||||||
raise NotImplementedError
|
try:
|
||||||
|
return self.leaf_map[type_](value, start_pos, prefix)
|
||||||
|
except KeyError:
|
||||||
|
return self.default_leaf(value, start_pos, prefix)
|
||||||
|
|||||||
Reference in New Issue
Block a user