예제 #1
0
 def _token_led_dot(self, left):
     if not self._current_token() == 'star':
         right = self._parse_dot_rhs(self.BINDING_POWER['dot'])
         if left['type'] == 'subexpression':
             left['children'].append(right)
             return left
         else:
             return ast.subexpression([left, right])
     else:
         # We're creating a projection.
         self._advance()
         right = self._parse_projection_rhs(self.BINDING_POWER['dot'])
         return ast.value_projection(left, right)
예제 #2
0
 def _token_led_dot(self, left):
     if not self._current_token() == 'star':
         right = self._parse_dot_rhs(self.BINDING_POWER['dot'])
         if left['type'] == 'subexpression':
             left['children'].append(right)
             return left
         else:
             return ast.subexpression([left, right])
     else:
         # We're creating a projection.
         self._advance()
         right = self._parse_projection_rhs(
             self.BINDING_POWER['dot'])
         return ast.value_projection(left, right)
예제 #3
0
 def test_quoted_subexpression(self):
     self.assert_parsed_ast(
         '"foo"."bar"',
         ast.subexpression([ast.field('foo'),
                            ast.field('bar')]))
예제 #4
0
 def test_dot_syntax(self):
     self.assert_parsed_ast(
         'foo.bar', ast.subexpression([ast.field('foo'),
                                       ast.field('bar')]))
예제 #5
0
 def test_quoted_subexpression(self):
     self.assert_parsed_ast('"foo"."bar"', ast.subexpression([ast.field("foo"), ast.field("bar")]))
예제 #6
0
 def test_dot_syntax(self):
     self.assert_parsed_ast("foo.bar", ast.subexpression([ast.field("foo"), ast.field("bar")]))
예제 #7
0
 def test_dot_syntax(self):
     self.assert_parsed_ast('foo.bar',
                            ast.subexpression([ast.field('foo'),
                                               ast.field('bar')]))