public function rewriteExpression(ExpressionInterface $expression) { /** @var AlternativeExpression $expression */ $alternatives = $expression->getAlternatives(); $alternative = current($alternatives); $key = key($alternatives); $rewritten = $this->getRecursiveHandler()->rewriteExpression($alternative); return new RewrittenExpressionContainer($rewritten->getExpression(), new AlternativeResultSimplifier($key, $rewritten->getResultRewriter())); }
public function flattenExpression(ExpressionInterface $expression) { /** @var $expression AlternativeExpression */ $expressions = array($expression); foreach ($expression->getAlternatives() as $alternative) { $expressions = array_merge($expressions, $this->getRecursiveHandler()->flattenExpression($alternative)); } return array_unique($expressions, SORT_REGULAR); }
public function isPotentiallyEmpty(ExpressionInterface $expression) { /** @var $expression AlternativeExpression */ $potentially_empty = false; foreach ($expression->getAlternatives() as $alternative) { $alternative_is_potentially_empty = $this->getRecursiveHandler()->isPotentiallyEmpty($alternative) === true; $potentially_empty = $potentially_empty || $alternative_is_potentially_empty; } return $potentially_empty; }
public function rewriteExpression(ExpressionInterface $expression) { /** @var AlternativeExpression $expression */ $rewritten_alternatives = array_map(array($this->getRecursiveHandler(), "rewriteExpression"), $expression->getAlternatives()); $rewritten_alternative_expressions = array_map(function (RewrittenExpressionContainer $rewritten) { return $rewritten->getExpression(); }, $rewritten_alternatives); $rewritten_alternative_result_rewriters = array_map(function (RewrittenExpressionContainer $rewritten) { return $rewritten->getResultRewriter(); }, $rewritten_alternatives); return new RewrittenExpressionContainer(new AlternativeExpression($rewritten_alternative_expressions), new AlternativeExpressionResultRewriter($rewritten_alternative_result_rewriters)); }
public function compile(ExpressionInterface $expression) { /** @var $expression AlternativeExpression */ return new AlternativeParser(array_map(array($this->getRecursiveHandler(), "compile"), $expression->getAlternatives())); }