public function rewriteExpression(ExpressionInterface $expression) { /** @var ConcatenatedExpression $expression */ $part_expressions = array(); $mapping = array(); foreach ($expression->getParts() as $key => $part) { if ($part instanceof ConcatenatedExpression === true && $part !== $expression) { /** @var ConcatenatedExpression $part */ // $rewritten_inner_parts = array_map(function (ExpressionInterface $inner_part) { // return $this->getRecursiveHandler()->rewriteExpression($inner_part); // }, array_values($part->getParts())); // // $rewritten_inner_part_expressions = array_map(function (RewrittenExpressionContainer $rewritten) { // return $rewritten->getExpression(); // }, $rewritten_inner_parts); $part_expressions = array_merge($part_expressions, array_values($part->getParts())); // $rewritten_part_expressions = array_map(function (RewrittenExpressionContainer $rewritten) { // return $rewritten->getExpression(); // }, $rewritten_parts); $mapping[] = array($key, array_keys($part->getParts())); } else { $part_expressions[] = $part; $mapping[] = $key; } } return new RewrittenExpressionContainer(new ConcatenatedExpression($part_expressions), new ConcatenatedResultFlattenSimplifier($mapping)); }
public function flattenExpression(ExpressionInterface $expression) { /** @var $expression \PeterVanDommelen\Parser\Expression\Concatenated\ConcatenatedExpression */ $expressions = array($expression); foreach ($expression->getParts() as $part) { $expressions = array_merge($expressions, $this->getRecursiveHandler()->flattenExpression($part)); } return array_unique($expressions, SORT_REGULAR); }
public function rewriteExpression(ExpressionInterface $expression) { /** @var ConcatenatedExpression $expression */ $parts = $expression->getParts(); $key = key($parts); $part = current($parts); $rewritten_part = $this->getRecursiveHandler()->rewriteExpression($part); return new RewrittenExpressionContainer($rewritten_part->getExpression(), new ConcatenatedResultSimplifier($key, $rewritten_part->getResultRewriter())); }
public function isPotentiallyEmpty(ExpressionInterface $expression) { /** @var $expression ConcatenatedExpression */ foreach ($expression->getParts() as $part) { if ($this->getRecursiveHandler()->isPotentiallyEmpty($part) === false) { return false; } } return true; }
public function rewriteExpression(ExpressionInterface $expression) { /** @var ConcatenatedExpression $expression */ $rewritten_parts = array_map(array($this->getRecursiveHandler(), "rewriteExpression"), $expression->getParts()); $rewritten_part_expressions = array_map(function (RewrittenExpressionContainer $rewritten) { return $rewritten->getExpression(); }, $rewritten_parts); $rewritten_part_result_rewriters = array_map(function (RewrittenExpressionContainer $rewritten) { return $rewritten->getResultRewriter(); }, $rewritten_parts); return new RewrittenExpressionContainer(new ConcatenatedExpression($rewritten_part_expressions), new ConcatenatedExpressionResultRewriter($rewritten_part_result_rewriters)); }
public function compile(ExpressionInterface $expression) { /** @var $expression \PeterVanDommelen\Parser\Expression\Concatenated\ConcatenatedExpression */ return new ConcatenatedParser(array_map(array($this->getRecursiveHandler(), "compile"), $expression->getParts())); }