1
0
forked from VimPlug/jedi

Start working with arithmetics.

This commit is contained in:
Dave Halter
2014-10-21 12:18:03 +02:00
parent 2eed6b7b5f
commit ab53942e55
2 changed files with 9 additions and 6 deletions

View File

@@ -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

View File

@@ -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())