#
# DO NOT EDIT THIS FILE!
#
# Parser generated by BisonGen on Sun Jun 10 00:58:38 2001.
#


# token definitions
ATTRIBUTE = 257
READONLY = 258
LONG = 259
SHORT = 260
IDENT = 261
UNSIGNED = 262
CLASS = 263
CHAR = 264
BOOLEAN = 265
OCTET = 266
FLOAT = 267
DOUBLE = 268
STRING = 269
RELATIONSHIP = 270
INVERSE = 271
SET = 272
LIST = 273
BAG = 274
DOUBLE_COLON = 275
EXTENDS = 276
EXTENT = 277
KEY = 278
MODULE = 279
INTERFACE = 280
CONST = 281
TRUE = 282
FALSE = 283
TYPEDEF = 284
DATE = 285
TIME = 286
INTERVAL = 287
TIMESTAMP = 288
DICTIONARY = 289
STRUCT = 290
UNION = 291
SWITCH = 292
CASE = 293
DEFAULT = 294
ENUM = 295
ARRAY = 296
SEQUENCE = 297
EXCEPTION = 298
ONEWAY = 299
VOID = 300
IN = 301
OUT = 302
INOUT = 303
RAISES = 304
CONTEXT = 305
COLON = 306
CHAR_LITERAL = 307
STRING_LITERAL = 308
FLOAT_LITERAL = 309
INTEGER_LITERAL = 310
BLOB_TYPE = 311
SHIFT_LEFT = 312
SHIFT_RIGHT = 313

# vector mapping lexer token numbers into internal token numbers
token_translations = [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 60, 2, 2, 2, 75, 70, 2, 
64, 65, 73, 71, 66, 72, 2, 74, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 61, 77, 
67, 78, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 79, 2, 80, 69, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 62, 68, 63, 76, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
54, 55, 56, 57, 58, 59]

YYTRANSLATE = lambda x: x > 313 and 191 or token_translations[x]

# vector of items of all rules.
rhs_tokens = [None,
              [82],
              [60, 106],
              [83],
              [83, 82],
              [119, 61],
              [104, 61],
              [175, 61],
              [96, 61],
              [95, 61],
              [84, 61],
              [85],
              [86],
              [87, 62, 100, 63],
              [9, 7],
              [9, 7],
              [9, 7, 22, 103],
              [9, 7, 22, 103, 52, 102],
              [9, 7, 22, 103, 88],
              [9, 7, 22, 103, 52, 102, 88],
              [9, 7, 52, 102],
              [9, 7, 52, 102, 88],
              [9, 7, 88],
              [64, 65],
              [64, 89, 65],
              [64, 90, 65],
              [64, 89, 90, 65],
              [23, 7],
              [24, 91],
              [92],
              [92, 66, 91],
              [94],
              [64, 93, 65],
              [94],
              [94, 66, 93],
              [7],
              [25, 7, 62, 82, 63],
              [97],
              [98],
              [99, 62, 63],
              [99, 62, 100, 63],
              [26, 7],
              [26, 7],
              [26, 7, 52, 102],
              [101],
              [101, 100],
              [119, 61],
              [104, 61],
              [175, 61],
              [168, 61],
              [172, 61],
              [176, 61],
              [103],
              [103, 66, 102],
              [7],
              [21, 7],
              [103, 21, 7],
              [27, 105, 7, 67, 106],
              [138],
              [146],
              [147],
              [137],
              [164],
              [103],
              [107],
              [108],
              [107, 68, 108],
              [109],
              [108, 69, 109],
              [110],
              [109, 70, 110],
              [111],
              [110, 59, 111],
              [110, 58, 111],
              [112],
              [111, 71, 112],
              [111, 72, 112],
              [113],
              [112, 73, 113],
              [112, 74, 113],
              [112, 75, 113],
              [114, 115],
              [115],
              [71],
              [72],
              [76],
              [103],
              [116],
              [64, 106, 65],
              [188],
              [187],
              [190],
              [189],
              [117],
              [28],
              [29],
              [106],
              [30, 120],
              [149],
              [152],
              [159],
              [121, 133],
              [122],
              [132],
              [123],
              [129],
              [103],
              [137],
              [138],
              [146],
              [147],
              [148],
              [124],
              [125],
              [127],
              [128],
              [126],
              [31],
              [32],
              [57],
              [33],
              [34],
              [162],
              [164],
              [130],
              [131, 77, 122, 78],
              [35, 77, 122, 66, 122, 78],
              [18],
              [19],
              [20],
              [149],
              [152],
              [159],
              [134],
              [134, 66, 133],
              [135],
              [136],
              [7],
              [165],
              [13],
              [14],
              [139],
              [143],
              [140],
              [141],
              [142],
              [5],
              [5, 5],
              [6],
              [144],
              [145],
              [8, 5],
              [8, 6],
              [10],
              [11],
              [12],
              [36, 7, 62, 150, 63],
              [151],
              [151, 150],
              [121, 133, 61],
              [37, 7, 38, 64, 153, 65, 62, 154, 63],
              [138],
              [146],
              [147],
              [159],
              [103],
              [155],
              [155, 154],
              [156, 158, 61],
              [157],
              [157, 156],
              [39, 106, 52],
              [40, 52],
              [121, 134],
              [41, 7, 62, 160, 63],
              [161],
              [161, 66, 160],
              [7],
              [163, 77, 122, 66, 118, 78],
              [163, 77, 122, 78],
              [42],
              [43],
              [15, 77, 118, 78],
              [15],
              [7, 166],
              [167],
              [167, 166],
              [79, 118, 80],
              [3, 171, 169],
              [4, 3, 171, 169],
              [170],
              [170, 167],
              [170, 66, 169],
              [170, 167, 66, 169],
              [7],
              [122],
              [149],
              [159],
              [16, 173, 7, 17, 174],
              [103],
              [131, 77, 103, 78],
              [103, 21, 7],
              [44, 7, 62, 63],
              [44, 7, 62, 150, 63],
              [178, 7, 179],
              [177, 178, 7, 179],
              [178, 7, 179, 183],
              [177, 178, 7, 179, 183],
              [178, 7, 179, 185],
              [177, 178, 7, 179, 185],
              [178, 7, 179, 183, 185],
              [177, 178, 7, 179, 183, 185],
              [45],
              [122],
              [46],
              [64, 65],
              [64, 180, 65],
              [181],
              [181, 66, 180],
              [182, 122, 134],
              [47],
              [48],
              [49],
              [50, 64, 184, 65],
              [103],
              [103, 66, 184],
              [51, 64, 186, 65],
              [187],
              [187, 66, 186],
              [54],
              [56],
              [55],
              [53],
              ]

