Exemplo n.º 1
0
 def _project_if_slice(self, left, right):
     index_expr = ast.index_expression([left, right])
     if right['type'] == 'slice':
         return ast.projection(
             index_expr,
             self._parse_projection_rhs(self.BINDING_POWER['star']))
     else:
         return index_expr
Exemplo n.º 2
0
 def _project_if_slice(self, left, right):
     index_expr = ast.index_expression([left, right])
     if right['type'] == 'slice':
         return ast.projection(
             index_expr,
             self._parse_projection_rhs(self.BINDING_POWER['star']))
     else:
         return index_expr
 def _token_led_lbracket(self, left):
     token = self._lookahead_token(0)
     if token['type'] == 'number':
         self._match('number')
         right = ast.index(token['value'])
         self._match('rbracket')
         return ast.index_expression(left, right)
     else:
         # We have a projection
         self._match('star')
         self._match('rbracket')
         right = self._parse_projection_rhs(self.BINDING_POWER['star'])
         return ast.projection(left, right)
 def _token_led_lbracket(self, left):
     token = self._lookahead_token(0)
     if token['type'] == 'number':
         self._match('number')
         right = ast.index(token['value'])
         self._match('rbracket')
         return ast.index_expression(left, right)
     else:
         # We have a projection
         self._match('star')
         self._match('rbracket')
         right = self._parse_projection_rhs(self.BINDING_POWER['star'])
         return ast.projection(left, right)
Exemplo n.º 5
0
 def _token_led_lbracket(self, left):
     token = self._lookahead_token(0)
     if token['type'] in ['number', 'colon']:
         right = self._parse_index_expression()
         if left['type'] == 'index_expression':
             left['children'].append(right)
             return left
         else:
             return ast.index_expression([left, right])
     else:
         # We have a projection
         self._match('star')
         self._match('rbracket')
         right = self._parse_projection_rhs(self.BINDING_POWER['star'])
         return ast.projection(left, right)
Exemplo n.º 6
0
 def _token_led_lbracket(self, left):
     token = self._lookahead_token(0)
     if token['type'] in ['number', 'colon']:
         right = self._parse_index_expression()
         if left['type'] == 'index_expression':
             left['children'].append(right)
             return left
         else:
             return ast.index_expression([left, right])
     else:
         # We have a projection
         self._match('star')
         self._match('rbracket')
         right = self._parse_projection_rhs(self.BINDING_POWER['star'])
         return ast.projection(left, right)