1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverpackage ANTLR::Runtime::RecognitionException;
2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruveruse Carp;
4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruveruse Readonly;
5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruveruse Moose;
7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruveruse Moose::Util::TypeConstraints;
8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverextends 'ANTLR::Runtime::Exception';
10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverhas 'input' => (
12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is   => 'ro',
13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    does => 'ANTLR::Runtime::IntStream',
14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    required => 1,
15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver);
16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverhas 'index' => (
18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is  => 'ro',
19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    isa => 'Int',
20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    default => 0,
21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver);
22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverhas 'token' => (
24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is   => 'ro',
25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    does => 'ANTLR::Runtime::Token',
26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver);
27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
28324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverhas 'node' => (
29324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is  => 'ro',
30324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    isa => 'Any',
31324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver);
32324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
33324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversubtype 'Char'
34324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    => as 'Str'
35324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    => where { $_ eq '-1' || length == 1 };
36324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
37324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverhas 'c' => (
38324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is  => 'ro',
39324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    isa => 'Maybe[Char]',
40324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver);
41324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
42324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverhas 'line' => (
43324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is  => 'ro',
44324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    isa => 'Int',
45324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    default => 0,
46324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver);
47324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
48324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverhas 'char_position_in_line' => (
49324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is  => 'ro',
50324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    isa => 'Int',
51324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    default => 0,
52324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver);
53324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
54324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverhas 'approximate_line_info' => (
55324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    is  => 'rw',
56324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    isa => 'Bool',
57324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver);
58324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
59324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub BUILDARGS {
60324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($class, @args) = @_;
61324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my $args = $class->SUPER::BUILDARGS(@args);
62324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
63324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my $new_args = { %$args };
64324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my $input = $args->{input};
65324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    $new_args->{input} = $input;
66324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    $new_args->{index} = $input->index();
67324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
68324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    if ($input->does('ANTLR::Runtime::TokenStream')) {
69324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        my $token = $input->LT(1);
70324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        $new_args->{token} = $token;
71324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        $new_args->{line} = $token->get_line();
72324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        $new_args->{char_position_in_line} = $token->get_char_position_in_line();
73324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
74324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
75324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    if ($input->does('ANTLR::Runtime::TreeNodeStream')) {
76324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        # extract_information_from_tree_node_stream($input);
77324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
78324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    elsif ($input->does('ANTLR::Runtime::CharStream')) {
79324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        $new_args->{c} = $input->LA(1);
80324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        $new_args->{line} = $input->get_line();
81324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        $new_args->{char_position_in_line} = $input->get_char_position_in_line();
82324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
83324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    else {
84324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        $new_args->{c} = $input->LA(1);
85324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
86324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
87324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    return $new_args;
88324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
89324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
90324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub get_unexpected_type {
91324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
92324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
93324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    if ($self->input->isa('ANTLR::Runtime::TokenStream')) {
94324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return $self->token->get_type();
95324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    } else {
96324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver        return $self->c;
97324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    }
98324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
99324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
100324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub get_c {
101324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
102324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    return $self->c;
103324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
104324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
105324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub get_line {
106324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
107324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    return $self->line;
108324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
109324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
110324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub get_char_position_in_line {
111324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
112324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    return $self->char_position_in_line;
113324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
114324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
115324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruversub get_token {
116324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    my ($self) = @_;
117324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver    return $self->token;
118324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver}
119324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver
120324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverno Moose;
121324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver__PACKAGE__->meta->make_immutable();
122324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver1;
123