siahsd/pidl/lib/Parse/Pidl/Expr.pm
Wilco Baan Hofman ad758df90b Add pidl. Add preliminary work on SecIP.
Please note that the Alphatronics implementation does not follow the Vebon specification.
An extra padding byte had to be added to the idl..
2012-08-01 03:30:50 +02:00

1444 lines
19 KiB
Perl

####################################################################
#
# 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;