# vector of line numbers and filename of all rules
rule_info = [": line 0",
             "Ods/Parsers/Odl/Odl.bgen: line 72",
             "Ods/Parsers/Odl/Odl.bgen: line 81",
             "Ods/Parsers/Odl/Odl.bgen: line 96",
             "Ods/Parsers/Odl/Odl.bgen: line 105",
             "Ods/Parsers/Odl/Odl.bgen: line 120",
             "Ods/Parsers/Odl/Odl.bgen: line 130",
             "Ods/Parsers/Odl/Odl.bgen: line 140",
             "Ods/Parsers/Odl/Odl.bgen: line 150",
             "Ods/Parsers/Odl/Odl.bgen: line 160",
             "Ods/Parsers/Odl/Odl.bgen: line 170",
             "Ods/Parsers/Odl/Odl.bgen: line 185",
             "Ods/Parsers/Odl/Odl.bgen: line 194",
             "Ods/Parsers/Odl/Odl.bgen: line 208",
             "Ods/Parsers/Odl/Odl.bgen: line 225",
             "Ods/Parsers/Odl/Odl.bgen: line 240",
             "Ods/Parsers/Odl/Odl.bgen: line 250",
             "Ods/Parsers/Odl/Odl.bgen: line 262",
             "Ods/Parsers/Odl/Odl.bgen: line 276",
             "Ods/Parsers/Odl/Odl.bgen: line 289",
             "Ods/Parsers/Odl/Odl.bgen: line 304",
             "Ods/Parsers/Odl/Odl.bgen: line 316",
             "Ods/Parsers/Odl/Odl.bgen: line 329",
             "Ods/Parsers/Odl/Odl.bgen: line 345",
             "Ods/Parsers/Odl/Odl.bgen: line 355",
             "Ods/Parsers/Odl/Odl.bgen: line 366",
             "Ods/Parsers/Odl/Odl.bgen: line 377",
             "Ods/Parsers/Odl/Odl.bgen: line 394",
             "Ods/Parsers/Odl/Odl.bgen: line 409",
             "Ods/Parsers/Odl/Odl.bgen: line 424",
             "Ods/Parsers/Odl/Odl.bgen: line 433",
             "Ods/Parsers/Odl/Odl.bgen: line 449",
             "Ods/Parsers/Odl/Odl.bgen: line 458",
             "Ods/Parsers/Odl/Odl.bgen: line 474",
             "Ods/Parsers/Odl/Odl.bgen: line 483",
             "Ods/Parsers/Odl/Odl.bgen: line 499",
             "Ods/Parsers/Odl/Odl.bgen: line 513",
             "Ods/Parsers/Odl/Odl.bgen: line 531",
             "Ods/Parsers/Odl/Odl.bgen: line 540",
             "Ods/Parsers/Odl/Odl.bgen: line 554",
             "Ods/Parsers/Odl/Odl.bgen: line 565",
             "Ods/Parsers/Odl/Odl.bgen: line 582",
             "Ods/Parsers/Odl/Odl.bgen: line 597",
             "Ods/Parsers/Odl/Odl.bgen: line 607",
             "Ods/Parsers/Odl/Odl.bgen: line 624",
             "Ods/Parsers/Odl/Odl.bgen: line 633",
             "Ods/Parsers/Odl/Odl.bgen: line 648",
             "Ods/Parsers/Odl/Odl.bgen: line 658",
             "Ods/Parsers/Odl/Odl.bgen: line 668",
             "Ods/Parsers/Odl/Odl.bgen: line 678",
             "Ods/Parsers/Odl/Odl.bgen: line 688",
             "Ods/Parsers/Odl/Odl.bgen: line 698",
             "Ods/Parsers/Odl/Odl.bgen: line 713",
             "Ods/Parsers/Odl/Odl.bgen: line 722",
             "Ods/Parsers/Odl/Odl.bgen: line 738",
             "Ods/Parsers/Odl/Odl.bgen: line 747",
             "Ods/Parsers/Odl/Odl.bgen: line 757",
             "Ods/Parsers/Odl/Odl.bgen: line 773",
             "Ods/Parsers/Odl/Odl.bgen: line 791",
             "Ods/Parsers/Odl/Odl.bgen: line 800",
             "Ods/Parsers/Odl/Odl.bgen: line 809",
             "Ods/Parsers/Odl/Odl.bgen: line 818",
             "Ods/Parsers/Odl/Odl.bgen: line 827",
             "Ods/Parsers/Odl/Odl.bgen: line 836",
             "Ods/Parsers/Odl/Odl.bgen: line 850",
             "Ods/Parsers/Odl/Odl.bgen: line 864",
             "Ods/Parsers/Odl/Odl.bgen: line 873",
             "Ods/Parsers/Odl/Odl.bgen: line 889",
             "Ods/Parsers/Odl/Odl.bgen: line 898",
             "Ods/Parsers/Odl/Odl.bgen: line 914",
             "Ods/Parsers/Odl/Odl.bgen: line 923",
             "Ods/Parsers/Odl/Odl.bgen: line 939",
             "Ods/Parsers/Odl/Odl.bgen: line 948",
             "Ods/Parsers/Odl/Odl.bgen: line 959",
             "Ods/Parsers/Odl/Odl.bgen: line 975",
             "Ods/Parsers/Odl/Odl.bgen: line 984",
             "Ods/Parsers/Odl/Odl.bgen: line 995",
             "Ods/Parsers/Odl/Odl.bgen: line 1011",
             "Ods/Parsers/Odl/Odl.bgen: line 1020",
             "Ods/Parsers/Odl/Odl.bgen: line 1031",
             "Ods/Parsers/Odl/Odl.bgen: line 1042",
             "Ods/Parsers/Odl/Odl.bgen: line 1058",
             "Ods/Parsers/Odl/Odl.bgen: line 1068",
             "Ods/Parsers/Odl/Odl.bgen: line 1082",
             "Ods/Parsers/Odl/Odl.bgen: line 1091",
             "Ods/Parsers/Odl/Odl.bgen: line 1100",
             "Ods/Parsers/Odl/Odl.bgen: line 1114",
             "Ods/Parsers/Odl/Odl.bgen: line 1123",
             "Ods/Parsers/Odl/Odl.bgen: line 1132",
             "Ods/Parsers/Odl/Odl.bgen: line 1148",
             "Ods/Parsers/Odl/Odl.bgen: line 1157",
             "Ods/Parsers/Odl/Odl.bgen: line 1166",
             "Ods/Parsers/Odl/Odl.bgen: line 1175",
             "Ods/Parsers/Odl/Odl.bgen: line 1184",
             "Ods/Parsers/Odl/Odl.bgen: line 1198",
             "Ods/Parsers/Odl/Odl.bgen: line 1207",
             "Ods/Parsers/Odl/Odl.bgen: line 1221",
             "Ods/Parsers/Odl/Odl.bgen: line 1235",
             "Ods/Parsers/Odl/Odl.bgen: line 1245",
             "Ods/Parsers/Odl/Odl.bgen: line 1254",
             "Ods/Parsers/Odl/Odl.bgen: line 1263",
             "Ods/Parsers/Odl/Odl.bgen: line 1277",
             "Ods/Parsers/Odl/Odl.bgen: line 1292",
             "Ods/Parsers/Odl/Odl.bgen: line 1301",
             "Ods/Parsers/Odl/Odl.bgen: line 1315",
             "Ods/Parsers/Odl/Odl.bgen: line 1324",
             "Ods/Parsers/Odl/Odl.bgen: line 1333",
             "Ods/Parsers/Odl/Odl.bgen: line 1347",
             "Ods/Parsers/Odl/Odl.bgen: line 1356",
             "Ods/Parsers/Odl/Odl.bgen: line 1365",
             "Ods/Parsers/Odl/Odl.bgen: line 1374",
             "Ods/Parsers/Odl/Odl.bgen: line 1383",
             "Ods/Parsers/Odl/Odl.bgen: line 1392",
             "Ods/Parsers/Odl/Odl.bgen: line 1401",
             "Ods/Parsers/Odl/Odl.bgen: line 1410",
             "Ods/Parsers/Odl/Odl.bgen: line 1419",
             "Ods/Parsers/Odl/Odl.bgen: line 1428",
             "Ods/Parsers/Odl/Odl.bgen: line 1442",
             "Ods/Parsers/Odl/Odl.bgen: line 1455",
             "Ods/Parsers/Odl/Odl.bgen: line 1469",
             "Ods/Parsers/Odl/Odl.bgen: line 1483",
             "Ods/Parsers/Odl/Odl.bgen: line 1497",
             "Ods/Parsers/Odl/Odl.bgen: line 1511",
             "Ods/Parsers/Odl/Odl.bgen: line 1520",
             "Ods/Parsers/Odl/Odl.bgen: line 1529",
             "Ods/Parsers/Odl/Odl.bgen: line 1543",
             "Ods/Parsers/Odl/Odl.bgen: line 1555",
             "Ods/Parsers/Odl/Odl.bgen: line 1574",
             "Ods/Parsers/Odl/Odl.bgen: line 1583",
             "Ods/Parsers/Odl/Odl.bgen: line 1592",
             "Ods/Parsers/Odl/Odl.bgen: line 1606",
             "Ods/Parsers/Odl/Odl.bgen: line 1615",
             "Ods/Parsers/Odl/Odl.bgen: line 1624",
             "Ods/Parsers/Odl/Odl.bgen: line 1638",
             "Ods/Parsers/Odl/Odl.bgen: line 1647",
             "Ods/Parsers/Odl/Odl.bgen: line 1663",
             "Ods/Parsers/Odl/Odl.bgen: line 1672",
             "Ods/Parsers/Odl/Odl.bgen: line 1686",
             "Ods/Parsers/Odl/Odl.bgen: line 1700",
             "Ods/Parsers/Odl/Odl.bgen: line 1714",
             "Ods/Parsers/Odl/Odl.bgen: line 1723",
             "Ods/Parsers/Odl/Odl.bgen: line 1737",
             "Ods/Parsers/Odl/Odl.bgen: line 1746",
             "Ods/Parsers/Odl/Odl.bgen: line 1760",
             "Ods/Parsers/Odl/Odl.bgen: line 1769",
             "Ods/Parsers/Odl/Odl.bgen: line 1778",
             "Ods/Parsers/Odl/Odl.bgen: line 1792",
             "Ods/Parsers/Odl/Odl.bgen: line 1806",
             "Ods/Parsers/Odl/Odl.bgen: line 1821",
             "Ods/Parsers/Odl/Odl.bgen: line 1835",
             "Ods/Parsers/Odl/Odl.bgen: line 1844",
             "Ods/Parsers/Odl/Odl.bgen: line 1858",
             "Ods/Parsers/Odl/Odl.bgen: line 1873",
             "Ods/Parsers/Odl/Odl.bgen: line 1888",
             "Ods/Parsers/Odl/Odl.bgen: line 1902",
             "Ods/Parsers/Odl/Odl.bgen: line 1916",
             "Ods/Parsers/Odl/Odl.bgen: line 1930",
             "Ods/Parsers/Odl/Odl.bgen: line 1948",
             "Ods/Parsers/Odl/Odl.bgen: line 1957",
             "Ods/Parsers/Odl/Odl.bgen: line 1972",
             "Ods/Parsers/Odl/Odl.bgen: line 1988",
             "Ods/Parsers/Odl/Odl.bgen: line 2010",
             "Ods/Parsers/Odl/Odl.bgen: line 2019",
             "Ods/Parsers/Odl/Odl.bgen: line 2028",
             "Ods/Parsers/Odl/Odl.bgen: line 2037",
             "Ods/Parsers/Odl/Odl.bgen: line 2046",
             "Ods/Parsers/Odl/Odl.bgen: line 2060",
             "Ods/Parsers/Odl/Odl.bgen: line 2069",
             "Ods/Parsers/Odl/Odl.bgen: line 2084",
             "Ods/Parsers/Odl/Odl.bgen: line 2100",
             "Ods/Parsers/Odl/Odl.bgen: line 2109",
             "Ods/Parsers/Odl/Odl.bgen: line 2124",
             "Ods/Parsers/Odl/Odl.bgen: line 2135",
             "Ods/Parsers/Odl/Odl.bgen: line 2150",
             "Ods/Parsers/Odl/Odl.bgen: line 2165",
             "Ods/Parsers/Odl/Odl.bgen: line 2183",
             "Ods/Parsers/Odl/Odl.bgen: line 2192",
             "Ods/Parsers/Odl/Odl.bgen: line 2208",
             "Ods/Parsers/Odl/Odl.bgen: line 2222",
             "Ods/Parsers/Odl/Odl.bgen: line 2236",
             "Ods/Parsers/Odl/Odl.bgen: line 2253",
             "Ods/Parsers/Odl/Odl.bgen: line 2262",
             "Ods/Parsers/Odl/Odl.bgen: line 2276",
             "Ods/Parsers/Odl/Odl.bgen: line 2288",
             "Ods/Parsers/Odl/Odl.bgen: line 2302",
             "Ods/Parsers/Odl/Odl.bgen: line 2317",
             "Ods/Parsers/Odl/Odl.bgen: line 2326",
             "Ods/Parsers/Odl/Odl.bgen: line 2341",
             "Ods/Parsers/Odl/Odl.bgen: line 2357",
             "Ods/Parsers/Odl/Odl.bgen: line 2368",
             "Ods/Parsers/Odl/Odl.bgen: line 2385",
             "Ods/Parsers/Odl/Odl.bgen: line 2394",
             "Ods/Parsers/Odl/Odl.bgen: line 2404",
             "Ods/Parsers/Odl/Odl.bgen: line 2415",
             "Ods/Parsers/Odl/Odl.bgen: line 2432",
             "Ods/Parsers/Odl/Odl.bgen: line 2446",
             "Ods/Parsers/Odl/Odl.bgen: line 2455",
             "Ods/Parsers/Odl/Odl.bgen: line 2464",
             "Ods/Parsers/Odl/Odl.bgen: line 2478",
             "Ods/Parsers/Odl/Odl.bgen: line 2496",
             "Ods/Parsers/Odl/Odl.bgen: line 2505",
             "Ods/Parsers/Odl/Odl.bgen: line 2522",
             "Ods/Parsers/Odl/Odl.bgen: line 2538",
             "Ods/Parsers/Odl/Odl.bgen: line 2550",
             "Ods/Parsers/Odl/Odl.bgen: line 2568",
             "Ods/Parsers/Odl/Odl.bgen: line 2579",
             "Ods/Parsers/Odl/Odl.bgen: line 2591",
             "Ods/Parsers/Odl/Odl.bgen: line 2603",
             "Ods/Parsers/Odl/Odl.bgen: line 2616",
             "Ods/Parsers/Odl/Odl.bgen: line 2628",
             "Ods/Parsers/Odl/Odl.bgen: line 2641",
             "Ods/Parsers/Odl/Odl.bgen: line 2654",
             "Ods/Parsers/Odl/Odl.bgen: line 2673",
             "Ods/Parsers/Odl/Odl.bgen: line 2687",
             "Ods/Parsers/Odl/Odl.bgen: line 2696",
             "Ods/Parsers/Odl/Odl.bgen: line 2710",
             "Ods/Parsers/Odl/Odl.bgen: line 2720",
             "Ods/Parsers/Odl/Odl.bgen: line 2736",
             "Ods/Parsers/Odl/Odl.bgen: line 2745",
             "Ods/Parsers/Odl/Odl.bgen: line 2761",
             "Ods/Parsers/Odl/Odl.bgen: line 2777",
             "Ods/Parsers/Odl/Odl.bgen: line 2786",
             "Ods/Parsers/Odl/Odl.bgen: line 2795",
             "Ods/Parsers/Odl/Odl.bgen: line 2809",
             "Ods/Parsers/Odl/Odl.bgen: line 2826",
             "Ods/Parsers/Odl/Odl.bgen: line 2835",
             "Ods/Parsers/Odl/Odl.bgen: line 2851",
             "Ods/Parsers/Odl/Odl.bgen: line 2868",
             "Ods/Parsers/Odl/Odl.bgen: line 2877",
             "Ods/Parsers/Odl/Odl.bgen: line 2893",
             "Ods/Parsers/Odl/Odl.bgen: line 2907",
             "Ods/Parsers/Odl/Odl.bgen: line 2921",
             "Ods/Parsers/Odl/Odl.bgen: line 2935",
             ]

# vector of string-names indexed by token number
token_names = ['$',
               'error',
               '$undefined.',
               'ATTRIBUTE',
               'READONLY',
               'LONG',
               'SHORT',
               'IDENT',
               'UNSIGNED',
               'CLASS',
               'CHAR',
               'BOOLEAN',
               'OCTET',
               'FLOAT',
               'DOUBLE',
               'STRING',
               'RELATIONSHIP',
               'INVERSE',
               'SET',
               'LIST',
               'BAG',
               'DOUBLE_COLON',
               'EXTENDS',
               'EXTENT',
               'KEY',
               'MODULE',
               'INTERFACE',
               'CONST',
               'TRUE',
               'FALSE',
               'TYPEDEF',
               'DATE',
               'TIME',
               'INTERVAL',
               'TIMESTAMP',
               'DICTIONARY',
               'STRUCT',
               'UNION',
               'SWITCH',
               'CASE',
               'DEFAULT',
               'ENUM',
               'ARRAY',
               'SEQUENCE',
               'EXCEPTION',
               'ONEWAY',
               'VOID',
               'IN',
               'OUT',
               'INOUT',
               'RAISES',
               'CONTEXT',
               'COLON',
               'CHAR_LITERAL',
               'STRING_LITERAL',
               'FLOAT_LITERAL',
               'INTEGER_LITERAL',
               'BLOB_TYPE',
               'SHIFT_LEFT',
               'SHIFT_RIGHT',
               '!',
               ';',
               '{',
               '}',
               '(',
               ')',
               ',',
               '=',
               '|',
               '^',
               '&',
               '+',
               '-',
               '*',
               '/',
               '%',
               '~',
               '<',
               '>',
               '[',
               ']',
               'start',
               'specification',
               'definition',
               'class',
               'class_dcl',
               'class_forward_dcl',
               'class_header',
               'type_property_list',
               'extent_spec',
               'key_spec',
               'key_list',
               'key',
               'property_list',
               'property_name',
               'module',
               'interface',
               'interface_dcl',
               'interface_forward_dcl',
               'interface_header',
               'interface_body',
               'export',
               'inheritance_spec',
               'scoped_name',
               'const_dcl',
               'const_type',
               'const_exp',
               'or_expr',
               'xor_expr',
               'and_expr',
               'shift_expr',
               'add_expr',
               'mult_expr',
               'unary_expr',
               'unary_operator',
               'primary_expr',
               'literal',
               'boolean_literal',
               'positive_int_const',
               'type_dcl',
               'type_declarator',
               'type_spec',
               'simple_type_spec',
               'base_type_spec',
               'date_type',
               'time_type',
               'blob_type',
               'interval_type',
               'timestamp_type',
               'template_type_spec',
               'coll_type',
               'coll_spec',
               'constr_type_spec',
               'declarators',
               'declarator',
               'simple_declarator',
               'complex_declarator',
               'floating_pt_type',
               'integer_type',
               'signed_int',
               'signed_long_int',
               'signed_long_long_int',
               'signed_short_int',
               'unsigned_int',
               'unsigned_long_int',
               'unsigned_short_int',
               'char_type',
               'boolean_type',
               'octet_type',
               'struct_type',
               'member_list',
               'member',
               'union_type',
               'switch_type_spec',
               'switch_body',
               'case',
               'case_label_list',
               'case_label',
               'element_spec',
               'enum_type',
               'enumerator_list',
               'enumerator',
               'array_type',
               'array_spec',
               'string_type',
               'array_declarator',
               'array_size_list',
               'fixed_array_size',
               'attr_dcl',
               'attr_list',
               'attribute_name',
               'domain_type',
               'rel_dcl',
               'target_of_path',
               'inverse_traversal_path',
               'except_dcl',
               'op_dcl',
               'op_attribute',
               'op_type_spec',
               'parameter_dcls',
               'param_dcl_list',
               'param_dcl',
               'param_attribute',
               'raises_expr',
               'scoped_name_list',
               'context_expr',
               'string_literal_list',
               'string_literal',
               'integer_literal',
               'floating_pt_literal',
               'character_literal',
               '0',
               ]

