protected function doScan(Scanner $scanner) { $quotechar = $scanner->tokenType(); $ret = false; $string = ""; while ($token = $scanner->nextToken()) { if ($token == $quotechar) { $ret = true; break; } $string .= $scanner->token(); } if ($string && !$this->discard) { $scanner->getContext()->pushResult($string); } return $ret; }
function trigger(Scanner $scanner) { if ($scanner->tokenType() != Scanner::WORD) { return false; } if (is_null($this->word)) { return true; } return $this->word == $scanner->token(); }
protected function push(Scanner $scanner) { $context = $scanner->getContext(); $context->pushResult($scanner->token()); }
} $char = substr($this->in, $this->pos, 1); $this->pos++; return $char; } public function getPos() { return $this->pos; } public function pushBackChar() { $this->pos--; } public function string() { return $this->in; } } /** * Demo */ $context = new Context(); $user_in = "\$input equals '4' or \$input equals 'four'"; $reader = new StringReader($user_in); $scanner = new Scanner($reader, $context); while ($scanner->nextToken() != Scanner::EOF) { // var_dump($scanner->token(), $scanner->char_no(), $scanner->getTypeString()); print $scanner->token(); print "\t{$scanner->char_no()}"; print "\t{$scanner->getTypeString()}\n"; }
function trigger(Scanner $scanner) { return $scanner->token() == $this->char; }
protected function push(Scanner $scan) { $scan->getContext()->push($scan->token()); }