forked from VimPlug/jedi
Start working with arithmetics.
This commit is contained in:
@@ -163,19 +163,21 @@ class Evaluator(object):
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
def eval_element(self, element):
|
def eval_element(self, element):
|
||||||
if isinstance(element, (pr.Name, pr.Literal)):
|
if isinstance(element, (pr.Name, pr.Literal)) or pr.is_node(element, 'atom'):
|
||||||
return self.eval_atom(element)
|
return self._eval_atom(element)
|
||||||
elif element.type == python_symbols.power:
|
elif element.type == python_symbols.power:
|
||||||
types = self.eval_atom(element.children[0])
|
types = self._eval_atom(element.children[0])
|
||||||
for trailer in element.children[1:]:
|
for trailer in element.children[1:]:
|
||||||
if trailer == '**': # has a power operation.
|
if trailer == '**': # has a power operation.
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
types = self.eval_trailer(types, trailer)
|
types = self.eval_trailer(types, trailer)
|
||||||
return types
|
return types
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError
|
left, operator, right = element.children
|
||||||
|
return precedence.calculate(self, self.eval_element(left), operator,
|
||||||
|
self.eval_element(right))
|
||||||
|
|
||||||
def eval_atom(self, atom):
|
def _eval_atom(self, atom):
|
||||||
"""
|
"""
|
||||||
Basically to process ``atom`` nodes. The parser sometimes doesn't
|
Basically to process ``atom`` nodes. The parser sometimes doesn't
|
||||||
generate the node (because it has just one child). In that case an atom
|
generate the node (because it has just one child). In that case an atom
|
||||||
|
|||||||
@@ -220,7 +220,8 @@ class Array(use_metaclass(CachedMetaClass, IterableWrapper)):
|
|||||||
def _items(self):
|
def _items(self):
|
||||||
if pr.is_node(self._array_node, 'testlist_comp'):
|
if pr.is_node(self._array_node, 'testlist_comp'):
|
||||||
return self._array_node.children[::2]
|
return self._array_node.children[::2]
|
||||||
raise NotImplementedError
|
else:
|
||||||
|
return [self._array_node]
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
return iter(self._items())
|
return iter(self._items())
|
||||||
|
|||||||
Reference in New Issue
Block a user