# symbol number of symbol that rule derives.
derives = [0, 81, 81, 82, 82, 83, 83, 83, 83, 83, 83, 84, 84, 85, 86, 87, 
87, 87, 87, 87, 87, 87, 87, 88, 88, 88, 88, 89, 90, 91, 91, 92, 92, 93, 
93, 94, 95, 96, 96, 97, 97, 98, 99, 99, 100, 100, 101, 101, 101, 101, 101, 
101, 102, 102, 103, 103, 103, 104, 105, 105, 105, 105, 105, 105, 106, 107, 
107, 108, 108, 109, 109, 110, 110, 110, 111, 111, 111, 112, 112, 112, 112, 
113, 113, 114, 114, 114, 115, 115, 115, 116, 116, 116, 116, 116, 117, 117, 
118, 119, 119, 119, 119, 120, 121, 121, 122, 122, 122, 123, 123, 123, 123, 
123, 123, 123, 123, 123, 123, 124, 125, 126, 127, 128, 129, 129, 129, 130, 
130, 131, 131, 131, 132, 132, 132, 133, 133, 134, 134, 135, 136, 137, 137, 
138, 138, 139, 139, 139, 140, 141, 142, 143, 143, 144, 145, 146, 147, 148, 
149, 150, 150, 151, 152, 153, 153, 153, 153, 153, 154, 154, 155, 156, 156, 
157, 157, 158, 159, 160, 160, 161, 162, 162, 163, 163, 164, 164, 165, 166, 
166, 167, 168, 168, 169, 169, 169, 169, 170, 171, 171, 171, 172, 173, 173, 
174, 175, 175, 176, 176, 176, 176, 176, 176, 176, 176, 177, 178, 178, 179, 
179, 180, 180, 181, 182, 182, 182, 183, 184, 184, 185, 186, 186, 187, 188, 
189, 190]

# number of symbols composing right hand side of rule.
rhs_size = [0, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 4, 2, 2, 4, 6, 5, 7, 
4, 5, 3, 2, 3, 3, 4, 2, 2, 1, 3, 1, 3, 1, 3, 1, 5, 1, 1, 3, 4, 2, 2, 4, 
1, 2, 2, 2, 2, 2, 2, 2, 1, 3, 1, 2, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 
3, 1, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 2, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 
1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 6, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 5, 1, 2, 3, 9, 1, 1, 1, 
1, 1, 1, 2, 3, 1, 2, 3, 2, 2, 5, 1, 3, 1, 6, 4, 1, 1, 4, 1, 2, 1, 2, 3, 
3, 4, 1, 2, 3, 4, 1, 1, 1, 1, 5, 1, 4, 3, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 
1, 1, 1, 2, 3, 1, 3, 3, 1, 1, 1, 4, 1, 3, 4, 1, 3, 1, 1, 1, 1]

# default rule to reduce with in state. 0 means the default is an error.
# indexed by state number
default_action = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 11, 12, 0, 
0, 0, 37, 38, 0, 0, 0, 98, 99, 100, 0, 14, 0, 41, 146, 148, 54, 0, 153, 
154, 139, 140, 183, 0, 63, 0, 61, 58, 141, 143, 144, 145, 142, 149, 150, 
59, 60, 62, 155, 127, 128, 129, 117, 118, 120, 121, 0, 180, 181, 119, 106, 
97, 0, 102, 104, 112, 113, 116, 114, 115, 105, 124, 0, 103, 107, 108, 109, 
110, 111, 130, 131, 132, 122, 0, 123, 0, 0, 0, 0, 94, 95, 232, 229, 231, 
230, 0, 83, 84, 85, 86, 2, 64, 65, 67, 69, 71, 74, 77, 0, 82, 87, 93, 90, 
89, 92, 91, 4, 10, 0, 9, 8, 0, 6, 5, 7, 0, 0, 0, 22, 0, 0, 147, 151, 152, 
0, 55, 0, 0, 0, 137, 101, 133, 135, 136, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 212, 214, 0, 44, 0, 0, 213, 0, 0, 
0, 0, 0, 0, 39, 0, 16, 20, 52, 0, 0, 23, 0, 0, 0, 43, 96, 0, 56, 0, 0, 
0, 184, 185, 0, 0, 0, 0, 0, 157, 0, 177, 0, 175, 202, 0, 88, 66, 68, 70, 
73, 72, 75, 76, 78, 79, 80, 195, 196, 197, 0, 0, 199, 0, 0, 13, 45, 47, 
46, 49, 50, 48, 51, 0, 0, 40, 0, 18, 21, 0, 27, 35, 0, 28, 29, 31, 24, 
0, 25, 36, 182, 57, 0, 0, 186, 134, 125, 0, 179, 0, 156, 158, 165, 161, 
162, 163, 0, 164, 174, 0, 203, 194, 188, 190, 0, 0, 0, 0, 0, 204, 17, 53, 
0, 33, 0, 26, 0, 187, 0, 159, 0, 176, 0, 191, 189, 0, 0, 205, 220, 221, 
222, 215, 0, 217, 0, 0, 0, 206, 208, 19, 32, 0, 30, 126, 178, 0, 192, 0, 
200, 0, 198, 207, 209, 216, 0, 0, 0, 0, 210, 34, 0, 0, 0, 166, 0, 169, 
193, 0, 211, 218, 219, 224, 0, 0, 227, 0, 172, 160, 167, 0, 0, 170, 56, 
0, 223, 226, 0, 171, 173, 168, 225, 228, 0, 0, 0]

# default state to go to after a reduction of a rule.
# indexed by variable number (lhs token)
default_goto = [374, 11, 12, 13, 14, 15, 16, 135, 194, 195, 255, 256, 294, 
257, 17, 18, 19, 20, 21, 175, 176, 189, 106, 22, 42, 198, 108, 109, 110, 
111, 112, 113, 114, 115, 116, 117, 118, 199, 23, 68, 209, 70, 71, 72, 73, 
74, 75, 76, 77, 78, 79, 80, 147, 148, 149, 150, 81, 82, 45, 46, 47, 48, 
49, 50, 51, 83, 84, 85, 24, 210, 211, 25, 278, 344, 345, 346, 347, 362, 
26, 214, 215, 89, 90, 91, 151, 204, 205, 180, 284, 285, 232, 181, 236, 
332, 27, 183, 184, 185, 291, 314, 315, 316, 319, 354, 320, 355, 119, 120, 
121, 122]

# index in yytable of the portion describing state (indexed by state number)
# If the value in yytable is positive, we shift the token and go to that state.
# If the value is negative, it is minus a rule number to reduce by.
# If the value is zero, the default action from yydefact[s] is used.
action_idx = [65, 40, 52, 54, 282, 461, 98, 111, 120, 123, 13, -32768, 
160, 71, -32768, -32768, 83, 86, 99, -32768, -32768, 97, 104, 106, -32768, 
-32768, -32768, 110, 82, 113, 8, 168, -32768, -32768, 21, -32768, -32768, 
-32768, -32768, 112, 181, 170, 186, -32768, -32768, -32768, -32768, -32768, 
-32768, -32768, -32768, -32768, -32768, -32768, -32768, -32768, -32768, 
-32768, -32768, -32768, -32768, -32768, -32768, 117, -32768, -32768, -32768, 
170, -32768, 195, -32768, -32768, -32768, -32768, -32768, -32768, -32768, 
-32768, -32768, 128, -32768, -32768, -32768, -32768, -32768, -32768, -32768, 
-32768, -32768, -32768, 129, -32768, 148, 179, 161, 166, -32768, -32768, 
-32768, -32768, -32768, -32768, 13, -32768, -32768, -32768, 170, -32768, 
162, 163, 164, 29, -17, 62, -32768, 44, -32768, -32768, -32768, -32768, 
-32768, -32768, -32768, -32768, -32768, 413, -32768, -32768, 352, -32768, 
-32768, -32768, 24, 24, 91, -32768, 160, 24, -32768, -32768, -32768, 13, 
-32768, 224, 169, 501, 156, -32768, 174, -32768, -32768, -32768, 501, 501, 
541, 175, 234, 243, 177, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, -32768, 
581, 240, 206, -32768, -32768, 182, 413, 185, 191, -32768, 198, 204, 205, 
207, 621, 260, -32768, 208, 59, 209, 27, 262, 11, -32768, -1, 216, 219, 
-32768, -32768, 192, -32768, 13, 225, 13, -32768, 156, 195, 194, -22, 195, 
231, 669, 171, -32768, 235, 233, -32768, 238, -32768, 163, 164, 29, -17, 
-17, 62, 62, -32768, -32768, -32768, -32768, -32768, -32768, 295, 709, 
170, 228, 300, -32768, -32768, -32768, -32768, -32768, -32768, -32768, 
-32768, 301, 245, -32768, 31, -32768, -32768, 31, -32768, -32768, 303, 
-32768, 247, -32768, -32768, 246, -32768, -32768, -32768, -32768, 749, 
236, -32768, -32768, -32768, 13, -32768, 253, -32768, -32768, 170, -32768, 
-32768, -32768, 250, -32768, -32768, 234, -32768, -32768, -32768, -30, 
295, 31, 302, 245, 173, 88, 209, -32768, 252, 254, 11, -32768, 244, -32768, 
248, -32768, 256, -32768, 295, 255, -32768, 1, 31, 88, -32768, -32768, 
-32768, -32768, 258, 259, 749, 263, 264, 273, -32768, -32768, -32768, 303, 
-32768, -32768, -32768, 73, -32768, 295, -32768, 308, -32768, 273, -32768, 
-32768, 115, 195, 31, 276, -32768, -32768, 13, 279, 269, 73, 789, 73, -32768, 
326, -32768, -32768, -32768, 37, 270, 272, 274, 286, -32768, -32768, -32768, 
195, 278, -32768, 280, 31, -32768, -32768, 276, -32768, -32768, -32768, 
-32768, -32768, 345, 347, -32768]

# the index in yytable of the portion describing what to do after reducing a rule.
# The value from yytable is the state to go to.
goto_idx = [-32768, -5, -32768, -32768, -32768, -32768, -32768, -175, -32768, 
154, 53, -32768, 28, -237, -32768, -32768, -32768, -32768, -32768, -93, 
-32768, -129, -4, -100, -32768, -6, -32768, 193, 214, 215, -20, 19, 32, 
-32768, 239, -32768, -32768, -187, -95, -32768, -3, -113, -32768, -32768, 
-32768, -32768, -32768, -32768, -32768, -32768, 197, -32768, -99, -308, 
-32768, -32768, 349, 2, -32768, -32768, -32768, -32768, -32768, -32768, 
-32768, 6, 7, -32768, 0, -133, -32768, -2, -32768, 30, -32768, 33, -32768, 
-32768, 4, 96, -32768, -32768, -32768, 374, -32768, 176, 105, -32768, -267, 
-32768, 158, -32768, -32768, -32768, -82, -32768, -32768, 217, 103, 63, 
-32768, -32768, 93, 35, -193, 36, -318, -32768, -32768, -32768]

