pidl: parse idl 'pipe' typedefs, but print out a not supported message for now
authorStefan Metzmacher <metze@samba.org>
Wed, 5 Aug 2009 11:40:38 +0000 (13:40 +0200)
committerStefan Metzmacher <metze@samba.org>
Fri, 7 Aug 2009 09:50:24 +0000 (11:50 +0200)
metze

pidl/idl.yp
pidl/lib/Parse/Pidl/IDL.pm
pidl/lib/Parse/Pidl/NDR.pm

index 399ff74f41f40328242c6d9f4d398c3ef879372e..dc8e293f765046eca4b3bb89e22b7a1b8e9999b7 100644 (file)
@@ -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;
                        }
index 53be9fc65514da405e19501680dcb31c3ca6a183..1a3c59d35cf40b85e142399845e5db3e167fcab3 100644 (file)
@@ -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
-               },
+               DEFAULT => -62
+       },
+       {#State 142
+               DEFAULT => -78,
                GOTOS => {
-                       'identifier' => 156,
-                       'enum_element' => 157,
-                       'enum_elements' => 158
+                       'element_list1' => 158
                }
        },
-       {#State 142
-               DEFAULT => -44
-       },
        {#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;
                        }
index 8440f0183d9d7e4e003ef01c6c5e6cef208e0223..a36f6380924977dd1285e0099e7ae16e988fc0c0 100644 (file)
@@ -928,7 +928,7 @@ my %property_list = (
        "bitmap64bit"           => ["BITMAP"],
 
        # array
-       "range"                 => ["ELEMENT"],
+       "range"                 => ["ELEMENT", "PIPE"],
        "size_is"               => ["ELEMENT"],
        "string"                => ["ELEMENT"],
        "noheader"              => ["ELEMENT"],
@@ -1119,6 +1119,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);
        }
 
 }