summaryrefslogtreecommitdiff
path: root/source4/pidl/lib/Parse/Pidl/Expr.pm
diff options
context:
space:
mode:
Diffstat (limited to 'source4/pidl/lib/Parse/Pidl/Expr.pm')
-rw-r--r--source4/pidl/lib/Parse/Pidl/Expr.pm1211
1 files changed, 642 insertions, 569 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/Expr.pm b/source4/pidl/lib/Parse/Pidl/Expr.pm
index 34c30b824f..f64db508d6 100644
--- a/source4/pidl/lib/Parse/Pidl/Expr.pm
+++ b/source4/pidl/lib/Parse/Pidl/Expr.pm
@@ -38,7 +38,9 @@ sub new {
},
GOTOS => {
'exp' => 2,
- 'func' => 11
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
{#State 1
@@ -54,33 +56,33 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 12,
- 'func' => 11
+ 'exp' => 14,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
{#State 2
ACTIONS => {
- '' => 14,
- "-" => 13,
- "<" => 15,
- "+" => 16,
- "%" => 17,
- "==" => 18,
- "^" => 19,
- "*" => 20,
- ">>" => 21,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "/" => 27,
- "->" => 28,
- "|" => 29,
- "<<" => 31,
- "=>" => 30,
+ '' => 16,
+ "-" => 15,
+ "<" => 17,
+ "+" => 18,
+ "%" => 19,
+ "==" => 20,
+ "^" => 21,
+ "*" => 22,
+ ">>" => 23,
+ "!=" => 24,
+ "?" => 25,
+ "||" => 26,
+ "&&" => 27,
+ "&" => 28,
+ "/" => 29,
+ "|" => 30,
+ "<<" => 32,
+ "=>" => 31,
"<=" => 33,
- "." => 32,
">" => 34
}
},
@@ -98,7 +100,9 @@ sub new {
},
GOTOS => {
'exp' => 35,
- 'func' => 11
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
{#State 4
@@ -115,7 +119,9 @@ sub new {
},
GOTOS => {
'exp' => 36,
- 'func' => 11
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
{#State 5
@@ -137,8 +143,10 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 37,
- 'func' => 11
+ 'exp' => 38,
+ 'var' => 37,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
{#State 8
@@ -154,46 +162,49 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 38,
- 'func' => 11
+ 'exp' => 39,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
{#State 9
ACTIONS => {
- "-" => 1,
- "~" => 3,
- "&" => 4,
- 'TEXT' => 6,
- 'NUM' => 5,
- "!" => 8,
- "(" => 7,
"*" => 9,
- 'VAR' => 10
+ 'VAR' => 41
},
GOTOS => {
- 'exp' => 39,
- 'func' => 11
+ 'possible_pointer' => 40
}
},
{#State 10
ACTIONS => {
- "(" => 40
+ "(" => 42
},
- DEFAULT => -5
+ DEFAULT => -30
},
{#State 11
- DEFAULT => -3
+ ACTIONS => {
+ "->" => 43,
+ "." => 44
+ },
+ DEFAULT => -4
},
{#State 12
+ DEFAULT => -3
+ },
+ {#State 13
+ DEFAULT => -32
+ },
+ {#State 14
ACTIONS => {
- "^" => 19,
- "=>" => 30,
- "." => 32,
+ "^" => 21,
+ "=>" => 31,
"<=" => 33
},
- DEFAULT => -29
+ DEFAULT => -26
},
- {#State 13
+ {#State 15
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -206,14 +217,16 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 41,
- 'func' => 11
+ 'exp' => 45,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 14
+ {#State 16
DEFAULT => 0
},
- {#State 15
+ {#State 17
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -226,11 +239,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 42,
- 'func' => 11
+ 'exp' => 46,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 16
+ {#State 18
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -243,11 +258,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 43,
- 'func' => 11
+ 'exp' => 47,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 17
+ {#State 19
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -260,11 +277,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 44,
- 'func' => 11
+ 'exp' => 48,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 18
+ {#State 20
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -277,11 +296,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 45,
- 'func' => 11
+ 'exp' => 49,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 19
+ {#State 21
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -294,11 +315,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 46,
- 'func' => 11
+ 'exp' => 50,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 20
+ {#State 22
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -311,11 +334,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 47,
- 'func' => 11
+ 'exp' => 51,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 21
+ {#State 23
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -328,11 +353,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 48,
- 'func' => 11
+ 'exp' => 52,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 22
+ {#State 24
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -345,11 +372,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 49,
- 'func' => 11
+ 'exp' => 53,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 23
+ {#State 25
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -362,11 +391,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 50,
- 'func' => 11
+ 'exp' => 54,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 24
+ {#State 26
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -379,11 +410,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 51,
- 'func' => 11
+ 'exp' => 55,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 25
+ {#State 27
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -396,11 +429,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 52,
- 'func' => 11
+ 'exp' => 56,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 26
+ {#State 28
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -413,11 +448,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 53,
- 'func' => 11
+ 'exp' => 57,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 27
+ {#State 29
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -430,16 +467,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 54,
- 'func' => 11
- }
- },
- {#State 28
- ACTIONS => {
- 'VAR' => 55
+ 'exp' => 58,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 29
+ {#State 30
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -452,11 +486,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 56,
- 'func' => 11
+ 'exp' => 59,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 30
+ {#State 31
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -469,11 +505,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 57,
- 'func' => 11
+ 'exp' => 60,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 31
+ {#State 32
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -486,13 +524,10 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 58,
- 'func' => 11
- }
- },
- {#State 32
- ACTIONS => {
- 'VAR' => 59
+ 'exp' => 61,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
{#State 33
@@ -508,8 +543,10 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 60,
- 'func' => 11
+ 'exp' => 62,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
{#State 34
@@ -525,89 +562,91 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 61,
- 'func' => 11
+ 'exp' => 63,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
{#State 35
ACTIONS => {
- "^" => 19,
- "=>" => 30,
- "." => 32,
+ "^" => 21,
+ "=>" => 31,
"<=" => 33
},
- DEFAULT => -7
+ DEFAULT => -5
},
{#State 36
ACTIONS => {
- "^" => 19,
- "=>" => 30,
- "." => 32,
+ "^" => 21,
+ "=>" => 31,
"<=" => 33
},
- DEFAULT => -30
+ DEFAULT => -27
},
{#State 37
ACTIONS => {
- "-" => 13,
- "<" => 15,
- "+" => 16,
- "%" => 17,
- "==" => 18,
- "^" => 19,
- "*" => 20,
- ")" => 62,
- ">>" => 21,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "/" => 27,
- "->" => 28,
- "|" => 29,
- "=>" => 30,
- "<<" => 31,
- "." => 32,
- "<=" => 33,
- ">" => 34
- }
+ ")" => 64,
+ "->" => 43,
+ "." => 44
+ },
+ DEFAULT => -4
},
{#State 38
ACTIONS => {
- "-" => 13,
- "<" => 15,
- "+" => 16,
- "%" => 17,
- "==" => 18,
- "^" => 19,
- "*" => 20,
- ">>" => 21,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "/" => 27,
- "|" => 29,
- "=>" => 30,
- "<<" => 31,
- "." => 32,
+ "-" => 15,
+ "<" => 17,
+ "+" => 18,
+ "%" => 19,
+ "==" => 20,
+ "^" => 21,
+ "*" => 22,
+ ")" => 65,
+ ">>" => 23,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "/" => 29,
+ "|" => 30,
+ "=>" => 31,
+ "<<" => 32,
"<=" => 33,
">" => 34
- },
- DEFAULT => -27
+ }
},
{#State 39
ACTIONS => {
- "^" => 19,
- "=>" => 30,
- "." => 32,
- "<=" => 33
+ "-" => 15,
+ "<" => 17,
+ "+" => 18,
+ "%" => 19,
+ "==" => 20,
+ "^" => 21,
+ "*" => 22,
+ ">>" => 23,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "/" => 29,
+ "|" => 30,
+ "=>" => 31,
+ "<<" => 32,
+ "<=" => 33,
+ ">" => 34
},
- DEFAULT => -6
+ DEFAULT => -24
},
{#State 40
+ DEFAULT => -31
+ },
+ {#State 41
+ DEFAULT => -30
+ },
+ {#State 42
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -619,411 +658,410 @@ sub new {
"*" => 9,
'VAR' => 10
},
- DEFAULT => -34,
+ DEFAULT => -37,
GOTOS => {
- 'exp' => 64,
- 'args' => 63,
- 'func' => 11,
- 'opt_args' => 65
+ 'exp' => 69,
+ 'var' => 11,
+ 'args' => 66,
+ 'func' => 12,
+ 'opt_args' => 70,
+ 'exp_or_possible_pointer' => 67,
+ 'possible_pointer' => 68
}
},
- {#State 41
+ {#State 43
+ ACTIONS => {
+ 'VAR' => 71
+ }
+ },
+ {#State 44
ACTIONS => {
- "<" => 15,
- "==" => 18,
- "^" => 19,
- ">>" => 21,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "|" => 29,
- "=>" => 30,
- "<<" => 31,
- "." => 32,
+ 'VAR' => 72
+ }
+ },
+ {#State 45
+ ACTIONS => {
+ "<" => 17,
+ "==" => 20,
+ "^" => 21,
+ ">>" => 23,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "|" => 30,
+ "=>" => 31,
+ "<<" => 32,
"<=" => 33,
">" => 34
},
- DEFAULT => -9
+ DEFAULT => -7
},
- {#State 42
+ {#State 46
ACTIONS => {
- "==" => 18,
- "^" => 19,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "|" => 29,
- "=>" => 30,
- "." => 32,
+ "==" => 20,
+ "^" => 21,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "|" => 30,
+ "=>" => 31,
"<=" => 33
},
- DEFAULT => -12
+ DEFAULT => -10
},
- {#State 43
+ {#State 47
ACTIONS => {
- "<" => 15,
- "==" => 18,
- "^" => 19,
- ">>" => 21,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "|" => 29,
- "=>" => 30,
- "<<" => 31,
- "." => 32,
+ "<" => 17,
+ "==" => 20,
+ "^" => 21,
+ ">>" => 23,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "|" => 30,
+ "=>" => 31,
+ "<<" => 32,
"<=" => 33,
">" => 34
},
- DEFAULT => -8
+ DEFAULT => -6
},
- {#State 44
+ {#State 48
ACTIONS => {
- "-" => 13,
- "<" => 15,
- "+" => 16,
- "==" => 18,
- "^" => 19,
- ">>" => 21,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "|" => 29,
- "=>" => 30,
- "<<" => 31,
- "." => 32,
+ "-" => 15,
+ "<" => 17,
+ "+" => 18,
+ "==" => 20,
+ "^" => 21,
+ ">>" => 23,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "|" => 30,
+ "=>" => 31,
+ "<<" => 32,
"<=" => 33,
">" => 34
},
- DEFAULT => -11
+ DEFAULT => -9
},
- {#State 45
+ {#State 49
ACTIONS => {
- "^" => 19,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "|" => 29,
- "=>" => 30,
- "." => 32,
+ "^" => 21,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "|" => 30,
+ "=>" => 31,
"<=" => 33
},
- DEFAULT => -15
+ DEFAULT => -13
},
- {#State 46
+ {#State 50
ACTIONS => {
- "-" => 13,
- "<" => 15,
- "+" => 16,
- "%" => 17,
- "==" => 18,
- "^" => 19,
- "*" => 20,
- ">>" => 21,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "/" => 27,
- "->" => 28,
- "|" => 29,
- "=>" => 30,
- "<<" => 31,
- "." => 32,
+ "-" => 15,
+ "<" => 17,
+ "+" => 18,
+ "%" => 19,
+ "==" => 20,
+ "^" => 21,
+ "*" => 22,
+ ">>" => 23,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "/" => 29,
+ "|" => 30,
+ "=>" => 31,
+ "<<" => 32,
"<=" => 33,
">" => 34
},
- DEFAULT => -31
+ DEFAULT => -28
},
- {#State 47
+ {#State 51
ACTIONS => {
- "-" => 13,
- "<" => 15,
- "+" => 16,
- "==" => 18,
- "^" => 19,
- ">>" => 21,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "|" => 29,
- "=>" => 30,
- "<<" => 31,
- "." => 32,
+ "-" => 15,
+ "<" => 17,
+ "+" => 18,
+ "==" => 20,
+ "^" => 21,
+ ">>" => 23,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "|" => 30,
+ "=>" => 31,
+ "<<" => 32,
"<=" => 33,
">" => 34
},
- DEFAULT => -10
+ DEFAULT => -8
},
- {#State 48
+ {#State 52
ACTIONS => {
- "<" => 15,
- "==" => 18,
- "^" => 19,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "|" => 29,
- "=>" => 30,
- "." => 32,
+ "<" => 17,
+ "==" => 20,
+ "^" => 21,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "|" => 30,
+ "=>" => 31,
"<=" => 33,
">" => 34
},
- DEFAULT => -19
+ DEFAULT => -17
},
- {#State 49
+ {#State 53
ACTIONS => {
- "^" => 19,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "|" => 29,
- "=>" => 30,
- "." => 32,
+ "^" => 21,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "|" => 30,
+ "=>" => 31,
"<=" => 33
},
- DEFAULT => -20
+ DEFAULT => -18
},
- {#State 50
+ {#State 54
ACTIONS => {
- ":" => 66,
- "-" => 13,
- "<" => 15,
- "+" => 16,
- "%" => 17,
- "==" => 18,
- "^" => 19,
- "*" => 20,
- ">>" => 21,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "/" => 27,
- "->" => 28,
- "|" => 29,
- "=>" => 30,
- "<<" => 31,
- "." => 32,
+ ":" => 73,
+ "-" => 15,
+ "<" => 17,
+ "+" => 18,
+ "%" => 19,
+ "==" => 20,
+ "^" => 21,
+ "*" => 22,
+ ">>" => 23,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "/" => 29,
+ "|" => 30,
+ "=>" => 31,
+ "<<" => 32,
"<=" => 33,
">" => 34
}
},
- {#State 51
+ {#State 55
ACTIONS => {
- "^" => 19,
- "?" => 23,
- "||" => 25,
- "=>" => 30,
- "." => 32,
+ "^" => 21,
+ "?" => 25,
+ "=>" => 31,
"<=" => 33
},
- DEFAULT => -22
+ DEFAULT => -19
},
- {#State 52
+ {#State 56
ACTIONS => {
- "^" => 19,
- "?" => 23,
- "=>" => 30,
- "." => 32,
+ "^" => 21,
+ "?" => 25,
+ "||" => 26,
+ "=>" => 31,
"<=" => 33
},
- DEFAULT => -21
+ DEFAULT => -20
},
- {#State 53
+ {#State 57
ACTIONS => {
- "^" => 19,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "|" => 29,
- "=>" => 30,
- "." => 32,
+ "^" => 21,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "|" => 30,
+ "=>" => 31,
"<=" => 33
},
- DEFAULT => -23
+ DEFAULT => -21
},
- {#State 54
+ {#State 58
ACTIONS => {
- "-" => 13,
- "<" => 15,
- "+" => 16,
- "==" => 18,
- "^" => 19,
- ">>" => 21,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "|" => 29,
- "=>" => 30,
- "<<" => 31,
- "." => 32,
+ "-" => 15,
+ "<" => 17,
+ "+" => 18,
+ "==" => 20,
+ "^" => 21,
+ ">>" => 23,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "|" => 30,
+ "=>" => 31,
+ "<<" => 32,
"<=" => 33,
">" => 34
},
- DEFAULT => -28
- },
- {#State 55
- DEFAULT => -24
+ DEFAULT => -25
},
- {#State 56
+ {#State 59
ACTIONS => {
- "^" => 19,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "=>" => 30,
- "." => 32,
+ "^" => 21,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "=>" => 31,
"<=" => 33
},
- DEFAULT => -14
+ DEFAULT => -12
},
- {#State 57
+ {#State 60
ACTIONS => {
- "-" => 13,
- "<" => 15,
- "+" => 16,
- "%" => 17,
- "==" => 18,
- "^" => 19,
- "*" => 20,
- ">>" => 21,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "/" => 27,
- "->" => 28,
- "|" => 29,
- "=>" => 30,
- "<<" => 31,
- "." => 32,
+ "-" => 15,
+ "<" => 17,
+ "+" => 18,
+ "%" => 19,
+ "==" => 20,
+ "^" => 21,
+ "*" => 22,
+ ">>" => 23,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "/" => 29,
+ "|" => 30,
+ "=>" => 31,
+ "<<" => 32,
"<=" => 33,
">" => 34
},
- DEFAULT => -17
+ DEFAULT => -15
},
- {#State 58
+ {#State 61
ACTIONS => {
- "<" => 15,
- "==" => 18,
- "^" => 19,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "|" => 29,
- "=>" => 30,
- "." => 32,
+ "<" => 17,
+ "==" => 20,
+ "^" => 21,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "|" => 30,
+ "=>" => 31,
"<=" => 33,
">" => 34
},
- DEFAULT => -18
- },
- {#State 59
- DEFAULT => -4
+ DEFAULT => -16
},
- {#State 60
+ {#State 62
ACTIONS => {
- "-" => 13,
- "<" => 15,
- "+" => 16,
- "%" => 17,
- "==" => 18,
- "^" => 19,
- "*" => 20,
- ">>" => 21,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "/" => 27,
- "->" => 28,
- "|" => 29,
- "=>" => 30,
- "<<" => 31,
- "." => 32,
+ "-" => 15,
+ "<" => 17,
+ "+" => 18,
+ "%" => 19,
+ "==" => 20,
+ "^" => 21,
+ "*" => 22,
+ ">>" => 23,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "/" => 29,
+ "|" => 30,
+ "=>" => 31,
+ "<<" => 32,
"<=" => 33,
">" => 34
},
- DEFAULT => -16
+ DEFAULT => -14
},
- {#State 61
+ {#State 63
ACTIONS => {
- "==" => 18,
- "^" => 19,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "|" => 29,
- "=>" => 30,
- "." => 32,
+ "==" => 20,
+ "^" => 21,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "|" => 30,
+ "=>" => 31,
"<=" => 33
},
- DEFAULT => -13
+ DEFAULT => -11
},
- {#State 62
- DEFAULT => -32
+ {#State 64
+ DEFAULT => -34
},
- {#State 63
- DEFAULT => -35
+ {#State 65
+ DEFAULT => -29
},
- {#State 64
+ {#State 66
+ DEFAULT => -38
+ },
+ {#State 67
+ ACTIONS => {
+ "," => 74
+ },
+ DEFAULT => -41
+ },
+ {#State 68
+ DEFAULT => -32
+ },
+ {#State 69
ACTIONS => {
- "-" => 13,
- "<" => 15,
- "+" => 16,
- "%" => 17,
- "," => 67,
- "==" => 18,
- "^" => 19,
- "*" => 20,
- ">>" => 21,
- "!=" => 22,
- "?" => 23,
- "&&" => 24,
- "||" => 25,
- "&" => 26,
- "->" => 28,
- "/" => 27,
- "|" => 29,
- "=>" => 30,
- "<<" => 31,
- "." => 32,
+ "-" => 15,
+ "<" => 17,
+ "+" => 18,
+ "%" => 19,
+ "==" => 20,
+ "^" => 21,
+ "*" => 22,
+ ">>" => 23,
+ "!=" => 24,
+ "?" => 25,
+ "&&" => 27,
+ "||" => 26,
+ "&" => 28,
+ "/" => 29,
+ "|" => 30,
+ "=>" => 31,
+ "<<" => 32,
"<=" => 33,
">" => 34
},
- DEFAULT => -36
+ DEFAULT => -39
},
- {#State 65
+ {#State 70
ACTIONS => {
- ")" => 68
+ ")" => 75
}
},
- {#State 66
+ {#State 71
+ DEFAULT => -35
+ },
+ {#State 72
+ DEFAULT => -33
+ },
+ {#State 73
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -1036,11 +1074,13 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 69,
- 'func' => 11
+ 'exp' => 76,
+ 'var' => 11,
+ 'func' => 12,
+ 'possible_pointer' => 13
}
},
- {#State 67
+ {#State 74
ACTIONS => {
"-" => 1,
"~" => 3,
@@ -1053,25 +1093,27 @@ sub new {
'VAR' => 10
},
GOTOS => {
- 'exp' => 64,
- 'args' => 70,
- 'func' => 11
+ 'exp' => 69,
+ 'var' => 11,
+ 'args' => 77,
+ 'func' => 12,
+ 'exp_or_possible_pointer' => 67,
+ 'possible_pointer' => 68
}
},
- {#State 68
- DEFAULT => -33
+ {#State 75
+ DEFAULT => -36
},
- {#State 69
+ {#State 76
ACTIONS => {
- "^" => 19,
- "=>" => 30,
- "." => 32,
+ "^" => 21,
+ "=>" => 31,
"<=" => 33
},
- DEFAULT => -25
+ DEFAULT => -22
},
- {#State 70
- DEFAULT => -37
+ {#State 77
+ DEFAULT => -42
}
],
yyrules =>
@@ -1085,208 +1127,229 @@ sub new {
[#Rule 2
'exp', 1,
sub
-#line 22 "pidl/expr.yp"
+#line 22 "expr.yp"
{ "\"$_[1]\"" }
],
[#Rule 3
'exp', 1, undef
],
[#Rule 4
- 'exp', 3,
-sub
-#line 24 "pidl/expr.yp"
-{ "$_[1].$_[3]" }
+ 'exp', 1, undef
],
[#Rule 5
- 'exp', 1,
-sub
-#line 25 "pidl/expr.yp"
-{ $_[0]->_Lookup($_[1]) }
- ],
- [#Rule 6
- 'exp', 2,
-sub
-#line 26 "pidl/expr.yp"
-{ $_[0]->_Dereference($_[2]); "*$_[2]" }
- ],
- [#Rule 7
'exp', 2,
sub
-#line 27 "pidl/expr.yp"
+#line 25 "expr.yp"
{ "~$_[2]" }
],
- [#Rule 8
+ [#Rule 6
'exp', 3,
sub
-#line 28 "pidl/expr.yp"
+#line 26 "expr.yp"
{ "$_[1] + $_[3]" }
],
- [#Rule 9
+ [#Rule 7
'exp', 3,
sub
-#line 29 "pidl/expr.yp"
+#line 27 "expr.yp"
{ "$_[1] - $_[3]" }
],
- [#Rule 10
+ [#Rule 8
'exp', 3,
sub
-#line 30 "pidl/expr.yp"
+#line 28 "expr.yp"
{ "$_[1] * $_[3]" }
],
- [#Rule 11
+ [#Rule 9
'exp', 3,
sub
-#line 31 "pidl/expr.yp"
+#line 29 "expr.yp"
{ "$_[1] % $_[3]" }
],
- [#Rule 12
+ [#Rule 10
'exp', 3,
sub
-#line 32 "pidl/expr.yp"
+#line 30 "expr.yp"
{ "$_[1] < $_[3]" }
],
- [#Rule 13
+ [#Rule 11
'exp', 3,
sub
-#line 33 "pidl/expr.yp"
+#line 31 "expr.yp"
{ "$_[1] > $_[3]" }
],
- [#Rule 14
+ [#Rule 12
'exp', 3,
sub
-#line 34 "pidl/expr.yp"
+#line 32 "expr.yp"
{ "$_[1] | $_[3]" }
],
- [#Rule 15
+ [#Rule 13
'exp', 3,
sub
-#line 35 "pidl/expr.yp"
+#line 33 "expr.yp"
{ "$_[1] == $_[3]" }
],
- [#Rule 16
+ [#Rule 14
'exp', 3,
sub
-#line 36 "pidl/expr.yp"
+#line 34 "expr.yp"
{ "$_[1] <= $_[3]" }
],
- [#Rule 17
+ [#Rule 15
'exp', 3,
sub
-#line 37 "pidl/expr.yp"
+#line 35 "expr.yp"
{ "$_[1] => $_[3]" }
],
- [#Rule 18
+ [#Rule 16
'exp', 3,
sub
-#line 38 "pidl/expr.yp"
+#line 36 "expr.yp"
{ "$_[1] << $_[3]" }
],
- [#Rule 19
+ [#Rule 17
'exp', 3,
sub
-#line 39 "pidl/expr.yp"
+#line 37 "expr.yp"
{ "$_[1] >> $_[3]" }
],
- [#Rule 20
+ [#Rule 18
'exp', 3,
sub
-#line 40 "pidl/expr.yp"
+#line 38 "expr.yp"
{ "$_[1] != $_[3]" }
],
- [#Rule 21
+ [#Rule 19
'exp', 3,
sub
-#line 41 "pidl/expr.yp"
+#line 39 "expr.yp"
{ "$_[1] || $_[3]" }
],
- [#Rule 22
+ [#Rule 20
'exp', 3,
sub
-#line 42 "pidl/expr.yp"
+#line 40 "expr.yp"
{ "$_[1] && $_[3]" }
],
- [#Rule 23
+ [#Rule 21
'exp', 3,
sub
-#line 43 "pidl/expr.yp"
+#line 41 "expr.yp"
{ "$_[1] & $_[3]" }
],
- [#Rule 24
- 'exp', 3,
-sub
-#line 44 "pidl/expr.yp"
-{ $_[1]."->".$_[3] }
- ],
- [#Rule 25
+ [#Rule 22
'exp', 5,
sub
-#line 45 "pidl/expr.yp"
+#line 42 "expr.yp"
{ "$_[1]?$_[3]:$_[5]" }
],
- [#Rule 26
+ [#Rule 23
'exp', 2,
sub
-#line 46 "pidl/expr.yp"
+#line 43 "expr.yp"
{ "~$_[1]" }
],
- [#Rule 27
+ [#Rule 24
'exp', 2,
sub
-#line 47 "pidl/expr.yp"
+#line 44 "expr.yp"
{ "not $_[1]" }
],
- [#Rule 28
+ [#Rule 25
'exp', 3,
sub
-#line 48 "pidl/expr.yp"
+#line 45 "expr.yp"
{ "$_[1] / $_[3]" }
],
- [#Rule 29
+ [#Rule 26
'exp', 2,
sub
-#line 49 "pidl/expr.yp"
+#line 46 "expr.yp"
{ "-$_[2]" }
],
- [#Rule 30
+ [#Rule 27
'exp', 2,
sub
-#line 50 "pidl/expr.yp"
+#line 47 "expr.yp"
{ "&$_[2]" }
],
- [#Rule 31
+ [#Rule 28
'exp', 3,
sub
-#line 51 "pidl/expr.yp"
+#line 48 "expr.yp"
{ "$_[1]^$_[3]" }
],
- [#Rule 32
+ [#Rule 29
'exp', 3,
sub
-#line 52 "pidl/expr.yp"
+#line 49 "expr.yp"
{ "($_[2])" }
],
+ [#Rule 30
+ 'possible_pointer', 1,
+sub
+#line 53 "expr.yp"
+{ $_[0]->_Lookup($_[1]) }
+ ],
+ [#Rule 31
+ 'possible_pointer', 2,
+sub
+#line 54 "expr.yp"
+{ $_[0]->_Dereference($_[2]); "*$_[2]" }
+ ],
+ [#Rule 32
+ 'var', 1,
+sub
+#line 57 "expr.yp"
+{ $_[0]->_Use($_[1]) }
+ ],
[#Rule 33
+ 'var', 3,
+sub
+#line 58 "expr.yp"
+{ $_[0]->_Use("$_[1].$_[3]") }
+ ],
+ [#Rule 34
+ 'var', 3,
+sub
+#line 59 "expr.yp"
+{ "($_[2])" }
+ ],
+ [#Rule 35
+ 'var', 3,
+sub
+#line 60 "expr.yp"
+{ $_[0]->_Use("*$_[1]"); $_[1]."->".$_[3] }
+ ],
+ [#Rule 36
'func', 4,
sub
-#line 55 "pidl/expr.yp"
+#line 64 "expr.yp"
{ "$_[1]($_[3])" }
],
- [#Rule 34
+ [#Rule 37
'opt_args', 0,
sub
-#line 56 "pidl/expr.yp"
+#line 65 "expr.yp"
{ "" }
],
- [#Rule 35
+ [#Rule 38
'opt_args', 1, undef
],
- [#Rule 36
+ [#Rule 39
+ 'exp_or_possible_pointer', 1, undef
+ ],
+ [#Rule 40
+ 'exp_or_possible_pointer', 1, undef
+ ],
+ [#Rule 41
'args', 1, undef
],
- [#Rule 37
+ [#Rule 42
'args', 3,
sub
-#line 57 "pidl/expr.yp"
+#line 68 "expr.yp"
{ "$_[1], $_[3]" }
]
],
@@ -1294,7 +1357,7 @@ sub
bless($self,$class);
}
-#line 59 "pidl/expr.yp"
+#line 71 "expr.yp"
package Parse::Pidl::Expr;
@@ -1332,6 +1395,15 @@ sub _Lexer {
}
}
+sub _Use($$)
+{
+ my ($self, $x) = @_;
+ if (defined($self->YYData->{USE})) {
+ return $self->YYData->{USE}->($x);
+ }
+ return $x;
+}
+
sub _Lookup($$)
{
my ($self, $x) = @_;
@@ -1357,12 +1429,13 @@ sub _Error($)
}
sub Run {
- my($self, $data, $error, $lookup, $deref) = @_;
+ 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);
}