charPositionInLine=-1; $ct->input = $input; $ct->type = $type; $ct->channel = $channel; $ct->start = $start; $ct->stop = $stop; return $ct; } public static function forType($type){ return CommonToken::forInput($input=null, $type); } public static function forTypeAndText($type, $text) { $ct = new CommonToken(); $ct->type = $type; $ct->channel = TokenConst::$DEFAULT_CHANNEL; $ct->text = $text; return $ct; } /* public CommonToken(Token oldToken) { text = oldToken.getText(); type = oldToken.getType(); line = oldToken.getLine(); index = oldToken.getTokenIndex(); charPositionInLine = oldToken.getCharPositionInLine(); channel = oldToken.getChannel(); if ( oldToken instanceof CommonToken ) { start = ((CommonToken)oldToken).start; stop = ((CommonToken)oldToken).stop; } } */ public function getType() { return $this->type; } public function setLine($line) { $this->line = $this->line; } public function getText() { if ( $this->text!=null ) { return $this->text; } if ( $this->input==null ) { return null; } $this->text = $this->input->substring($this->start,$this->stop); return $this->text; } /** Override the text for this token. getText() will return this text * rather than pulling from the buffer. Note that this does not mean * that start/stop indexes are not valid. It means that that input * was converted to a new string in the token object. */ public function setText($text) { $this->text = $this->text; } public function getLine() { return $this->line; } public function getCharPositionInLine() { return $this->charPositionInLine; } public function setCharPositionInLine($charPositionInLine) { $this->charPositionInLine = $this->charPositionInLine; } public function getChannel() { return $this->channel; } public function setChannel($channel) { $this->channel = $this->channel; } public function setType($type) { $this->type = $this->type; } public function getStartIndex() { return $this->start; } public function setStartIndex($start) { $this->start = $this->start; } public function getStopIndex() { return $this->stop; } public function setStopIndex($stop) { $this->stop = $this->stop; } public function getTokenIndex() { return $this->index; } public function setTokenIndex($index) { $this->index = $this->index; } public function getInputStream() { return $this->input; } public function setInputStream($input) { $this->input = $this->input; } public function toString() { $channelStr = ""; if ( $this->channel>0 ) { $channelStr=",channel=".$this->channel; } $txt = $this->getText(); if ( $txt!=null ) { $txt = str_replace("\n",'\n', $txt); $txt = str_replace("\r",'\r', $txt); $txt = str_replace("\t",'\t', $txt); } else { $txt = ""; } return "[@".$this->getTokenIndex().",".$this->start.":".$this->stop."='".$txt."',<".$this->type.">".$channelStr.",".$this->line.":".$this->getCharPositionInLine()."]"; } public function __toString(){ return $this->toString(); } } TokenConst::$DEFAULT_CHANNEL=0; TokenConst::$INVALID_TOKEN_TYPE=0; TokenConst::$EOF = CharStreamConst::$EOF; TokenConst::$EOF_TOKEN = CommonToken::forType(TokenConst::$EOF); TokenConst::$INVALID_TOKEN_TYPE = 0; TokenConst::$INVALID_TOKEN = CommonToken::forType(TokenConst::$INVALID_TOKEN_TYPE); /** In an action, a lexer rule can set token to this SKIP_TOKEN and ANTLR * will avoid creating a token for this symbol and try to fetch another. */ TokenConst::$SKIP_TOKEN = CommonToken::forType(TokenConst::$INVALID_TOKEN_TYPE); /** All tokens go to the parser (unless skip() is called in that rule) * on a particular "channel". The parser tunes to a particular channel * so that whitespace etc... can go to the parser on a "hidden" channel. */ TokenConst::$DEFAULT_CHANNEL = 0; /** Anything on different channel than DEFAULT_CHANNEL is not parsed * by parser. */ TokenConst::$HIDDEN_CHANNEL = 99; TokenConst::$MIN_TOKEN_TYPE = TokenConst::$UP+1; ?>