Example #1
0
 public function testBraces()
 {
     $grammar = new Grammar(array("expression" => new ConcatenatedExpression(array(new RepeaterExpression(new NotExpression(new AlternativeExpression(array(new ConstantExpression("("))))), new AlternativeExpression(array(new ConcatenatedExpression(array(new ConstantExpression("("), new NamedExpression("expression"), new ConstantExpression(")"))), new RepeaterExpression(new NotExpression(new AlternativeExpression(array(new ConstantExpression("("))))))), new RepeaterExpression(new NotExpression(new AlternativeExpression(array(new ConstantExpression("(")))))))));
     $no_opening_brace = new RepeaterExpression(new NotExpression(new AlternativeExpression(array(new ConstantExpression("(")))));
     $grammar = new Grammar(array("expression" => new AlternativeExpression(array(new ConcatenatedExpression(array($no_opening_brace, new ConstantExpression("("), new NamedExpression("expression"), new ConstantExpression(")"), $no_opening_brace)), $no_opening_brace))));
     $parser = ParserHelper::compileWithGrammar(new NamedExpression("expression"), $grammar);
     $result = $parser->parse("ab");
     $this->assertNotNull($result);
     $this->assertEquals("ab", $result->getString());
     $result = $parser->parse("ab(");
     $this->assertNotNull($result);
     $this->assertEquals("ab", $result->getString());
     $result = $parser->parse("ab(c(d)ef)g");
     $this->assertNotNull($result);
     $this->assertEquals("ab(c(d)ef)g", $result->getString());
     $this->assertEquals("abg", $result->getResult()->getPart(0)->getString() . $result->getResult()->getPart(4)->getString());
 }