Exemple #1
0
 public function build(\andyleap\PEGParser\ExpressionList $exprlist)
 {
     if (is_array($this['tokens'])) {
         $choice = $exprlist->addChoice();
         foreach ($this['tokens'] as $tokens) {
             if (is_array($tokens['token'])) {
                 $group = $choice->addGroup();
                 foreach ($tokens['token'] as $token) {
                     $token->build($group);
                 }
             } else {
                 $tokens['token']->build($choice);
             }
         }
     } else {
         if (is_array($this['tokens']['token'])) {
             foreach ($this['tokens']['token'] as $token) {
                 $token->build($exprlist);
             }
         } else {
             $this['tokens']['token']->build($exprlist);
         }
     }
 }
Exemple #2
0
 public function build(ExpressionList $exprlist)
 {
     $repeat = Expression::ONE;
     if (isset($this['zero_or_more'])) {
         $repeat = Expression::ZERO_OR_MORE;
     } elseif (isset($this['one_or_more'])) {
         $repeat = Expression::ONE_OR_MORE;
     } elseif (isset($this['one_or_zero'])) {
         $repeat = Expression::ONE_OR_ZERO;
     }
     $name = '';
     if (isset($this['tokenname'])) {
         $name = $this['tokenname']->getText();
     }
     $omit = FALSE;
     if (isset($this['omit'])) {
         $omit = TRUE;
     }
     if (isset($this['literal'])) {
         $exprlist->addLiteral($this['literal']->getText(), $name, $omit, $repeat);
     }
     if (isset($this['name'])) {
         if ($name == '' && isset($this['named'])) {
             $name = $this['name']->getText();
         }
         $exprlist->addSubRule($this['name']->getText(), $name, $omit, $repeat);
     }
     if (isset($this['set'])) {
         $exprlist->addSet($this['set']->getText(), $name, $omit, $repeat);
     }
     if (isset($this['regex'])) {
         $exprlist->addRegex($this['regex']->getText(), $name, $omit, $repeat);
     }
     if (isset($this['peren'])) {
         $group = $exprlist->addGroup('', FALSE, $repeat);
         $this['peren']['choice']->build($group);
     }
     if (isset($this['whitespace'])) {
         if ($this['whitespace']->getText() == '>') {
             $exprlist->addRegex('[ \\t]*', $name, $omit, $repeat);
         } else {
             $exprlist->addRegex('[ \\t]+', $name, $omit, $repeat);
         }
     }
 }