1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverpackage ANTLR::Runtime::Parser; 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruveruse Readonly; 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruveruse Carp; 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruveruse Moose; 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverextends 'ANTLR::Runtime::BaseRecognizer'; 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverhas 'input' => ( 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver is => 'rw', 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver does => 'ANTLR::Runtime::TokenStream' 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver); 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub reset { 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my ($self) = @_; 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver $self->SUPER::reset(); # reset all recognizer state variables 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if (defined $self->input) { 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver $self->input->seek(0); # rewind the input 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub get_current_input_symbol { 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my ($self, $input) = @_; 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return $self->input->LT(1); 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub get_missing_symbol { 30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my ($self, $arg_ref) = @_; 31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my $input = $arg_ref->{input}; 32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my $exception = $arg_ref->{exception}; 33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my $expected_token_type = $arg_ref->{expected_token_type}; 34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my $follow = $arg_ref->{follow}; 35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my $token_text; 37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if ($expected_token_type == ANTLR::Runtime::Token->EOF) { 38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver $token_text = '<missing EOF>'; 39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver else { 41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver $token_text = '<missing ' . $self->get_token_names()->[$expected_token_type] . '>'; 42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my $t = ANTLR::Runtime::CommonToken->new({ 45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver type => $expected_token_type, 46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver text => $token_text 47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver }); 48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my $current = $input->LT(1); 49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver if ($current->get_type() == ANTLR::Runtime::Token->EOF) { 50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver $current = $input->LT(-1); 51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver } 52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver $t->set_line($current->get_line()); 53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver $t->set_char_position_in_line($current->get_char_position_in_line()); 54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver $t->set_channel($self->DEFAULT_TOKEN_CHANNEL); 55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return $t; 57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub set_token_stream { 60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my ($self, $input) = @_; 61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver $self->input(undef); 63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver $self->reset(); 64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver $self->input($input); 65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub get_token_stream { 68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my ($self) = @_; 69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return $self->input; 71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub get_source_name { 74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my ($self) = @_; 75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return $self->input->get_source_name(); 76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub trace_in { 79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my ($self, $rule_name, $rule_index) = @_; 80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver $self->SUPER::trace_in($rule_name, $rule_index, $self->input->LT(1)); 82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub trace_out { 85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver my ($self, $rule_name, $rule_index) = @_; 86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver $self->SUPER::trace_out($rule_name, $rule_index, $self->input->LT(1)); 88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver} 89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverno Moose; 91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver__PACKAGE__->meta->make_immutable(); 92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver1; 93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver__END__ 94