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