public function __construct(Parser $p) { $t = new Parser\Sequence(); $t->add(new Parser\CharClass(array('+', '-'))); $t->add($p); $t->setHandler(new Handler\Signed()); parent::__construct($t); }
/** * @dataProvider operatorProvider */ public function testOperator($expression, $expected) { $sum = new P\Sequence(); $sum->add((new P\Number())->setHandler(new H\Value())); $sum->add(new P\CharClass(array('+', '-', '*', '/', '^'))); $sum->add((new P\Number())->setHandler(new H\Value())); $sum->setHandler(new H\Operator()); $this->assertEquals($expected, $this->evaluate($sum, $expression)); }
protected function sum(Parser $t) { $tail = new P\Sequence(); $tail->add(new P\CharClass(array('+', '-'))); $tail->add($t); $tail->setHandler(new H\Operator()); $p = new P\Sequence(); $p->add($t); $p->add(new P\Repeat($tail)); return $p; }