# a vector filled with portions for different uses. (using action_idx and goto_idx)
yytable = [41, 67, 69, 87, 107, 86, 44, 123, 197, 88, 52, 53, 179, 249, 
250, 179, 265, 295, 253, 306, 33, 356, 143, 192, 217, 177, 139, 140, 177, 
352, 178, 33, 202, 178, 40, 187, 304, 328, 33, 207, 208, 96, 97, 182, 269, 
40, 182, 28, 143, 203, 356, 33, 40, 370, 164, 165, 270, 229, 143, 29, 137, 
30, 348, 179, 258, 40, 98, 99, 100, 101, -42, 179, 96, 97, 1, 254, 177, 
102, 273, 330, 143, 178, 300, 238, 103, 104, 295, 162, 163, 105, 2, 3, 
4, 251, 182, 5, 158, 98, 99, 100, 101, 6, 7, 365, 132, 92, 8, 267, 102, 
9, 271, 248, 342, 343, 191, 192, 334, 321, 93, 292, 229, 67, 293, 134, 
67, 10, 340, 94, 188, 190, 95, 196, 124, 190, 133, 166, 167, 168, 317, 
318, 350, 67, 222, 223, -15, 125, 134, 126, 67, 67, 67, 298, 87, 67, 86, 
87, 193, 86, 88, 128, 127, 88, 310, 311, 312, 129, 67, 130, 234, 1, 230, 
131, 67, 138, 231, 136, 31, 32, 33, 34, 67, 35, 36, 224, 225, 2, 3, 4, 
142, 141, 5, 143, 40, 144, 145, 263, 6, 7, 226, 227, 228, 8, 146, 337, 
9, 152, 153, 67, 274, 87, 154, 86, 8, 33, 275, 88, 279, 155, 276, 277, 
310, 311, 312, 156, 56, 57, 58, 40, 157, 67, 159, 200, 160, 230, 161, 203, 
201, 231, 313, 212, 206, 213, 218, 233, 190, 237, 239, 190, 31, 32, 33, 
34, 240, 35, 36, 55, 37, 38, 39, 241, 67, 56, 57, 58, 40, 242, 243, 246, 
244, 252, 262, 247, 268, 134, 59, 60, 61, 62, 63, 6, 7, 260, 261, 307, 
8, 64, 65, 31, 32, 33, 34, 264, 35, 36, 272, 37, 38, 39, 280, 281, 66, 
282, 283, 40, 331, 287, 216, 288, 289, 290, 253, 297, 67, 296, 301, 302, 
299, 322, 327, 308, 323, 329, 325, 335, 318, 336, 326, 338, 339, 349, 99, 
358, 359, 364, 353, 366, 357, 367, 369, 371, 368, -201, 67, 361, 87, 375, 
86, 376, 259, 324, 88, 341, 219, 43, 169, 170, 171, 31, 32, 33, 34, 353, 
35, 36, 55, 37, 38, 39, 172, 235, 56, 57, 58, 40, 220, 360, 221, 303, 54, 
4, 363, 266, 5, 59, 60, 61, 62, 63, 6, 7, 305, 286, 309, 8, 64, 65, 9, 
173, 174, 351, 372, 245, 333, 0, 373, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 186, 
170, 171, 31, 32, 33, 34, 0, 35, 36, 55, 37, 38, 39, 172, 0, 56, 57, 58, 
40, 0, 0, 0, 0, 0, 4, 0, 0, 5, 59, 60, 61, 62, 63, 6, 7, 0, 0, 0, 8, 64, 
65, 9, 173, 174, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, 66, 35, 36, 55, 37, 
38, 39, 0, 0, 56, 57, 58, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, 
63, 6, 7, 0, 0, 0, 8, 64, 65, 0, 31, 32, 33, 34, 0, 35, 36, 55, 37, 38, 
39, 0, 66, 56, 57, 58, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, 63, 
0, 0, 0, 0, 0, 0, 64, 65, 0, 31, 32, 33, 34, 0, 35, 36, 55, 37, 38, 39, 
0, 66, 56, 57, 58, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, 63, 6, 
7, 0, 0, 0, 8, 64, 65, 0, 31, 32, 33, 34, 0, 35, 36, 55, 37, 38, 39, 0, 
66, 56, 57, 58, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, 63, 6, 0, 
0, 0, 0, 8, 64, 65, 0, 31, 32, 33, 34, 0, 35, 36, 55, 37, 38, 39, 0, 66, 
56, 57, 58, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, 
0, 0, 0, 64, 65, 0, 0, 174, 0, 0, 0, 0, 0, 0, 31, 32, 33, 34, 66, 35, 36, 
55, 37, 38, 39, 0, 0, 56, 57, 58, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 
61, 62, 63, 6, 7, 0, 0, 0, 8, 64, 65, 0, 31, 32, 33, 34, 0, 35, 36, 55, 
37, 38, 39, 0, 66, 56, 57, 58, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 
62, 63, 6, 0, 0, 0, 0, 8, 64, 65, 0, 31, 32, 33, 34, 0, 35, 36, 55, 37, 
38, 39, 0, 66, 56, 57, 58, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, 
63, 0, 0, 0, 0, 0, 0, 64, 65, 0, 31, 32, 33, 34, 0, 35, 36, 55, 37, 38, 
39, 0, 66, 56, 57, 58, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, 63, 
6, 7, 0, 0, 0, 8, 64, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66]

# a vector indexed in parallel with yytable.
# It indicates the bounds of the portion you are trying to examine.
yycheck = [4, 5, 5, 5, 10, 5, 4, 12, 137, 5, 4, 4, 125, 188, 189, 128, 
203, 254, 7, 286, 7, 339, 21, 24, 157, 125, 5, 6, 128, 337, 125, 7, 145, 
128, 21, 128, 66, 304, 7, 152, 153, 28, 29, 125, 66, 21, 128, 7, 21, 79, 
368, 7, 21, 361, 71, 72, 78, 170, 21, 7, 52, 7, 329, 176, 65, 21, 53, 54, 
55, 56, 62, 184, 28, 29, 9, 64, 176, 64, 211, 78, 21, 176, 269, 176, 71, 
72, 323, 58, 59, 76, 25, 26, 27, 66, 176, 30, 102, 53, 54, 55, 56, 36, 
37, 66, 22, 7, 41, 206, 64, 44, 209, 52, 39, 40, 23, 24, 309, 292, 7, 248, 
233, 125, 251, 64, 128, 60, 319, 7, 132, 133, 7, 136, 61, 137, 52, 73, 
74, 75, 50, 51, 333, 145, 162, 163, 62, 62, 64, 61, 152, 153, 154, 264, 
154, 157, 154, 157, 65, 157, 154, 62, 61, 157, 47, 48, 49, 61, 170, 61, 
172, 9, 170, 61, 176, 5, 170, 62, 5, 6, 7, 8, 184, 10, 11, 164, 165, 25, 
26, 27, 7, 77, 30, 21, 21, 7, 77, 201, 36, 37, 166, 167, 168, 41, 7, 316, 
44, 77, 77, 211, 212, 211, 62, 211, 41, 7, 212, 211, 212, 38, 212, 212, 
47, 48, 49, 62, 18, 19, 20, 21, 62, 233, 68, 7, 69, 233, 70, 79, 67, 233, 
65, 64, 66, 7, 65, 3, 248, 63, 61, 251, 5, 6, 7, 8, 61, 10, 11, 12, 13, 
14, 15, 61, 264, 18, 19, 20, 21, 61, 61, 7, 61, 7, 78, 63, 78, 64, 31, 
32, 33, 34, 35, 36, 37, 65, 63, 287, 41, 42, 43, 5, 6, 7, 8, 66, 10, 11, 
63, 13, 14, 15, 63, 66, 57, 63, 7, 21, 308, 77, 63, 7, 7, 64, 7, 65, 316, 
66, 61, 65, 80, 65, 62, 17, 66, 66, 78, 65, 51, 66, 78, 64, 64, 21, 54, 
52, 63, 7, 338, 65, 342, 65, 52, 61, 66, 61, 346, 346, 346, 0, 346, 0, 
194, 296, 346, 323, 159, 4, 115, 3, 4, 5, 6, 7, 8, 365, 10, 11, 12, 13, 
14, 15, 16, 172, 18, 19, 20, 21, 160, 345, 161, 281, 4, 27, 347, 205, 30, 
31, 32, 33, 34, 35, 36, 37, 285, 233, 289, 41, 42, 43, 44, 45, 46, 336, 
365, 184, 309, -1, 368, -1, -1, -1, -1, 57, -1, -1, -1, -1, -1, 63, 3, 
4, 5, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, -1, 
-1, -1, -1, -1, 27, -1, -1, 30, 31, 32, 33, 34, 35, 36, 37, -1, -1, -1, 
41, 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, -1, 5, 6, 7, 8, 57, 10, 11, 
12, 13, 14, 15, -1, -1, 18, 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, 31, 32, 33, 34, 35, 36, 37, -1, -1, -1, 41, 42, 43, -1, 5, 6, 7, 8, 
-1, 10, 11, 12, 13, 14, 15, -1, 57, 18, 19, 20, 21, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1, 42, 43, -1, 
5, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, -1, 57, 18, 19, 20, 21, -1, -1, 
-1, -1, -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, 36, 37, -1, -1, -1, 41, 
42, 43, -1, 5, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, -1, 57, 18, 19, 20, 
21, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, 36, -1, -1, 
-1, -1, 41, 42, 43, -1, 5, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, -1, 57, 
18, 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, 
-1, -1, -1, -1, -1, -1, 42, 43, -1, -1, 46, -1, -1, -1, -1, -1, -1, 5, 
6, 7, 8, 57, 10, 11, 12, 13, 14, 15, -1, -1, 18, 19, 20, 21, -1, -1, -1, 
-1, -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, 36, 37, -1, -1, -1, 41, 42, 
43, -1, 5, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, -1, 57, 18, 19, 20, 21, 
-1, -1, -1, -1, -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, 36, -1, -1, -1, 
-1, 41, 42, 43, -1, 5, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, -1, 57, 18, 
19, 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, 32, 33, 34, 35, -1, 
-1, -1, -1, -1, -1, 42, 43, -1, 5, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, 
-1, 57, 18, 19, 20, 21, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, 32, 33, 
34, 35, 36, 37, -1, -1, -1, 41, 42, 43, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, 57]

YYLAST = 846
YYFINAL = 376
YYFLAG = -32768
YYNTBASE = 81

# Static definitions
YYEMPTY = -2
YYEOF = 0
YYINITDEPTH = 1000

LEXER_FUNCTIONS = 0

