Exemplo n.º 1
0
 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()));
 }