Annotation of Gnu-Mach/mig/parser.c, revision 1.1

1.1     ! root        1: 
        !             2: /*  A Bison parser, made from ../gnumach/mig/parser.y
        !             3:  by  Bison version A2.5 (Andrew Consortium)
        !             4:   */
        !             5: 
        !             6: #define YYBISON 1  /* Identify Bison output.  */
        !             7: 
        !             8: #define        sySkip  258
        !             9: #define        syRoutine       259
        !            10: #define        sySimpleRoutine 260
        !            11: #define        sySimpleProcedure       261
        !            12: #define        syProcedure     262
        !            13: #define        syFunction      263
        !            14: #define        sySubsystem     264
        !            15: #define        syKernelUser    265
        !            16: #define        syKernelServer  266
        !            17: #define        syMsgOption     267
        !            18: #define        syMsgSeqno      268
        !            19: #define        syWaitTime      269
        !            20: #define        syNoWaitTime    270
        !            21: #define        syErrorProc     271
        !            22: #define        syServerPrefix  272
        !            23: #define        syUserPrefix    273
        !            24: #define        syServerDemux   274
        !            25: #define        syRCSId 275
        !            26: #define        syImport        276
        !            27: #define        syUImport       277
        !            28: #define        sySImport       278
        !            29: #define        syIn    279
        !            30: #define        syOut   280
        !            31: #define        syInOut 281
        !            32: #define        syRequestPort   282
        !            33: #define        syReplyPort     283
        !            34: #define        sySReplyPort    284
        !            35: #define        syUReplyPort    285
        !            36: #define        syType  286
        !            37: #define        syArray 287
        !            38: #define        syStruct        288
        !            39: #define        syOf    289
        !            40: #define        syInTran        290
        !            41: #define        syOutTran       291
        !            42: #define        syDestructor    292
        !            43: #define        syCType 293
        !            44: #define        syCUserType     294
        !            45: #define        syCServerType   295
        !            46: #define        syCString       296
        !            47: #define        syColon 297
        !            48: #define        sySemi  298
        !            49: #define        syComma 299
        !            50: #define        syPlus  300
        !            51: #define        syMinus 301
        !            52: #define        syStar  302
        !            53: #define        syDiv   303
        !            54: #define        syLParen        304
        !            55: #define        syRParen        305
        !            56: #define        syEqual 306
        !            57: #define        syCaret 307
        !            58: #define        syTilde 308
        !            59: #define        syLAngle        309
        !            60: #define        syRAngle        310
        !            61: #define        syLBrack        311
        !            62: #define        syRBrack        312
        !            63: #define        syBar   313
        !            64: #define        syError 314
        !            65: #define        syNumber        315
        !            66: #define        sySymbolicType  316
        !            67: #define        syIdentifier    317
        !            68: #define        syString        318
        !            69: #define        syQString       319
        !            70: #define        syFileName      320
        !            71: #define        syIPCFlag       321
        !            72: 
        !            73: #line 117 "../gnumach/mig/parser.y"
        !            74: 
        !            75: 
        !            76: #include <stdio.h>
        !            77: 
        !            78: #include "error.h"
        !            79: #include "lexxer.h"
        !            80: #include "global.h"
        !            81: #include "mig_string.h"
        !            82: #include "type.h"
        !            83: #include "routine.h"
        !            84: #include "statement.h"
        !            85: 
        !            86: static const char *import_name(statement_kind_t sk);
        !            87: 
        !            88: void
        !            89: yyerror(const char *s)
        !            90: {
        !            91:     error(s);
        !            92: }
        !            93: 
        !            94: #line 138 "../gnumach/mig/parser.y"
        !            95: typedef union
        !            96: {
        !            97:     u_int number;
        !            98:     identifier_t identifier;
        !            99:     const_string_t string;
        !           100:     statement_kind_t statement_kind;
        !           101:     ipc_type_t *type;
        !           102:     struct
        !           103:     {
        !           104:        u_int innumber;         /* msgt_name value, when sending */
        !           105:        const_string_t instr;
        !           106:        u_int outnumber;        /* msgt_name value, when receiving */
        !           107:        const_string_t outstr;
        !           108:        u_int size;             /* 0 means there is no default size */
        !           109:     } symtype;
        !           110:     routine_t *routine;
        !           111:     arg_kind_t direction;
        !           112:     argument_t *argument;
        !           113:     ipc_flags_t flag;
        !           114: } YYSTYPE;
        !           115: #include <stdio.h>
        !           116: 
        !           117: #ifndef __cplusplus
        !           118: #ifndef __STDC__
        !           119: #define const
        !           120: #endif
        !           121: #endif
        !           122: 
        !           123: 
        !           124: 
        !           125: #define        YYFINAL         213
        !           126: #define        YYFLAG          -32768
        !           127: #define        YYNTBASE        67
        !           128: 
        !           129: #define YYTRANSLATE(x) ((unsigned)(x) <= 321 ? yytranslate[x] : 112)
        !           130: 
        !           131: static const char yytranslate[] = {     0,
        !           132:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           133:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           134:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           135:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           136:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           137:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           138:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           139:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           140:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           141:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           142:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           143:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           144:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           145:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           146:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           147:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           148:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           149:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           150:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           151:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           152:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           153:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           154:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           155:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           156:      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           157:      2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
        !           158:      6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
        !           159:     16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
        !           160:     26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
        !           161:     36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
        !           162:     46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
        !           163:     56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
        !           164:     66
        !           165: };
        !           166: 
        !           167: #if YYDEBUG != 0
        !           168: static const short yyprhs[] = {     0,
        !           169:      0,     1,     4,     7,    10,    13,    16,    19,    22,    25,
        !           170:     28,    31,    34,    38,    41,    44,    46,    49,    54,    56,
        !           171:     57,    60,    62,    64,    66,    68,    72,    76,    78,    81,
        !           172:     84,    87,    90,    94,    96,    98,   100,   104,   107,   111,
        !           173:    113,   122,   131,   139,   144,   149,   154,   156,   158,   161,
        !           174:    164,   167,   170,   172,   174,   181,   182,   186,   192,   194,
        !           175:    196,   198,   202,   204,   209,   215,   223,   229,   235,   240,
        !           176:    247,   251,   255,   259,   263,   265,   269,   271,   273,   275,
        !           177:    277,   279,   283,   287,   291,   295,   300,   303,   307,   309,
        !           178:    313,   318,   319,   321,   323,   325,   327,   329,   331,   333,
        !           179:    335,   337,   339,   342,   345,   346,   347
        !           180: };
        !           181: 
        !           182: static const short yyrhs[] = {    -1,
        !           183:     67,    68,     0,    69,    43,     0,    76,    43,     0,    75,
        !           184:     43,     0,    77,    43,     0,    78,    43,     0,    79,    43,
        !           185:      0,    80,    43,     0,    84,    43,     0,    98,    43,     0,
        !           186:      3,    43,     0,     3,    60,    43,     0,    81,    43,     0,
        !           187:     83,    43,     0,    43,     0,     1,    43,     0,    70,    71,
        !           188:     73,    74,     0,     9,     0,     0,    71,    72,     0,    10,
        !           189:      0,    11,     0,    62,     0,    60,     0,   109,    12,    63,
        !           190:      0,   109,    14,    63,     0,    15,     0,    16,    62,     0,
        !           191:     17,    62,     0,    18,    62,     0,    19,    62,     0,   110,
        !           192:     82,    65,     0,    21,     0,    22,     0,    23,     0,   111,
        !           193:     20,    64,     0,    31,    85,     0,    62,    51,    86,     0,
        !           194:     87,     0,    86,    35,    42,    62,    62,    49,    62,    50,
        !           195:      0,    86,    36,    42,    62,    62,    49,    62,    50,     0,
        !           196:     86,    37,    42,    62,    49,    62,    50,     0,    86,    38,
        !           197:     42,    62,     0,    86,    39,    42,    62,     0,    86,    40,
        !           198:     42,    62,     0,    88,     0,    92,     0,    93,    87,     0,
        !           199:     94,    87,     0,    52,    87,     0,    95,    87,     0,    96,
        !           200:      0,    91,     0,    49,    91,    44,    97,    89,    50,     0,
        !           201:      0,    89,    44,    66,     0,    89,    44,    66,    56,    57,
        !           202:      0,    60,     0,    61,     0,    90,     0,    90,    58,    90,
        !           203:      0,    62,     0,    32,    56,    57,    34,     0,    32,    56,
        !           204:     47,    57,    34,     0,    32,    56,    47,    42,    97,    57,
        !           205:     34,     0,    32,    56,    97,    57,    34,     0,    33,    56,
        !           206:     97,    57,    34,     0,    41,    56,    97,    57,     0,    41,
        !           207:     56,    47,    42,    97,    57,     0,    97,    45,    97,     0,
        !           208:     97,    46,    97,     0,    97,    47,    97,     0,    97,    48,
        !           209:     97,     0,    60,     0,    49,    97,    50,     0,    99,     0,
        !           210:    100,     0,   101,     0,   102,     0,   103,     0,     4,    62,
        !           211:    104,     0,     5,    62,   104,     0,     7,    62,   104,     0,
        !           212:      6,    62,   104,     0,     8,    62,   104,   108,     0,    49,
        !           213:     50,     0,    49,   105,    50,     0,   106,     0,   106,    43,
        !           214:    105,     0,   107,    62,   108,    89,     0,     0,    24,     0,
        !           215:     25,     0,    26,     0,    27,     0,    28,     0,    29,     0,
        !           216:     30,     0,    14,     0,    12,     0,    13,     0,    42,    62,
        !           217:      0,    42,    85,     0,     0,     0,     0
        !           218: };
        !           219: 
        !           220: #endif
        !           221: 
        !           222: #if YYDEBUG != 0
        !           223: static const short yyrline[] = { 0,
        !           224:    161,   162,   165,   166,   167,   168,   169,   170,   171,   172,
        !           225:    173,   183,   185,   187,   188,   189,   190,   194,   207,   219,
        !           226:    220,   223,   229,   237,   240,   243,   260,   266,   274,   282,
        !           227:    290,   298,   306,   317,   318,   319,   322,   332,   342,   346,
        !           228:    348,   368,   388,   403,   417,   426,   438,   440,   442,   444,
        !           229:    446,   448,   450,   454,   460,   469,   471,   478,   487,   493,
        !           230:    497,   499,   523,   527,   529,   531,   536,   540,   544,   546,
        !           231:    551,   553,   555,   557,   559,   561,   566,   567,   568,   569,
        !           232:    570,   573,   577,   581,   585,   589,   593,   595,   600,   602,
        !           233:    609,   619,   620,   621,   622,   623,   624,   625,   626,   627,
        !           234:    628,   629,   632,   638,   642,   646,   650
        !           235: };
        !           236: #endif
        !           237: 
        !           238: 
        !           239: #if YYDEBUG != 0
        !           240: 
        !           241: static const char * const yytname[] = {   "$","error","$undefined.","sySkip",
        !           242: "syRoutine","sySimpleRoutine","sySimpleProcedure","syProcedure","syFunction",
        !           243: "sySubsystem","syKernelUser","syKernelServer","syMsgOption","syMsgSeqno","syWaitTime",
        !           244: "syNoWaitTime","syErrorProc","syServerPrefix","syUserPrefix","syServerDemux",
        !           245: "syRCSId","syImport","syUImport","sySImport","syIn","syOut","syInOut","syRequestPort",
        !           246: "syReplyPort","sySReplyPort","syUReplyPort","syType","syArray","syStruct","syOf",
        !           247: "syInTran","syOutTran","syDestructor","syCType","syCUserType","syCServerType",
        !           248: "syCString","syColon","sySemi","syComma","syPlus","syMinus","syStar","syDiv",
        !           249: "syLParen","syRParen","syEqual","syCaret","syTilde","syLAngle","syRAngle","syLBrack",
        !           250: "syRBrack","syBar","syError","syNumber","sySymbolicType","syIdentifier","syString",
        !           251: "syQString","syFileName","syIPCFlag","Statements","Statement","Subsystem","SubsystemStart",
        !           252: "SubsystemMods","SubsystemMod","SubsystemName","SubsystemBase","MsgOption","WaitTime",
        !           253: "Error","ServerPrefix","UserPrefix","ServerDemux","Import","ImportIndicant",
        !           254: "RCSDecl","TypeDecl","NamedTypeSpec","TransTypeSpec","TypeSpec","BasicTypeSpec",
        !           255: "IPCFlags","PrimIPCType","IPCType","PrevTypeSpec","VarArrayHead","ArrayHead",
        !           256: "StructHead","CStringSpec","IntExp","RoutineDecl","Routine","SimpleRoutine",
        !           257: "Procedure","SimpleProcedure","Function","Arguments","ArgumentList","Argument",
        !           258: "Direction","ArgumentType","LookString","LookFileName","LookQString", NULL
        !           259: };
        !           260: #endif
        !           261: 
        !           262: static const short yyr1[] = {     0,
        !           263:     67,    67,    68,    68,    68,    68,    68,    68,    68,    68,
        !           264:     68,    68,    68,    68,    68,    68,    68,    69,    70,    71,
        !           265:     71,    72,    72,    73,    74,    75,    76,    76,    77,    78,
        !           266:     79,    80,    81,    82,    82,    82,    83,    84,    85,    86,
        !           267:     86,    86,    86,    86,    86,    86,    87,    87,    87,    87,
        !           268:     87,    87,    87,    88,    88,    89,    89,    89,    90,    90,
        !           269:     91,    91,    92,    93,    93,    93,    94,    95,    96,    96,
        !           270:     97,    97,    97,    97,    97,    97,    98,    98,    98,    98,
        !           271:     98,    99,   100,   101,   102,   103,   104,   104,   105,   105,
        !           272:    106,   107,   107,   107,   107,   107,   107,   107,   107,   107,
        !           273:    107,   107,   108,   108,   109,   110,   111
        !           274: };
        !           275: 
        !           276: static const short yyr2[] = {     0,
        !           277:      0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        !           278:      2,     2,     3,     2,     2,     1,     2,     4,     1,     0,
        !           279:      2,     1,     1,     1,     1,     3,     3,     1,     2,     2,
        !           280:      2,     2,     3,     1,     1,     1,     3,     2,     3,     1,
        !           281:      8,     8,     7,     4,     4,     4,     1,     1,     2,     2,
        !           282:      2,     2,     1,     1,     6,     0,     3,     5,     1,     1,
        !           283:      1,     3,     1,     4,     5,     7,     5,     5,     4,     6,
        !           284:      3,     3,     3,     3,     1,     3,     1,     1,     1,     1,
        !           285:      1,     3,     3,     3,     3,     4,     2,     3,     1,     3,
        !           286:      4,     0,     1,     1,     1,     1,     1,     1,     1,     1,
        !           287:      1,     1,     2,     2,     0,     0,     0
        !           288: };
        !           289: 
        !           290: static const short yydefact[] = {     1,
        !           291:      0,     0,     0,     0,     0,     0,     0,     0,    19,    28,
        !           292:      0,     0,     0,     0,     0,    16,     2,     0,    20,     0,
        !           293:      0,     0,     0,     0,     0,     0,     0,     0,     0,    77,
        !           294:     78,    79,    80,    81,     0,     0,     0,    17,    12,     0,
        !           295:      0,     0,     0,     0,     0,    29,    30,    31,    32,     0,
        !           296:     38,     3,     0,     5,     4,     6,     7,     8,     9,    14,
        !           297:     15,    10,    11,     0,     0,    34,    35,    36,     0,     0,
        !           298:     13,    92,    82,    83,    85,    84,     0,     0,    22,    23,
        !           299:     24,    21,     0,    26,    27,    33,    37,   101,   102,   100,
        !           300:     93,    94,    95,    96,    97,    98,    99,    87,     0,    89,
        !           301:      0,     0,    86,     0,     0,     0,     0,     0,    59,    60,
        !           302:     63,    39,    40,    47,    61,    54,    48,     0,     0,     0,
        !           303:     53,    25,    18,    88,    92,     0,   103,   104,     0,     0,
        !           304:      0,     0,    51,     0,     0,     0,     0,     0,     0,     0,
        !           305:     49,    50,    52,    90,    56,     0,     0,     0,    75,     0,
        !           306:      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        !           307:     62,    91,     0,     0,     0,    64,     0,     0,     0,     0,
        !           308:      0,     0,     0,    69,    56,     0,     0,     0,    44,    45,
        !           309:     46,     0,     0,    65,    76,    71,    72,    73,    74,    67,
        !           310:     68,     0,     0,     0,     0,     0,    57,     0,    70,    55,
        !           311:      0,     0,     0,     0,    66,     0,     0,    43,    58,    41,
        !           312:     42,     0,     0
        !           313: };
        !           314: 
        !           315: static const short yydefgoto[] = {     1,
        !           316:     17,    18,    19,    53,    82,    83,   123,    20,    21,    22,
        !           317:     23,    24,    25,    26,    69,    27,    28,    51,   112,   113,
        !           318:    114,   162,   115,   116,   117,   118,   119,   120,   121,   150,
        !           319:     29,    30,    31,    32,    33,    34,    73,    99,   100,   101,
        !           320:    103,    35,    36,    37
        !           321: };
        !           322: 
        !           323: static const short yypact[] = {-32768,
        !           324:      2,    -5,   -31,   -16,    27,    28,    30,    33,-32768,-32768,
        !           325:     35,    49,    71,    72,    89,-32768,-32768,     6,-32768,    60,
        !           326:     67,   107,   109,   110,   111,   112,   113,   114,   115,-32768,
        !           327: -32768,-32768,-32768,-32768,    56,     9,    51,-32768,-32768,   116,
        !           328:    117,   117,   117,   117,   117,-32768,-32768,-32768,-32768,   118,
        !           329: -32768,-32768,   -10,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
        !           330: -32768,-32768,-32768,    98,    99,-32768,-32768,-32768,    95,   100,
        !           331: -32768,    48,-32768,-32768,-32768,-32768,   121,    47,-32768,-32768,
        !           332: -32768,-32768,   105,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
        !           333: -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   120,   124,
        !           334:    106,   119,-32768,   122,   123,   126,    -7,    47,-32768,-32768,
        !           335: -32768,   101,-32768,-32768,   125,-32768,-32768,    47,    47,    47,
        !           336: -32768,-32768,-32768,-32768,    88,   121,   118,-32768,   -13,   -45,
        !           337:    -12,   127,-32768,   130,   131,   132,   133,   134,   135,    -7,
        !           338: -32768,-32768,-32768,-32768,-32768,   -29,   -45,   146,-32768,    -6,
        !           339:     10,   142,    36,   -45,   128,   129,   136,   137,   138,   139,
        !           340: -32768,   141,   -45,   152,    82,-32768,   -45,   -45,   -45,   -45,
        !           341:    153,   154,   -45,-32768,    97,   140,   143,   144,-32768,-32768,
        !           342: -32768,   145,    74,-32768,-32768,    39,    39,-32768,-32768,-32768,
        !           343: -32768,    78,    41,   147,   148,   150,   151,   155,-32768,-32768,
        !           344:    156,   157,   158,   149,-32768,   159,   160,-32768,-32768,-32768,
        !           345: -32768,   192,-32768
        !           346: };
        !           347: 
        !           348: static const short yypgoto[] = {-32768,
        !           349: -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
        !           350: -32768,-32768,-32768,-32768,-32768,-32768,-32768,    92,-32768,   -14,
        !           351: -32768,    20,    63,   108,-32768,-32768,-32768,-32768,-32768,  -104,
        !           352: -32768,-32768,-32768,-32768,-32768,-32768,   104,    79,-32768,-32768,
        !           353:     87,-32768,-32768,-32768
        !           354: };
        !           355: 
        !           356: 
        !           357: #define        YYLAST          219
        !           358: 
        !           359: 
        !           360: static const short yytable[] = {    79,
        !           361:     80,   212,     2,   147,     3,     4,     5,     6,     7,     8,
        !           362:      9,    39,   163,  -105,   149,  -105,    10,    11,    12,    13,
        !           363:     14,  -107,  -106,  -106,  -106,   151,   153,   164,    40,    66,
        !           364:     67,    68,    15,   146,   152,   147,   147,    38,   167,   168,
        !           365:    169,   170,   165,   148,    16,    41,   149,   149,    52,   175,
        !           366:    171,    81,   109,   110,   167,   168,   169,   170,   183,    88,
        !           367:     89,    90,   186,   187,   188,   189,   172,    64,   192,    65,
        !           368:     70,    91,    92,    93,    94,    95,    96,    97,   104,   105,
        !           369:    167,   168,   169,   170,   182,   169,   170,   106,    42,    43,
        !           370:    200,    44,   174,   133,    45,   107,    46,    98,   108,    88,
        !           371:     89,    90,    54,   141,   142,   143,   109,   110,   111,    55,
        !           372:     47,    91,    92,    93,    94,    95,    96,    97,   167,   168,
        !           373:    169,   170,   167,   168,   169,   170,   167,   168,   169,   170,
        !           374:    198,   185,    48,    49,   199,   134,   135,   136,   137,   138,
        !           375:    139,   167,   168,   169,   170,    74,    75,    76,    77,    56,
        !           376:     50,    57,    58,    59,    60,    61,    62,    63,    71,    86,
        !           377:     84,    85,   102,    87,   122,    72,   125,   126,    78,   124,
        !           378:    154,   155,   156,   157,   158,   159,   160,   129,   130,   166,
        !           379:    127,   131,   140,   173,   182,   184,   190,   191,   205,   176,
        !           380:    177,   213,   196,   128,   193,   201,   202,   178,   179,   180,
        !           381:    181,   194,   161,   144,   195,   209,   204,   208,   210,   211,
        !           382:    197,   203,   145,     0,   132,     0,     0,   206,   207
        !           383: };
        !           384: 
        !           385: static const short yycheck[] = {    10,
        !           386:     11,     0,     1,    49,     3,     4,     5,     6,     7,     8,
        !           387:      9,    43,    42,    12,    60,    14,    15,    16,    17,    18,
        !           388:     19,    20,    21,    22,    23,   130,   131,    57,    60,    21,
        !           389:     22,    23,    31,    47,    47,    49,    49,    43,    45,    46,
        !           390:     47,    48,   147,    57,    43,    62,    60,    60,    43,   154,
        !           391:     57,    62,    60,    61,    45,    46,    47,    48,   163,    12,
        !           392:     13,    14,   167,   168,   169,   170,    57,    12,   173,    14,
        !           393:     20,    24,    25,    26,    27,    28,    29,    30,    32,    33,
        !           394:     45,    46,    47,    48,    44,    47,    48,    41,    62,    62,
        !           395:     50,    62,    57,   108,    62,    49,    62,    50,    52,    12,
        !           396:     13,    14,    43,   118,   119,   120,    60,    61,    62,    43,
        !           397:     62,    24,    25,    26,    27,    28,    29,    30,    45,    46,
        !           398:     47,    48,    45,    46,    47,    48,    45,    46,    47,    48,
        !           399:     57,    50,    62,    62,    57,    35,    36,    37,    38,    39,
        !           400:     40,    45,    46,    47,    48,    42,    43,    44,    45,    43,
        !           401:     62,    43,    43,    43,    43,    43,    43,    43,    43,    65,
        !           402:     63,    63,    42,    64,    60,    49,    43,    62,    51,    50,
        !           403:     44,    42,    42,    42,    42,    42,    42,    56,    56,    34,
        !           404:     62,    56,    58,    42,    44,    34,    34,    34,    34,    62,
        !           405:     62,     0,    49,   102,   175,    49,    49,    62,    62,    62,
        !           406:     62,    62,   140,   125,    62,    57,    56,    50,    50,    50,
        !           407:     66,    62,   126,    -1,   107,    -1,    -1,    62,    62
        !           408: };
        !           409: /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
        !           410: #line 3 "/usr/share/bison.simple"
        !           411: 
        !           412: /* Skeleton output parser for bison,
        !           413:    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
        !           414: 
        !           415:    This program is free software; you can redistribute it and/or modify
        !           416:    it under the terms of the GNU General Public License as published by
        !           417:    the Free Software Foundation; either version 2, or (at your option)
        !           418:    any later version.
        !           419: 
        !           420:    This program is distributed in the hope that it will be useful,
        !           421:    but WITHOUT ANY WARRANTY; without even the implied warranty of
        !           422:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !           423:    GNU General Public License for more details.
        !           424: 
        !           425:    You should have received a copy of the GNU General Public License
        !           426:    along with this program; if not, write to the Free Software
        !           427:    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
        !           428: 
        !           429: /* As a special exception, when this file is copied by Bison into a
        !           430:    Bison output file, you may use that output file without restriction.
        !           431:    This special exception was added by the Free Software Foundation
        !           432:    in version 1.24 of Bison.  */
        !           433: 
        !           434: #ifndef alloca
        !           435: #ifdef __GNUC__
        !           436: #define alloca __builtin_alloca
        !           437: #else /* not GNU C.  */
        !           438: #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
        !           439: #include <alloca.h>
        !           440: #else /* not sparc */
        !           441: #if defined (MSDOS) && !defined (__TURBOC__)
        !           442: #include <malloc.h>
        !           443: #else /* not MSDOS, or __TURBOC__ */
        !           444: #if defined(_AIX)
        !           445: #include <malloc.h>
        !           446:  #pragma alloca
        !           447: #else /* not MSDOS, __TURBOC__, or _AIX */
        !           448: #ifdef __hpux
        !           449: #ifdef __cplusplus
        !           450: extern "C" {
        !           451: void *alloca (unsigned int);
        !           452: };
        !           453: #else /* not __cplusplus */
        !           454: void *alloca ();
        !           455: #endif /* not __cplusplus */
        !           456: #endif /* __hpux */
        !           457: #endif /* not _AIX */
        !           458: #endif /* not MSDOS, or __TURBOC__ */
        !           459: #endif /* not sparc.  */
        !           460: #endif /* not GNU C.  */
        !           461: #endif /* alloca not defined.  */
        !           462: 
        !           463: /* This is the parser code that is written into each bison parser
        !           464:   when the %semantic_parser declaration is not specified in the grammar.
        !           465:   It was written by Richard Stallman by simplifying the hairy parser
        !           466:   used when %semantic_parser is specified.  */
        !           467: 
        !           468: /* Note: there must be only one dollar sign in this file.
        !           469:    It is replaced by the list of actions, each action
        !           470:    as one case of the switch.  */
        !           471: 
        !           472: #define yyerrok                (yyerrstatus = 0)
        !           473: #define yyclearin      (yychar = YYEMPTY)
        !           474: #define YYEMPTY                -2
        !           475: #define YYEOF          0
        !           476: #define YYACCEPT       return(0)
        !           477: #define YYABORT        return(1)
        !           478: #define YYERROR                goto yyerrlab1
        !           479: /* Like YYERROR except do call yyerror.
        !           480:    This remains here temporarily to ease the
        !           481:    transition to the new meaning of YYERROR, for GCC.
        !           482:    Once GCC version 2 has supplanted version 1, this can go.  */
        !           483: #define YYFAIL         goto yyerrlab
        !           484: #define YYRECOVERING()  (!!yyerrstatus)
        !           485: #define YYBACKUP(token, value) \
        !           486: do                                                             \
        !           487:   if (yychar == YYEMPTY && yylen == 1)                         \
        !           488:     { yychar = (token), yylval = (value);                      \
        !           489:       yychar1 = YYTRANSLATE (yychar);                          \
        !           490:       YYPOPSTACK;                                              \
        !           491:       goto yybackup;                                           \
        !           492:     }                                                          \
        !           493:   else                                                         \
        !           494:     { yyerror ("syntax error: cannot back up"); YYERROR; }     \
        !           495: while (0)
        !           496: 
        !           497: #define YYTERROR       1
        !           498: #define YYERRCODE      256
        !           499: 
        !           500: #ifndef YYPURE
        !           501: #define YYLEX          yylex()
        !           502: #endif
        !           503: 
        !           504: #ifdef YYPURE
        !           505: #ifdef YYLSP_NEEDED
        !           506: #ifdef YYLEX_PARAM
        !           507: #define YYLEX          yylex(&yylval, &yylloc, YYLEX_PARAM)
        !           508: #else
        !           509: #define YYLEX          yylex(&yylval, &yylloc)
        !           510: #endif
        !           511: #else /* not YYLSP_NEEDED */
        !           512: #ifdef YYLEX_PARAM
        !           513: #define YYLEX          yylex(&yylval, YYLEX_PARAM)
        !           514: #else
        !           515: #define YYLEX          yylex(&yylval)
        !           516: #endif
        !           517: #endif /* not YYLSP_NEEDED */
        !           518: #endif
        !           519: 
        !           520: /* If nonreentrant, generate the variables here */
        !           521: 
        !           522: #ifndef YYPURE
        !           523: 
        !           524: int    yychar;                 /*  the lookahead symbol                */
        !           525: YYSTYPE        yylval;                 /*  the semantic value of the           */
        !           526:                                /*  lookahead symbol                    */
        !           527: 
        !           528: #ifdef YYLSP_NEEDED
        !           529: YYLTYPE yylloc;                        /*  location data for the lookahead     */
        !           530:                                /*  symbol                              */
        !           531: #endif
        !           532: 
        !           533: int yynerrs;                   /*  number of parse errors so far       */
        !           534: #endif  /* not YYPURE */
        !           535: 
        !           536: #if YYDEBUG != 0
        !           537: int yydebug;                   /*  nonzero means print parse trace     */
        !           538: /* Since this is uninitialized, it does not stop multiple parsers
        !           539:    from coexisting.  */
        !           540: #endif
        !           541: 
        !           542: /*  YYINITDEPTH indicates the initial size of the parser's stacks      */
        !           543: 
        !           544: #ifndef        YYINITDEPTH
        !           545: #define YYINITDEPTH 200
        !           546: #endif
        !           547: 
        !           548: /*  YYMAXDEPTH is the maximum size the stacks can grow to
        !           549:     (effective only if the built-in stack extension method is used).  */
        !           550: 
        !           551: #if YYMAXDEPTH == 0
        !           552: #undef YYMAXDEPTH
        !           553: #endif
        !           554: 
        !           555: #ifndef YYMAXDEPTH
        !           556: #define YYMAXDEPTH 10000
        !           557: #endif
        !           558: 
        !           559: /* Prevent warning if -Wstrict-prototypes.  */
        !           560: #ifdef __GNUC__
        !           561: int yyparse (void);
        !           562: #endif
        !           563: 
        !           564: #if __GNUC__ > 1               /* GNU C and GNU C++ define this.  */
        !           565: #define __yy_memcpy(FROM,TO,COUNT)     __builtin_memcpy(TO,FROM,COUNT)
        !           566: #else                          /* not GNU C or C++ */
        !           567: #ifndef __cplusplus
        !           568: 
        !           569: /* This is the most reliable way to avoid incompatibilities
        !           570:    in available built-in functions on various systems.  */
        !           571: static void
        !           572: __yy_memcpy (from, to, count)
        !           573:      char *from;
        !           574:      char *to;
        !           575:      int count;
        !           576: {
        !           577:   register char *f = from;
        !           578:   register char *t = to;
        !           579:   register int i = count;
        !           580: 
        !           581:   while (i-- > 0)
        !           582:     *t++ = *f++;
        !           583: }
        !           584: 
        !           585: #else /* __cplusplus */
        !           586: 
        !           587: /* This is the most reliable way to avoid incompatibilities
        !           588:    in available built-in functions on various systems.  */
        !           589: static void
        !           590: __yy_memcpy (char *from, char *to, int count)
        !           591: {
        !           592:   register char *f = from;
        !           593:   register char *t = to;
        !           594:   register int i = count;
        !           595: 
        !           596:   while (i-- > 0)
        !           597:     *t++ = *f++;
        !           598: }
        !           599: 
        !           600: #endif
        !           601: #endif
        !           602: 
        !           603: #line 192 "/usr/share/bison.simple"
        !           604: 
        !           605: /* The user can define YYPARSE_PARAM as the name of an argument to be passed
        !           606:    into yyparse.  The argument should have type void *.
        !           607:    It should actually point to an object.
        !           608:    Grammar actions can access the variable by casting it
        !           609:    to the proper pointer type.  */
        !           610: 
        !           611: #ifdef YYPARSE_PARAM
        !           612: #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
        !           613: #else
        !           614: #define YYPARSE_PARAM
        !           615: #define YYPARSE_PARAM_DECL
        !           616: #endif
        !           617: 
        !           618: int
        !           619: yyparse(YYPARSE_PARAM)
        !           620:      YYPARSE_PARAM_DECL
        !           621: {
        !           622:   register int yystate;
        !           623:   register int yyn;
        !           624:   register short *yyssp;
        !           625:   register YYSTYPE *yyvsp;
        !           626:   int yyerrstatus;     /*  number of tokens to shift before error messages enabled */
        !           627:   int yychar1 = 0;             /*  lookahead token as an internal (translated) token number */
        !           628: 
        !           629:   short        yyssa[YYINITDEPTH];     /*  the state stack                     */
        !           630:   YYSTYPE yyvsa[YYINITDEPTH];  /*  the semantic value stack            */
        !           631: 
        !           632:   short *yyss = yyssa;         /*  refer to the stacks thru separate pointers */
        !           633:   YYSTYPE *yyvs = yyvsa;       /*  to allow yyoverflow to reallocate them elsewhere */
        !           634: 
        !           635: #ifdef YYLSP_NEEDED
        !           636:   YYLTYPE yylsa[YYINITDEPTH];  /*  the location stack                  */
        !           637:   YYLTYPE *yyls = yylsa;
        !           638:   YYLTYPE *yylsp;
        !           639: 
        !           640: #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
        !           641: #else
        !           642: #define YYPOPSTACK   (yyvsp--, yyssp--)
        !           643: #endif
        !           644: 
        !           645:   int yystacksize = YYINITDEPTH;
        !           646: 
        !           647: #ifdef YYPURE
        !           648:   int yychar;
        !           649:   YYSTYPE yylval;
        !           650:   int yynerrs;
        !           651: #ifdef YYLSP_NEEDED
        !           652:   YYLTYPE yylloc;
        !           653: #endif
        !           654: #endif
        !           655: 
        !           656:   YYSTYPE yyval;               /*  the variable used to return         */
        !           657:                                /*  semantic values from the action     */
        !           658:                                /*  routines                            */
        !           659: 
        !           660:   int yylen;
        !           661: 
        !           662: #if YYDEBUG != 0
        !           663:   if (yydebug)
        !           664:     fprintf(stderr, "Starting parse\n");
        !           665: #endif
        !           666: 
        !           667:   yystate = 0;
        !           668:   yyerrstatus = 0;
        !           669:   yynerrs = 0;
        !           670:   yychar = YYEMPTY;            /* Cause a token to be read.  */
        !           671: 
        !           672:   /* Initialize stack pointers.
        !           673:      Waste one element of value and location stack
        !           674:      so that they stay on the same level as the state stack.
        !           675:      The wasted elements are never initialized.  */
        !           676: 
        !           677:   yyssp = yyss - 1;
        !           678:   yyvsp = yyvs;
        !           679: #ifdef YYLSP_NEEDED
        !           680:   yylsp = yyls;
        !           681: #endif
        !           682: 
        !           683: /* Push a new state, which is found in  yystate  .  */
        !           684: /* In all cases, when you get here, the value and location stacks
        !           685:    have just been pushed. so pushing a state here evens the stacks.  */
        !           686: yynewstate:
        !           687: 
        !           688:   *++yyssp = yystate;
        !           689: 
        !           690:   if (yyssp >= yyss + yystacksize - 1)
        !           691:     {
        !           692:       /* Give user a chance to reallocate the stack */
        !           693:       /* Use copies of these so that the &'s don't force the real ones into memory. */
        !           694:       YYSTYPE *yyvs1 = yyvs;
        !           695:       short *yyss1 = yyss;
        !           696: #ifdef YYLSP_NEEDED
        !           697:       YYLTYPE *yyls1 = yyls;
        !           698: #endif
        !           699: 
        !           700:       /* Get the current used size of the three stacks, in elements.  */
        !           701:       int size = yyssp - yyss + 1;
        !           702: 
        !           703: #ifdef yyoverflow
        !           704:       /* Each stack pointer address is followed by the size of
        !           705:         the data in use in that stack, in bytes.  */
        !           706: #ifdef YYLSP_NEEDED
        !           707:       /* This used to be a conditional around just the two extra args,
        !           708:         but that might be undefined if yyoverflow is a macro.  */
        !           709:       yyoverflow("parser stack overflow",
        !           710:                 &yyss1, size * sizeof (*yyssp),
        !           711:                 &yyvs1, size * sizeof (*yyvsp),
        !           712:                 &yyls1, size * sizeof (*yylsp),
        !           713:                 &yystacksize);
        !           714: #else
        !           715:       yyoverflow("parser stack overflow",
        !           716:                 &yyss1, size * sizeof (*yyssp),
        !           717:                 &yyvs1, size * sizeof (*yyvsp),
        !           718:                 &yystacksize);
        !           719: #endif
        !           720: 
        !           721:       yyss = yyss1; yyvs = yyvs1;
        !           722: #ifdef YYLSP_NEEDED
        !           723:       yyls = yyls1;
        !           724: #endif
        !           725: #else /* no yyoverflow */
        !           726:       /* Extend the stack our own way.  */
        !           727:       if (yystacksize >= YYMAXDEPTH)
        !           728:        {
        !           729:          yyerror("parser stack overflow");
        !           730:          return 2;
        !           731:        }
        !           732:       yystacksize *= 2;
        !           733:       if (yystacksize > YYMAXDEPTH)
        !           734:        yystacksize = YYMAXDEPTH;
        !           735:       yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
        !           736:       __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
        !           737:       yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
        !           738:       __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
        !           739: #ifdef YYLSP_NEEDED
        !           740:       yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
        !           741:       __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
        !           742: #endif
        !           743: #endif /* no yyoverflow */
        !           744: 
        !           745:       yyssp = yyss + size - 1;
        !           746:       yyvsp = yyvs + size - 1;
        !           747: #ifdef YYLSP_NEEDED
        !           748:       yylsp = yyls + size - 1;
        !           749: #endif
        !           750: 
        !           751: #if YYDEBUG != 0
        !           752:       if (yydebug)
        !           753:        fprintf(stderr, "Stack size increased to %d\n", yystacksize);
        !           754: #endif
        !           755: 
        !           756:       if (yyssp >= yyss + yystacksize - 1)
        !           757:        YYABORT;
        !           758:     }
        !           759: 
        !           760: #if YYDEBUG != 0
        !           761:   if (yydebug)
        !           762:     fprintf(stderr, "Entering state %d\n", yystate);
        !           763: #endif
        !           764: 
        !           765:   goto yybackup;
        !           766:  yybackup:
        !           767: 
        !           768: /* Do appropriate processing given the current state.  */
        !           769: /* Read a lookahead token if we need one and don't already have one.  */
        !           770: /* yyresume: */
        !           771: 
        !           772:   /* First try to decide what to do without reference to lookahead token.  */
        !           773: 
        !           774:   yyn = yypact[yystate];
        !           775:   if (yyn == YYFLAG)
        !           776:     goto yydefault;
        !           777: 
        !           778:   /* Not known => get a lookahead token if don't already have one.  */
        !           779: 
        !           780:   /* yychar is either YYEMPTY or YYEOF
        !           781:      or a valid token in external form.  */
        !           782: 
        !           783:   if (yychar == YYEMPTY)
        !           784:     {
        !           785: #if YYDEBUG != 0
        !           786:       if (yydebug)
        !           787:        fprintf(stderr, "Reading a token: ");
        !           788: #endif
        !           789:       yychar = YYLEX;
        !           790:     }
        !           791: 
        !           792:   /* Convert token to internal form (in yychar1) for indexing tables with */
        !           793: 
        !           794:   if (yychar <= 0)             /* This means end of input. */
        !           795:     {
        !           796:       yychar1 = 0;
        !           797:       yychar = YYEOF;          /* Don't call YYLEX any more */
        !           798: 
        !           799: #if YYDEBUG != 0
        !           800:       if (yydebug)
        !           801:        fprintf(stderr, "Now at end of input.\n");
        !           802: #endif
        !           803:     }
        !           804:   else
        !           805:     {
        !           806:       yychar1 = YYTRANSLATE(yychar);
        !           807: 
        !           808: #if YYDEBUG != 0
        !           809:       if (yydebug)
        !           810:        {
        !           811:          fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
        !           812:          /* Give the individual parser a way to print the precise meaning
        !           813:             of a token, for further debugging info.  */
        !           814: #ifdef YYPRINT
        !           815:          YYPRINT (stderr, yychar, yylval);
        !           816: #endif
        !           817:          fprintf (stderr, ")\n");
        !           818:        }
        !           819: #endif
        !           820:     }
        !           821: 
        !           822:   yyn += yychar1;
        !           823:   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
        !           824:     goto yydefault;
        !           825: 
        !           826:   yyn = yytable[yyn];
        !           827: 
        !           828:   /* yyn is what to do for this token type in this state.
        !           829:      Negative => reduce, -yyn is rule number.
        !           830:      Positive => shift, yyn is new state.
        !           831:        New state is final state => don't bother to shift,
        !           832:        just return success.
        !           833:      0, or most negative number => error.  */
        !           834: 
        !           835:   if (yyn < 0)
        !           836:     {
        !           837:       if (yyn == YYFLAG)
        !           838:        goto yyerrlab;
        !           839:       yyn = -yyn;
        !           840:       goto yyreduce;
        !           841:     }
        !           842:   else if (yyn == 0)
        !           843:     goto yyerrlab;
        !           844: 
        !           845:   if (yyn == YYFINAL)
        !           846:     YYACCEPT;
        !           847: 
        !           848:   /* Shift the lookahead token.  */
        !           849: 
        !           850: #if YYDEBUG != 0
        !           851:   if (yydebug)
        !           852:     fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
        !           853: #endif
        !           854: 
        !           855:   /* Discard the token being shifted unless it is eof.  */
        !           856:   if (yychar != YYEOF)
        !           857:     yychar = YYEMPTY;
        !           858: 
        !           859:   *++yyvsp = yylval;
        !           860: #ifdef YYLSP_NEEDED
        !           861:   *++yylsp = yylloc;
        !           862: #endif
        !           863: 
        !           864:   /* count tokens shifted since error; after three, turn off error status.  */
        !           865:   if (yyerrstatus) yyerrstatus--;
        !           866: 
        !           867:   yystate = yyn;
        !           868:   goto yynewstate;
        !           869: 
        !           870: /* Do the default action for the current state.  */
        !           871: yydefault:
        !           872: 
        !           873:   yyn = yydefact[yystate];
        !           874:   if (yyn == 0)
        !           875:     goto yyerrlab;
        !           876: 
        !           877: /* Do a reduction.  yyn is the number of a rule to reduce with.  */
        !           878: yyreduce:
        !           879:   yylen = yyr2[yyn];
        !           880:   if (yylen > 0)
        !           881:     yyval = yyvsp[1-yylen]; /* implement default value of the action */
        !           882: 
        !           883: #if YYDEBUG != 0
        !           884:   if (yydebug)
        !           885:     {
        !           886:       int i;
        !           887: 
        !           888:       fprintf (stderr, "Reducing via rule %d (line %d), ",
        !           889:               yyn, yyrline[yyn]);
        !           890: 
        !           891:       /* Print the symbols being reduced, and their result.  */
        !           892:       for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
        !           893:        fprintf (stderr, "%s ", yytname[yyrhs[i]]);
        !           894:       fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
        !           895:     }
        !           896: #endif
        !           897: 
        !           898: 
        !           899:   switch (yyn) {
        !           900: 
        !           901: case 11:
        !           902: #line 174 "../gnumach/mig/parser.y"
        !           903: {
        !           904:     register statement_t *st = stAlloc();
        !           905: 
        !           906:     st->stKind = skRoutine;
        !           907:     st->stRoutine = yyvsp[-1].routine;
        !           908:     rtCheckRoutine(yyvsp[-1].routine);
        !           909:     if (BeVerbose)
        !           910:        rtPrintRoutine(yyvsp[-1].routine);
        !           911: ;
        !           912:     break;}
        !           913: case 12:
        !           914: #line 184 "../gnumach/mig/parser.y"
        !           915: { rtSkip(1); ;
        !           916:     break;}
        !           917: case 13:
        !           918: #line 186 "../gnumach/mig/parser.y"
        !           919: { rtSkip(yyvsp[-1].number); ;
        !           920:     break;}
        !           921: case 17:
        !           922: #line 191 "../gnumach/mig/parser.y"
        !           923: { yyerrok; ;
        !           924:     break;}
        !           925: case 18:
        !           926: #line 196 "../gnumach/mig/parser.y"
        !           927: {
        !           928:     if (BeVerbose)
        !           929:     {
        !           930:        printf("Subsystem %s: base = %u%s%s\n\n",
        !           931:               SubsystemName, SubsystemBase,
        !           932:               IsKernelUser ? ", KernelUser" : "",
        !           933:               IsKernelServer ? ", KernelServer" : "");
        !           934:     }
        !           935: ;
        !           936:     break;}
        !           937: case 19:
        !           938: #line 208 "../gnumach/mig/parser.y"
        !           939: {
        !           940:     if (SubsystemName != strNULL)
        !           941:     {
        !           942:        warn("previous Subsystem decl (of %s) will be ignored", SubsystemName);
        !           943:        IsKernelUser = FALSE;
        !           944:        IsKernelServer = FALSE;
        !           945:        strfree((string_t) SubsystemName);
        !           946:     }
        !           947: ;
        !           948:     break;}
        !           949: case 22:
        !           950: #line 224 "../gnumach/mig/parser.y"
        !           951: {
        !           952:     if (IsKernelUser)
        !           953:        warn("duplicate KernelUser keyword");
        !           954:     IsKernelUser = TRUE;
        !           955: ;
        !           956:     break;}
        !           957: case 23:
        !           958: #line 230 "../gnumach/mig/parser.y"
        !           959: {
        !           960:     if (IsKernelServer)
        !           961:        warn("duplicate KernelServer keyword");
        !           962:     IsKernelServer = TRUE;
        !           963: ;
        !           964:     break;}
        !           965: case 24:
        !           966: #line 237 "../gnumach/mig/parser.y"
        !           967: { SubsystemName = yyvsp[0].identifier; ;
        !           968:     break;}
        !           969: case 25:
        !           970: #line 240 "../gnumach/mig/parser.y"
        !           971: { SubsystemBase = yyvsp[0].number; ;
        !           972:     break;}
        !           973: case 26:
        !           974: #line 244 "../gnumach/mig/parser.y"
        !           975: {
        !           976:     if (streql(yyvsp[0].string, "MACH_MSG_OPTION_NONE"))
        !           977:     {
        !           978:        MsgOption = strNULL;
        !           979:        if (BeVerbose)
        !           980:            printf("MsgOption: canceled\n\n");
        !           981:     }
        !           982:     else
        !           983:     {
        !           984:        MsgOption = yyvsp[0].string;
        !           985:        if (BeVerbose)
        !           986:            printf("MsgOption %s\n\n",yyvsp[0].string);
        !           987:     }
        !           988: ;
        !           989:     break;}
        !           990: case 27:
        !           991: #line 261 "../gnumach/mig/parser.y"
        !           992: {
        !           993:     WaitTime = yyvsp[0].string;
        !           994:     if (BeVerbose)
        !           995:        printf("WaitTime %s\n\n", WaitTime);
        !           996: ;
        !           997:     break;}
        !           998: case 28:
        !           999: #line 267 "../gnumach/mig/parser.y"
        !          1000: {
        !          1001:     WaitTime = strNULL;
        !          1002:     if (BeVerbose)
        !          1003:        printf("NoWaitTime\n\n");
        !          1004: ;
        !          1005:     break;}
        !          1006: case 29:
        !          1007: #line 275 "../gnumach/mig/parser.y"
        !          1008: {
        !          1009:     ErrorProc = yyvsp[0].identifier;
        !          1010:     if (BeVerbose)
        !          1011:        printf("ErrorProc %s\n\n", ErrorProc);
        !          1012: ;
        !          1013:     break;}
        !          1014: case 30:
        !          1015: #line 283 "../gnumach/mig/parser.y"
        !          1016: {
        !          1017:     ServerPrefix = yyvsp[0].identifier;
        !          1018:     if (BeVerbose)
        !          1019:        printf("ServerPrefix %s\n\n", ServerPrefix);
        !          1020: ;
        !          1021:     break;}
        !          1022: case 31:
        !          1023: #line 291 "../gnumach/mig/parser.y"
        !          1024: {
        !          1025:     UserPrefix = yyvsp[0].identifier;
        !          1026:     if (BeVerbose)
        !          1027:        printf("UserPrefix %s\n\n", UserPrefix);
        !          1028: ;
        !          1029:     break;}
        !          1030: case 32:
        !          1031: #line 299 "../gnumach/mig/parser.y"
        !          1032: {
        !          1033:     ServerDemux = yyvsp[0].identifier;
        !          1034:     if (BeVerbose)
        !          1035:        printf("ServerDemux %s\n\n", ServerDemux);
        !          1036: ;
        !          1037:     break;}
        !          1038: case 33:
        !          1039: #line 307 "../gnumach/mig/parser.y"
        !          1040: {
        !          1041:     register statement_t *st = stAlloc();
        !          1042:     st->stKind = yyvsp[-1].statement_kind;
        !          1043:     st->stFileName = yyvsp[0].string;
        !          1044: 
        !          1045:     if (BeVerbose)
        !          1046:        printf("%s %s\n\n", import_name(yyvsp[-1].statement_kind), yyvsp[0].string);
        !          1047: ;
        !          1048:     break;}
        !          1049: case 34:
        !          1050: #line 317 "../gnumach/mig/parser.y"
        !          1051: { yyval.statement_kind = skImport; ;
        !          1052:     break;}
        !          1053: case 35:
        !          1054: #line 318 "../gnumach/mig/parser.y"
        !          1055: { yyval.statement_kind = skUImport; ;
        !          1056:     break;}
        !          1057: case 36:
        !          1058: #line 319 "../gnumach/mig/parser.y"
        !          1059: { yyval.statement_kind = skSImport; ;
        !          1060:     break;}
        !          1061: case 37:
        !          1062: #line 323 "../gnumach/mig/parser.y"
        !          1063: {
        !          1064:     if (RCSId != strNULL)
        !          1065:        warn("previous RCS decl will be ignored");
        !          1066:     if (BeVerbose)
        !          1067:        printf("RCSId %s\n\n", yyvsp[0].string);
        !          1068:     RCSId = yyvsp[0].string;
        !          1069: ;
        !          1070:     break;}
        !          1071: case 38:
        !          1072: #line 333 "../gnumach/mig/parser.y"
        !          1073: {
        !          1074:     register identifier_t name = yyvsp[0].type->itName;
        !          1075: 
        !          1076:     if (itLookUp(name) != itNULL)
        !          1077:        warn("overriding previous definition of %s", name);
        !          1078:     itInsert(name, yyvsp[0].type);
        !          1079: ;
        !          1080:     break;}
        !          1081: case 39:
        !          1082: #line 343 "../gnumach/mig/parser.y"
        !          1083: { itTypeDecl(yyvsp[-2].identifier, yyval.type = yyvsp[0].type); ;
        !          1084:     break;}
        !          1085: case 40:
        !          1086: #line 347 "../gnumach/mig/parser.y"
        !          1087: { yyval.type = itResetType(yyvsp[0].type); ;
        !          1088:     break;}
        !          1089: case 41:
        !          1090: #line 350 "../gnumach/mig/parser.y"
        !          1091: {
        !          1092:     yyval.type = yyvsp[-7].type;
        !          1093: 
        !          1094:     if ((yyval.type->itTransType != strNULL) && !streql(yyval.type->itTransType, yyvsp[-4].identifier))
        !          1095:        warn("conflicting translation types (%s, %s)",
        !          1096:             yyval.type->itTransType, yyvsp[-4].identifier);
        !          1097:     yyval.type->itTransType = yyvsp[-4].identifier;
        !          1098: 
        !          1099:     if ((yyval.type->itInTrans != strNULL) && !streql(yyval.type->itInTrans, yyvsp[-3].identifier))
        !          1100:        warn("conflicting in-translation functions (%s, %s)",
        !          1101:             yyval.type->itInTrans, yyvsp[-3].identifier);
        !          1102:     yyval.type->itInTrans = yyvsp[-3].identifier;
        !          1103: 
        !          1104:     if ((yyval.type->itServerType != strNULL) && !streql(yyval.type->itServerType, yyvsp[-1].identifier))
        !          1105:        warn("conflicting server types (%s, %s)",
        !          1106:             yyval.type->itServerType, yyvsp[-1].identifier);
        !          1107:     yyval.type->itServerType = yyvsp[-1].identifier;
        !          1108: ;
        !          1109:     break;}
        !          1110: case 42:
        !          1111: #line 370 "../gnumach/mig/parser.y"
        !          1112: {
        !          1113:     yyval.type = yyvsp[-7].type;
        !          1114: 
        !          1115:     if ((yyval.type->itServerType != strNULL) && !streql(yyval.type->itServerType, yyvsp[-4].identifier))
        !          1116:        warn("conflicting server types (%s, %s)",
        !          1117:             yyval.type->itServerType, yyvsp[-4].identifier);
        !          1118:     yyval.type->itServerType = yyvsp[-4].identifier;
        !          1119: 
        !          1120:     if ((yyval.type->itOutTrans != strNULL) && !streql(yyval.type->itOutTrans, yyvsp[-3].identifier))
        !          1121:        warn("conflicting out-translation functions (%s, %s)",
        !          1122:             yyval.type->itOutTrans, yyvsp[-3].identifier);
        !          1123:     yyval.type->itOutTrans = yyvsp[-3].identifier;
        !          1124: 
        !          1125:     if ((yyval.type->itTransType != strNULL) && !streql(yyval.type->itTransType, yyvsp[-1].identifier))
        !          1126:        warn("conflicting translation types (%s, %s)",
        !          1127:             yyval.type->itTransType, yyvsp[-1].identifier);
        !          1128:     yyval.type->itTransType = yyvsp[-1].identifier;
        !          1129: ;
        !          1130:     break;}
        !          1131: case 43:
        !          1132: #line 390 "../gnumach/mig/parser.y"
        !          1133: {
        !          1134:     yyval.type = yyvsp[-6].type;
        !          1135: 
        !          1136:     if ((yyval.type->itDestructor != strNULL) && !streql(yyval.type->itDestructor, yyvsp[-3].identifier))
        !          1137:        warn("conflicting destructor functions (%s, %s)",
        !          1138:             yyval.type->itDestructor, yyvsp[-3].identifier);
        !          1139:     yyval.type->itDestructor = yyvsp[-3].identifier;
        !          1140: 
        !          1141:     if ((yyval.type->itTransType != strNULL) && !streql(yyval.type->itTransType, yyvsp[-1].identifier))
        !          1142:        warn("conflicting translation types (%s, %s)",
        !          1143:             yyval.type->itTransType, yyvsp[-1].identifier);
        !          1144:     yyval.type->itTransType = yyvsp[-1].identifier;
        !          1145: ;
        !          1146:     break;}
        !          1147: case 44:
        !          1148: #line 404 "../gnumach/mig/parser.y"
        !          1149: {
        !          1150:     yyval.type = yyvsp[-3].type;
        !          1151: 
        !          1152:     if ((yyval.type->itUserType != strNULL) && !streql(yyval.type->itUserType, yyvsp[0].identifier))
        !          1153:        warn("conflicting user types (%s, %s)",
        !          1154:             yyval.type->itUserType, yyvsp[0].identifier);
        !          1155:     yyval.type->itUserType = yyvsp[0].identifier;
        !          1156: 
        !          1157:     if ((yyval.type->itServerType != strNULL) && !streql(yyval.type->itServerType, yyvsp[0].identifier))
        !          1158:        warn("conflicting server types (%s, %s)",
        !          1159:             yyval.type->itServerType, yyvsp[0].identifier);
        !          1160:     yyval.type->itServerType = yyvsp[0].identifier;
        !          1161: ;
        !          1162:     break;}
        !          1163: case 45:
        !          1164: #line 418 "../gnumach/mig/parser.y"
        !          1165: {
        !          1166:     yyval.type = yyvsp[-3].type;
        !          1167: 
        !          1168:     if ((yyval.type->itUserType != strNULL) && !streql(yyval.type->itUserType, yyvsp[0].identifier))
        !          1169:        warn("conflicting user types (%s, %s)",
        !          1170:             yyval.type->itUserType, yyvsp[0].identifier);
        !          1171:     yyval.type->itUserType = yyvsp[0].identifier;
        !          1172: ;
        !          1173:     break;}
        !          1174: case 46:
        !          1175: #line 428 "../gnumach/mig/parser.y"
        !          1176: {
        !          1177:     yyval.type = yyvsp[-3].type;
        !          1178: 
        !          1179:     if ((yyval.type->itServerType != strNULL) && !streql(yyval.type->itServerType, yyvsp[0].identifier))
        !          1180:        warn("conflicting server types (%s, %s)",
        !          1181:             yyval.type->itServerType, yyvsp[0].identifier);
        !          1182:     yyval.type->itServerType = yyvsp[0].identifier;
        !          1183: ;
        !          1184:     break;}
        !          1185: case 47:
        !          1186: #line 439 "../gnumach/mig/parser.y"
        !          1187: { yyval.type = yyvsp[0].type; ;
        !          1188:     break;}
        !          1189: case 48:
        !          1190: #line 441 "../gnumach/mig/parser.y"
        !          1191: { yyval.type = yyvsp[0].type; ;
        !          1192:     break;}
        !          1193: case 49:
        !          1194: #line 443 "../gnumach/mig/parser.y"
        !          1195: { yyval.type = itVarArrayDecl(yyvsp[-1].number, yyvsp[0].type); ;
        !          1196:     break;}
        !          1197: case 50:
        !          1198: #line 445 "../gnumach/mig/parser.y"
        !          1199: { yyval.type = itArrayDecl(yyvsp[-1].number, yyvsp[0].type); ;
        !          1200:     break;}
        !          1201: case 51:
        !          1202: #line 447 "../gnumach/mig/parser.y"
        !          1203: { yyval.type = itPtrDecl(yyvsp[0].type); ;
        !          1204:     break;}
        !          1205: case 52:
        !          1206: #line 449 "../gnumach/mig/parser.y"
        !          1207: { yyval.type = itStructDecl(yyvsp[-1].number, yyvsp[0].type); ;
        !          1208:     break;}
        !          1209: case 53:
        !          1210: #line 451 "../gnumach/mig/parser.y"
        !          1211: { yyval.type = yyvsp[0].type; ;
        !          1212:     break;}
        !          1213: case 54:
        !          1214: #line 455 "../gnumach/mig/parser.y"
        !          1215: {
        !          1216:     yyval.type = itShortDecl(yyvsp[0].symtype.innumber, yyvsp[0].symtype.instr,
        !          1217:                     yyvsp[0].symtype.outnumber, yyvsp[0].symtype.outstr,
        !          1218:                     yyvsp[0].symtype.size);
        !          1219: ;
        !          1220:     break;}
        !          1221: case 55:
        !          1222: #line 462 "../gnumach/mig/parser.y"
        !          1223: {
        !          1224:     yyval.type = itLongDecl(yyvsp[-4].symtype.innumber, yyvsp[-4].symtype.instr,
        !          1225:                    yyvsp[-4].symtype.outnumber, yyvsp[-4].symtype.outstr,
        !          1226:                    yyvsp[-4].symtype.size, yyvsp[-2].number, yyvsp[-1].flag);
        !          1227: ;
        !          1228:     break;}
        !          1229: case 56:
        !          1230: #line 470 "../gnumach/mig/parser.y"
        !          1231: { yyval.flag = flNone; ;
        !          1232:     break;}
        !          1233: case 57:
        !          1234: #line 472 "../gnumach/mig/parser.y"
        !          1235: {
        !          1236:     if (yyvsp[-2].flag & yyvsp[0].flag)
        !          1237:        warn("redundant IPC flag ignored");
        !          1238:     else
        !          1239:        yyval.flag = yyvsp[-2].flag | yyvsp[0].flag;
        !          1240: ;
        !          1241:     break;}
        !          1242: case 58:
        !          1243: #line 479 "../gnumach/mig/parser.y"
        !          1244: {
        !          1245:     if (yyvsp[-2].flag != flDealloc)
        !          1246:        warn("only Dealloc is variable");
        !          1247:     else
        !          1248:        yyval.flag = yyvsp[-4].flag | flMaybeDealloc;
        !          1249: ;
        !          1250:     break;}
        !          1251: case 59:
        !          1252: #line 488 "../gnumach/mig/parser.y"
        !          1253: {
        !          1254:     yyval.symtype.innumber = yyval.symtype.outnumber = yyvsp[0].number;
        !          1255:     yyval.symtype.instr = yyval.symtype.outstr = strNULL;
        !          1256:     yyval.symtype.size = 0;
        !          1257: ;
        !          1258:     break;}
        !          1259: case 60:
        !          1260: #line 494 "../gnumach/mig/parser.y"
        !          1261: { yyval.symtype = yyvsp[0].symtype; ;
        !          1262:     break;}
        !          1263: case 61:
        !          1264: #line 498 "../gnumach/mig/parser.y"
        !          1265: { yyval.symtype = yyvsp[0].symtype; ;
        !          1266:     break;}
        !          1267: case 62:
        !          1268: #line 500 "../gnumach/mig/parser.y"
        !          1269: {
        !          1270:     if (yyvsp[-2].symtype.size != yyvsp[0].symtype.size)
        !          1271:     {
        !          1272:        if (yyvsp[-2].symtype.size == 0)
        !          1273:            yyval.symtype.size = yyvsp[0].symtype.size;
        !          1274:        else if (yyvsp[0].symtype.size == 0)
        !          1275:            yyval.symtype.size = yyvsp[-2].symtype.size;
        !          1276:        else
        !          1277:        {
        !          1278:            error("sizes in IPCTypes (%d, %d) aren't equal",
        !          1279:                  yyvsp[-2].symtype.size, yyvsp[0].symtype.size);
        !          1280:            yyval.symtype.size = 0;
        !          1281:        }
        !          1282:     }
        !          1283:     else
        !          1284:        yyval.symtype.size = yyvsp[-2].symtype.size;
        !          1285:     yyval.symtype.innumber = yyvsp[-2].symtype.innumber;
        !          1286:     yyval.symtype.instr = yyvsp[-2].symtype.instr;
        !          1287:     yyval.symtype.outnumber = yyvsp[0].symtype.outnumber;
        !          1288:     yyval.symtype.outstr = yyvsp[0].symtype.outstr;
        !          1289: ;
        !          1290:     break;}
        !          1291: case 63:
        !          1292: #line 524 "../gnumach/mig/parser.y"
        !          1293: { yyval.type = itPrevDecl(yyvsp[0].identifier); ;
        !          1294:     break;}
        !          1295: case 64:
        !          1296: #line 528 "../gnumach/mig/parser.y"
        !          1297: { yyval.number = 0; ;
        !          1298:     break;}
        !          1299: case 65:
        !          1300: #line 530 "../gnumach/mig/parser.y"
        !          1301: { yyval.number = 0; ;
        !          1302:     break;}
        !          1303: case 66:
        !          1304: #line 533 "../gnumach/mig/parser.y"
        !          1305: { yyval.number = yyvsp[-2].number; ;
        !          1306:     break;}
        !          1307: case 67:
        !          1308: #line 537 "../gnumach/mig/parser.y"
        !          1309: { yyval.number = yyvsp[-2].number; ;
        !          1310:     break;}
        !          1311: case 68:
        !          1312: #line 541 "../gnumach/mig/parser.y"
        !          1313: { yyval.number = yyvsp[-2].number; ;
        !          1314:     break;}
        !          1315: case 69:
        !          1316: #line 545 "../gnumach/mig/parser.y"
        !          1317: { yyval.type = itCStringDecl(yyvsp[-1].number, FALSE); ;
        !          1318:     break;}
        !          1319: case 70:
        !          1320: #line 548 "../gnumach/mig/parser.y"
        !          1321: { yyval.type = itCStringDecl(yyvsp[-1].number, TRUE); ;
        !          1322:     break;}
        !          1323: case 71:
        !          1324: #line 552 "../gnumach/mig/parser.y"
        !          1325: { yyval.number = yyvsp[-2].number + yyvsp[0].number;   ;
        !          1326:     break;}
        !          1327: case 72:
        !          1328: #line 554 "../gnumach/mig/parser.y"
        !          1329: { yyval.number = yyvsp[-2].number - yyvsp[0].number;   ;
        !          1330:     break;}
        !          1331: case 73:
        !          1332: #line 556 "../gnumach/mig/parser.y"
        !          1333: { yyval.number = yyvsp[-2].number * yyvsp[0].number;   ;
        !          1334:     break;}
        !          1335: case 74:
        !          1336: #line 558 "../gnumach/mig/parser.y"
        !          1337: { yyval.number = yyvsp[-2].number / yyvsp[0].number;   ;
        !          1338:     break;}
        !          1339: case 75:
        !          1340: #line 560 "../gnumach/mig/parser.y"
        !          1341: { yyval.number = yyvsp[0].number;      ;
        !          1342:     break;}
        !          1343: case 76:
        !          1344: #line 562 "../gnumach/mig/parser.y"
        !          1345: { yyval.number = yyvsp[-1].number;     ;
        !          1346:     break;}
        !          1347: case 77:
        !          1348: #line 566 "../gnumach/mig/parser.y"
        !          1349: { yyval.routine = yyvsp[0].routine; ;
        !          1350:     break;}
        !          1351: case 78:
        !          1352: #line 567 "../gnumach/mig/parser.y"
        !          1353: { yyval.routine = yyvsp[0].routine; ;
        !          1354:     break;}
        !          1355: case 79:
        !          1356: #line 568 "../gnumach/mig/parser.y"
        !          1357: { yyval.routine = yyvsp[0].routine; ;
        !          1358:     break;}
        !          1359: case 80:
        !          1360: #line 569 "../gnumach/mig/parser.y"
        !          1361: { yyval.routine = yyvsp[0].routine; ;
        !          1362:     break;}
        !          1363: case 81:
        !          1364: #line 570 "../gnumach/mig/parser.y"
        !          1365: { yyval.routine = yyvsp[0].routine; ;
        !          1366:     break;}
        !          1367: case 82:
        !          1368: #line 574 "../gnumach/mig/parser.y"
        !          1369: { yyval.routine = rtMakeRoutine(yyvsp[-1].identifier, yyvsp[0].argument); ;
        !          1370:     break;}
        !          1371: case 83:
        !          1372: #line 578 "../gnumach/mig/parser.y"
        !          1373: { yyval.routine = rtMakeSimpleRoutine(yyvsp[-1].identifier, yyvsp[0].argument); ;
        !          1374:     break;}
        !          1375: case 84:
        !          1376: #line 582 "../gnumach/mig/parser.y"
        !          1377: { yyval.routine = rtMakeProcedure(yyvsp[-1].identifier, yyvsp[0].argument); ;
        !          1378:     break;}
        !          1379: case 85:
        !          1380: #line 586 "../gnumach/mig/parser.y"
        !          1381: { yyval.routine = rtMakeSimpleProcedure(yyvsp[-1].identifier, yyvsp[0].argument); ;
        !          1382:     break;}
        !          1383: case 86:
        !          1384: #line 590 "../gnumach/mig/parser.y"
        !          1385: { yyval.routine = rtMakeFunction(yyvsp[-2].identifier, yyvsp[-1].argument, yyvsp[0].type); ;
        !          1386:     break;}
        !          1387: case 87:
        !          1388: #line 594 "../gnumach/mig/parser.y"
        !          1389: { yyval.argument = argNULL; ;
        !          1390:     break;}
        !          1391: case 88:
        !          1392: #line 596 "../gnumach/mig/parser.y"
        !          1393: { yyval.argument = yyvsp[-1].argument; ;
        !          1394:     break;}
        !          1395: case 89:
        !          1396: #line 601 "../gnumach/mig/parser.y"
        !          1397: { yyval.argument = yyvsp[0].argument; ;
        !          1398:     break;}
        !          1399: case 90:
        !          1400: #line 603 "../gnumach/mig/parser.y"
        !          1401: {
        !          1402:     yyval.argument = yyvsp[-2].argument;
        !          1403:     yyval.argument->argNext = yyvsp[0].argument;
        !          1404: ;
        !          1405:     break;}
        !          1406: case 91:
        !          1407: #line 610 "../gnumach/mig/parser.y"
        !          1408: {
        !          1409:     yyval.argument = argAlloc();
        !          1410:     yyval.argument->argKind = yyvsp[-3].direction;
        !          1411:     yyval.argument->argName = yyvsp[-2].identifier;
        !          1412:     yyval.argument->argType = yyvsp[-1].type;
        !          1413:     yyval.argument->argFlags = yyvsp[0].flag;
        !          1414: ;
        !          1415:     break;}
        !          1416: case 92:
        !          1417: #line 619 "../gnumach/mig/parser.y"
        !          1418: { yyval.direction = akNone; ;
        !          1419:     break;}
        !          1420: case 93:
        !          1421: #line 620 "../gnumach/mig/parser.y"
        !          1422: { yyval.direction = akIn; ;
        !          1423:     break;}
        !          1424: case 94:
        !          1425: #line 621 "../gnumach/mig/parser.y"
        !          1426: { yyval.direction = akOut; ;
        !          1427:     break;}
        !          1428: case 95:
        !          1429: #line 622 "../gnumach/mig/parser.y"
        !          1430: { yyval.direction = akInOut; ;
        !          1431:     break;}
        !          1432: case 96:
        !          1433: #line 623 "../gnumach/mig/parser.y"
        !          1434: { yyval.direction = akRequestPort; ;
        !          1435:     break;}
        !          1436: case 97:
        !          1437: #line 624 "../gnumach/mig/parser.y"
        !          1438: { yyval.direction = akReplyPort; ;
        !          1439:     break;}
        !          1440: case 98:
        !          1441: #line 625 "../gnumach/mig/parser.y"
        !          1442: { yyval.direction = akSReplyPort; ;
        !          1443:     break;}
        !          1444: case 99:
        !          1445: #line 626 "../gnumach/mig/parser.y"
        !          1446: { yyval.direction = akUReplyPort; ;
        !          1447:     break;}
        !          1448: case 100:
        !          1449: #line 627 "../gnumach/mig/parser.y"
        !          1450: { yyval.direction = akWaitTime; ;
        !          1451:     break;}
        !          1452: case 101:
        !          1453: #line 628 "../gnumach/mig/parser.y"
        !          1454: { yyval.direction = akMsgOption; ;
        !          1455:     break;}
        !          1456: case 102:
        !          1457: #line 629 "../gnumach/mig/parser.y"
        !          1458: { yyval.direction = akMsgSeqno; ;
        !          1459:     break;}
        !          1460: case 103:
        !          1461: #line 633 "../gnumach/mig/parser.y"
        !          1462: {
        !          1463:     yyval.type = itLookUp(yyvsp[0].identifier);
        !          1464:     if (yyval.type == itNULL)
        !          1465:        error("type '%s' not defined", yyvsp[0].identifier);
        !          1466: ;
        !          1467:     break;}
        !          1468: case 104:
        !          1469: #line 639 "../gnumach/mig/parser.y"
        !          1470: { yyval.type = yyvsp[0].type; ;
        !          1471:     break;}
        !          1472: case 105:
        !          1473: #line 643 "../gnumach/mig/parser.y"
        !          1474: { LookString(); ;
        !          1475:     break;}
        !          1476: case 106:
        !          1477: #line 647 "../gnumach/mig/parser.y"
        !          1478: { LookFileName(); ;
        !          1479:     break;}
        !          1480: case 107:
        !          1481: #line 651 "../gnumach/mig/parser.y"
        !          1482: { LookQString(); ;
        !          1483:     break;}
        !          1484: }
        !          1485:    /* the action file gets copied in in place of this dollarsign */
        !          1486: #line 487 "/usr/share/bison.simple"
        !          1487: 
        !          1488:   yyvsp -= yylen;
        !          1489:   yyssp -= yylen;
        !          1490: #ifdef YYLSP_NEEDED
        !          1491:   yylsp -= yylen;
        !          1492: #endif
        !          1493: 
        !          1494: #if YYDEBUG != 0
        !          1495:   if (yydebug)
        !          1496:     {
        !          1497:       short *ssp1 = yyss - 1;
        !          1498:       fprintf (stderr, "state stack now");
        !          1499:       while (ssp1 != yyssp)
        !          1500:        fprintf (stderr, " %d", *++ssp1);
        !          1501:       fprintf (stderr, "\n");
        !          1502:     }
        !          1503: #endif
        !          1504: 
        !          1505:   *++yyvsp = yyval;
        !          1506: 
        !          1507: #ifdef YYLSP_NEEDED
        !          1508:   yylsp++;
        !          1509:   if (yylen == 0)
        !          1510:     {
        !          1511:       yylsp->first_line = yylloc.first_line;
        !          1512:       yylsp->first_column = yylloc.first_column;
        !          1513:       yylsp->last_line = (yylsp-1)->last_line;
        !          1514:       yylsp->last_column = (yylsp-1)->last_column;
        !          1515:       yylsp->text = 0;
        !          1516:     }
        !          1517:   else
        !          1518:     {
        !          1519:       yylsp->last_line = (yylsp+yylen-1)->last_line;
        !          1520:       yylsp->last_column = (yylsp+yylen-1)->last_column;
        !          1521:     }
        !          1522: #endif
        !          1523: 
        !          1524:   /* Now "shift" the result of the reduction.
        !          1525:      Determine what state that goes to,
        !          1526:      based on the state we popped back to
        !          1527:      and the rule number reduced by.  */
        !          1528: 
        !          1529:   yyn = yyr1[yyn];
        !          1530: 
        !          1531:   yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
        !          1532:   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
        !          1533:     yystate = yytable[yystate];
        !          1534:   else
        !          1535:     yystate = yydefgoto[yyn - YYNTBASE];
        !          1536: 
        !          1537:   goto yynewstate;
        !          1538: 
        !          1539: yyerrlab:   /* here on detecting error */
        !          1540: 
        !          1541:   if (! yyerrstatus)
        !          1542:     /* If not already recovering from an error, report this error.  */
        !          1543:     {
        !          1544:       ++yynerrs;
        !          1545: 
        !          1546: #ifdef YYERROR_VERBOSE
        !          1547:       yyn = yypact[yystate];
        !          1548: 
        !          1549:       if (yyn > YYFLAG && yyn < YYLAST)
        !          1550:        {
        !          1551:          int size = 0;
        !          1552:          char *msg;
        !          1553:          int x, count;
        !          1554: 
        !          1555:          count = 0;
        !          1556:          /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
        !          1557:          for (x = (yyn < 0 ? -yyn : 0);
        !          1558:               x < (sizeof(yytname) / sizeof(char *)); x++)
        !          1559:            if (yycheck[x + yyn] == x)
        !          1560:              size += strlen(yytname[x]) + 15, count++;
        !          1561:          msg = (char *) malloc(size + 15);
        !          1562:          if (msg != 0)
        !          1563:            {
        !          1564:              strcpy(msg, "parse error");
        !          1565: 
        !          1566:              if (count < 5)
        !          1567:                {
        !          1568:                  count = 0;
        !          1569:                  for (x = (yyn < 0 ? -yyn : 0);
        !          1570:                       x < (sizeof(yytname) / sizeof(char *)); x++)
        !          1571:                    if (yycheck[x + yyn] == x)
        !          1572:                      {
        !          1573:                        strcat(msg, count == 0 ? ", expecting `" : " or `");
        !          1574:                        strcat(msg, yytname[x]);
        !          1575:                        strcat(msg, "'");
        !          1576:                        count++;
        !          1577:                      }
        !          1578:                }
        !          1579:              yyerror(msg);
        !          1580:              free(msg);
        !          1581:            }
        !          1582:          else
        !          1583:            yyerror ("parse error; also virtual memory exceeded");
        !          1584:        }
        !          1585:       else
        !          1586: #endif /* YYERROR_VERBOSE */
        !          1587:        yyerror("parse error");
        !          1588:     }
        !          1589: 
        !          1590:   goto yyerrlab1;
        !          1591: yyerrlab1:   /* here on error raised explicitly by an action */
        !          1592: 
        !          1593:   if (yyerrstatus == 3)
        !          1594:     {
        !          1595:       /* if just tried and failed to reuse lookahead token after an error, discard it.  */
        !          1596: 
        !          1597:       /* return failure if at end of input */
        !          1598:       if (yychar == YYEOF)
        !          1599:        YYABORT;
        !          1600: 
        !          1601: #if YYDEBUG != 0
        !          1602:       if (yydebug)
        !          1603:        fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
        !          1604: #endif
        !          1605: 
        !          1606:       yychar = YYEMPTY;
        !          1607:     }
        !          1608: 
        !          1609:   /* Else will try to reuse lookahead token
        !          1610:      after shifting the error token.  */
        !          1611: 
        !          1612:   yyerrstatus = 3;             /* Each real token shifted decrements this */
        !          1613: 
        !          1614:   goto yyerrhandle;
        !          1615: 
        !          1616: yyerrdefault:  /* current state does not do anything special for the error token. */
        !          1617: 
        !          1618: #if 0
        !          1619:   /* This is wrong; only states that explicitly want error tokens
        !          1620:      should shift them.  */
        !          1621:   yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
        !          1622:   if (yyn) goto yydefault;
        !          1623: #endif
        !          1624: 
        !          1625: yyerrpop:   /* pop the current state because it cannot handle the error token */
        !          1626: 
        !          1627:   if (yyssp == yyss) YYABORT;
        !          1628:   yyvsp--;
        !          1629:   yystate = *--yyssp;
        !          1630: #ifdef YYLSP_NEEDED
        !          1631:   yylsp--;
        !          1632: #endif
        !          1633: 
        !          1634: #if YYDEBUG != 0
        !          1635:   if (yydebug)
        !          1636:     {
        !          1637:       short *ssp1 = yyss - 1;
        !          1638:       fprintf (stderr, "Error: state stack now");
        !          1639:       while (ssp1 != yyssp)
        !          1640:        fprintf (stderr, " %d", *++ssp1);
        !          1641:       fprintf (stderr, "\n");
        !          1642:     }
        !          1643: #endif
        !          1644: 
        !          1645: yyerrhandle:
        !          1646: 
        !          1647:   yyn = yypact[yystate];
        !          1648:   if (yyn == YYFLAG)
        !          1649:     goto yyerrdefault;
        !          1650: 
        !          1651:   yyn += YYTERROR;
        !          1652:   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
        !          1653:     goto yyerrdefault;
        !          1654: 
        !          1655:   yyn = yytable[yyn];
        !          1656:   if (yyn < 0)
        !          1657:     {
        !          1658:       if (yyn == YYFLAG)
        !          1659:        goto yyerrpop;
        !          1660:       yyn = -yyn;
        !          1661:       goto yyreduce;
        !          1662:     }
        !          1663:   else if (yyn == 0)
        !          1664:     goto yyerrpop;
        !          1665: 
        !          1666:   if (yyn == YYFINAL)
        !          1667:     YYACCEPT;
        !          1668: 
        !          1669: #if YYDEBUG != 0
        !          1670:   if (yydebug)
        !          1671:     fprintf(stderr, "Shifting error token, ");
        !          1672: #endif
        !          1673: 
        !          1674:   *++yyvsp = yylval;
        !          1675: #ifdef YYLSP_NEEDED
        !          1676:   *++yylsp = yylloc;
        !          1677: #endif
        !          1678: 
        !          1679:   yystate = yyn;
        !          1680:   goto yynewstate;
        !          1681: }
        !          1682: #line 654 "../gnumach/mig/parser.y"
        !          1683: 
        !          1684: 
        !          1685: static const char *
        !          1686: import_name(statement_kind_t sk)
        !          1687: {
        !          1688:     switch (sk)
        !          1689:     {
        !          1690:       case skImport:
        !          1691:        return "Import";
        !          1692:       case skSImport:
        !          1693:        return "SImport";
        !          1694:       case skUImport:
        !          1695:        return "UImport";
        !          1696:       default:
        !          1697:        fatal("import_name(%d): not import statement", (int) sk);
        !          1698:        /*NOTREACHED*/
        !          1699:     }
        !          1700: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.