class Parser:
    def __init__(self, verbose=0):
        self.verbose = verbose
        
    def debug_mode(self, flag=None):
        if flag is None:
            return self.verbose

        if type(flag) != type(1):
            raise TypeError('an integer is required')
        self.verbose = flag
        return flag

    def parse(self, text):
        state_stack = [0]*YYINITDEPTH
        value_stack = [0]*YYINITDEPTH

        
        lexer_pos = 0
        lexer_end = len(text)
        lexer_state = INITIAL
        lexer_last = 0
        yylval = ''

        yyline = 1
        yycolumn = 1
        
        yystate = 0
        yychar = YYEMPTY        # cause a token to be read
        
        # Initialize stack pointers
        # Waste one element of value and location stack
        # so that they stay on the same level as the state stack.
        # The wasted elements are never initialized.
        state_ptr = -1
        value_ptr = 0
        
        while 1:
            # Push a new state, which is found in yystate.
            # In all cases, when you get here, the value and location stacks
            # have just been pushed.  So pushing a state here evens the stacks.
            state_ptr = state_ptr + 1
            state_stack[state_ptr] = yystate
        
            
            # Do appropriate processing given the current state.
            # Read a lookahead token if we need one and don't already have one.
        
            # First try to decide what to do without reference to lookahead token.
            yyn = action_idx[yystate]
            if yyn == YYFLAG:
                yyn = default_action[yystate]
                if yyn == 0:
                    self.report_error(yystate, yyline, yycolumn, yylval)
                    return 1
                # Do a reduction. yyn is the number of a rule to reduce with.
        
                state_ptr = state_ptr - rhs_size[yyn]
                value_ptr = value_ptr - rhs_size[yyn]
        
                if action_routines[yyn]:
                    yyval = action_routines[yyn](self, value_stack, value_ptr)
                    value_ptr = value_ptr + 1
                    value_stack[value_ptr] = yyval
                else:
                    value_ptr = value_ptr + 1

        
                # Now "shift" the result of the reduction.
                # Determine what state that goes to, based on the state
                # we popped back to and the rule number reduced by.
        
                yyn = derives[yyn] - YYNTBASE
                yystate = goto_idx[yyn] + state_stack[state_ptr]
                if 0 <= yystate <= YYLAST and yycheck[yystate] == state_stack[state_ptr]:
                    yystate = yytable[yystate]
                else:
                    yystate = default_goto[yyn]
                continue
            
            # Not known => get a lookahead token if don't already have one.
        
            # yychar is either YYEMPTY, YYEOF or a valid token in external form
            if yychar == YYEMPTY:
                # Setup line and column numbers
                for ch in yylval:
                    if ch == '\n':
                        yyline = yyline + 1
                        yycolumn = 1
                    else:
                        yycolumn = yycolumn + 1

                ### Lexical analysis ###
                while lexer_last < lexer_end:
                    lexer_pos = lexer_last
                    last_match = -1
                    for name, regex in patterns[lexer_state]:
                        match = regex.match(text, lexer_pos)
                        if match:
                            match_text = match.group()
                            match_size = len(match_text)
                            if match_size > last_match:
                                matched = (name, match_text)
                                last_match = match_size
                    if last_match == -1:
                        # comes here when match is none, it is an error anyway
                        self.error('No action found for "%s"' % text[lexer_pos:])

                    lexer_last = lexer_last + len(matched[1])
                    lexer_action = pattern_actions[matched[0]]
                    
                    if lexer_action:
                        lexer_state = lexer_action[0] or lexer_state
                        if len(lexer_action) > 1:
                            yylval = matched[1]
                            yychar = lexer_action[1] or ord(yylval)
                            break
                        else:
                            # Just a state change, reprocess the text
                            lexer_last = lexer_pos
                    else:
                        # throw away matched text and update position
                        for ch in matched[1]:
                            if ch == '\n':
                                yyline = yyline + 1
                                yycolumn = 1
                            else:
                                yycolumn = yycolumn + 1
                    continue
                else:
                    # Reached end of input
                    yychar = YYEOF
            # Convert token to internal form (in yychar1) for indexing tables with

            if yychar <= 0:
                # This means end-of-input.
                yychar1 = 0
            else:
                yychar1 = YYTRANSLATE(yychar)
                yyn = yyn + yychar1

            if yyn < 0 or yyn > YYLAST or  yycheck[yyn] != yychar1:
                # comes here after end of input
                yyn = default_action[yystate]
                if yyn == 0:
                    self.report_error(yystate, yyline, yycolumn, yylval)
                    return None
                # Do a reduction. yyn is the number of a rule to reduce with.
        
                state_ptr = state_ptr - rhs_size[yyn]
                value_ptr = value_ptr - rhs_size[yyn]
        
                if action_routines[yyn]:
                    yyval = action_routines[yyn](self, value_stack, value_ptr)
                    value_ptr = value_ptr + 1
                    value_stack[value_ptr] = yyval
                else:
                    value_ptr = value_ptr + 1

        
                # Now "shift" the result of the reduction.
                # Determine what state that goes to, based on the state
                # we popped back to and the rule number reduced by.
        
                yyn = derives[yyn] - YYNTBASE
                yystate = goto_idx[yyn] + state_stack[state_ptr]
                if 0 <= yystate <= YYLAST and yycheck[yystate] == state_stack[state_ptr]:
                    yystate = yytable[yystate]
                else:
                    yystate = default_goto[yyn]
                continue
            
            yyn = yytable[yyn]
        
            # yyn is what to do for this token type in this state.
            # Negative => reduce, -yyn is rule number.
            # Positive => shift, yyn is new state.
            #   New state is final state => don't bother to shift
            #   just return success.
            # 0, or max negative number => error.
        
            if YYFLAG < yyn < 0:
                yyn = -yyn
                # Do a reduction. yyn is the number of a rule to reduce with.
        
                state_ptr = state_ptr - rhs_size[yyn]
                value_ptr = value_ptr - rhs_size[yyn]
        
                if action_routines[yyn]:
                    yyval = action_routines[yyn](self, value_stack, value_ptr)
                    value_ptr = value_ptr + 1
                    value_stack[value_ptr] = yyval
                else:
                    value_ptr = value_ptr + 1

        
                # Now "shift" the result of the reduction.
                # Determine what state that goes to, based on the state
                # we popped back to and the rule number reduced by.
        
                yyn = derives[yyn] - YYNTBASE
                yystate = goto_idx[yyn] + state_stack[state_ptr]
                if 0 <= yystate <= YYLAST and yycheck[yystate] == state_stack[state_ptr]:
                    yystate = yytable[yystate]
                else:
                    yystate = default_goto[yyn]
                continue
            elif yyn == YYFINAL:
                return value_stack[value_ptr-1]
            elif yyn <= 0:
                # Now it is either 0 or YYFLAG
                self.report_error(yystate, yyline, yycolumn, yylval)
                return None
            
            # Shift the lookahead token.
        
 
            if yychar != YYEOF:
                yychar = YYEMPTY
            
            value_ptr = value_ptr + 1
            value_stack[value_ptr] = yylval
        
            yystate = yyn
            continue
        # should never get here
        return None
        
    def report_error(self, state, line, column, lval):
        ruleno = action_idx[state]
        msg = "parse error at line %d, column %d: matched '%s'" % (
            line, column, lval)
        if YYFLAG < ruleno < YYLAST:
            # Start X at -ruleno to avoid negative indexes in yycheck
            start = ruleno < 0 and -ruleno or 0
            first = 1
            for x in range(start, len(token_names)):
                if (x + ruleno) < len(yycheck) and yycheck[x + ruleno] == x:
                    if first:
                        msg = msg + ", expecting"
                        first = 0
                    else:
                        msg = msg + " or"
                    msg = msg + " '%s'" % token_names[x]
        self.error(msg)
        return
        
    def announce(self, format, *args):
        sys.stderr.write(format % args)
        return

    def error(self, format, *args):
        raise SyntaxError(format % args)

    def print_reduce(self, rule):
        sys.stderr.write("Reducing via rule %d (%s), " % (rule, rule_info[rule]))
        # print the symbols being reduced and their result.
        for token in rhs_tokens[rule]:
            sys.stderr.write("%s " % token_names[token])
        sys.stderr.write("-> %s\n" % token_names[derives[rule]])
        return

    def print_state_stack(self, stack, size):
        sys.stderr.write("state stack now")
        for i in range(size+1):
            sys.stderr.write(" %d" % stack[i])
        sys.stderr.write("\n")
        return

new = Parser

