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)
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)
def test_quoted_subexpression(self): self.assert_parsed_ast( '"foo"."bar"', ast.subexpression([ast.field('foo'), ast.field('bar')]))
def test_dot_syntax(self): self.assert_parsed_ast( 'foo.bar', ast.subexpression([ast.field('foo'), ast.field('bar')]))
def test_quoted_subexpression(self): self.assert_parsed_ast('"foo"."bar"', ast.subexpression([ast.field("foo"), ast.field("bar")]))
def test_dot_syntax(self): self.assert_parsed_ast("foo.bar", ast.subexpression([ast.field("foo"), ast.field("bar")]))
def test_dot_syntax(self): self.assert_parsed_ast('foo.bar', ast.subexpression([ast.field('foo'), ast.field('bar')]))