blob: 7cd8f2189f0aaec2b77eabe63d635e072e3c8450 [file] [log] [blame]
package ANTLR::Runtime::Token;
use Readonly;
use feature qw( state );
use ANTLR::Runtime::CharStream;
#use ANTLR::Runtime::CommonToken;
use Moose::Role;
Readonly my $EOR_TOKEN_TYPE => 1;
sub EOR_TOKEN_TYPE { $EOR_TOKEN_TYPE }
# imaginary tree navigation type; traverse "get child" link
Readonly my $DOWN => 2;
sub DOWN { $DOWN }
# imaginary tree navigation type; finish with a child list
Readonly my $UP => 3;
sub UP { $UP }
Readonly my $MIN_TOKEN_TYPE => $UP + 1;
sub MIN_TOKEN_TYPE { $MIN_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.
Readonly my $DEFAULT_CHANNEL => 0;
sub DEFAULT_CHANNEL { $DEFAULT_CHANNEL }
# Anything on different channel than DEFAULT_CHANNEL is not parsed
# by parser.
Readonly my $HIDDEN_CHANNEL => 99;
sub HIDDEN_CHANNEL { $HIDDEN_CHANNEL }
sub EOF { ANTLR::Runtime::CharStream->EOF }
#Readonly my $EOF_TOKEN => ANTLR::Runtime::CommonToken->new({ type => EOF });
sub EOF_TOKEN {
require ANTLR::Runtime::CommonToken;
state $EOF_TOKEN = ANTLR::Runtime::CommonToken->new({ type => EOF });
return $EOF_TOKEN;
}
Readonly my $INVALID_TOKEN_TYPE => 0;
sub INVALID_TOKEN_TYPE { $INVALID_TOKEN_TYPE }
#Readonly my $INVALID_TOKEN => ANTLR::Runtime::CommonToken->new({ type => INVALID_TOKEN_TYPE });
sub INVALID_TOKEN {
require ANTLR::Runtime::CommonToken;
state $INVALID_TOKEN = ANTLR::Runtime::CommonToken->new({ type => INVALID_TOKEN_TYPE });
return $INVALID_TOKEN;
}
# 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.
#Readonly my $SKIP_TOKEN => ANTLR::Runtime::CommonToken->new({ type => INVALID_TOKEN_TYPE });
sub SKIP_TOKEN {
require ANTLR::Runtime::CommonToken;
state $SKIP_TOKEN = ANTLR::Runtime::CommonToken->new({ type => INVALID_TOKEN_TYPE });
return $SKIP_TOKEN;
}
requires 'get_text', 'set_text';
requires 'get_type', 'set_type';
requires 'get_line', 'set_line';
requires 'get_char_position_in_line', 'set_char_position_in_line';
requires 'get_channel', 'set_channel';
requires 'get_token_index', 'set_token_index';
requires 'get_input_stream', 'set_input_stream';
no Moose::Role;
1;