comrogue-pi/tools/pidl/lib/Parse/Pidl/Expr.pm

1445 lines
19 KiB
Perl
Raw Normal View History

####################################################################
#
# This file was generated using Parse::Yapp version 1.05.
#
# Don't edit this file, use source file instead.
#
# ANY CHANGE MADE HERE WILL BE LOST !
#
####################################################################
package Parse::Pidl::Expr;
use vars qw ( @ISA );
use strict;
@ISA= qw ( Parse::Yapp::Driver );
use Parse::Yapp::Driver;
sub new {
my($class)=shift;
ref($class)
and $class=ref($class);
my($self)=$class->SUPER::new( yyversion => '1.05',
yystates =>
[
{#State 0
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'NUM' => 5,
'TEXT' => 6,
"(" => 7,
"!" => 8,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 2,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 1
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"(" => 7,
"!" => 8,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 14,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 2
ACTIONS => {
'' => 16,
"-" => 15,
"<" => 17,
"+" => 18,
"%" => 19,
"==" => 20,
"^" => 21,
"*" => 22,
">>" => 23,
"!=" => 24,
"?" => 25,
"||" => 26,
"&&" => 27,
"&" => 28,
"/" => 29,
"|" => 30,
"<<" => 32,
"=>" => 31,
"<=" => 33,
">" => 34
}
},
{#State 3
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 35,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 4
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 36,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 5
DEFAULT => -1
},
{#State 6
DEFAULT => -2
},
{#State 7
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 38,
'var' => 37,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 8
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 39,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 9
ACTIONS => {
"*" => 9,
'VAR' => 41
},
GOTOS => {
'possible_pointer' => 40
}
},
{#State 10
ACTIONS => {
"(" => 42
},
DEFAULT => -30
},
{#State 11
ACTIONS => {
"->" => 43,
"." => 44
},
DEFAULT => -4
},
{#State 12
DEFAULT => -3
},
{#State 13
DEFAULT => -32
},
{#State 14
ACTIONS => {
"^" => 21,
"=>" => 31,
"<=" => 33
},
DEFAULT => -26
},
{#State 15
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 45,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 16
DEFAULT => 0
},
{#State 17
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 46,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 18
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 47,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 19
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 48,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 20
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 49,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 21
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 50,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 22
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 51,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 23
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 52,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 24
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 53,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 25
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 54,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 26
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 55,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 27
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 56,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 28
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 57,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 29
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 58,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 30
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 59,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 31
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 60,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 32
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 61,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 33
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 62,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 34
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 63,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 35
ACTIONS => {
"^" => 21,
"=>" => 31,
"<=" => 33
},
DEFAULT => -5
},
{#State 36
ACTIONS => {
"^" => 21,
"=>" => 31,
"<=" => 33
},
DEFAULT => -27
},
{#State 37
ACTIONS => {
")" => 64,
"->" => 43,
"." => 44
},
DEFAULT => -4
},
{#State 38
ACTIONS => {
"-" => 15,
"<" => 17,
"+" => 18,
"%" => 19,
"==" => 20,
"^" => 21,
"*" => 22,
")" => 65,
">>" => 23,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"/" => 29,
"|" => 30,
"=>" => 31,
"<<" => 32,
"<=" => 33,
">" => 34
}
},
{#State 39
ACTIONS => {
"-" => 15,
"<" => 17,
"+" => 18,
"%" => 19,
"==" => 20,
"^" => 21,
"*" => 22,
">>" => 23,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"/" => 29,
"|" => 30,
"=>" => 31,
"<<" => 32,
"<=" => 33,
">" => 34
},
DEFAULT => -24
},
{#State 40
DEFAULT => -31
},
{#State 41
DEFAULT => -30
},
{#State 42
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
DEFAULT => -37,
GOTOS => {
'exp' => 69,
'var' => 11,
'args' => 66,
'func' => 12,
'opt_args' => 70,
'exp_or_possible_pointer' => 67,
'possible_pointer' => 68
}
},
{#State 43
ACTIONS => {
'VAR' => 71
}
},
{#State 44
ACTIONS => {
'VAR' => 72
}
},
{#State 45
ACTIONS => {
"<" => 17,
"==" => 20,
"^" => 21,
">>" => 23,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"|" => 30,
"=>" => 31,
"<<" => 32,
"<=" => 33,
">" => 34
},
DEFAULT => -7
},
{#State 46
ACTIONS => {
"==" => 20,
"^" => 21,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"|" => 30,
"=>" => 31,
"<=" => 33
},
DEFAULT => -10
},
{#State 47
ACTIONS => {
"<" => 17,
"==" => 20,
"^" => 21,
">>" => 23,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"|" => 30,
"=>" => 31,
"<<" => 32,
"<=" => 33,
">" => 34
},
DEFAULT => -6
},
{#State 48
ACTIONS => {
"-" => 15,
"<" => 17,
"+" => 18,
"==" => 20,
"^" => 21,
">>" => 23,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"|" => 30,
"=>" => 31,
"<<" => 32,
"<=" => 33,
">" => 34
},
DEFAULT => -9
},
{#State 49
ACTIONS => {
"^" => 21,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"|" => 30,
"=>" => 31,
"<=" => 33
},
DEFAULT => -13
},
{#State 50
ACTIONS => {
"-" => 15,
"<" => 17,
"+" => 18,
"%" => 19,
"==" => 20,
"^" => 21,
"*" => 22,
">>" => 23,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"/" => 29,
"|" => 30,
"=>" => 31,
"<<" => 32,
"<=" => 33,
">" => 34
},
DEFAULT => -28
},
{#State 51
ACTIONS => {
"-" => 15,
"<" => 17,
"+" => 18,
"==" => 20,
"^" => 21,
">>" => 23,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"|" => 30,
"=>" => 31,
"<<" => 32,
"<=" => 33,
">" => 34
},
DEFAULT => -8
},
{#State 52
ACTIONS => {
"<" => 17,
"==" => 20,
"^" => 21,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"|" => 30,
"=>" => 31,
"<=" => 33,
">" => 34
},
DEFAULT => -17
},
{#State 53
ACTIONS => {
"^" => 21,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"|" => 30,
"=>" => 31,
"<=" => 33
},
DEFAULT => -18
},
{#State 54
ACTIONS => {
":" => 73,
"-" => 15,
"<" => 17,
"+" => 18,
"%" => 19,
"==" => 20,
"^" => 21,
"*" => 22,
">>" => 23,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"/" => 29,
"|" => 30,
"=>" => 31,
"<<" => 32,
"<=" => 33,
">" => 34
}
},
{#State 55
ACTIONS => {
"^" => 21,
"?" => 25,
"=>" => 31,
"<=" => 33
},
DEFAULT => -19
},
{#State 56
ACTIONS => {
"^" => 21,
"?" => 25,
"||" => 26,
"=>" => 31,
"<=" => 33
},
DEFAULT => -20
},
{#State 57
ACTIONS => {
"^" => 21,
"?" => 25,
"&&" => 27,
"||" => 26,
"|" => 30,
"=>" => 31,
"<=" => 33
},
DEFAULT => -21
},
{#State 58
ACTIONS => {
"-" => 15,
"<" => 17,
"+" => 18,
"==" => 20,
"^" => 21,
">>" => 23,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"|" => 30,
"=>" => 31,
"<<" => 32,
"<=" => 33,
">" => 34
},
DEFAULT => -25
},
{#State 59
ACTIONS => {
"^" => 21,
"?" => 25,
"&&" => 27,
"||" => 26,
"=>" => 31,
"<=" => 33
},
DEFAULT => -12
},
{#State 60
ACTIONS => {
"-" => 15,
"<" => 17,
"+" => 18,
"%" => 19,
"==" => 20,
"^" => 21,
"*" => 22,
">>" => 23,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"/" => 29,
"|" => 30,
"=>" => 31,
"<<" => 32,
"<=" => 33,
">" => 34
},
DEFAULT => -15
},
{#State 61
ACTIONS => {
"<" => 17,
"==" => 20,
"^" => 21,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"|" => 30,
"=>" => 31,
"<=" => 33,
">" => 34
},
DEFAULT => -16
},
{#State 62
ACTIONS => {
"-" => 15,
"<" => 17,
"+" => 18,
"%" => 19,
"==" => 20,
"^" => 21,
"*" => 22,
">>" => 23,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"/" => 29,
"|" => 30,
"=>" => 31,
"<<" => 32,
"<=" => 33,
">" => 34
},
DEFAULT => -14
},
{#State 63
ACTIONS => {
"==" => 20,
"^" => 21,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"|" => 30,
"=>" => 31,
"<=" => 33
},
DEFAULT => -11
},
{#State 64
DEFAULT => -34
},
{#State 65
DEFAULT => -29
},
{#State 66
DEFAULT => -38
},
{#State 67
ACTIONS => {
"," => 74
},
DEFAULT => -41
},
{#State 68
DEFAULT => -32
},
{#State 69
ACTIONS => {
"-" => 15,
"<" => 17,
"+" => 18,
"%" => 19,
"==" => 20,
"^" => 21,
"*" => 22,
">>" => 23,
"!=" => 24,
"?" => 25,
"&&" => 27,
"||" => 26,
"&" => 28,
"/" => 29,
"|" => 30,
"=>" => 31,
"<<" => 32,
"<=" => 33,
">" => 34
},
DEFAULT => -39
},
{#State 70
ACTIONS => {
")" => 75
}
},
{#State 71
DEFAULT => -35
},
{#State 72
DEFAULT => -33
},
{#State 73
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 76,
'var' => 11,
'func' => 12,
'possible_pointer' => 13
}
},
{#State 74
ACTIONS => {
"-" => 1,
"~" => 3,
"&" => 4,
'TEXT' => 6,
'NUM' => 5,
"!" => 8,
"(" => 7,
"*" => 9,
'VAR' => 10
},
GOTOS => {
'exp' => 69,
'var' => 11,
'args' => 77,
'func' => 12,
'exp_or_possible_pointer' => 67,
'possible_pointer' => 68
}
},
{#State 75
DEFAULT => -36
},
{#State 76
ACTIONS => {
"^" => 21,
"=>" => 31,
"<=" => 33
},
DEFAULT => -22
},
{#State 77
DEFAULT => -42
}
],
yyrules =>
[
[#Rule 0
'$start', 2, undef
],
[#Rule 1
'exp', 1, undef
],
[#Rule 2
'exp', 1,
sub
#line 24 "expr.yp"
{ "\"$_[1]\"" }
],
[#Rule 3
'exp', 1, undef
],
[#Rule 4
'exp', 1, undef
],
[#Rule 5
'exp', 2,
sub
#line 30 "expr.yp"
{ "~$_[2]" }
],
[#Rule 6
'exp', 3,
sub
#line 32 "expr.yp"
{ "$_[1] + $_[3]" }
],
[#Rule 7
'exp', 3,
sub
#line 34 "expr.yp"
{ "$_[1] - $_[3]" }
],
[#Rule 8
'exp', 3,
sub
#line 36 "expr.yp"
{ "$_[1] * $_[3]" }
],
[#Rule 9
'exp', 3,
sub
#line 38 "expr.yp"
{ "$_[1] % $_[3]" }
],
[#Rule 10
'exp', 3,
sub
#line 40 "expr.yp"
{ "$_[1] < $_[3]" }
],
[#Rule 11
'exp', 3,
sub
#line 42 "expr.yp"
{ "$_[1] > $_[3]" }
],
[#Rule 12
'exp', 3,
sub
#line 44 "expr.yp"
{ "$_[1] | $_[3]" }
],
[#Rule 13
'exp', 3,
sub
#line 46 "expr.yp"
{ "$_[1] == $_[3]" }
],
[#Rule 14
'exp', 3,
sub
#line 48 "expr.yp"
{ "$_[1] <= $_[3]" }
],
[#Rule 15
'exp', 3,
sub
#line 50 "expr.yp"
{ "$_[1] => $_[3]" }
],
[#Rule 16
'exp', 3,
sub
#line 52 "expr.yp"
{ "$_[1] << $_[3]" }
],
[#Rule 17
'exp', 3,
sub
#line 54 "expr.yp"
{ "$_[1] >> $_[3]" }
],
[#Rule 18
'exp', 3,
sub
#line 56 "expr.yp"
{ "$_[1] != $_[3]" }
],
[#Rule 19
'exp', 3,
sub
#line 58 "expr.yp"
{ "$_[1] || $_[3]" }
],
[#Rule 20
'exp', 3,
sub
#line 60 "expr.yp"
{ "$_[1] && $_[3]" }
],
[#Rule 21
'exp', 3,
sub
#line 62 "expr.yp"
{ "$_[1] & $_[3]" }
],
[#Rule 22
'exp', 5,
sub
#line 64 "expr.yp"
{ "$_[1]?$_[3]:$_[5]" }
],
[#Rule 23
'exp', 2,
sub
#line 66 "expr.yp"
{ "~$_[1]" }
],
[#Rule 24
'exp', 2,
sub
#line 68 "expr.yp"
{ "not $_[1]" }
],
[#Rule 25
'exp', 3,
sub
#line 70 "expr.yp"
{ "$_[1] / $_[3]" }
],
[#Rule 26
'exp', 2,
sub
#line 72 "expr.yp"
{ "-$_[2]" }
],
[#Rule 27
'exp', 2,
sub
#line 74 "expr.yp"
{ "&$_[2]" }
],
[#Rule 28
'exp', 3,
sub
#line 76 "expr.yp"
{ "$_[1]^$_[3]" }
],
[#Rule 29
'exp', 3,
sub
#line 78 "expr.yp"
{ "($_[2])" }
],
[#Rule 30
'possible_pointer', 1,
sub
#line 82 "expr.yp"
{ $_[0]->_Lookup($_[1]) }
],
[#Rule 31
'possible_pointer', 2,
sub
#line 84 "expr.yp"
{ $_[0]->_Dereference($_[2]); "*$_[2]" }
],
[#Rule 32
'var', 1,
sub
#line 88 "expr.yp"
{ $_[0]->_Use($_[1]) }
],
[#Rule 33
'var', 3,
sub
#line 90 "expr.yp"
{ $_[0]->_Use("$_[1].$_[3]") }
],
[#Rule 34
'var', 3,
sub
#line 92 "expr.yp"
{ "($_[2])" }
],
[#Rule 35
'var', 3,
sub
#line 94 "expr.yp"
{ $_[0]->_Use("*$_[1]"); $_[1]."->".$_[3] }
],
[#Rule 36
'func', 4,
sub
#line 99 "expr.yp"
{ "$_[1]($_[3])" }
],
[#Rule 37
'opt_args', 0,
sub
#line 104 "expr.yp"
{ "" }
],
[#Rule 38
'opt_args', 1, undef
],
[#Rule 39
'exp_or_possible_pointer', 1, undef
],
[#Rule 40
'exp_or_possible_pointer', 1, undef
],
[#Rule 41
'args', 1, undef
],
[#Rule 42
'args', 3,
sub
#line 118 "expr.yp"
{ "$_[1], $_[3]" }
]
],
@_);
bless($self,$class);
}
#line 121 "expr.yp"
package Parse::Pidl::Expr;
sub _Lexer {
my($parser)=shift;
$parser->YYData->{INPUT}=~s/^[ \t]//;
for ($parser->YYData->{INPUT}) {
if (s/^(0x[0-9A-Fa-f]+)//) {
$parser->YYData->{LAST_TOKEN} = $1;
return('NUM',$1);
}
if (s/^([0-9]+(?:\.[0-9]+)?)//) {
$parser->YYData->{LAST_TOKEN} = $1;
return('NUM',$1);
}
if (s/^([A-Za-z_][A-Za-z0-9_]*)//) {
$parser->YYData->{LAST_TOKEN} = $1;
return('VAR',$1);
}
if (s/^\"(.*?)\"//) {
$parser->YYData->{LAST_TOKEN} = $1;
return('TEXT',$1);
}
if (s/^(==|!=|<=|>=|->|\|\||<<|>>|&&)//s) {
$parser->YYData->{LAST_TOKEN} = $1;
return($1,$1);
}
if (s/^(.)//s) {
$parser->YYData->{LAST_TOKEN} = $1;
return($1,$1);
}
}
}
sub _Use($$)
{
my ($self, $x) = @_;
if (defined($self->YYData->{USE})) {
return $self->YYData->{USE}->($x);
}
return $x;
}
sub _Lookup($$)
{
my ($self, $x) = @_;
return $self->YYData->{LOOKUP}->($x);
}
sub _Dereference($$)
{
my ($self, $x) = @_;
if (defined($self->YYData->{DEREFERENCE})) {
$self->YYData->{DEREFERENCE}->($x);
}
}
sub _Error($)
{
my ($self) = @_;
if (defined($self->YYData->{LAST_TOKEN})) {
$self->YYData->{ERROR}->("Parse error in `".$self->YYData->{FULL_INPUT}."' near `". $self->YYData->{LAST_TOKEN} . "'");
} else {
$self->YYData->{ERROR}->("Parse error in `".$self->YYData->{FULL_INPUT}."'");
}
}
sub Run {
my($self, $data, $error, $lookup, $deref, $use) = @_;
$self->YYData->{FULL_INPUT} = $data;
$self->YYData->{INPUT} = $data;
$self->YYData->{LOOKUP} = $lookup;
$self->YYData->{DEREFERENCE} = $deref;
$self->YYData->{ERROR} = $error;
$self->YYData->{USE} = $use;
return $self->YYParse( yylex => \&_Lexer, yyerror => \&_Error);
}
1;