# the action code for each rule
def start1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 72
    start: specification
    """
    return {'TYPE' : 'START',
            0 : __stack[__ptr+1],
            }

def start2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 81
    start: '!' const_exp
    """
    return {'TYPE' : 'START',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def specification1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 96
    specification: definition
    """
    return {'TYPE' : 'SPECIFICATION',
            0 : __stack[__ptr+1],
            }

def specification2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 105
    specification: definition specification
    """
    return {'TYPE' : 'SPECIFICATION',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def definition1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 120
    definition: type_dcl ';'
    """
    return {'TYPE' : 'DEFINITION',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def definition2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 130
    definition: const_dcl ';'
    """
    return {'TYPE' : 'DEFINITION',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def definition3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 140
    definition: except_dcl ';'
    """
    return {'TYPE' : 'DEFINITION',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def definition4(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 150
    definition: interface ';'
    """
    return {'TYPE' : 'DEFINITION',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def definition5(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 160
    definition: module ';'
    """
    return {'TYPE' : 'DEFINITION',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def definition6(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 170
    definition: class ';'
    """
    return {'TYPE' : 'DEFINITION',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def class1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 185
    class: class_dcl
    """
    return {'TYPE' : 'CLASS',
            0 : __stack[__ptr+1],
            }

def class2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 194
    class: class_forward_dcl
    """
    return {'TYPE' : 'CLASS',
            0 : __stack[__ptr+1],
            }

def class_dcl1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 208
    class_dcl: class_header '{' interface_body '}'
    """
    return {'TYPE' : 'CLASS_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def class_forward_dcl1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 225
    class_forward_dcl: CLASS IDENT
    """
    return {'TYPE' : 'CLASS_FORWARD_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def class_header1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 240
    class_header: CLASS IDENT
    """
    return {'TYPE' : 'CLASS_HEADER',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def class_header2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 250
    class_header: CLASS IDENT EXTENDS scoped_name
    """
    return {'TYPE' : 'CLASS_HEADER',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def class_header3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 262
    class_header: CLASS IDENT EXTENDS scoped_name COLON inheritance_spec
    """
    return {'TYPE' : 'CLASS_HEADER',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            5 : __stack[__ptr+6],
            }

def class_header4(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 276
    class_header: CLASS IDENT EXTENDS scoped_name type_property_list
    """
    return {'TYPE' : 'CLASS_HEADER',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            }

def class_header5(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 289
    class_header: CLASS IDENT EXTENDS scoped_name COLON inheritance_spec type_property_list
    """
    return {'TYPE' : 'CLASS_HEADER',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            5 : __stack[__ptr+6],
            6 : __stack[__ptr+7],
            }

def class_header6(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 304
    class_header: CLASS IDENT COLON inheritance_spec
    """
    return {'TYPE' : 'CLASS_HEADER',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def class_header7(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 316
    class_header: CLASS IDENT COLON inheritance_spec type_property_list
    """
    return {'TYPE' : 'CLASS_HEADER',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            }

def class_header8(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 329
    class_header: CLASS IDENT type_property_list
    """
    return {'TYPE' : 'CLASS_HEADER',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def type_property_list1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 345
    type_property_list: '(' ')'
    """
    return {'TYPE' : 'TYPE_PROPERTY_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def type_property_list2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 355
    type_property_list: '(' extent_spec ')'
    """
    return {'TYPE' : 'TYPE_PROPERTY_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def type_property_list3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 366
    type_property_list: '(' key_spec ')'
    """
    return {'TYPE' : 'TYPE_PROPERTY_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def type_property_list4(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 377
    type_property_list: '(' extent_spec key_spec ')'
    """
    return {'TYPE' : 'TYPE_PROPERTY_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def extent_spec1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 394
    extent_spec: EXTENT IDENT
    """
    return {'TYPE' : 'EXTENT_SPEC',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def key_spec1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 409
    key_spec: KEY key_list
    """
    return {'TYPE' : 'KEY_SPEC',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def key_list1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 424
    key_list: key
    """
    return {'TYPE' : 'KEY_LIST',
            0 : __stack[__ptr+1],
            }

def key_list2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 433
    key_list: key ',' key_list
    """
    return {'TYPE' : 'KEY_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def key1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 449
    key: property_name
    """
    return {'TYPE' : 'KEY',
            0 : __stack[__ptr+1],
            }

def key2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 458
    key: '(' property_list ')'
    """
    return {'TYPE' : 'KEY',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def property_list1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 474
    property_list: property_name
    """
    return {'TYPE' : 'PROPERTY_LIST',
            0 : __stack[__ptr+1],
            }

def property_list2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 483
    property_list: property_name ',' property_list
    """
    return {'TYPE' : 'PROPERTY_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def property_name1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 499
    property_name: IDENT
    """
    return {'TYPE' : 'PROPERTY_NAME',
            0 : __stack[__ptr+1],
            }

def module1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 513
    module: MODULE IDENT '{' specification '}'
    """
    return {'TYPE' : 'MODULE',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            }

def interface1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 531
    interface: interface_dcl
    """
    return {'TYPE' : 'INTERFACE',
            0 : __stack[__ptr+1],
            }

def interface2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 540
    interface: interface_forward_dcl
    """
    return {'TYPE' : 'INTERFACE',
            0 : __stack[__ptr+1],
            }

def interface_dcl1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 554
    interface_dcl: interface_header '{' '}'
    """
    return {'TYPE' : 'INTERFACE_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def interface_dcl2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 565
    interface_dcl: interface_header '{' interface_body '}'
    """
    return {'TYPE' : 'INTERFACE_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def interface_forward_dcl1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 582
    interface_forward_dcl: INTERFACE IDENT
    """
    return {'TYPE' : 'INTERFACE_FORWARD_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def interface_header1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 597
    interface_header: INTERFACE IDENT
    """
    return {'TYPE' : 'INTERFACE_HEADER',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def interface_header2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 607
    interface_header: INTERFACE IDENT COLON inheritance_spec
    """
    return {'TYPE' : 'INTERFACE_HEADER',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def interface_body1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 624
    interface_body: export
    """
    return {'TYPE' : 'INTERFACE_BODY',
            0 : __stack[__ptr+1],
            }

def interface_body2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 633
    interface_body: export interface_body
    """
    return {'TYPE' : 'INTERFACE_BODY',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def export1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 648
    export: type_dcl ';'
    """
    return {'TYPE' : 'EXPORT',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def export2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 658
    export: const_dcl ';'
    """
    return {'TYPE' : 'EXPORT',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def export3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 668
    export: except_dcl ';'
    """
    return {'TYPE' : 'EXPORT',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def export4(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 678
    export: attr_dcl ';'
    """
    return {'TYPE' : 'EXPORT',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def export5(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 688
    export: rel_dcl ';'
    """
    return {'TYPE' : 'EXPORT',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def export6(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 698
    export: op_dcl ';'
    """
    return {'TYPE' : 'EXPORT',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def inheritance_spec1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 713
    inheritance_spec: scoped_name
    """
    return {'TYPE' : 'INHERITANCE_SPEC',
            0 : __stack[__ptr+1],
            }

def inheritance_spec2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 722
    inheritance_spec: scoped_name ',' inheritance_spec
    """
    return {'TYPE' : 'INHERITANCE_SPEC',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def scoped_name1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 738
    scoped_name: IDENT
    """
    return {'TYPE' : 'SCOPED_NAME',
            0 : __stack[__ptr+1],
            }

def scoped_name2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 747
    scoped_name: DOUBLE_COLON IDENT
    """
    return {'TYPE' : 'SCOPED_NAME',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def scoped_name3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 757
    scoped_name: scoped_name DOUBLE_COLON IDENT
    """
    return {'TYPE' : 'SCOPED_NAME',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def const_dcl1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 773
    const_dcl: CONST const_type IDENT '=' const_exp
    """
    return {'TYPE' : 'CONST_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            }

def const_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 791
    const_type: integer_type
    """
    return {'TYPE' : 'CONST_TYPE',
            0 : __stack[__ptr+1],
            }

def const_type2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 800
    const_type: char_type
    """
    return {'TYPE' : 'CONST_TYPE',
            0 : __stack[__ptr+1],
            }

def const_type3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 809
    const_type: boolean_type
    """
    return {'TYPE' : 'CONST_TYPE',
            0 : __stack[__ptr+1],
            }

def const_type4(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 818
    const_type: floating_pt_type
    """
    return {'TYPE' : 'CONST_TYPE',
            0 : __stack[__ptr+1],
            }

def const_type5(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 827
    const_type: string_type
    """
    return {'TYPE' : 'CONST_TYPE',
            0 : __stack[__ptr+1],
            }

def const_type6(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 836
    const_type: scoped_name
    """
    return {'TYPE' : 'CONST_TYPE',
            0 : __stack[__ptr+1],
            }

def const_exp1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 850
    const_exp: or_expr
    """
    return {'TYPE' : 'CONST_EXP',
            0 : __stack[__ptr+1],
            }

def or_expr1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 864
    or_expr: xor_expr
    """
    return {'TYPE' : 'OR_EXPR',
            0 : __stack[__ptr+1],
            }

def or_expr2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 873
    or_expr: or_expr '|' xor_expr
    """
    return {'TYPE' : 'OR_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def xor_expr1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 889
    xor_expr: and_expr
    """
    return {'TYPE' : 'XOR_EXPR',
            0 : __stack[__ptr+1],
            }

def xor_expr2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 898
    xor_expr: xor_expr '^' and_expr
    """
    return {'TYPE' : 'XOR_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def and_expr1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 914
    and_expr: shift_expr
    """
    return {'TYPE' : 'AND_EXPR',
            0 : __stack[__ptr+1],
            }

def and_expr2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 923
    and_expr: and_expr '&' shift_expr
    """
    return {'TYPE' : 'AND_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def shift_expr1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 939
    shift_expr: add_expr
    """
    return {'TYPE' : 'SHIFT_EXPR',
            0 : __stack[__ptr+1],
            }

def shift_expr2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 948
    shift_expr: shift_expr SHIFT_RIGHT add_expr
    """
    return {'TYPE' : 'SHIFT_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def shift_expr3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 959
    shift_expr: shift_expr SHIFT_LEFT add_expr
    """
    return {'TYPE' : 'SHIFT_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def add_expr1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 975
    add_expr: mult_expr
    """
    return {'TYPE' : 'ADD_EXPR',
            0 : __stack[__ptr+1],
            }

def add_expr2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 984
    add_expr: add_expr '+' mult_expr
    """
    return {'TYPE' : 'ADD_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def add_expr3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 995
    add_expr: add_expr '-' mult_expr
    """
    return {'TYPE' : 'ADD_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def mult_expr1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1011
    mult_expr: unary_expr
    """
    return {'TYPE' : 'MULT_EXPR',
            0 : __stack[__ptr+1],
            }

def mult_expr2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1020
    mult_expr: mult_expr '*' unary_expr
    """
    return {'TYPE' : 'MULT_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def mult_expr3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1031
    mult_expr: mult_expr '/' unary_expr
    """
    return {'TYPE' : 'MULT_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def mult_expr4(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1042
    mult_expr: mult_expr '%' unary_expr
    """
    return {'TYPE' : 'MULT_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def unary_expr1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1058
    unary_expr: unary_operator primary_expr
    """
    return {'TYPE' : 'UNARY_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def unary_expr2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1068
    unary_expr: primary_expr
    """
    return {'TYPE' : 'UNARY_EXPR',
            0 : __stack[__ptr+1],
            }

def unary_operator1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1082
    unary_operator: '+'
    """
    return {'TYPE' : 'UNARY_OPERATOR',
            0 : __stack[__ptr+1],
            }

def unary_operator2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1091
    unary_operator: '-'
    """
    return {'TYPE' : 'UNARY_OPERATOR',
            0 : __stack[__ptr+1],
            }

def unary_operator3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1100
    unary_operator: '~'
    """
    return {'TYPE' : 'UNARY_OPERATOR',
            0 : __stack[__ptr+1],
            }

def primary_expr1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1114
    primary_expr: scoped_name
    """
    return {'TYPE' : 'PRIMARY_EXPR',
            0 : __stack[__ptr+1],
            }

def primary_expr2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1123
    primary_expr: literal
    """
    return {'TYPE' : 'PRIMARY_EXPR',
            0 : __stack[__ptr+1],
            }

def primary_expr3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1132
    primary_expr: '(' const_exp ')'
    """
    return {'TYPE' : 'PRIMARY_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def literal1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1148
    literal: integer_literal
    """
    return {'TYPE' : 'LITERAL',
            0 : __stack[__ptr+1],
            }

def literal2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1157
    literal: string_literal
    """
    return {'TYPE' : 'LITERAL',
            0 : __stack[__ptr+1],
            }

def literal3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1166
    literal: character_literal
    """
    return {'TYPE' : 'LITERAL',
            0 : __stack[__ptr+1],
            }

def literal4(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1175
    literal: floating_pt_literal
    """
    return {'TYPE' : 'LITERAL',
            0 : __stack[__ptr+1],
            }

def literal5(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1184
    literal: boolean_literal
    """
    return {'TYPE' : 'LITERAL',
            0 : __stack[__ptr+1],
            }

def boolean_literal1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1198
    boolean_literal: TRUE
    """
    return {'TYPE' : 'BOOLEAN_LITERAL',
            0 : __stack[__ptr+1],
            }

def boolean_literal2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1207
    boolean_literal: FALSE
    """
    return {'TYPE' : 'BOOLEAN_LITERAL',
            0 : __stack[__ptr+1],
            }

def positive_int_const1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1221
    positive_int_const: const_exp
    """
    return {'TYPE' : 'POSITIVE_INT_CONST',
            0 : __stack[__ptr+1],
            }

def type_dcl1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1235
    type_dcl: TYPEDEF type_declarator
    """
    return {'TYPE' : 'TYPE_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def type_dcl2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1245
    type_dcl: struct_type
    """
    return {'TYPE' : 'TYPE_DCL',
            0 : __stack[__ptr+1],
            }

def type_dcl3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1254
    type_dcl: union_type
    """
    return {'TYPE' : 'TYPE_DCL',
            0 : __stack[__ptr+1],
            }

def type_dcl4(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1263
    type_dcl: enum_type
    """
    return {'TYPE' : 'TYPE_DCL',
            0 : __stack[__ptr+1],
            }

def type_declarator1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1277
    type_declarator: type_spec declarators
    """
    return {'TYPE' : 'TYPE_DECLARATOR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def type_spec1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1292
    type_spec: simple_type_spec
    """
    return {'TYPE' : 'TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def type_spec2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1301
    type_spec: constr_type_spec
    """
    return {'TYPE' : 'TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def simple_type_spec1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1315
    simple_type_spec: base_type_spec
    """
    return {'TYPE' : 'SIMPLE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def simple_type_spec2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1324
    simple_type_spec: template_type_spec
    """
    return {'TYPE' : 'SIMPLE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def simple_type_spec3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1333
    simple_type_spec: scoped_name
    """
    return {'TYPE' : 'SIMPLE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def base_type_spec1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1347
    base_type_spec: floating_pt_type
    """
    return {'TYPE' : 'BASE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def base_type_spec2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1356
    base_type_spec: integer_type
    """
    return {'TYPE' : 'BASE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def base_type_spec3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1365
    base_type_spec: char_type
    """
    return {'TYPE' : 'BASE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def base_type_spec4(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1374
    base_type_spec: boolean_type
    """
    return {'TYPE' : 'BASE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def base_type_spec5(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1383
    base_type_spec: octet_type
    """
    return {'TYPE' : 'BASE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def base_type_spec6(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1392
    base_type_spec: date_type
    """
    return {'TYPE' : 'BASE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def base_type_spec7(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1401
    base_type_spec: time_type
    """
    return {'TYPE' : 'BASE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def base_type_spec8(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1410
    base_type_spec: interval_type
    """
    return {'TYPE' : 'BASE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def base_type_spec9(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1419
    base_type_spec: timestamp_type
    """
    return {'TYPE' : 'BASE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def base_type_spec10(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1428
    base_type_spec: blob_type
    """
    return {'TYPE' : 'BASE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def date_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1442
    date_type: DATE
    """
    return {'TYPE' : 'DATE_TYPE',
            0 : __stack[__ptr+1],
            }

def time_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1455
    time_type: TIME
    """
    return {'TYPE' : 'TIME_TYPE',
            0 : __stack[__ptr+1],
            }

def blob_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1469
    blob_type: BLOB_TYPE
    """
    return {'TYPE' : 'BLOB_TYPE',
            0 : __stack[__ptr+1],
            }

def interval_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1483
    interval_type: INTERVAL
    """
    return {'TYPE' : 'INTERVAL_TYPE',
            0 : __stack[__ptr+1],
            }

def timestamp_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1497
    timestamp_type: TIMESTAMP
    """
    return {'TYPE' : 'TIMESTAMP_TYPE',
            0 : __stack[__ptr+1],
            }

def template_type_spec1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1511
    template_type_spec: array_type
    """
    return {'TYPE' : 'TEMPLATE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def template_type_spec2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1520
    template_type_spec: string_type
    """
    return {'TYPE' : 'TEMPLATE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def template_type_spec3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1529
    template_type_spec: coll_type
    """
    return {'TYPE' : 'TEMPLATE_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def coll_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1543
    coll_type: coll_spec '<' simple_type_spec '>'
    """
    return {'TYPE' : 'COLL_TYPE',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def coll_type2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1555
    coll_type: DICTIONARY '<' simple_type_spec ',' simple_type_spec '>'
    """
    return {'TYPE' : 'COLL_TYPE',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            5 : __stack[__ptr+6],
            }

def coll_spec1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1574
    coll_spec: SET
    """
    return {'TYPE' : 'COLL_SPEC',
            0 : __stack[__ptr+1],
            }

def coll_spec2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1583
    coll_spec: LIST
    """
    return {'TYPE' : 'COLL_SPEC',
            0 : __stack[__ptr+1],
            }

def coll_spec3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1592
    coll_spec: BAG
    """
    return {'TYPE' : 'COLL_SPEC',
            0 : __stack[__ptr+1],
            }

def constr_type_spec1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1606
    constr_type_spec: struct_type
    """
    return {'TYPE' : 'CONSTR_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def constr_type_spec2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1615
    constr_type_spec: union_type
    """
    return {'TYPE' : 'CONSTR_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def constr_type_spec3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1624
    constr_type_spec: enum_type
    """
    return {'TYPE' : 'CONSTR_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def declarators1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1638
    declarators: declarator
    """
    return {'TYPE' : 'DECLARATORS',
            0 : __stack[__ptr+1],
            }

def declarators2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1647
    declarators: declarator ',' declarators
    """
    return {'TYPE' : 'DECLARATORS',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def declarator1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1663
    declarator: simple_declarator
    """
    return {'TYPE' : 'DECLARATOR',
            0 : __stack[__ptr+1],
            }

def declarator2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1672
    declarator: complex_declarator
    """
    return {'TYPE' : 'DECLARATOR',
            0 : __stack[__ptr+1],
            }

def simple_declarator1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1686
    simple_declarator: IDENT
    """
    return {'TYPE' : 'SIMPLE_DECLARATOR',
            0 : __stack[__ptr+1],
            }

def complex_declarator1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1700
    complex_declarator: array_declarator
    """
    return {'TYPE' : 'COMPLEX_DECLARATOR',
            0 : __stack[__ptr+1],
            }

def floating_pt_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1714
    floating_pt_type: FLOAT
    """
    return {'TYPE' : 'FLOATING_PT_TYPE',
            0 : __stack[__ptr+1],
            }

def floating_pt_type2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1723
    floating_pt_type: DOUBLE
    """
    return {'TYPE' : 'FLOATING_PT_TYPE',
            0 : __stack[__ptr+1],
            }

def integer_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1737
    integer_type: signed_int
    """
    return {'TYPE' : 'INTEGER_TYPE',
            0 : __stack[__ptr+1],
            }

def integer_type2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1746
    integer_type: unsigned_int
    """
    return {'TYPE' : 'INTEGER_TYPE',
            0 : __stack[__ptr+1],
            }

def signed_int1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1760
    signed_int: signed_long_int
    """
    return {'TYPE' : 'SIGNED_INT',
            0 : __stack[__ptr+1],
            }

def signed_int2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1769
    signed_int: signed_long_long_int
    """
    return {'TYPE' : 'SIGNED_INT',
            0 : __stack[__ptr+1],
            }

def signed_int3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1778
    signed_int: signed_short_int
    """
    return {'TYPE' : 'SIGNED_INT',
            0 : __stack[__ptr+1],
            }

def signed_long_int1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1792
    signed_long_int: LONG
    """
    return {'TYPE' : 'SIGNED_LONG_INT',
            0 : __stack[__ptr+1],
            }

def signed_long_long_int1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1806
    signed_long_long_int: LONG LONG
    """
    return {'TYPE' : 'SIGNED_LONG_LONG_INT',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def signed_short_int1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1821
    signed_short_int: SHORT
    """
    return {'TYPE' : 'SIGNED_SHORT_INT',
            0 : __stack[__ptr+1],
            }

def unsigned_int1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1835
    unsigned_int: unsigned_long_int
    """
    return {'TYPE' : 'UNSIGNED_INT',
            0 : __stack[__ptr+1],
            }

def unsigned_int2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1844
    unsigned_int: unsigned_short_int
    """
    return {'TYPE' : 'UNSIGNED_INT',
            0 : __stack[__ptr+1],
            }

def unsigned_long_int1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1858
    unsigned_long_int: UNSIGNED LONG
    """
    return {'TYPE' : 'UNSIGNED_LONG_INT',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def unsigned_short_int1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1873
    unsigned_short_int: UNSIGNED SHORT
    """
    return {'TYPE' : 'UNSIGNED_SHORT_INT',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def char_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1888
    char_type: CHAR
    """
    return {'TYPE' : 'CHAR_TYPE',
            0 : __stack[__ptr+1],
            }

def boolean_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1902
    boolean_type: BOOLEAN
    """
    return {'TYPE' : 'BOOLEAN_TYPE',
            0 : __stack[__ptr+1],
            }

def octet_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1916
    octet_type: OCTET
    """
    return {'TYPE' : 'OCTET_TYPE',
            0 : __stack[__ptr+1],
            }

def struct_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1930
    struct_type: STRUCT IDENT '{' member_list '}'
    """
    return {'TYPE' : 'STRUCT_TYPE',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            }

def member_list1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1948
    member_list: member
    """
    return {'TYPE' : 'MEMBER_LIST',
            0 : __stack[__ptr+1],
            }

def member_list2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1957
    member_list: member member_list
    """
    return {'TYPE' : 'MEMBER_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def member1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1972
    member: type_spec declarators ';'
    """
    return {'TYPE' : 'MEMBER',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def union_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 1988
    union_type: UNION IDENT SWITCH '(' switch_type_spec ')' '{' switch_body '}'
    """
    return {'TYPE' : 'UNION_TYPE',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            5 : __stack[__ptr+6],
            6 : __stack[__ptr+7],
            7 : __stack[__ptr+8],
            8 : __stack[__ptr+9],
            }

def switch_type_spec1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2010
    switch_type_spec: integer_type
    """
    return {'TYPE' : 'SWITCH_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def switch_type_spec2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2019
    switch_type_spec: char_type
    """
    return {'TYPE' : 'SWITCH_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def switch_type_spec3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2028
    switch_type_spec: boolean_type
    """
    return {'TYPE' : 'SWITCH_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def switch_type_spec4(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2037
    switch_type_spec: enum_type
    """
    return {'TYPE' : 'SWITCH_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def switch_type_spec5(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2046
    switch_type_spec: scoped_name
    """
    return {'TYPE' : 'SWITCH_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def switch_body1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2060
    switch_body: case
    """
    return {'TYPE' : 'SWITCH_BODY',
            0 : __stack[__ptr+1],
            }

def switch_body2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2069
    switch_body: case switch_body
    """
    return {'TYPE' : 'SWITCH_BODY',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def case1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2084
    case: case_label_list element_spec ';'
    """
    return {'TYPE' : 'CASE',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def case_label_list1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2100
    case_label_list: case_label
    """
    return {'TYPE' : 'CASE_LABEL_LIST',
            0 : __stack[__ptr+1],
            }

def case_label_list2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2109
    case_label_list: case_label case_label_list
    """
    return {'TYPE' : 'CASE_LABEL_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def case_label1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2124
    case_label: CASE const_exp COLON
    """
    return {'TYPE' : 'CASE_LABEL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def case_label2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2135
    case_label: DEFAULT COLON
    """
    return {'TYPE' : 'CASE_LABEL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def element_spec1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2150
    element_spec: type_spec declarator
    """
    return {'TYPE' : 'ELEMENT_SPEC',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def enum_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2165
    enum_type: ENUM IDENT '{' enumerator_list '}'
    """
    return {'TYPE' : 'ENUM_TYPE',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            }

def enumerator_list1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2183
    enumerator_list: enumerator
    """
    return {'TYPE' : 'ENUMERATOR_LIST',
            0 : __stack[__ptr+1],
            }

def enumerator_list2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2192
    enumerator_list: enumerator ',' enumerator_list
    """
    return {'TYPE' : 'ENUMERATOR_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def enumerator1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2208
    enumerator: IDENT
    """
    return {'TYPE' : 'ENUMERATOR',
            0 : __stack[__ptr+1],
            }

def array_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2222
    array_type: array_spec '<' simple_type_spec ',' positive_int_const '>'
    """
    return {'TYPE' : 'ARRAY_TYPE',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            5 : __stack[__ptr+6],
            }

def array_type2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2236
    array_type: array_spec '<' simple_type_spec '>'
    """
    return {'TYPE' : 'ARRAY_TYPE',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def array_spec1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2253
    array_spec: ARRAY
    """
    return {'TYPE' : 'ARRAY_SPEC',
            0 : __stack[__ptr+1],
            }

def array_spec2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2262
    array_spec: SEQUENCE
    """
    return {'TYPE' : 'ARRAY_SPEC',
            0 : __stack[__ptr+1],
            }

def string_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2276
    string_type: STRING '<' positive_int_const '>'
    """
    return {'TYPE' : 'STRING_TYPE',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def string_type2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2288
    string_type: STRING
    """
    return {'TYPE' : 'STRING_TYPE',
            0 : __stack[__ptr+1],
            }

def array_declarator1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2302
    array_declarator: IDENT array_size_list
    """
    return {'TYPE' : 'ARRAY_DECLARATOR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def array_size_list1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2317
    array_size_list: fixed_array_size
    """
    return {'TYPE' : 'ARRAY_SIZE_LIST',
            0 : __stack[__ptr+1],
            }

def array_size_list2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2326
    array_size_list: fixed_array_size array_size_list
    """
    return {'TYPE' : 'ARRAY_SIZE_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def fixed_array_size1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2341
    fixed_array_size: '[' positive_int_const ']'
    """
    return {'TYPE' : 'FIXED_ARRAY_SIZE',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def attr_dcl1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2357
    attr_dcl: ATTRIBUTE domain_type attr_list
    """
    return {'TYPE' : 'ATTR_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def attr_dcl2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2368
    attr_dcl: READONLY ATTRIBUTE domain_type attr_list
    """
    return {'TYPE' : 'ATTR_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def attr_list1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2385
    attr_list: attribute_name
    """
    return {'TYPE' : 'ATTR_LIST',
            0 : __stack[__ptr+1],
            }

def attr_list2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2394
    attr_list: attribute_name fixed_array_size
    """
    return {'TYPE' : 'ATTR_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def attr_list3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2404
    attr_list: attribute_name ',' attr_list
    """
    return {'TYPE' : 'ATTR_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def attr_list4(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2415
    attr_list: attribute_name fixed_array_size ',' attr_list
    """
    return {'TYPE' : 'ATTR_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def attribute_name1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2432
    attribute_name: IDENT
    """
    return {'TYPE' : 'ATTRIBUTE_NAME',
            0 : __stack[__ptr+1],
            }

def domain_type1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2446
    domain_type: simple_type_spec
    """
    return {'TYPE' : 'DOMAIN_TYPE',
            0 : __stack[__ptr+1],
            }

def domain_type2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2455
    domain_type: struct_type
    """
    return {'TYPE' : 'DOMAIN_TYPE',
            0 : __stack[__ptr+1],
            }

def domain_type3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2464
    domain_type: enum_type
    """
    return {'TYPE' : 'DOMAIN_TYPE',
            0 : __stack[__ptr+1],
            }

def rel_dcl1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2478
    rel_dcl: RELATIONSHIP target_of_path IDENT INVERSE inverse_traversal_path
    """
    return {'TYPE' : 'REL_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            }

def target_of_path1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2496
    target_of_path: scoped_name
    """
    return {'TYPE' : 'TARGET_OF_PATH',
            0 : __stack[__ptr+1],
            }

def target_of_path2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2505
    target_of_path: coll_spec '<' scoped_name '>'
    """
    return {'TYPE' : 'TARGET_OF_PATH',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def inverse_traversal_path1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2522
    inverse_traversal_path: scoped_name DOUBLE_COLON IDENT
    """
    return {'TYPE' : 'INVERSE_TRAVERSAL_PATH',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def except_dcl1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2538
    except_dcl: EXCEPTION IDENT '{' '}'
    """
    return {'TYPE' : 'EXCEPT_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def except_dcl2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2550
    except_dcl: EXCEPTION IDENT '{' member_list '}'
    """
    return {'TYPE' : 'EXCEPT_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            }

def op_dcl1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2568
    op_dcl: op_type_spec IDENT parameter_dcls
    """
    return {'TYPE' : 'OP_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def op_dcl2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2579
    op_dcl: op_attribute op_type_spec IDENT parameter_dcls
    """
    return {'TYPE' : 'OP_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def op_dcl3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2591
    op_dcl: op_type_spec IDENT parameter_dcls raises_expr
    """
    return {'TYPE' : 'OP_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def op_dcl4(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2603
    op_dcl: op_attribute op_type_spec IDENT parameter_dcls raises_expr
    """
    return {'TYPE' : 'OP_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            }

def op_dcl5(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2616
    op_dcl: op_type_spec IDENT parameter_dcls context_expr
    """
    return {'TYPE' : 'OP_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def op_dcl6(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2628
    op_dcl: op_attribute op_type_spec IDENT parameter_dcls context_expr
    """
    return {'TYPE' : 'OP_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            }

def op_dcl7(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2641
    op_dcl: op_type_spec IDENT parameter_dcls raises_expr context_expr
    """
    return {'TYPE' : 'OP_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            }

def op_dcl8(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2654
    op_dcl: op_attribute op_type_spec IDENT parameter_dcls raises_expr context_expr
    """
    return {'TYPE' : 'OP_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            4 : __stack[__ptr+5],
            5 : __stack[__ptr+6],
            }

def op_attribute1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2673
    op_attribute: ONEWAY
    """
    return {'TYPE' : 'OP_ATTRIBUTE',
            0 : __stack[__ptr+1],
            }

def op_type_spec1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2687
    op_type_spec: simple_type_spec
    """
    return {'TYPE' : 'OP_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def op_type_spec2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2696
    op_type_spec: VOID
    """
    return {'TYPE' : 'OP_TYPE_SPEC',
            0 : __stack[__ptr+1],
            }

def parameter_dcls1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2710
    parameter_dcls: '(' ')'
    """
    return {'TYPE' : 'PARAMETER_DCLS',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            }

def parameter_dcls2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2720
    parameter_dcls: '(' param_dcl_list ')'
    """
    return {'TYPE' : 'PARAMETER_DCLS',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def param_dcl_list1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2736
    param_dcl_list: param_dcl
    """
    return {'TYPE' : 'PARAM_DCL_LIST',
            0 : __stack[__ptr+1],
            }

def param_dcl_list2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2745
    param_dcl_list: param_dcl ',' param_dcl_list
    """
    return {'TYPE' : 'PARAM_DCL_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def param_dcl1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2761
    param_dcl: param_attribute simple_type_spec declarator
    """
    return {'TYPE' : 'PARAM_DCL',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def param_attribute1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2777
    param_attribute: IN
    """
    return {'TYPE' : 'PARAM_ATTRIBUTE',
            0 : __stack[__ptr+1],
            }

def param_attribute2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2786
    param_attribute: OUT
    """
    return {'TYPE' : 'PARAM_ATTRIBUTE',
            0 : __stack[__ptr+1],
            }

def param_attribute3(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2795
    param_attribute: INOUT
    """
    return {'TYPE' : 'PARAM_ATTRIBUTE',
            0 : __stack[__ptr+1],
            }

def raises_expr1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2809
    raises_expr: RAISES '(' scoped_name_list ')'
    """
    return {'TYPE' : 'RAISES_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def scoped_name_list1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2826
    scoped_name_list: scoped_name
    """
    return {'TYPE' : 'SCOPED_NAME_LIST',
            0 : __stack[__ptr+1],
            }

def scoped_name_list2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2835
    scoped_name_list: scoped_name ',' scoped_name_list
    """
    return {'TYPE' : 'SCOPED_NAME_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def context_expr1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2851
    context_expr: CONTEXT '(' string_literal_list ')'
    """
    return {'TYPE' : 'CONTEXT_EXPR',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            3 : __stack[__ptr+4],
            }

def string_literal_list1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2868
    string_literal_list: string_literal
    """
    return {'TYPE' : 'STRING_LITERAL_LIST',
            0 : __stack[__ptr+1],
            }

def string_literal_list2(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2877
    string_literal_list: string_literal ',' string_literal_list
    """
    return {'TYPE' : 'STRING_LITERAL_LIST',
            0 : __stack[__ptr+1],
            1 : __stack[__ptr+2],
            2 : __stack[__ptr+3],
            }

def string_literal1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2893
    string_literal: STRING_LITERAL
    """
    return {'TYPE' : 'STRING_LITERAL',
            0 : __stack[__ptr+1],
            }

def integer_literal1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2907
    integer_literal: INTEGER_LITERAL
    """
    return {'TYPE' : 'INTEGER_LITERAL',
            0 : __stack[__ptr+1],
            }

def floating_pt_literal1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2921
    floating_pt_literal: FLOAT_LITERAL
    """
    return {'TYPE' : 'FLOATING_PT_LITERAL',
            0 : __stack[__ptr+1],
            }

def character_literal1(self, __stack, __ptr):
    """
    from Ods/Parsers/Odl/Odl.bgen, line 2935
    character_literal: CHAR_LITERAL
    """
    return {'TYPE' : 'CHARACTER_LITERAL',
            0 : __stack[__ptr+1],
            }

action_routines = [None,
                   start1,
                   start2,
                   specification1,
                   specification2,
                   definition1,
                   definition2,
                   definition3,
                   definition4,
                   definition5,
                   definition6,
                   class1,
                   class2,
                   class_dcl1,
                   class_forward_dcl1,
                   class_header1,
                   class_header2,
                   class_header3,
                   class_header4,
                   class_header5,
                   class_header6,
                   class_header7,
                   class_header8,
                   type_property_list1,
                   type_property_list2,
                   type_property_list3,
                   type_property_list4,
                   extent_spec1,
                   key_spec1,
                   key_list1,
                   key_list2,
                   key1,
                   key2,
                   property_list1,
                   property_list2,
                   property_name1,
                   module1,
                   interface1,
                   interface2,
                   interface_dcl1,
                   interface_dcl2,
                   interface_forward_dcl1,
                   interface_header1,
                   interface_header2,
                   interface_body1,
                   interface_body2,
                   export1,
                   export2,
                   export3,
                   export4,
                   export5,
                   export6,
                   inheritance_spec1,
                   inheritance_spec2,
                   scoped_name1,
                   scoped_name2,
                   scoped_name3,
                   const_dcl1,
                   const_type1,
                   const_type2,
                   const_type3,
                   const_type4,
                   const_type5,
                   const_type6,
                   const_exp1,
                   or_expr1,
                   or_expr2,
                   xor_expr1,
                   xor_expr2,
                   and_expr1,
                   and_expr2,
                   shift_expr1,
                   shift_expr2,
                   shift_expr3,
                   add_expr1,
                   add_expr2,
                   add_expr3,
                   mult_expr1,
                   mult_expr2,
                   mult_expr3,
                   mult_expr4,
                   unary_expr1,
                   unary_expr2,
                   unary_operator1,
                   unary_operator2,
                   unary_operator3,
                   primary_expr1,
                   primary_expr2,
                   primary_expr3,
                   literal1,
                   literal2,
                   literal3,
                   literal4,
                   literal5,
                   boolean_literal1,
                   boolean_literal2,
                   positive_int_const1,
                   type_dcl1,
                   type_dcl2,
                   type_dcl3,
                   type_dcl4,
                   type_declarator1,
                   type_spec1,
                   type_spec2,
                   simple_type_spec1,
                   simple_type_spec2,
                   simple_type_spec3,
                   base_type_spec1,
                   base_type_spec2,
                   base_type_spec3,
                   base_type_spec4,
                   base_type_spec5,
                   base_type_spec6,
                   base_type_spec7,
                   base_type_spec8,
                   base_type_spec9,
                   base_type_spec10,
                   date_type1,
                   time_type1,
                   blob_type1,
                   interval_type1,
                   timestamp_type1,
                   template_type_spec1,
                   template_type_spec2,
                   template_type_spec3,
                   coll_type1,
                   coll_type2,
                   coll_spec1,
                   coll_spec2,
                   coll_spec3,
                   constr_type_spec1,
                   constr_type_spec2,
                   constr_type_spec3,
                   declarators1,
                   declarators2,
                   declarator1,
                   declarator2,
                   simple_declarator1,
                   complex_declarator1,
                   floating_pt_type1,
                   floating_pt_type2,
                   integer_type1,
                   integer_type2,
                   signed_int1,
                   signed_int2,
                   signed_int3,
                   signed_long_int1,
                   signed_long_long_int1,
                   signed_short_int1,
                   unsigned_int1,
                   unsigned_int2,
                   unsigned_long_int1,
                   unsigned_short_int1,
                   char_type1,
                   boolean_type1,
                   octet_type1,
                   struct_type1,
                   member_list1,
                   member_list2,
                   member1,
                   union_type1,
                   switch_type_spec1,
                   switch_type_spec2,
                   switch_type_spec3,
                   switch_type_spec4,
                   switch_type_spec5,
                   switch_body1,
                   switch_body2,
                   case1,
                   case_label_list1,
                   case_label_list2,
                   case_label1,
                   case_label2,
                   element_spec1,
                   enum_type1,
                   enumerator_list1,
                   enumerator_list2,
                   enumerator1,
                   array_type1,
                   array_type2,
                   array_spec1,
                   array_spec2,
                   string_type1,
                   string_type2,
                   array_declarator1,
                   array_size_list1,
                   array_size_list2,
                   fixed_array_size1,
                   attr_dcl1,
                   attr_dcl2,
                   attr_list1,
                   attr_list2,
                   attr_list3,
                   attr_list4,
                   attribute_name1,
                   domain_type1,
                   domain_type2,
                   domain_type3,
                   rel_dcl1,
                   target_of_path1,
                   target_of_path2,
                   inverse_traversal_path1,
                   except_dcl1,
                   except_dcl2,
                   op_dcl1,
                   op_dcl2,
                   op_dcl3,
                   op_dcl4,
                   op_dcl5,
                   op_dcl6,
                   op_dcl7,
                   op_dcl8,
                   op_attribute1,
                   op_type_spec1,
                   op_type_spec2,
                   parameter_dcls1,
                   parameter_dcls2,
                   param_dcl_list1,
                   param_dcl_list2,
                   param_dcl1,
                   param_attribute1,
                   param_attribute2,
                   param_attribute3,
                   raises_expr1,
                   scoped_name_list1,
                   scoped_name_list2,
                   context_expr1,
                   string_literal_list1,
                   string_literal_list2,
                   string_literal1,
                   integer_literal1,
                   floating_pt_literal1,
                   character_literal1,
                   ]

# start condition definitions for the lexer
INITIAL = 1

# the expressions and information for each rule
import re
patterns = {
    INITIAL : [('p00', re.compile('attribute', re.M)),
               ('p01', re.compile('readonly', re.M)),
               ('p02', re.compile('long', re.M)),
               ('p03', re.compile('short', re.M)),
               ('p04', re.compile('unsigned', re.M)),
               ('p05', re.compile('class', re.M)),
               ('p06', re.compile('char', re.M)),
               ('p07', re.compile('boolean', re.M)),
               ('p08', re.compile('octet', re.M)),
               ('p09', re.compile('float', re.M)),
               ('p10', re.compile('double', re.M)),
               ('p11', re.compile('string', re.M)),
               ('p12', re.compile('relationship', re.M)),
               ('p13', re.compile('inverse', re.M)),
               ('p14', re.compile('set', re.M)),
               ('p15', re.compile('list', re.M)),
               ('p16', re.compile('bag', re.M)),
               ('p17', re.compile('extends', re.M)),
               ('p18', re.compile('extent', re.M)),
               ('p19', re.compile('key(s)?', re.M)),
               ('p20', re.compile('module', re.M)),
               ('p21', re.compile('interface', re.M)),
               ('p22', re.compile('const', re.M)),
               ('p23', re.compile('true', re.M)),
               ('p24', re.compile('false', re.M)),
               ('p25', re.compile('typedef', re.M)),
               ('p26', re.compile('date', re.M)),
               ('p27', re.compile('time', re.M)),
               ('p28', re.compile('interval', re.M)),
               ('p29', re.compile('timestamp', re.M)),
               ('p30', re.compile('dictionary', re.M)),
               ('p31', re.compile('struct', re.M)),
               ('p32', re.compile('union', re.M)),
               ('p33', re.compile('switch', re.M)),
               ('p34', re.compile('case', re.M)),
               ('p35', re.compile('default', re.M)),
               ('p36', re.compile('enum', re.M)),
               ('p37', re.compile('array', re.M)),
               ('p38', re.compile('sequence', re.M)),
               ('p39', re.compile('exception', re.M)),
               ('p40', re.compile('oneway', re.M)),
               ('p41', re.compile('void', re.M)),
               ('p42', re.compile('in', re.M)),
               ('p43', re.compile('out', re.M)),
               ('p44', re.compile('inout', re.M)),
               ('p45', re.compile('raises', re.M)),
               ('p46', re.compile('context', re.M)),
               ('p47', re.compile('blob', re.M)),
               ('p48', re.compile('::', re.M)),
               ('p49', re.compile('>>', re.M)),
               ('p50', re.compile('<<', re.M)),
               ('p51', re.compile(':', re.M)),
               ('p52', re.compile('\'((\\\\[0-7][0-7][0-7])|(\\\\x[0-9a-fA-F][0-9a-fA-F])|(\\\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])|(\\\\[ntvbrfa\\\\?\'"])|[^\'])\'', re.M)),
               ('p53', re.compile('"((\\\\[0-7][0-7][0-7])|(\\\\x[0-9a-fA-F][0-9a-fA-F])|(\\\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])|(\\\\[ntvbrfa\\\\?\'"])|[^"])*"', re.M)),
               ('p54', re.compile('[a-zA-Z]([a-zA-Z]|[0-9]|_)*', re.M)),
               ('p55', re.compile('_[a-zA-Z]([a-zA-Z]|[0-9]|_)*', re.M)),
               ('p56', re.compile('[0-9]+', re.M)),
               ('p57', re.compile('[0-9]+\\.[0-9]+([Ee][-+]?[0-9]+)?', re.M)),
               ('p58', re.compile('//.*$', re.M)),
               ('p59', re.compile('/\\*(.|\\n)*?\\*/', re.M)),
               ('p60', re.compile('\\s+', re.M)),
               ('p61', re.compile('.', re.M)),
               ],
}
pattern_actions = {
    'p00' : (None, ATTRIBUTE),
    'p01' : (None, READONLY),
    'p02' : (None, LONG),
    'p03' : (None, SHORT),
    'p04' : (None, UNSIGNED),
    'p05' : (None, CLASS),
    'p06' : (None, CHAR),
    'p07' : (None, BOOLEAN),
    'p08' : (None, OCTET),
    'p09' : (None, FLOAT),
    'p10' : (None, DOUBLE),
    'p11' : (None, STRING),
    'p12' : (None, RELATIONSHIP),
    'p13' : (None, INVERSE),
    'p14' : (None, SET),
    'p15' : (None, LIST),
    'p16' : (None, BAG),
    'p17' : (None, EXTENDS),
    'p18' : (None, EXTENT),
    'p19' : (None, KEY),
    'p20' : (None, MODULE),
    'p21' : (None, INTERFACE),
    'p22' : (None, CONST),
    'p23' : (None, TRUE),
    'p24' : (None, FALSE),
    'p25' : (None, TYPEDEF),
    'p26' : (None, DATE),
    'p27' : (None, TIME),
    'p28' : (None, INTERVAL),
    'p29' : (None, TIMESTAMP),
    'p30' : (None, DICTIONARY),
    'p31' : (None, STRUCT),
    'p32' : (None, UNION),
    'p33' : (None, SWITCH),
    'p34' : (None, CASE),
    'p35' : (None, DEFAULT),
    'p36' : (None, ENUM),
    'p37' : (None, ARRAY),
    'p38' : (None, SEQUENCE),
    'p39' : (None, EXCEPTION),
    'p40' : (None, ONEWAY),
    'p41' : (None, VOID),
    'p42' : (None, IN),
    'p43' : (None, OUT),
    'p44' : (None, INOUT),
    'p45' : (None, RAISES),
    'p46' : (None, CONTEXT),
    'p47' : (None, BLOB_TYPE),
    'p48' : (None, DOUBLE_COLON),
    'p49' : (None, SHIFT_RIGHT),
    'p50' : (None, SHIFT_LEFT),
    'p51' : (None, COLON),
    'p52' : (None, CHAR_LITERAL),
    'p53' : (None, STRING_LITERAL),
    'p54' : (None, IDENT),
    'p55' : (None, IDENT),
    'p56' : (None, INTEGER_LITERAL),
    'p57' : (None, FLOAT_LITERAL),
    'p58' : None,
    'p59' : None,
    'p60' : None,
    'p61' : (None, None),
}
if __name__ == '__main__':
    import sys
    try: import readline
    except: pass

    try:
        import OdlParserc
        parser = OdlParserc.new(1)
        print 'Using C parser'
    except:
        import OdlParser
        parser = OdlParser.new(1)
        print 'Using Python parser'

    if len(sys.argv) > 1:
        result = parser.parse(sys.argv[1])
        result.pprint()
        raise SystemExit()
    print 'Use <Ctrl>-C to exit.'
    try:
        while 1:
            expr = raw_input('>>>')
            result = parser.parse(expr)
            result.pprint()
    except KeyboardInterrupt:
        raise SystemExit
