summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pidl/idl.yp15
-rw-r--r--pidl/lib/Parse/Pidl/IDL.pm1786
-rw-r--r--pidl/lib/Parse/Pidl/NDR.pm20
3 files changed, 950 insertions, 871 deletions
diff --git a/pidl/idl.yp b/pidl/idl.yp
index 399ff74f41..dc8e293f76 100644
--- a/pidl/idl.yp
+++ b/pidl/idl.yp
@@ -189,6 +189,8 @@ usertype:
enum
|
bitmap
+ |
+ pipe
;
typedecl:
@@ -379,6 +381,17 @@ pointers:
pointers '*' { $_[1]+1 }
;
+pipe:
+ property_list 'pipe' type
+ {{
+ "TYPE" => "PIPE",
+ "PROPERTIES" => $_[1],
+ "DATA" => $_[3],
+ "FILE" => $_[0]->YYData->{FILE},
+ "LINE" => $_[0]->YYData->{LINE},
+ }}
+;
+
element_list1:
#empty
{ [] }
@@ -603,7 +616,7 @@ again:
if ($1 =~
/^(coclass|interface|import|importlib
|include|cpp_quote|typedef
- |union|struct|enum|bitmap
+ |union|struct|enum|bitmap|pipe
|void|const|unsigned|signed)$/x) {
return $1;
}
diff --git a/pidl/lib/Parse/Pidl/IDL.pm b/pidl/lib/Parse/Pidl/IDL.pm
index 53be9fc655..1a3c59d35c 100644
--- a/pidl/lib/Parse/Pidl/IDL.pm
+++ b/pidl/lib/Parse/Pidl/IDL.pm
@@ -38,7 +38,7 @@ sub new {
"import" => 7,
"include" => 13
},
- DEFAULT => -87,
+ DEFAULT => -89,
GOTOS => {
'cpp_quote' => 11,
'importlib' => 10,
@@ -124,7 +124,7 @@ sub new {
}
},
{#State 16
- DEFAULT => -118
+ DEFAULT => -120
},
{#State 17
DEFAULT => -11
@@ -184,7 +184,7 @@ sub new {
}
},
{#State 26
- DEFAULT => -114
+ DEFAULT => -116
},
{#State 27
ACTIONS => {
@@ -210,10 +210,10 @@ sub new {
ACTIONS => {
"(" => 41
},
- DEFAULT => -91
+ DEFAULT => -93
},
{#State 31
- DEFAULT => -89
+ DEFAULT => -91
},
{#State 32
DEFAULT => -8
@@ -256,7 +256,7 @@ sub new {
}
},
{#State 40
- DEFAULT => -88
+ DEFAULT => -90
},
{#State 41
ACTIONS => {
@@ -264,7 +264,7 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
'text' => 51,
@@ -284,72 +284,73 @@ sub new {
},
{#State 44
ACTIONS => {
- "const" => 63
+ "const" => 64
},
- DEFAULT => -87,
+ DEFAULT => -89,
GOTOS => {
'typedecl' => 54,
'function' => 55,
- 'definitions' => 57,
- 'bitmap' => 56,
- 'definition' => 60,
- 'property_list' => 59,
- 'usertype' => 58,
- 'const' => 62,
- 'struct' => 61,
- 'typedef' => 65,
- 'enum' => 64,
- 'union' => 66
+ 'pipe' => 56,
+ 'definitions' => 58,
+ 'bitmap' => 57,
+ 'definition' => 61,
+ 'property_list' => 60,
+ 'usertype' => 59,
+ 'const' => 63,
+ 'struct' => 62,
+ 'typedef' => 66,
+ 'enum' => 65,
+ 'union' => 67
}
},
{#State 45
- DEFAULT => -90
+ DEFAULT => -92
},
{#State 46
ACTIONS => {
- "-" => 68,
- ":" => 67,
- "<" => 70,
- "+" => 72,
- "~" => 71,
- "*" => 79,
- "?" => 69,
- "{" => 73,
- "&" => 74,
- "/" => 75,
- "=" => 76,
- "(" => 77,
- "|" => 78,
- "." => 80,
- ">" => 81
- },
- DEFAULT => -93
+ "-" => 69,
+ ":" => 68,
+ "<" => 71,
+ "+" => 73,
+ "~" => 72,
+ "*" => 80,
+ "?" => 70,
+ "{" => 74,
+ "&" => 75,
+ "/" => 76,
+ "=" => 77,
+ "(" => 78,
+ "|" => 79,
+ "." => 81,
+ ">" => 82
+ },
+ DEFAULT => -95
},
{#State 47
- DEFAULT => -97
+ DEFAULT => -99
},
{#State 48
- DEFAULT => -117
+ DEFAULT => -119
},
{#State 49
ACTIONS => {
- "," => 82,
- ")" => 83
+ "," => 83,
+ ")" => 84
}
},
{#State 50
- DEFAULT => -96
+ DEFAULT => -98
},
{#State 51
- DEFAULT => -98
+ DEFAULT => -100
},
{#State 52
ACTIONS => {
- ";" => 85
+ ";" => 86
},
- DEFAULT => -119,
+ DEFAULT => -121,
GOTOS => {
- 'optional_semicolon' => 84
+ 'optional_semicolon' => 85
}
},
{#State 53
@@ -357,7 +358,7 @@ sub new {
'IDENTIFIER' => 26
},
GOTOS => {
- 'identifier' => 86
+ 'identifier' => 87
}
},
{#State 54
@@ -367,98 +368,90 @@ sub new {
DEFAULT => -22
},
{#State 56
- DEFAULT => -33
+ DEFAULT => -34
},
{#State 57
+ DEFAULT => -33
+ },
+ {#State 58
ACTIONS => {
- "}" => 87,
- "const" => 63
+ "}" => 88,
+ "const" => 64
},
- DEFAULT => -87,
+ DEFAULT => -89,
GOTOS => {
'typedecl' => 54,
'function' => 55,
- 'bitmap' => 56,
- 'definition' => 88,
- 'property_list' => 59,
- 'usertype' => 58,
- 'struct' => 61,
- 'const' => 62,
- 'typedef' => 65,
- 'enum' => 64,
- 'union' => 66
+ 'pipe' => 56,
+ 'bitmap' => 57,
+ 'definition' => 89,
+ 'property_list' => 60,
+ 'usertype' => 59,
+ 'const' => 63,
+ 'struct' => 62,
+ 'typedef' => 66,
+ 'enum' => 65,
+ 'union' => 67
}
},
- {#State 58
+ {#State 59
ACTIONS => {
- ";" => 89
+ ";" => 90
}
},
- {#State 59
+ {#State 60
ACTIONS => {
- "typedef" => 90,
+ "typedef" => 91,
'IDENTIFIER' => 26,
- "signed" => 98,
- "union" => 91,
- "enum" => 100,
- "bitmap" => 101,
- 'void' => 92,
- "unsigned" => 102,
+ "signed" => 100,
+ "union" => 92,
+ "enum" => 101,
+ "bitmap" => 102,
+ 'void' => 93,
+ "pipe" => 103,
+ "unsigned" => 104,
"[" => 20,
- "struct" => 97
+ "struct" => 98
},
GOTOS => {
'existingtype' => 99,
- 'bitmap' => 56,
- 'usertype' => 94,
- 'property_list' => 93,
- 'identifier' => 95,
- 'struct' => 61,
- 'enum' => 64,
- 'type' => 103,
- 'union' => 66,
- 'sign' => 96
+ 'pipe' => 56,
+ 'bitmap' => 57,
+ 'usertype' => 95,
+ 'property_list' => 94,
+ 'identifier' => 96,
+ 'struct' => 62,
+ 'enum' => 65,
+ 'type' => 105,
+ 'union' => 67,
+ 'sign' => 97
}
},
- {#State 60
+ {#State 61
DEFAULT => -20
},
- {#State 61
+ {#State 62
DEFAULT => -30
},
- {#State 62
+ {#State 63
DEFAULT => -23
},
- {#State 63
+ {#State 64
ACTIONS => {
'IDENTIFIER' => 26
},
GOTOS => {
- 'identifier' => 104
+ 'identifier' => 106
}
},
- {#State 64
- DEFAULT => -32
- },
{#State 65
- DEFAULT => -24
+ DEFAULT => -32
},
{#State 66
- DEFAULT => -31
+ DEFAULT => -24
},
{#State 67
- ACTIONS => {
- 'CONSTANT' => 48,
- 'TEXT' => 16,
- 'IDENTIFIER' => 26
- },
- DEFAULT => -95,
- GOTOS => {
- 'identifier' => 50,
- 'anytext' => 105,
- 'text' => 51,
- 'constant' => 47
- }
+ DEFAULT => -31
},
{#State 68
ACTIONS => {
@@ -466,10 +459,10 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 106,
+ 'anytext' => 107,
'text' => 51,
'constant' => 47
}
@@ -480,10 +473,10 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 107,
+ 'anytext' => 108,
'text' => 51,
'constant' => 47
}
@@ -494,10 +487,10 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 108,
+ 'anytext' => 109,
'text' => 51,
'constant' => 47
}
@@ -508,10 +501,10 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 109,
+ 'anytext' => 110,
'text' => 51,
'constant' => 47
}
@@ -522,10 +515,10 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 110,
+ 'anytext' => 111,
'text' => 51,
'constant' => 47
}
@@ -536,13 +529,12 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 46,
+ 'anytext' => 112,
'text' => 51,
- 'constant' => 47,
- 'commalisttext' => 111
+ 'constant' => 47
}
},
{#State 74
@@ -551,12 +543,13 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 112,
+ 'anytext' => 46,
'text' => 51,
- 'constant' => 47
+ 'constant' => 47,
+ 'commalisttext' => 113
}
},
{#State 75
@@ -565,10 +558,10 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 113,
+ 'anytext' => 114,
'text' => 51,
'constant' => 47
}
@@ -579,10 +572,10 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 114,
+ 'anytext' => 115,
'text' => 51,
'constant' => 47
}
@@ -593,13 +586,12 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 46,
+ 'anytext' => 116,
'text' => 51,
- 'constant' => 47,
- 'commalisttext' => 115
+ 'constant' => 47
}
},
{#State 78
@@ -608,12 +600,13 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 116,
+ 'anytext' => 46,
'text' => 51,
- 'constant' => 47
+ 'constant' => 47,
+ 'commalisttext' => 117
}
},
{#State 79
@@ -622,10 +615,10 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 117,
+ 'anytext' => 118,
'text' => 51,
'constant' => 47
}
@@ -636,10 +629,10 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 118,
+ 'anytext' => 119,
'text' => 51,
'constant' => 47
}
@@ -650,10 +643,10 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 119,
+ 'anytext' => 120,
'text' => 51,
'constant' => 47
}
@@ -664,1058 +657,1101 @@ sub new {
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 120,
+ 'anytext' => 121,
'text' => 51,
'constant' => 47
}
},
{#State 83
- DEFAULT => -92
+ ACTIONS => {
+ 'CONSTANT' => 48,
+ 'TEXT' => 16,
+ 'IDENTIFIER' => 26
+ },
+ DEFAULT => -97,
+ GOTOS => {
+ 'identifier' => 50,
+ 'anytext' => 122,
+ 'text' => 51,
+ 'constant' => 47
+ }
},
{#State 84
- DEFAULT => -13
+ DEFAULT => -94
},
{#State 85
- DEFAULT => -120
+ DEFAULT => -13
},
{#State 86
+ DEFAULT => -122
+ },
+ {#State 87
ACTIONS => {
- ";" => 121
+ ";" => 123
}
},
- {#State 87
+ {#State 88
ACTIONS => {
- ";" => 85
+ ";" => 86
},
- DEFAULT => -119,
+ DEFAULT => -121,
GOTOS => {
- 'optional_semicolon' => 122
+ 'optional_semicolon' => 124
}
},
- {#State 88
- DEFAULT => -21
- },
{#State 89
- DEFAULT => -34
+ DEFAULT => -21
},
{#State 90
+ DEFAULT => -35
+ },
+ {#State 91
ACTIONS => {
'IDENTIFIER' => 26,
- "signed" => 98,
- 'void' => 92,
- "unsigned" => 102
+ "signed" => 100,
+ 'void' => 93,
+ "unsigned" => 104
},
- DEFAULT => -87,
+ DEFAULT => -89,
GOTOS => {
'existingtype' => 99,
- 'bitmap' => 56,
- 'usertype' => 94,
- 'property_list' => 93,
- 'identifier' => 95,
- 'struct' => 61,
- 'enum' => 64,
- 'type' => 123,
- 'union' => 66,
- 'sign' => 96
+ 'pipe' => 56,
+ 'bitmap' => 57,
+ 'usertype' => 95,
+ 'property_list' => 94,
+ 'identifier' => 96,
+ 'struct' => 62,
+ 'enum' => 65,
+ 'type' => 125,
+ 'union' => 67,
+ 'sign' => 97
}
},
- {#State 91
+ {#State 92
ACTIONS => {
- 'IDENTIFIER' => 124
+ 'IDENTIFIER' => 126
},
- DEFAULT => -115,
+ DEFAULT => -117,
GOTOS => {
- 'optional_identifier' => 125
+ 'optional_identifier' => 127
}
},
- {#State 92
- DEFAULT => -41
- },
{#State 93
+ DEFAULT => -42
+ },
+ {#State 94
ACTIONS => {
- "union" => 91,
- "enum" => 100,
- "bitmap" => 101,
+ "pipe" => 103,
+ "union" => 92,
+ "enum" => 101,
+ "bitmap" => 102,
"[" => 20,
- "struct" => 97
+ "struct" => 98
}
},
- {#State 94
- DEFAULT => -39
- },
{#State 95
- DEFAULT => -38
+ DEFAULT => -40
},
{#State 96
+ DEFAULT => -39
+ },
+ {#State 97
ACTIONS => {
'IDENTIFIER' => 26
},
GOTOS => {
- 'identifier' => 126
+ 'identifier' => 128
}
},
- {#State 97
+ {#State 98
ACTIONS => {
- 'IDENTIFIER' => 124
+ 'IDENTIFIER' => 126
},
- DEFAULT => -115,
+ DEFAULT => -117,
GOTOS => {
- 'optional_identifier' => 127
+ 'optional_identifier' => 129
}
},
- {#State 98
- DEFAULT => -35
- },
{#State 99
- DEFAULT => -40
+ DEFAULT => -41
},
{#State 100
+ DEFAULT => -36
+ },
+ {#State 101
ACTIONS => {
- 'IDENTIFIER' => 124
+ 'IDENTIFIER' => 126
},
- DEFAULT => -115,
+ DEFAULT => -117,
GOTOS => {
- 'optional_identifier' => 128
+ 'optional_identifier' => 130
}
},
- {#State 101
+ {#State 102
ACTIONS => {
- 'IDENTIFIER' => 124
+ 'IDENTIFIER' => 126
},
- DEFAULT => -115,
+ DEFAULT => -117,
GOTOS => {
- 'optional_identifier' => 129
+ 'optional_identifier' => 131
}
},
- {#State 102
- DEFAULT => -36
- },
{#State 103
ACTIONS => {
- 'IDENTIFIER' => 26
+ 'IDENTIFIER' => 26,
+ "signed" => 100,
+ 'void' => 93,
+ "unsigned" => 104
},
+ DEFAULT => -89,
GOTOS => {
- 'identifier' => 130
+ 'existingtype' => 99,
+ 'pipe' => 56,
+ 'bitmap' => 57,
+ 'usertype' => 95,
+ 'property_list' => 94,
+ 'identifier' => 96,
+ 'struct' => 62,
+ 'enum' => 65,
+ 'type' => 132,
+ 'union' => 67,
+ 'sign' => 97
}
},
{#State 104
- DEFAULT => -74,
- GOTOS => {
- 'pointers' => 131
- }
+ DEFAULT => -37
},
{#State 105
ACTIONS => {
- "-" => 68,
- ":" => 67,
- "<" => 70,
- "+" => 72,
- "~" => 71,
- "*" => 79,
- "?" => 69,
- "{" => 73,
- "&" => 74,
- "/" => 75,
- "=" => 76,
- "(" => 77,
- "|" => 78,
- "." => 80,
- ">" => 81
+ 'IDENTIFIER' => 26
},
- DEFAULT => -108
+ GOTOS => {
+ 'identifier' => 133
+ }
},
{#State 106
- ACTIONS => {
- ":" => 67,
- "<" => 70,
- "~" => 71,
- "?" => 69,
- "{" => 73,
- "=" => 76
- },
- DEFAULT => -99
+ DEFAULT => -75,
+ GOTOS => {
+ 'pointers' => 134
+ }
},
{#State 107
ACTIONS => {
- "-" => 68,
- ":" => 67,
- "<" => 70,
- "+" => 72,
- "~" => 71,
- "*" => 79,
- "?" => 69,
- "{" => 73,
- "&" => 74,
- "/" => 75,
- "=" => 76,
- "(" => 77,
- "|" => 78,
- "." => 80,
- ">" => 81
+ "-" => 69,
+ ":" => 68,
+ "<" => 71,
+ "+" => 73,
+ "~" => 72,
+ "*" => 80,
+ "?" => 70,
+ "{" => 74,
+ "&" => 75,
+ "/" => 76,
+ "=" => 77,
+ "(" => 78,
+ "|" => 79,
+ "." => 81,
+ ">" => 82
},
- DEFAULT => -107
+ DEFAULT => -110
},
{#State 108
ACTIONS => {
- "-" => 68,
- ":" => 67,
- "<" => 70,
- "+" => 72,
- "~" => 71,
- "*" => 79,
- "?" => 69,
- "{" => 73,
- "&" => 74,
- "/" => 75,
- "=" => 76,
- "(" => 77,
- "|" => 78,
- "." => 80,
- ">" => 81
+ ":" => 68,
+ "<" => 71,
+ "~" => 72,
+ "?" => 70,
+ "{" => 74,
+ "=" => 77
},
- DEFAULT => -103
+ DEFAULT => -101
},
{#State 109
ACTIONS => {
- "-" => 68,
- ":" => 67,
- "<" => 70,
- "+" => 72,
- "~" => 71,
- "*" => 79,
- "?" => 69,
- "{" => 73,
- "&" => 74,
- "/" => 75,
- "=" => 76,
- "(" => 77,
- "|" => 78,
- "." => 80,
- ">" => 81
+ "-" => 69,
+ ":" => 68,
+ "<" => 71,
+ "+" => 73,
+ "~" => 72,
+ "*" => 80,
+ "?" => 70,
+ "{" => 74,
+ "&" => 75,
+ "/" => 76,
+ "=" => 77,
+ "(" => 78,
+ "|" => 79,
+ "." => 81,
+ ">" => 82
},
- DEFAULT => -111
+ DEFAULT => -109
},
{#State 110
ACTIONS => {
- ":" => 67,
- "<" => 70,
- "~" => 71,
- "?" => 69,
- "{" => 73,
- "=" => 76
+ "-" => 69,
+ ":" => 68,
+ "<" => 71,
+ "+" => 73,
+ "~" => 72,
+ "*" => 80,
+ "?" => 70,
+ "{" => 74,
+ "&" => 75,
+ "/" => 76,
+ "=" => 77,
+ "(" => 78,
+ "|" => 79,
+ "." => 81,
+ ">" => 82
},
- DEFAULT => -110
+ DEFAULT => -105
},
{#State 111
ACTIONS => {
- "}" => 132,
- "," => 82
- }
+ "-" => 69,
+ ":" => 68,
+ "<" => 71,
+ "+" => 73,
+ "~" => 72,
+ "*" => 80,
+ "?" => 70,
+ "{" => 74,
+ "&" => 75,
+ "/" => 76,
+ "=" => 77,
+ "(" => 78,
+ "|" => 79,
+ "." => 81,
+ ">" => 82
+ },
+ DEFAULT => -113
},
{#State 112
ACTIONS => {
- ":" => 67,
- "<" => 70,
- "~" => 71,
- "?" => 69,
- "{" => 73,
- "=" => 76
+ ":" => 68,
+ "<" => 71,
+ "~" => 72,
+ "?" => 70,
+ "{" => 74,
+ "=" => 77
},
- DEFAULT => -105
+ DEFAULT => -112
},
{#State 113
ACTIONS => {
- ":" => 67,
- "<" => 70,
- "~" => 71,
- "?" => 69,
- "{" => 73,
- "=" => 76
- },
- DEFAULT => -106
+ "}" => 135,
+ "," => 83
+ }
},
{#State 114
ACTIONS => {
- "-" => 68,
- ":" => 67,
- "<" => 70,
- "+" => 72,
- "~" => 71,
- "*" => 79,
- "?" => 69,
- "{" => 73,
- "&" => 74,
- "/" => 75,
- "=" => 76,
- "(" => 77,
- "|" => 78,
- "." => 80,
- ">" => 81
+ ":" => 68,
+ "<" => 71,
+ "~" => 72,
+ "?" => 70,
+ "{" => 74,
+ "=" => 77
},
- DEFAULT => -109
+ DEFAULT => -107
},
{#State 115
ACTIONS => {
- "," => 82,
- ")" => 133
- }
+ ":" => 68,
+ "<" => 71,
+ "~" => 72,
+ "?" => 70,
+ "{" => 74,
+ "=" => 77
+ },
+ DEFAULT => -108
},
{#State 116
ACTIONS => {
- ":" => 67,
- "<" => 70,
- "~" => 71,
- "?" => 69,
- "{" => 73,
- "=" => 76
+ "-" => 69,
+ ":" => 68,
+ "<" => 71,
+ "+" => 73,
+ "~" => 72,
+ "*" => 80,
+ "?" => 70,
+ "{" => 74,
+ "&" => 75,
+ "/" => 76,
+ "=" => 77,
+ "(" => 78,
+ "|" => 79,
+ "." => 81,
+ ">" => 82
},
- DEFAULT => -104
+ DEFAULT => -111
},
{#State 117
ACTIONS => {
- ":" => 67,
- "<" => 70,
- "~" => 71,
- "?" => 69,
- "{" => 73,
- "=" => 76
- },
- DEFAULT => -101
+ "," => 83,
+ ")" => 136
+ }
},
{#State 118
ACTIONS => {
- ":" => 67,
- "<" => 70,
- "~" => 71,
- "?" => 69,
- "{" => 73,
- "=" => 76
+ ":" => 68,
+ "<" => 71,
+ "~" => 72,
+ "?" => 70,
+ "{" => 74,
+ "=" => 77
},
- DEFAULT => -100
+ DEFAULT => -106
},
{#State 119
ACTIONS => {
- ":" => 67,
- "<" => 70,
- "~" => 71,
- "?" => 69,
- "{" => 73,
- "=" => 76
+ ":" => 68,
+ "<" => 71,
+ "~" => 72,
+ "?" => 70,
+ "{" => 74,
+ "=" => 77
},
- DEFAULT => -102
+ DEFAULT => -103
},
{#State 120
ACTIONS => {
- "-" => 68,
- ":" => 67,
- "<" => 70,
- "+" => 72,
- "~" => 71,
- "*" => 79,
- "?" => 69,
- "{" => 73,
- "&" => 74,
- "/" => 75,
- "=" => 76,
- "(" => 77,
- "|" => 78,
- "." => 80,
- ">" => 81
+ ":" => 68,
+ "<" => 71,
+ "~" => 72,
+ "?" => 70,
+ "{" => 74,
+ "=" => 77
},
- DEFAULT => -94
+ DEFAULT => -102
},
{#State 121
- DEFAULT => -15
+ ACTIONS => {
+ ":" => 68,
+ "<" => 71,
+ "~" => 72,
+ "?" => 70,
+ "{" => 74,
+ "=" => 77
+ },
+ DEFAULT => -104
},
{#State 122
- DEFAULT => -16
- },
- {#State 123
ACTIONS => {
- 'IDENTIFIER' => 26
+ "-" => 69,
+ ":" => 68,
+ "<" => 71,
+ "+" => 73,
+ "~" => 72,
+ "*" => 80,
+ "?" => 70,
+ "{" => 74,
+ "&" => 75,
+ "/" => 76,
+ "=" => 77,
+ "(" => 78,
+ "|" => 79,
+ "." => 81,
+ ">" => 82
},
- GOTOS => {
- 'identifier' => 134
- }
+ DEFAULT => -96
+ },
+ {#State 123
+ DEFAULT => -15
},
{#State 124
- DEFAULT => -116
+ DEFAULT => -16
},
{#State 125
ACTIONS => {
- "{" => 136
+ 'IDENTIFIER' => 26
},
- DEFAULT => -70,
GOTOS => {
- 'union_body' => 137,
- 'opt_union_body' => 135
+ 'identifier' => 137
}
},
{#State 126
- DEFAULT => -37
+ DEFAULT => -118
},
{#State 127
ACTIONS => {
"{" => 139
},
- DEFAULT => -60,
+ DEFAULT => -71,
GOTOS => {
- 'struct_body' => 138,
- 'opt_struct_body' => 140
+ 'union_body' => 140,
+ 'opt_union_body' => 138
}
},
{#State 128
+ DEFAULT => -38
+ },
+ {#State 129
ACTIONS => {
- "{" => 141
+ "{" => 142
},
- DEFAULT => -43,
+ DEFAULT => -61,
GOTOS => {
- 'opt_enum_body' => 143,
- 'enum_body' => 142
+ 'struct_body' => 141,
+ 'opt_struct_body' => 143
}
},
- {#State 129
+ {#State 130
ACTIONS => {
- "{" => 145
+ "{" => 144
},
- DEFAULT => -51,
+ DEFAULT => -44,
GOTOS => {
- 'bitmap_body' => 146,
- 'opt_bitmap_body' => 144
+ 'opt_enum_body' => 146,
+ 'enum_body' => 145
}
},
- {#State 130
+ {#State 131
ACTIONS => {
- "(" => 147
+ "{" => 148
+ },
+ DEFAULT => -52,
+ GOTOS => {
+ 'bitmap_body' => 149,
+ 'opt_bitmap_body' => 147
}
},
- {#State 131
+ {#State 132
+ DEFAULT => -77
+ },
+ {#State 133
+ ACTIONS => {
+ "(" => 150
+ }
+ },
+ {#State 134
ACTIONS => {
'IDENTIFIER' => 26,
- "*" => 149
+ "*" => 152
},
GOTOS => {
- 'identifier' => 148
+ 'identifier' => 151
}
},
- {#State 132
+ {#State 135
ACTIONS => {
'CONSTANT' => 48,
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 150,
+ 'anytext' => 153,
'text' => 51,
'constant' => 47
}
},
- {#State 133
+ {#State 136
ACTIONS => {
'CONSTANT' => 48,
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 151,
+ 'anytext' => 154,
'text' => 51,
'constant' => 47
}
},
- {#State 134
+ {#State 137
ACTIONS => {
- "[" => 152
+ "[" => 155
},
- DEFAULT => -84,
- GOTOS => {
- 'array_len' => 153
- }
- },
- {#State 135
- DEFAULT => -72
- },
- {#State 136
- DEFAULT => -67,
+ DEFAULT => -86,
GOTOS => {
- 'union_elements' => 154
+ 'array_len' => 156
}
},
- {#State 137
- DEFAULT => -71
- },
{#State 138
- DEFAULT => -61
+ DEFAULT => -73
},
{#State 139
- DEFAULT => -76,
+ DEFAULT => -68,
GOTOS => {
- 'element_list1' => 155
+ 'union_elements' => 157
}
},
{#State 140
- DEFAULT => -62
+ DEFAULT => -72
},
{#State 141
- ACTIONS => {
- 'IDENTIFIER' => 26
- },
- GOTOS => {
- 'identifier' => 156,
- 'enum_element' => 157,
- 'enum_elements' => 158
- }
+ DEFAULT => -62
},
{#State 142
- DEFAULT => -44
+ DEFAULT => -78,
+ GOTOS => {
+ 'element_list1' => 158
+ }
},
{#State 143
- DEFAULT => -45
+ DEFAULT => -63
},
{#State 144
- DEFAULT => -53
- },
- {#State 145
ACTIONS => {
'IDENTIFIER' => 26
},
- DEFAULT => -56,
GOTOS => {
- 'identifier' => 161,
- 'bitmap_element' => 160,
- 'bitmap_elements' => 159,
- 'opt_bitmap_elements' => 162
+ 'identifier' => 159,
+ 'enum_element' => 160,
+ 'enum_elements' => 161
}
},
+ {#State 145
+ DEFAULT => -45
+ },
{#State 146
- DEFAULT => -52
+ DEFAULT => -46
},
{#State 147
- ACTIONS => {
- "," => -80,
- "void" => 166,
- "const" => 164,
- ")" => -80
- },
- DEFAULT => -78,
- GOTOS => {
- 'optional_const' => 163,
- 'element_list2' => 165
- }
+ DEFAULT => -54
},
{#State 148
ACTIONS => {
- "[" => 152,
- "=" => 168
+ 'IDENTIFIER' => 26
},
+ DEFAULT => -57,
GOTOS => {
- 'array_len' => 167
+ 'identifier' => 164,
+ 'bitmap_element' => 163,
+ 'bitmap_elements' => 162,
+ 'opt_bitmap_elements' => 165
}
},
{#State 149
- DEFAULT => -75
+ DEFAULT => -53
},
{#State 150
ACTIONS => {
- "-" => 68,
- ":" => 67,
- "<" => 70,
- "+" => 72,
- "~" => 71,
- "*" => 79,
- "?" => 69,
- "{" => 73,
- "&" => 74,
- "/" => 75,
- "=" => 76,
- "(" => 77,
- "|" => 78,
- "." => 80,
- ">" => 81
+ "," => -82,
+ "void" => 169,
+ "const" => 167,
+ ")" => -82
},
- DEFAULT => -113
+ DEFAULT => -80,
+ GOTOS => {
+ 'optional_const' => 166,
+ 'element_list2' => 168
+ }
},
{#State 151
ACTIONS => {
- ":" => 67,
- "<" => 70,
- "~" => 71,
- "?" => 69,
- "{" => 73,
- "=" => 76
+ "[" => 155,
+ "=" => 171
},
- DEFAULT => -112
+ GOTOS => {
+ 'array_len' => 170
+ }
},
{#State 152
+ DEFAULT => -76
+ },
+ {#State 153
+ ACTIONS => {
+ "-" => 69,
+ ":" => 68,
+ "<" => 71,
+ "+" => 73,
+ "~" => 72,
+ "*" => 80,
+ "?" => 70,
+ "{" => 74,
+ "&" => 75,
+ "/" => 76,
+ "=" => 77,
+ "(" => 78,
+ "|" => 79,
+ "." => 81,
+ ">" => 82
+ },
+ DEFAULT => -115
+ },
+ {#State 154
+ ACTIONS => {
+ ":" => 68,
+ "<" => 71,
+ "~" => 72,
+ "?" => 70,
+ "{" => 74,
+ "=" => 77
+ },
+ DEFAULT => -114
+ },
+ {#State 155
ACTIONS => {
'CONSTANT' => 48,
'TEXT' => 16,
- "]" => 169,
+ "]" => 172,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 170,
+ 'anytext' => 173,
'text' => 51,
'constant' => 47
}
},
- {#State 153
+ {#State 156
ACTIONS => {
- ";" => 171
+ ";" => 174
}
},
- {#State 154
+ {#State 157
ACTIONS => {
- "}" => 172
+ "}" => 175
},
- DEFAULT => -87,
+ DEFAULT => -89,
GOTOS => {
- 'optional_base_element' => 174,
- 'property_list' => 173
+ 'optional_base_element' => 177,
+ 'property_list' => 176
}
},
- {#State 155
+ {#State 158
ACTIONS => {
- "}" => 175
+ "}" => 178
},
- DEFAULT => -87,
+ DEFAULT => -89,
GOTOS => {
- 'base_element' => 176,
- 'property_list' => 177
+ 'base_element' => 179,
+ 'property_list' => 180
}
},
- {#State 156
+ {#State 159
ACTIONS => {
- "=" => 178
+ "=" => 181
},
- DEFAULT => -48
+ DEFAULT => -49
},
- {#State 157
- DEFAULT => -46
+ {#State 160
+ DEFAULT => -47
},
- {#State 158
+ {#State 161
ACTIONS => {
- "}" => 179,
- "," => 180
+ "}" => 182,
+ "," => 183
}
},
- {#State 159
+ {#State 162
ACTIONS => {
- "," => 181
+ "," => 184
},
- DEFAULT => -57
+ DEFAULT => -58
},
- {#State 160
- DEFAULT => -54
+ {#State 163
+ DEFAULT => -55
},
- {#State 161
+ {#State 164
ACTIONS => {
- "=" => 182
+ "=" => 185
}
},
- {#State 162
+ {#State 165
ACTIONS => {
- "}" => 183
+ "}" => 186
}
},
- {#State 163
- DEFAULT => -87,
+ {#State 166
+ DEFAULT => -89,
GOTOS => {
- 'base_element' => 184,
- 'property_list' => 177
+ 'base_element' => 187,
+ 'property_list' => 180
}
},
- {#State 164
- DEFAULT => -79
+ {#State 167
+ DEFAULT => -81
},
- {#State 165
+ {#State 168
ACTIONS => {
- "," => 185,
- ")" => 186
+ "," => 188,
+ ")" => 189
}
},
- {#State 166
- DEFAULT => -81
+ {#State 169
+ DEFAULT => -83
},
- {#State 167
+ {#State 170
ACTIONS => {
- "=" => 187
+ "=" => 190
}
},
- {#State 168
+ {#State 171
ACTIONS => {
'CONSTANT' => 48,
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 188,
+ 'anytext' => 191,
'text' => 51,
'constant' => 47
}
},
- {#State 169
+ {#State 172
ACTIONS => {
- "[" => 152
+ "[" => 155
},
- DEFAULT => -84,
+ DEFAULT => -86,
GOTOS => {
- 'array_len' => 189
+ 'array_len' => 192
}
},
- {#State 170
+ {#State 173
ACTIONS => {
- "-" => 68,
- ":" => 67,
- "?" => 69,
- "<" => 70,
- "+" => 72,
- "~" => 71,
- "&" => 74,
- "{" => 73,
- "/" => 75,
- "=" => 76,
- "|" => 78,
- "(" => 77,
- "*" => 79,
- "." => 80,
- "]" => 190,
- ">" => 81
+ "-" => 69,
+ ":" => 68,
+ "?" => 70,
+ "<" => 71,
+ "+" => 73,
+ "~" => 72,
+ "&" => 75,
+ "{" => 74,
+ "/" => 76,
+ "=" => 77,
+ "|" => 79,
+ "(" => 78,
+ "*" => 80,
+ "." => 81,
+ "]" => 193,
+ ">" => 82
}
},
- {#State 171
+ {#State 174
DEFAULT => -29
},
- {#State 172
- DEFAULT => -69
+ {#State 175
+ DEFAULT => -70
},
- {#State 173
+ {#State 176
ACTIONS => {
"[" => 20
},
- DEFAULT => -87,
+ DEFAULT => -89,
GOTOS => {
- 'base_or_empty' => 191,
- 'base_element' => 192,
- 'empty_element' => 193,
- 'property_list' => 194
+ 'base_or_empty' => 194,
+ 'base_element' => 195,
+ 'empty_element' => 196,
+ 'property_list' => 197
}
},
- {#State 174
- DEFAULT => -68
+ {#State 177
+ DEFAULT => -69
},
- {#State 175
- DEFAULT => -59
+ {#State 178
+ DEFAULT => -60
},
- {#State 176
+ {#State 179
ACTIONS => {
- ";" => 195
+ ";" => 198
}
},
- {#State 177
+ {#State 180
ACTIONS => {
'IDENTIFIER' => 26,
- "signed" => 98,
- 'void' => 92,
- "unsigned" => 102,
+ "signed" => 100,
+ 'void' => 93,
+ "unsigned" => 104,
"[" => 20
},
- DEFAULT => -87,
+ DEFAULT => -89,
GOTOS => {
'existingtype' => 99,
- 'bitmap' => 56,
- 'usertype' => 94,
- 'property_list' => 93,
- 'identifier' => 95,
- 'struct' => 61,
- 'enum' => 64,
- 'type' => 196,
- 'union' => 66,
- 'sign' => 96
+ 'pipe' => 56,
+ 'bitmap' => 57,
+ 'usertype' => 95,
+ 'property_list' => 94,
+ 'identifier' => 96,
+ 'struct' => 62,
+ 'enum' => 65,
+ 'type' => 199,
+ 'union' => 67,
+ 'sign' => 97
}
},
- {#State 178
+ {#State 181
ACTIONS => {
'CONSTANT' => 48,
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 197,
+ 'anytext' => 200,
'text' => 51,
'constant' => 47
}
},
- {#State 179
- DEFAULT => -42
+ {#State 182
+ DEFAULT => -43
},
- {#State 180
+ {#State 183
ACTIONS => {
'IDENTIFIER' => 26
},
GOTOS => {
- 'identifier' => 156,
- 'enum_element' => 198
+ 'identifier' => 159,
+ 'enum_element' => 201
}
},
- {#State 181
+ {#State 184
ACTIONS => {
'IDENTIFIER' => 26
},
GOTOS => {
- 'identifier' => 161,
- 'bitmap_element' => 199
+ 'identifier' => 164,
+ 'bitmap_element' => 202
}
},
- {#State 182
+ {#State 185
ACTIONS => {
'CONSTANT' => 48,
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 200,
+ 'anytext' => 203,
'text' => 51,
'constant' => 47
}
},
- {#State 183
- DEFAULT => -50
+ {#State 186
+ DEFAULT => -51
},
- {#State 184
- DEFAULT => -82
+ {#State 187
+ DEFAULT => -84
},
- {#State 185
+ {#State 188
ACTIONS => {
- "const" => 164
+ "const" => 167
},
- DEFAULT => -78,
+ DEFAULT => -80,
GOTOS => {
- 'optional_const' => 201
+ 'optional_const' => 204
}
},
- {#State 186
+ {#State 189
ACTIONS => {
- ";" => 202
+ ";" => 205
}
},
- {#State 187
+ {#State 190
ACTIONS => {
'CONSTANT' => 48,
'TEXT' => 16,
'IDENTIFIER' => 26
},
- DEFAULT => -95,
+ DEFAULT => -97,
GOTOS => {
'identifier' => 50,
- 'anytext' => 203,
+ 'anytext' => 206,
'text' => 51,
'constant' => 47
}
},
- {#State 188
+ {#State 191
ACTIONS => {
- "-" => 68,
- ":" => 67,
- "?" => 69,
- "<" => 70,
- ";" => 204,
- "+" => 72,
- "~" => 71,
- "&" => 74,
- "{" => 73,
- "/" => 75,
- "=" => 76,
- "|" => 78,
- "(" => 77,
- "*" => 79,
- "." => 80,
- ">" => 81
+ "-" => 69,
+ ":" => 68,
+ "?" => 70,
+ "<" => 71,
+ ";" => 207,
+ "+" => 73,
+ "~" => 72,
+ "&" => 75,
+ "{" => 74,
+ "/" => 76,
+ "=" => 77,
+ "|" => 79,
+ "(" => 78,
+ "*" => 80,
+ "." => 81,
+ ">" => 82
}
},
- {#State 189
- DEFAULT => -85
+ {#State 192
+ DEFAULT => -87
},
- {#State 190
+ {#State 193
ACTIONS => {
- "[" => 152
+ "[" => 155
},
- DEFAULT => -84,
+ DEFAULT => -86,
GOTOS => {
- 'array_len' => 205
+ 'array_len' => 208
}
},
- {#State 191
- DEFAULT => -66
+ {#State 194
+ DEFAULT => -67
},
- {#State 192
+ {#State 195
ACTIONS => {
- ";" => 206
+ ";" => 209
}
},
- {#State 193
- DEFAULT => -65
+ {#State 196
+ DEFAULT => -66
},
- {#State 194
+ {#State 197
ACTIONS => {
'IDENTIFIER' => 26,
- "signed" => 98,
- ";" => 207,
- 'void' => 92,
- "unsigned" => 102,
+ "signed" => 100,
+ ";" => 210,
+ 'void' => 93,
+ "unsigned" => 104,
"[" => 20
},
- DEFAULT => -87,
+ DEFAULT => -89,
GOTOS => {
'existingtype' => 99,
- 'bitmap' => 56,
- 'usertype' => 94,
- 'property_list' => 93,
- 'identifier' => 95,
- 'struct' => 61,
- 'enum' => 64,
- 'type' => 196,
- 'union' => 66,
- 'sign' => 96
+ 'pipe' => 56,
+ 'bitmap' => 57,
+ 'usertype' => 95,
+ 'property_list' => 94,
+ 'identifier' => 96,
+ 'struct' => 62,
+ 'enum' => 65,
+ 'type' => 199,
+ 'union' => 67,
+ 'sign' => 97
}
},
- {#State 195
- DEFAULT => -77
+ {#State 198
+ DEFAULT => -79
},
- {#State 196
- DEFAULT => -74,
+ {#State 199
+ DEFAULT => -75,
GOTOS => {
- 'pointers' => 208
+ 'pointers' => 211
}
},
- {#State 197
+ {#State 200
ACTIONS => {
- "-" => 68,
- ":" => 67,
- "<" => 70,
- "+" => 72,
- "~" => 71,
- "*" => 79,
- "?" => 69,
- "{" => 73,
- "&" => 74,
- "/" => 75,
- "=" => 76,
- "(" => 77,
- "|" => 78,
- "." => 80,
- ">" => 81
+ "-" => 69,
+ ":" => 68,
+ "<" => 71,
+ "+" => 73,
+ "~" => 72,
+ "*" => 80,
+ "?" => 70,
+ "{" => 74,
+ "&" => 75,
+ "/" => 76,
+ "=" => 77,
+ "(" => 78,
+ "|" => 79,
+ "." => 81,
+ ">" => 82
},
- DEFAULT => -49
+ DEFAULT => -50
},
- {#State 198
- DEFAULT => -47
+ {#State 201
+ DEFAULT => -48
},
- {#State 199
- DEFAULT => -55
+ {#State 202
+ DEFAULT => -56
},
- {#State 200
+ {#State 203
ACTIONS => {
- "-" => 68,
- ":" => 67,
- "<" => 70,
- "+" => 72,
- "~" => 71,
- "*" => 79,
- "?" => 69,
- "{" => 73,
- "&" => 74,
- "/" => 75,
- "=" => 76,
- "(" => 77,
- "|" => 78,
- "." => 80,
- ">" => 81
+ "-" => 69,
+ ":" => 68,
+ "<" => 71,
+ "+" => 73,
+ "~" => 72,
+ "*" => 80,
+ "?" => 70,
+ "{" => 74,
+ "&" => 75,
+ "/" => 76,
+ "=" => 77,
+ "(" => 78,
+ "|" => 79,
+ "." => 81,
+ ">" => 82
},
- DEFAULT => -58
+ DEFAULT => -59
},
- {#State 201
- DEFAULT => -87,
+ {#State 204
+ DEFAULT => -89,
GOTOS => {
- 'base_element' => 209,
- 'property_list' => 177
+ 'base_element' => 212,
+ 'property_list' => 180
}
},
- {#State 202
+ {#State 205
DEFAULT => -28
},
- {#State 203
+ {#State 206
ACTIONS => {
- "-" => 68,
- ":" => 67,
- "?" => 69,
- "<" => 70,
- ";" => 210,
- "+" => 72,
- "~" => 71,
- "&" => 74,
- "{" => 73,
- "/" => 75,
- "=" => 76,
- "|" => 78,
- "(" => 77,
- "*" => 79,
- "." => 80,
- ">" => 81
+ "-" => 69,
+ ":" => 68,
+ "?" => 70,
+ "<" => 71,
+ ";" => 213,
+ "+" => 73,
+ "~" => 72,
+ "&" => 75,
+ "{" => 74,
+ "/" => 76,
+ "=" => 77,
+ "|" => 79,
+ "(" => 78,
+ "*" => 80,
+ "." => 81,
+ ">" => 82
}
},
- {#State 204
+ {#State 207
DEFAULT => -26
},
- {#State 205
- DEFAULT => -86
+ {#State 208
+ DEFAULT => -88
},
- {#State 206
- DEFAULT => -64
+ {#State 209
+ DEFAULT => -65
},
- {#State 207
- DEFAULT => -63
+ {#State 210
+ DEFAULT => -64
},
- {#State 208
+ {#State 211
ACTIONS => {
'IDENTIFIER' => 26,
- "*" => 149
+ "*" => 152
},
GOTOS => {
- 'identifier' => 211
+ 'identifier' => 214
}
},
- {#State 209
- DEFAULT => -83
+ {#State 212
+ DEFAULT => -85
},
- {#State 210
+ {#State 213
DEFAULT => -27
},
- {#State 211
+ {#State 214
ACTIONS => {
- "[" => 152
+ "[" => 155
},
- DEFAULT => -84,
+ DEFAULT => -86,
GOTOS => {
- 'array_len' => 212
+ 'array_len' => 215
}
},
- {#State 212
- DEFAULT => -73
+ {#State 215
+ DEFAULT => -74
}
],
yyrules =>
@@ -1957,54 +1993,57 @@ sub
'usertype', 1, undef
],
[#Rule 34
+ 'usertype', 1, undef
+ ],
+ [#Rule 35
'typedecl', 2,
sub
-#line 195 "./../pidl/idl.yp"
+#line 197 "./../pidl/idl.yp"
{ $_[1] }
],
- [#Rule 35
- 'sign', 1, undef
- ],
[#Rule 36
'sign', 1, undef
],
[#Rule 37
+ 'sign', 1, undef
+ ],
+ [#Rule 38
'existingtype', 2,
sub
-#line 205 "./../pidl/idl.yp"
+#line 207 "./../pidl/idl.yp"
{ ($_[1]?$_[1]:"signed") ." $_[2]" }
],
- [#Rule 38
- 'existingtype', 1, undef
- ],
[#Rule 39
- 'type', 1, undef
+ 'existingtype', 1, undef
],
[#Rule 40
'type', 1, undef
],
[#Rule 41
+ 'type', 1, undef
+ ],
+ [#Rule 42
'type', 1,
sub
-#line 215 "./../pidl/idl.yp"
+#line 217 "./../pidl/idl.yp"
{ "void" }
],
- [#Rule 42
+ [#Rule 43
'enum_body', 3,
sub
-#line 219 "./../pidl/idl.yp"
+#line 221 "./../pidl/idl.yp"
{ $_[2] }
],
- [#Rule 43
+ [#Rule 44
'opt_enum_body', 0, undef
],
- [#Rule 44
+ [#Rule 45
'opt_enum_body', 1, undef
],
- [#Rule 45
+ [#Rule 46
'enum', 4,
sub
-#line 230 "./../pidl/idl.yp"
+#line 232 "./../pidl/idl.yp"
{{
"TYPE" => "ENUM",
"PROPERTIES" => $_[1],
@@ -2014,43 +2053,43 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 46
+ [#Rule 47
'enum_elements', 1,
sub
-#line 241 "./../pidl/idl.yp"
+#line 243 "./../pidl/idl.yp"
{ [ $_[1] ] }
],
- [#Rule 47
+ [#Rule 48
'enum_elements', 3,
sub
-#line 243 "./../pidl/idl.yp"
+#line 245 "./../pidl/idl.yp"
{ push(@{$_[1]}, $_[3]); $_[1] }
],
- [#Rule 48
+ [#Rule 49
'enum_element', 1, undef
],
- [#Rule 49
+ [#Rule 50
'enum_element', 3,
sub
-#line 249 "./../pidl/idl.yp"
+#line 251 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
- [#Rule 50
+ [#Rule 51
'bitmap_body', 3,
sub
-#line 253 "./../pidl/idl.yp"
+#line 255 "./../pidl/idl.yp"
{ $_[2] }
],
- [#Rule 51
+ [#Rule 52
'opt_bitmap_body', 0, undef
],
- [#Rule 52
+ [#Rule 53
'opt_bitmap_body', 1, undef
],
- [#Rule 53
+ [#Rule 54
'bitmap', 4,
sub
-#line 264 "./../pidl/idl.yp"
+#line 266 "./../pidl/idl.yp"
{{
"TYPE" => "BITMAP",
"PROPERTIES" => $_[1],
@@ -2060,46 +2099,46 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 54
+ [#Rule 55
'bitmap_elements', 1,
sub
-#line 275 "./../pidl/idl.yp"
+#line 277 "./../pidl/idl.yp"
{ [ $_[1] ] }
],
- [#Rule 55
+ [#Rule 56
'bitmap_elements', 3,
sub
-#line 277 "./../pidl/idl.yp"
+#line 279 "./../pidl/idl.yp"
{ push(@{$_[1]}, $_[3]); $_[1] }
],
- [#Rule 56
+ [#Rule 57
'opt_bitmap_elements', 0, undef
],
- [#Rule 57
+ [#Rule 58
'opt_bitmap_elements', 1, undef
],
- [#Rule 58
+ [#Rule 59
'bitmap_element', 3,
sub
-#line 287 "./../pidl/idl.yp"
+#line 289 "./../pidl/idl.yp"
{ "$_[1] ( $_[3] )" }
],
- [#Rule 59
+ [#Rule 60
'struct_body', 3,
sub
-#line 291 "./../pidl/idl.yp"
+#line 293 "./../pidl/idl.yp"
{ $_[2] }
],
- [#Rule 60
+ [#Rule 61
'opt_struct_body', 0, undef
],
- [#Rule 61
+ [#Rule 62
'opt_struct_body', 1, undef
],
- [#Rule 62
+ [#Rule 63
'struct', 4,
sub
-#line 302 "./../pidl/idl.yp"
+#line 304 "./../pidl/idl.yp"
{{
"TYPE" => "STRUCT",
"PROPERTIES" => $_[1],
@@ -2109,10 +2148,10 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 63
+ [#Rule 64
'empty_element', 2,
sub
-#line 314 "./../pidl/idl.yp"
+#line 316 "./../pidl/idl.yp"
{{
"NAME" => "",
"TYPE" => "EMPTY",
@@ -2123,43 +2162,43 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 64
+ [#Rule 65
'base_or_empty', 2, undef
],
- [#Rule 65
+ [#Rule 66
'base_or_empty', 1, undef
],
- [#Rule 66
+ [#Rule 67
'optional_base_element', 2,
sub
-#line 331 "./../pidl/idl.yp"
+#line 333 "./../pidl/idl.yp"
{ $_[2]->{PROPERTIES} = FlattenHash([$_[1],$_[2]->{PROPERTIES}]); $_[2] }
],
- [#Rule 67
+ [#Rule 68
'union_elements', 0, undef
],
- [#Rule 68
+ [#Rule 69
'union_elements', 2,
sub
-#line 337 "./../pidl/idl.yp"
+#line 339 "./../pidl/idl.yp"
{ push(@{$_[1]}, $_[2]); $_[1] }
],
- [#Rule 69
+ [#Rule 70
'union_body', 3,
sub
-#line 341 "./../pidl/idl.yp"
+#line 343 "./../pidl/idl.yp"
{ $_[2] }
],
- [#Rule 70
+ [#Rule 71
'opt_union_body', 0, undef
],
- [#Rule 71
+ [#Rule 72
'opt_union_body', 1, undef
],
- [#Rule 72
+ [#Rule 73
'union', 4,
sub
-#line 352 "./../pidl/idl.yp"
+#line 354 "./../pidl/idl.yp"
{{
"TYPE" => "UNION",
"PROPERTIES" => $_[1],
@@ -2169,10 +2208,10 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 73
+ [#Rule 74
'base_element', 5,
sub
-#line 364 "./../pidl/idl.yp"
+#line 366 "./../pidl/idl.yp"
{{
"NAME" => $_[4],
"TYPE" => $_[2],
@@ -2183,238 +2222,251 @@ sub
"LINE" => $_[0]->YYData->{LINE},
}}
],
- [#Rule 74
+ [#Rule 75
'pointers', 0,
sub
-#line 377 "./../pidl/idl.yp"
+#line 379 "./../pidl/idl.yp"
{ 0 }
],
- [#Rule 75
+ [#Rule 76
'pointers', 2,
sub
-#line 379 "./../pidl/idl.yp"
+#line 381 "./../pidl/idl.yp"
{ $_[1]+1 }
],
- [#Rule 76
+ [#Rule 77
+ 'pipe', 3,
+sub
+#line 386 "./../pidl/idl.yp"
+{{
+ "TYPE" => "PIPE",
+ "PROPERTIES" => $_[1],
+ "NAME" => $_[4],
+ "DATA" => $_[3],
+ "FILE" => $_[0]->YYData->{FILE},
+ "LINE" => $_[0]->YYData->{LINE},
+ }}
+ ],
+ [#Rule 78
'element_list1', 0,
sub
-#line 384 "./../pidl/idl.yp"
+#line 398 "./../pidl/idl.yp"
{ [] }
],
- [#Rule 77
+ [#Rule 79
'element_list1', 3,
sub
-#line 386 "./../pidl/idl.yp"
+#line 400 "./../pidl/idl.yp"
{ push(@{$_[1]}, $_[2]); $_[1] }
],
- [#Rule 78
+ [#Rule 80
'optional_const', 0, undef
],
- [#Rule 79
+ [#Rule 81
'optional_const', 1, undef
],
- [#Rule 80
+ [#Rule 82
'element_list2', 0, undef
],
- [#Rule 81
+ [#Rule 83
'element_list2', 1, undef
],
- [#Rule 82
+ [#Rule 84
'element_list2', 2,
sub
-#line 400 "./../pidl/idl.yp"
+#line 414 "./../pidl/idl.yp"
{ [ $_[2] ] }
],
- [#Rule 83
+ [#Rule 85
'element_list2', 4,
sub
-#line 402 "./../pidl/idl.yp"
+#line 416 "./../pidl/idl.yp"
{ push(@{$_[1]}, $_[4]); $_[1] }
],
- [#Rule 84
+ [#Rule 86
'array_len', 0, undef
],
- [#Rule 85
+ [#Rule 87
'array_len', 3,
sub
-#line 408 "./../pidl/idl.yp"
+#line 422 "./../pidl/idl.yp"
{ push(@{$_[3]}, "*"); $_[3] }
],
- [#Rule 86
+ [#Rule 88
'array_len', 4,
sub
-#line 410 "./../pidl/idl.yp"
+#line 424 "./../pidl/idl.yp"
{ push(@{$_[4]}, "$_[2]"); $_[4] }
],
- [#Rule 87
+ [#Rule 89
'property_list', 0, undef
],
- [#Rule 88
+ [#Rule 90
'property_list', 4,
sub
-#line 416 "./../pidl/idl.yp"
+#line 430 "./../pidl/idl.yp"
{ FlattenHash([$_[1],$_[3]]); }
],
- [#Rule 89
+ [#Rule 91
'properties', 1,
sub
-#line 420 "./../pidl/idl.yp"
+#line 434 "./../pidl/idl.yp"
{ $_[1] }
],
- [#Rule 90
+ [#Rule 92
'properties', 3,
sub
-#line 422 "./../pidl/idl.yp"
+#line 436 "./../pidl/idl.yp"
{ FlattenHash([$_[1], $_[3]]); }
],
- [#Rule 91
+ [#Rule 93
'property', 1,
sub
-#line 426 "./../pidl/idl.yp"
+#line 440 "./../pidl/idl.yp"
{{ "$_[1]" => "1" }}
],
- [#Rule 92
+ [#Rule 94
'property', 4,
sub
-#line 428 "./../pidl/idl.yp"
+#line 442 "./../pidl/idl.yp"
{{ "$_[1]" => "$_[3]" }}
],
- [#Rule 93
+ [#Rule 95
'commalisttext', 1, undef
],
- [#Rule 94
+ [#Rule 96
'commalisttext', 3,
sub
-#line 434 "./../pidl/idl.yp"
+#line 448 "./../pidl/idl.yp"
{ "$_[1],$_[3]" }
],
- [#Rule 95
+ [#Rule 97
'anytext', 0,
sub
-#line 439 "./../pidl/idl.yp"
+#line 453 "./../pidl/idl.yp"
{ "" }
],
- [#Rule 96
- 'anytext', 1, undef
- ],
- [#Rule 97
- 'anytext', 1, undef
- ],
[#Rule 98
'anytext', 1, undef
],
[#Rule 99
- 'anytext', 3,
-sub
-#line 447 "./../pidl/idl.yp"
-{ "$_[1]$_[2]$_[3]" }
+ 'anytext', 1, undef
],
[#Rule 100
- 'anytext', 3,
-sub
-#line 449 "./../pidl/idl.yp"
-{ "$_[1]$_[2]$_[3]" }
+ 'anytext', 1, undef
],
[#Rule 101
'anytext', 3,
sub
-#line 451 "./../pidl/idl.yp"
+#line 461 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 102
'anytext', 3,
sub
-#line 453 "./../pidl/idl.yp"
+#line 463 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 103
'anytext', 3,
sub
-#line 455 "./../pidl/idl.yp"
+#line 465 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 104
'anytext', 3,
sub
-#line 457 "./../pidl/idl.yp"
+#line 467 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 105
'anytext', 3,
sub
-#line 459 "./../pidl/idl.yp"
+#line 469 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 106
'anytext', 3,
sub
-#line 461 "./../pidl/idl.yp"
+#line 471 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 107
'anytext', 3,
sub
-#line 463 "./../pidl/idl.yp"
+#line 473 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 108
'anytext', 3,
sub
-#line 465 "./../pidl/idl.yp"
+#line 475 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 109
'anytext', 3,
sub
-#line 467 "./../pidl/idl.yp"
+#line 477 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 110
'anytext', 3,
sub
-#line 469 "./../pidl/idl.yp"
+#line 479 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 111
'anytext', 3,
sub
-#line 471 "./../pidl/idl.yp"
+#line 481 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]" }
],
[#Rule 112
+ 'anytext', 3,
+sub
+#line 483 "./../pidl/idl.yp"
+{ "$_[1]$_[2]$_[3]" }
+ ],
+ [#Rule 113
+ 'anytext', 3,
+sub
+#line 485 "./../pidl/idl.yp"
+{ "$_[1]$_[2]$_[3]" }
+ ],
+ [#Rule 114
'anytext', 5,
sub
-#line 473 "./../pidl/idl.yp"
+#line 487 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
],
- [#Rule 113
+ [#Rule 115
'anytext', 5,
sub
-#line 475 "./../pidl/idl.yp"
+#line 489 "./../pidl/idl.yp"
{ "$_[1]$_[2]$_[3]$_[4]$_[5]" }
],
- [#Rule 114
+ [#Rule 116
'identifier', 1, undef
],
- [#Rule 115
+ [#Rule 117
'optional_identifier', 0, undef
],
- [#Rule 116
+ [#Rule 118
'optional_identifier', 1, undef
],
- [#Rule 117
+ [#Rule 119
'constant', 1, undef
],
- [#Rule 118
+ [#Rule 120
'text', 1,
sub
-#line 493 "./../pidl/idl.yp"
+#line 507 "./../pidl/idl.yp"
{ "\"$_[1]\"" }
],
- [#Rule 119
+ [#Rule 121
'optional_semicolon', 0, undef
],
- [#Rule 120
+ [#Rule 122
'optional_semicolon', 1, undef
]
],
@@ -2422,7 +2474,7 @@ sub
bless($self,$class);
}
-#line 505 "./../pidl/idl.yp"
+#line 519 "./../pidl/idl.yp"
use Parse::Pidl qw(error);
@@ -2524,7 +2576,7 @@ again:
if ($1 =~
/^(coclass|interface|import|importlib
|include|cpp_quote|typedef
- |union|struct|enum|bitmap
+ |union|struct|enum|bitmap|pipe
|void|const|unsigned|signed)$/x) {
return $1;
}
diff --git a/pidl/lib/Parse/Pidl/NDR.pm b/pidl/lib/Parse/Pidl/NDR.pm
index 8440f0183d..a36f638092 100644
--- a/pidl/lib/Parse/Pidl/NDR.pm
+++ b/pidl/lib/Parse/Pidl/NDR.pm
@@ -928,7 +928,7 @@ my %property_list = (
"bitmap64bit" => ["BITMAP"],
# array
- "range" => ["ELEMENT"],
+ "range" => ["ELEMENT", "PIPE"],
"size_is" => ["ELEMENT"],
"string" => ["ELEMENT"],
"noheader" => ["ELEMENT"],
@@ -1120,6 +1120,18 @@ sub ValidUnion($)
}
#####################################################################
+# validate a pipe
+sub ValidPipe($)
+{
+ my ($pipe) = @_;
+ my $data = $pipe->{DATA};
+
+ ValidProperties($pipe, "PIPE");
+
+ fatal($pipe, $pipe->{NAME} . ": 'pipe' is not yet supported by pidl");
+}
+
+#####################################################################
# parse a typedef
sub ValidTypedef($)
{
@@ -1164,7 +1176,8 @@ sub ValidType($)
STRUCT => \&ValidStruct,
UNION => \&ValidUnion,
ENUM => \&ValidEnum,
- BITMAP => \&ValidBitmap
+ BITMAP => \&ValidBitmap,
+ PIPE => \&ValidPipe
}->{$t->{TYPE}}->($t);
}
@@ -1206,7 +1219,8 @@ sub ValidInterface($)
$d->{TYPE} eq "STRUCT" or
$d->{TYPE} eq "UNION" or
$d->{TYPE} eq "ENUM" or
- $d->{TYPE} eq "BITMAP") && ValidType($d);
+ $d->{TYPE} eq "BITMAP" or
+ $d->{TYPE} eq "PIPE") && ValidType($d);
}
}