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); } } }
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); } } }