test_class.file: php-frontend/src/test/java/org/sonar/php/parser/PHPParserTest.java
test_class.identifier: PHPParserTest
test_case.body: @Test
    public void expression() throws Exception {
      ActionParser<Tree> parser = PHPParserBuilder.createParser(PHPLexicalGrammar.EXPRESSION);
      BinaryExpressionTree tree = (BinaryExpressionTree) parser.parse("$a + $b + $c");
      Assertions.assertThat(tree.getParent()).isNull();
      Assertions.assertThat(tree.leftOperand().getParent()).isSameAs(tree);
      Assertions.assertThat(tree.rightOperand().getParent()).isSameAs(tree);
  
      BinaryExpressionTree subExpression = (BinaryExpressionTree) tree.leftOperand();
      Assertions.assertThat(subExpression.leftOperand().getParent()).isSameAs(subExpression);
      Assertions.assertThat(subExpression.rightOperand().getParent()).isSameAs(subExpression);
    }
test_case.class_method_signature: PHPParserTest.expression()
test_case.full_signature: @Test public void expression()
test_case.identifier: expression
test_case.invocations: createParser parse isNull assertThat getParent isSameAs assertThat getParent leftOperand isSameAs assertThat getParent rightOperand leftOperand isSameAs assertThat getParent leftOperand isSameAs assertThat getParent rightOperand
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void expression()
focal_class.file: php-frontend/src/main/java/org/sonar/php/parser/PHPParser.java
focal_class.identifier: PHPParser
focal_class.class_method_signature: PHPParser.PHPParser(GrammarRuleKey rootRule, int lineOffset)
focal_class.full_signature: public  PHPParser(GrammarRuleKey rootRule, int lineOffset)
focal_class.identifier: PHPParser
focal_class.modifiers: public
focal_class.parameters: (GrammarRuleKey rootRule, int lineOffset)
focal_class.signature:  PHPParser(GrammarRuleKey rootRule, int lineOffset)
focal_class.class_method_signature: PHPParser.parse(File file)
focal_class.full_signature: @Override public Tree parse(File file)
focal_class.identifier: parse
focal_class.modifiers: @Override public
focal_class.parameters: (File file)
focal_class.return: Tree
focal_class.signature: Tree parse(File file)
focal_class.class_method_signature: PHPParser.parse(String source)
focal_class.full_signature: @Override public Tree parse(String source)
focal_class.identifier: parse
focal_class.modifiers: @Override public
focal_class.parameters: (String source)
focal_class.return: Tree
focal_class.signature: Tree parse(String source)
focal_class.class_method_signature: PHPParser.setParents(Tree tree)
focal_class.full_signature: private static Tree setParents(Tree tree)
focal_class.identifier: setParents
focal_class.modifiers: private static
focal_class.parameters: (Tree tree)
focal_class.return: Tree
focal_class.signature: Tree setParents(Tree tree)
focal_class.class_method_signature: PHPParser.setParent(PHPTree parent, @Nullable PHPTree child, Queue<PHPTree> setParentQueue)
focal_class.full_signature: private static void setParent(PHPTree parent, @Nullable PHPTree child, Queue<PHPTree> setParentQueue)
focal_class.identifier: setParent
focal_class.modifiers: private static
focal_class.parameters: (PHPTree parent, @Nullable PHPTree child, Queue<PHPTree> setParentQueue)
focal_class.return: void
focal_class.signature: void setParent(PHPTree parent, @Nullable PHPTree child, Queue<PHPTree> setParentQueue)
focal_class.superclass: extends ActionParser<Tree>
focal_method.body: @Override
    public Tree parse(File file) {
      return setParents(super.parse(file));
    }
focal_method.class_method_signature: PHPParser.parse(File file)
focal_method.full_signature: @Override public Tree parse(File file)
focal_method.identifier: parse
focal_method.invocations: setParents parse
focal_method.modifiers: @Override public
focal_method.parameters: (File file)
focal_method.return: Tree
focal_method.signature: Tree parse(File file)