#define MAX_GRAMMAR 2235 #define PHRASE_BASE 514 int gram[MAX_GRAMMAR] = { 2, 1, 515, 1, 539, 1, 2, 517, 516, 2, 2, 517, 516, 0, 1, 3, 256, 518, 519, 2, 2, 257, 258, 0, 2, 1, 520, 1, 523, 1, 8, 259, 527, 521, 529, 522, 260, 526, 812, 2, 1, 261, 1, 262, 2, 2, 529, 522, 0, 1, 11, 259, 525, 527, 521, 539, 524, 263, 605, 260, 526, 812, 2, 2, 539, 524, 0, 2, 1, 264, 0, 2, 1, 527, 0, 1, 2, 528, 808, 2, 2, 710, 823, 0, 9, 1, 530, 1, 535, 1, 536, 1, 578, 1, 583, 1, 589, 1, 594, 1, 579, 1, 582, 1, 6, 628, 531, 572, 532, 534, 812, 2, 1, 265, 0, 2, 2, 266, 267, 0, 2, 1, 826, 1, 268, 2, 2, 533, 658, 0, 1, 5, 269, 573, 261, 572, 812, 1, 6, 270, 654, 537, 261, 688, 812, 2, 4, 816, 575, 538, 817, 0, 2, 3, 813, 575, 538, 0, 8, 1, 530, 1, 535, 1, 536, 1, 583, 1, 589, 1, 594, 1, 601, 1, 611, 1, 3, 542, 812, 541, 2, 3, 542, 812, 541, 0, 11, 1, 554, 1, 565, 1, 563, 1, 680, 1, 634, 1, 629, 1, 630, 1, 632, 1, 683, 1, 607, 1, 626, 1, 6, 552, 544, 263, 540, 550, 548, 2, 2, 545, 546, 0, 2, 1, 271, 0, 1, 2, 553, 547, 2, 2, 553, 547, 0, 1, 3, 260, 549, 812, 2, 1, 564, 0, 2, 3, 272, 608, 551, 0, 2, 2, 608, 551, 0, 2, 3, 824, 564, 825, 0, 9, 1, 530, 1, 535, 1, 536, 1, 583, 1, 587, 1, 589, 1, 594, 1, 600, 1, 625, 2, 3, 556, 826, 555, 1, 626, 2, 1, 626, 1, 658, 4, 4, 558, 823, 557, 560, 1, 559, 1, 628, 2, 827, 562, 2, 3, 558, 823, 557, 0, 2, 1, 657, 1, 559, 1, 4, 599, 816, 561, 817, 1, 1, 808, 1, 1, 658, 1, 1, 808, 1, 2, 273, 564, 1, 1, 808, 1, 3, 274, 549, 566, 2, 2, 275, 637, 0, 22, 1, 276, 1, 277, 1, 278, 2, 279, 570, 2, 280, 569, 2, 281, 568, 1, 282, 1, 283, 1, 284, 1, 285, 1, 286, 1, 287, 1, 288, 1, 289, 1, 290, 2, 291, 292, 1, 293, 1, 294, 2, 295, 569, 2, 296, 569, 2, 297, 569, 1, 298, 2, 1, 282, 0, 2, 3, 816, 835, 817, 0, 2, 4, 816, 835, 571, 817, 0, 2, 3, 813, 835, 571, 0, 5, 1, 567, 3, 628, 821, 299, 5, 711, 823, 735, 821, 299, 3, 711, 821, 300, 1, 573, 1, 2, 808, 574, 2, 3, 823, 808, 574, 0, 1, 2, 577, 576, 2, 1, 572, 0, 1, 1, 808, 1, 6, 270, 654, 537, 301, 624, 812, 1, 4, 302, 615, 580, 812, 2, 4, 816, 616, 581, 817, 0, 2, 3, 813, 616, 581, 0, 1, 9, 303, 613, 816, 616, 581, 817, 301, 624, 812, 1, 3, 584, 272, 812, 1, 2, 585, 808, 2, 2, 586, 823, 0, 1, 1, 808, 1, 8, 304, 305, 816, 584, 813, 588, 817, 812, 1, 1, 835, 2, 1, 590, 1, 592, 1, 9, 299, 573, 261, 306, 816, 593, 591, 817, 812, 2, 3, 813, 593, 591, 0, 1, 5, 657, 573, 821, 300, 812, 1, 1, 731, 2, 1, 595, 1, 598, 1, 9, 299, 573, 261, 307, 308, 597, 596, 567, 812, 2, 2, 309, 310, 2, 311, 310, 2, 1, 593, 1, 567, 1, 3, 599, 573, 812, 1, 1, 808, 1, 1, 601, 1, 13, 604, 302, 615, 580, 603, 521, 544, 263, 605, 606, 260, 602, 812, 2, 1, 615, 0, 2, 2, 301, 624, 0, 2, 1, 610, 0, 2, 1, 540, 0, 2, 2, 272, 551, 0, 1, 4, 263, 605, 606, 260, 1, 5, 275, 584, 609, 312, 540, 2, 3, 257, 584, 609, 0, 1, 2, 256, 518, 1, 14, 604, 303, 613, 580, 301, 624, 521, 544, 263, 605, 606, 260, 614, 812, 2, 2, 271, 547, 0, 1, 2, 528, 808, 2, 1, 613, 0, 1, 2, 528, 808, 1, 5, 620, 619, 619, 618, 617, 2, 2, 533, 622, 0, 2, 1, 621, 0, 5, 1, 313, 2, 314, 315, 1, 314, 1, 315, 0, 1, 1, 808, 1, 1, 572, 3, 2, 623, 835, 1, 809, 1, 267, 3, 1, 818, 1, 819, 0, 1, 1, 572, 1, 1, 611, 1, 5, 733, 816, 713, 627, 817, 2, 3, 813, 713, 627, 0, 1, 1, 808, 1, 1, 267, 1, 2, 316, 631, 2, 1, 584, 0, 1, 2, 301, 633, 2, 1, 658, 0, 1, 7, 549, 635, 317, 540, 260, 317, 549, 3, 2, 318, 637, 2, 319, 636, 0, 2, 1, 655, 1, 650, 1, 1, 638, 1, 3, 639, 641, 640, 2, 1, 266, 0, 2, 3, 257, 641, 640, 0, 1, 2, 643, 642, 2, 3, 320, 643, 642, 0, 6, 6, 556, 823, 321, 816, 658, 817, 2, 658, 646, 2, 736, 644, 1, 649, 1, 628, 3, 816, 638, 817, 2, 3, 816, 671, 817, 0, 4, 2, 821, 322, 2, 821, 323, 2, 821, 324, 0, 6, 2, 760, 658, 3, 261, 639, 267, 3, 639, 325, 810, 5, 639, 326, 658, 320, 658, 5, 639, 314, 816, 671, 817, 2, 647, 648, 2, 1, 654, 1, 762, 3, 2, 821, 322, 2, 821, 323, 2, 821, 324, 3, 1, 327, 1, 328, 1, 267, 1, 6, 652, 314, 651, 653, 822, 653, 2, 1, 329, 0, 1, 1, 808, 2, 1, 659, 1, 572, 1, 1, 808, 1, 3, 657, 314, 656, 2, 2, 654, 644, 3, 816, 690, 817, 1, 1, 808, 5, 0, 1, 670, 1, 659, 1, 673, 1, 677, 1, 3, 623, 662, 661, 2, 1, 818, 1, 819, 2, 3, 660, 662, 661, 0, 1, 2, 665, 664, 2, 1, 814, 1, 820, 2, 3, 663, 665, 664, 0, 1, 2, 666, 668, 8, 1, 669, 1, 628, 1, 562, 2, 736, 644, 3, 736, 644, 667, 3, 816, 659, 817, 1, 267, 3, 647, 821, 330, 2, 2, 644, 667, 0, 2, 3, 42, 42, 653, 0, 1, 1, 835, 3, 1, 808, 1, 731, 1, 649, 1, 2, 658, 672, 2, 3, 813, 658, 672, 0, 1, 2, 675, 674, 2, 4, 828, 828, 675, 674, 0, 6, 1, 676, 1, 628, 1, 562, 2, 736, 644, 3, 816, 673, 817, 1, 267, 1, 1, 512, 6, 1, 678, 1, 628, 1, 562, 2, 736, 644, 3, 816, 677, 817, 1, 267, 1, 1, 512, 1, 1, 331, 1, 8, 332, 637, 312, 540, 681, 682, 260, 332, 2, 5, 333, 637, 312, 540, 681, 0, 2, 2, 334, 540, 0, 1, 1, 684, 2, 1, 685, 1, 686, 5, 1, 688, 1, 782, 1, 787, 1, 687, 1, 793, 7, 1, 794, 1, 679, 1, 795, 1, 798, 1, 800, 1, 801, 1, 806, 1, 5, 335, 336, 747, 337, 749, 1, 2, 690, 689, 2, 3, 338, 690, 689, 0, 2, 3, 816, 688, 817, 1, 691, 1, 11, 339, 692, 700, 693, 702, 694, 695, 696, 697, 698, 699, 3, 1, 340, 1, 341, 0, 2, 2, 342, 735, 0, 2, 1, 705, 0, 2, 1, 763, 0, 2, 1, 768, 0, 2, 1, 770, 0, 2, 1, 773, 0, 2, 1, 778, 0, 2, 2, 707, 701, 1, 814, 2, 3, 813, 707, 701, 0, 1, 3, 336, 743, 703, 2, 3, 813, 743, 703, 0, 1, 2, 743, 703, 1, 2, 337, 749, 1, 1, 749, 2, 5, 528, 709, 711, 823, 814, 2, 712, 708, 2, 1, 715, 0, 2, 1, 729, 0, 1, 1, 808, 1, 1, 808, 1, 1, 713, 2, 2, 717, 714, 1, 649, 2, 3, 660, 717, 714, 0, 1, 2, 716, 808, 2, 1, 262, 0, 1, 2, 721, 719, 2, 1, 720, 1, 820, 2, 3, 718, 721, 719, 0, 1, 1, 814, 1, 2, 723, 722, 2, 4, 828, 828, 723, 722, 0, 8, 1, 728, 2, 660, 713, 5, 736, 816, 713, 725, 817, 5, 739, 816, 724, 726, 817, 5, 733, 816, 713, 725, 817, 3, 816, 713, 817, 1, 729, 1, 727, 4, 1, 814, 1, 340, 1, 341, 0, 2, 3, 813, 713, 725, 0, 2, 1, 713, 0, 1, 6, 816, 713, 813, 713, 725, 817, 3, 1, 835, 1, 512, 1, 267, 1, 2, 731, 730, 2, 3, 816, 818, 817, 0, 1, 2, 732, 735, 2, 3, 528, 711, 823, 0, 1, 2, 734, 808, 2, 3, 528, 527, 823, 0, 1, 1, 808, 5, 1, 737, 1, 738, 1, 739, 1, 740, 1, 741, 9, 1, 343, 1, 344, 1, 345, 1, 346, 1, 347, 1, 348, 1, 349, 1, 350, 1, 351, 16, 1, 352, 1, 353, 1, 354, 1, 355, 1, 356, 1, 258, 1, 357, 1, 358, 1, 359, 1, 360, 1, 361, 1, 362, 1, 363, 1, 364, 1, 365, 1, 366, 7, 1, 367, 1, 368, 1, 369, 1, 370, 1, 371, 1, 372, 1, 373, 8, 1, 374, 1, 375, 1, 376, 1, 377, 1, 378, 1, 379, 1, 380, 1, 381, 8, 1, 382, 1, 383, 1, 384, 1, 385, 1, 386, 1, 387, 1, 388, 1, 389, 2, 1, 390, 1, 391, 1, 2, 744, 708, 2, 1, 745, 1, 762, 1, 3, 528, 711, 746, 2, 2, 815, 748, 0, 1, 4, 528, 711, 746, 708, 1, 1, 808, 1, 2, 751, 750, 2, 3, 257, 751, 750, 0, 1, 2, 753, 752, 2, 3, 320, 753, 752, 0, 5, 5, 755, 712, 760, 755, 712, 2, 712, 754, 1, 758, 2, 266, 749, 3, 816, 749, 817, 2, 2, 639, 756, 3, 261, 639, 267, 2, 1, 392, 0, 3, 2, 314, 761, 3, 325, 713, 757, 4, 326, 712, 320, 712, 2, 2, 393, 512, 0, 3, 4, 712, 760, 759, 762, 3, 639, 321, 762, 1, 762, 3, 1, 340, 1, 394, 0, 6, 1, 834, 1, 831, 1, 833, 1, 829, 1, 830, 1, 832, 2, 1, 712, 1, 762, 1, 3, 816, 688, 817, 1, 7, 764, 395, 310, 765, 766, 749, 764, 2, 3, 396, 397, 749, 0, 2, 4, 392, 712, 760, 712, 4, 712, 760, 712, 392, 2, 2, 755, 749, 5, 712, 760, 755, 712, 767, 2, 2, 320, 749, 0, 1, 5, 398, 310, 713, 725, 769, 2, 2, 399, 749, 0, 1, 2, 771, 688, 3, 1, 772, 1, 400, 1, 401, 1, 2, 338, 340, 1, 4, 402, 310, 775, 774, 2, 3, 813, 775, 774, 0, 1, 2, 776, 777, 2, 1, 713, 1, 835, 3, 1, 403, 1, 404, 0, 1, 4, 319, 405, 780, 779, 2, 1, 406, 0, 2, 3, 308, 735, 781, 0, 2, 3, 813, 735, 781, 0, 1, 5, 407, 342, 704, 785, 784, 2, 3, 813, 628, 783, 0, 2, 5, 408, 816, 628, 783, 817, 1, 690, 2, 4, 816, 731, 786, 817, 0, 2, 3, 44, 731, 786, 0, 2, 1, 791, 1, 788, 1, 10, 405, 747, 409, 731, 834, 789, 790, 790, 337, 749, 2, 1, 713, 1, 762, 2, 5, 813, 731, 834, 789, 790, 0, 1, 11, 405, 747, 409, 816, 731, 792, 817, 834, 762, 337, 749, 2, 3, 813, 731, 792, 0, 1, 4, 409, 410, 411, 412, 1, 2, 413, 654, 1, 4, 414, 654, 342, 796, 2, 2, 628, 797, 1, 657, 2, 3, 813, 628, 797, 0, 1, 7, 415, 307, 704, 314, 799, 416, 779, 6, 2, 417, 418, 2, 417, 419, 2, 418, 405, 3, 418, 417, 419, 1, 418, 1, 419, 1, 3, 420, 654, 644, 1, 4, 421, 803, 804, 802, 2, 3, 422, 809, 802, 0, 2, 1, 423, 0, 2, 3, 424, 805, 807, 0, 2, 1, 425, 0, 1, 2, 425, 807, 1, 1, 808, 1, 1, 513, 1, 1, 512, 1, 1, 512, 43, 1, 343, 1, 363, 1, 344, 1, 374, 1, 352, 1, 366, 1, 375, 1, 368, 1, 382, 1, 383, 1, 345, 1, 384, 1, 376, 1, 353, 1, 364, 1, 400, 1, 385, 1, 365, 1, 354, 1, 355, 1, 356, 1, 386, 1, 347, 1, 377, 1, 258, 1, 348, 1, 378, 1, 357, 1, 358, 1, 349, 1, 359, 1, 350, 1, 360, 1, 391, 1, 379, 1, 380, 1, 381, 1, 361, 1, 351, 1, 362, 1, 390, 1, 388, 1, 389, 1, 1, 59, 1, 1, 44, 1, 1, 42, 1, 1, 64, 1, 1, 40, 1, 1, 41, 1, 1, 43, 1, 1, 45, 1, 1, 47, 1, 1, 37, 1, 2, 46, 46, 1, 1, 46, 1, 2, 60, 60, 1, 2, 62, 62, 1, 2, 58, 61, 1, 1, 58, 1, 1, 124, 3, 2, 60, 62, 2, 33, 61, 2, 94, 61, 1, 2, 60, 61, 1, 1, 60, 1, 2, 62, 61, 1, 1, 62, 1, 1, 61, 1, 3, 839, 837, 836, 2, 3, 426, 839, 840, 0, 2, 2, 840, 838, 2, 823, 840, 2, 2, 823, 840, 0, 3, 1, 818, 1, 819, 0, 1, 2, 842, 841, 2, 2, 842, 841, 0, 10, 1, 48, 1, 49, 1, 50, 1, 51, 1, 52, 1, 53, 1, 54, 1, 55, 1, 56, 1, 57, }; #define MAX_KEYWORD 171 char *keyword[MAX_KEYWORD] = { // Keywords are based at 256 "create", "or", "replace", "package", "end", "is", "as", "begin", "body", "constant", "not", "null", "default", "subtype", "cursor", "declare", "exception", "goto", "exit", "when", "binary_integer", "natural", "positive", "number", "char", "long", "raw", "boolean", "date", "smallint", "real", "numeric", "int", "integer", "pls_integer", "double", "precision", "decimal", "dec", "varchar2", "varchar", "character", "mlslabel", "type", "rowtype", "return", "procedure", "function", "pragma", "exception_init", "record", "table", "of", "index", "by", "indexed", "then", "inout", "in", "out", "raise", "loop", "while", "for", "and", "exists", "notfound", "found", "isopen", "like", "between", "true", "false", "reverse", "rowcount", "commit", "if", "elsif", "else", "delete", "from", "where", "union", "select", "all", "distinct", "into", "abs", "ceil", "floor", "mod", "power", "round", "sign", "sqrt", "trunc", "chr", "initcap", "lower", "lpad", "ltrim", "rpad", "rtrim", "soundex", "substr", "translate", "upper", "ascii", "instr", "length", "concat", "avg", "count", "max", "min", "stddev", "sum", "variance", "chartorowid", "convert", "hextoraw", "rawtohex", "rowidtochar", "to_char", "to_date", "to_number", "decode", "dump", "greatest", "least", "nvl", "uid", "userenv", "vsize", "user", "sysdate", "prior", "escape", "any", "connect", "start", "with", "group", "having", "intersect", "minus", "order", "asc", "desc", "update", "nowait", "insert", "values", "set", "transaction", "read", "only", "close", "fetch", "lock", "mode", "row", "share", "exclusive", "open", "rollback", "comment", "work", "to", "savepoint", "e", }; #define MAX_BIP 2 int BIP[MAX_BIP] = { // BIPs precede PHRASEs at 512 upwards 1, 2, }; #define MAX_PHRASE 331 #ifdef DEBUG_PARSER // FOR DEBUGGING ONLY char *phrasename[MAX_PHRASE] = { // Based at 512 upwards "QUOTED_STRING", "IDENTIFIER", "SS", "ss_package", "create_package_list", "create_package", "opt_or_replace", "package_spec_or_body", "package_spec", "is_or_as", "package_obj_spec_list", "package_body", "package_obj_body_list", "opt_body", "opt_package_name", "package_name", "opt_schema_name_DOT", "package_obj_spec", "variable_declaration", "opt_constant", "opt_not_null", "assign_or_default", "opt_assign_or_default_plsql_expression", "subtype_declaration", "cursor_declaration", "opt_parameter_spec_list", "parameter_spec_list", "package_obj_body", "seq_of_statements", "seq_of_statements_list", "statement", "plsql_block", "opt_declare_specs", "opt_declare", "declare_spec_list", "opt_declare_spec_list", "end_label", "opt_label_name", "opt_exception_section", "opt_exception_handler_list", "opt_label", "declare_spec", "assignment_statement", "assignment_rhs", "object", "opt_record_object_dot", "record_term", "record_table_item", "field_name", "subscript", "host_variable", "goto_statement", "label_name", "exit_statement", "opt_when", "datatype", "optraw", "opt_bracketed_number", "opt_bracketed_number_list", "OPT_NUMBER_LIST", "type_spec", "type_name", "opt_dot_identifier_list", "parameter_spec", "opt_type_spec", "parameter_name", "cursor_spec", "procedure_spec", "opt_argument", "opt_argument_list", "function_spec", "exception_declaration", "exception_name", "opt_exception_package_name", "exception_package_name", "exception_pragma", "oracle_err_number", "record_declaration", "record_type_dec", "opt_field_spec_list", "record_var_dec", "field_spec", "plsql_table_declaration", "table_type_dec", "index_by", "field_spec_or_datatype", "table_var_dec", "plsql_table_name", "procedure_declaration", "procedure_body", "opt_procedure_name", "opt_return_type", "opt_proc_fun_start", "opt_seq_of_statements", "opt_exception", "begin_block", "exception_handler", "opt_or_exception_name_list", "proc_fun_start", "function_body", "opt_declare_spec", "function_name", "opt_function_name", "procedure_name", "argument", "ass_or_def_val", "opt_argument_type", "opt_in_out", "argument_name", "argument_type", "value", "opt_PLUS_or_MINUS", "return_type", "function_declaration", "function_call", "expression_list", "variable_name", "null_statement", "raise_statement", "opt_exception_name", "return_statement", "opt_plsql_expression", "loop_statement", "opt_loop_control", "cursor_or_numeric_loop_param", "plsql_condition", "boolean_exp", "opt_not", "opt_or_term_list", "boolean_term", "opt_and_factor_list", "boolean_factor", "opt_bracketed_plsql_exp_list", "opt_percent", "plsql_expression_qualifier", "cursor_or_subquery", "percent", "boolean_literal", "numeric_loop_param", "opt_reverse", "index_name", "integer_expr", "cursor_name", "cursor_loop_param", "cursor_or_select", "record_name", "plsql_expression", "num_expression", "PLUS_or_MINUS", "opt_term_list", "num_term", "MUL_or_DIV", "opt_factor_list", "num_factor", "basic_factor", "opt_bracketed_plsql_exp_list_list", "opt_exp_int", "numeric_literal", "boolean_expression", "plsql_exp_list", "opt_plsql_exp_list", "char_expression", "opt_concat_char_term_list", "char_term", "char_literal", "date_expression", "date_literal", "commit_statement", "if_statement", "opt_elsif_list", "opt_else", "sql_statement", "sql_command", "to_modify_data", "to_control_data", "delete_command", "select_command", "opt_union_list", "select_statement", "select_expression", "opt_all_or_distinct", "opt_into_col", "opt_where_condition_whole", "opt_connect_clause", "opt_group_clause", "opt_set_clause", "opt_order_clause", "opt_update_clause", "select_list", "opt_displayed_column_list", "table_reference_list_from", "opt_selected_table_list", "table_reference_list", "where_condition_whole", "where_condition", "displayed_column", "opt_alias", "opt_variable", "schema_name", "table_name", "exp_simple", "expression", "opt_PM_term_list", "alias", "opt_as", "term", "mul_or_div", "opt_muldiv_factor_list", "multiply", "factor", "opt_concat_factor2_list", "factor2", "opt_AST_all_or_distinct", "opt_expression_list", "opt_expression", "bracketed_expression_list", "sql_literal", "variable", "opt_bracketed_plus", "column_spec", "opt_table_andor_schema_name_DOT", "user_defined_function", "opt_package_andor_schema_name_DOT", "column_name", "function", "number_function", "char_function", "group_function", "conversion_function", "other_function", "pseudo_column", "selected_table", "table_spec_or_subquery", "table_spec", "opt_AT_link_name", "table_alias", "link_name", "condition", "opt_or_logical_term_list", "logical_term", "opt_and_logical_factor_list", "logical_factor", "is_what", "opt_prior", "is_not_what", "opt_escape_string", "quantified_factor", "opt_all_or_any", "relational_op", "exp_set", "subquery", "connect_clause", "opt_start_with", "clause1", "clause2", "opt_and_condition", "group_clause", "opt_having_condition", "set_clause", "set_qual", "union_all", "order_clause", "opt_sorted_def_list", "sorted_def", "exp_or_num", "opt_asc_or_desc", "update_clause", "opt_nowait", "opt_of_col_name_list", "opt_col_name_list", "insert_command", "opt_var_name_list", "values_or_select", "opt_col_spec", "column_spec_list", "update_command", "simple_update", "expr_or_subq", "opt_colspec_eq_list", "subquery_update", "opt_col_spec_list", "set_transaction_command", "close_statement", "fetch_statement", "varlist_or_record", "opt_var_list", "lock_table_statement", "lock_mode", "open_statement", "rollback_statement", "opt_comment_list", "opt_work", "opt_to_savepoint", "opt_savepoint", "savepoint_statement", "savepoint_name", "identifier", "quoted_string", "match_string", "keyword", "SEMI", "COMMA", "ASTERISK", "AT_SIGN", "OPEN_PAREN", "CLOSE_PAREN", "PLUS", "MINUS", "DIVIDE", "PERCENTAGE", "DOUBLEDOT", "DOT", "START_LABEL", "END_LABEL", "ASSIGNMENT_EQ", "COLON", "VERTBAR", "NOT_EQ", "LE", "LT", "GE", "GT", "EQ", "NUMBER", "opt_exponent", "decimal", "opt_DOT_N", "opt_plus_or_minus", "N", "opt_digit_list", "digit", }; #endif /* DEBUG_PARSER */ int phrase_start[MAX_PHRASE-MAX_BIP] = { 0, 5, 9, 14, 19, 24, 29, 39, 44, 49, 62, 67, 71, 75, 79, 84, 103, 111, 115, 120, 125, 130, 137, 145, 152, 158, 175, 180, 186, 209, 217, 222, 226, 230, 235, 240, 244, 250, 255, 261, 280, 287, 292, 305, 311, 316, 322, 325, 328, 331, 335, 338, 343, 348, 400, 404, 410, 417, 423, 442, 446, 452, 456, 460, 463, 471, 477, 484, 490, 501, 506, 510, 515, 518, 528, 531, 536, 547, 553, 560, 563, 568, 579, 586, 591, 596, 599, 602, 617, 621, 626, 630, 634, 639, 645, 652, 658, 662, 678, 683, 687, 691, 695, 702, 707, 711, 722, 725, 728, 736, 742, 745, 748, 755, 761, 764, 767, 771, 775, 779, 783, 792, 800, 805, 808, 813, 817, 823, 827, 833, 855, 861, 872, 899, 904, 914, 921, 929, 933, 936, 941, 944, 949, 957, 960, 970, 975, 980, 986, 990, 995, 1001, 1005, 1029, 1034, 1040, 1043, 1050, 1054, 1060, 1064, 1071, 1087, 1090, 1106, 1109, 1112, 1122, 1130, 1135, 1138, 1143, 1154, 1169, 1176, 1180, 1186, 1193, 1206, 1212, 1217, 1221, 1225, 1229, 1233, 1237, 1241, 1247, 1253, 1258, 1264, 1268, 1272, 1275, 1285, 1289, 1293, 1296, 1299, 1302, 1308, 1314, 1318, 1322, 1326, 1331, 1337, 1340, 1344, 1351, 1383, 1391, 1397, 1401, 1409, 1416, 1420, 1426, 1430, 1436, 1440, 1446, 1449, 1460, 1479, 1512, 1527, 1544, 1561, 1566, 1570, 1575, 1580, 1585, 1591, 1594, 1598, 1604, 1608, 1614, 1633, 1641, 1645, 1658, 1663, 1675, 1681, 1694, 1699, 1704, 1713, 1719, 1730, 1740, 1745, 1752, 1757, 1761, 1768, 1772, 1778, 1784, 1788, 1793, 1799, 1805, 1809, 1815, 1821, 1828, 1834, 1843, 1850, 1856, 1861, 1873, 1878, 1886, 1899, 1905, 1911, 1915, 1921, 1927, 1933, 1942, 1960, 1965, 1971, 1977, 1981, 1987, 1991, 1995, 1998, 2001, 2004, 2007, 2094, 2097, 2100, 2103, 2106, 2109, 2112, 2115, 2118, 2121, 2124, 2128, 2131, 2135, 2139, 2143, 2146, 2149, 2159, 2163, 2166, 2170, 2173, 2176, 2181, 2187, 2194, 2199, 2205, 2209, 2214, }; #define P_QUOTED_STRING 512 #define P_IDENTIFIER 513 #define P_SS 514 #define P_ss_package 515 #define P_create_package_list 516 #define P_create_package 517 #define P_opt_or_replace 518 #define P_package_spec_or_body 519 #define P_package_spec 520 #define P_is_or_as 521 #define P_package_obj_spec_list 522 #define P_package_body 523 #define P_package_obj_body_list 524 #define P_opt_body 525 #define P_opt_package_name 526 #define P_package_name 527 #define P_opt_schema_name_DOT 528 #define P_package_obj_spec 529 #define P_variable_declaration 530 #define P_opt_constant 531 #define P_opt_not_null 532 #define P_assign_or_default 533 #define P_opt_assign_or_default_plsql_expression 534 #define P_subtype_declaration 535 #define P_cursor_declaration 536 #define P_opt_parameter_spec_list 537 #define P_parameter_spec_list 538 #define P_package_obj_body 539 #define P_seq_of_statements 540 #define P_seq_of_statements_list 541 #define P_statement 542 #define P_plsql_block 543 #define P_opt_declare_specs 544 #define P_opt_declare 545 #define P_declare_spec_list 546 #define P_opt_declare_spec_list 547 #define P_end_label 548 #define P_opt_label_name 549 #define P_opt_exception_section 550 #define P_opt_exception_handler_list 551 #define P_opt_label 552 #define P_declare_spec 553 #define P_assignment_statement 554 #define P_assignment_rhs 555 #define P_object 556 #define P_opt_record_object_dot 557 #define P_record_term 558 #define P_record_table_item 559 #define P_field_name 560 #define P_subscript 561 #define P_host_variable 562 #define P_goto_statement 563 #define P_label_name 564 #define P_exit_statement 565 #define P_opt_when 566 #define P_datatype 567 #define P_optraw 568 #define P_opt_bracketed_number 569 #define P_opt_bracketed_number_list 570 #define P_OPT_NUMBER_LIST 571 #define P_type_spec 572 #define P_type_name 573 #define P_opt_dot_identifier_list 574 #define P_parameter_spec 575 #define P_opt_type_spec 576 #define P_parameter_name 577 #define P_cursor_spec 578 #define P_procedure_spec 579 #define P_opt_argument 580 #define P_opt_argument_list 581 #define P_function_spec 582 #define P_exception_declaration 583 #define P_exception_name 584 #define P_opt_exception_package_name 585 #define P_exception_package_name 586 #define P_exception_pragma 587 #define P_oracle_err_number 588 #define P_record_declaration 589 #define P_record_type_dec 590 #define P_opt_field_spec_list 591 #define P_record_var_dec 592 #define P_field_spec 593 #define P_plsql_table_declaration 594 #define P_table_type_dec 595 #define P_index_by 596 #define P_field_spec_or_datatype 597 #define P_table_var_dec 598 #define P_plsql_table_name 599 #define P_procedure_declaration 600 #define P_procedure_body 601 #define P_opt_procedure_name 602 #define P_opt_return_type 603 #define P_opt_proc_fun_start 604 #define P_opt_seq_of_statements 605 #define P_opt_exception 606 #define P_begin_block 607 #define P_exception_handler 608 #define P_opt_or_exception_name_list 609 #define P_proc_fun_start 610 #define P_function_body 611 #define P_opt_declare_spec 612 #define P_function_name 613 #define P_opt_function_name 614 #define P_procedure_name 615 #define P_argument 616 #define P_ass_or_def_val 617 #define P_opt_argument_type 618 #define P_opt_in_out 619 #define P_argument_name 620 #define P_argument_type 621 #define P_value 622 #define P_opt_PLUS_or_MINUS 623 #define P_return_type 624 #define P_function_declaration 625 #define P_function_call 626 #define P_expression_list 627 #define P_variable_name 628 #define P_null_statement 629 #define P_raise_statement 630 #define P_opt_exception_name 631 #define P_return_statement 632 #define P_opt_plsql_expression 633 #define P_loop_statement 634 #define P_opt_loop_control 635 #define P_cursor_or_numeric_loop_param 636 #define P_plsql_condition 637 #define P_boolean_exp 638 #define P_opt_not 639 #define P_opt_or_term_list 640 #define P_boolean_term 641 #define P_opt_and_factor_list 642 #define P_boolean_factor 643 #define P_opt_bracketed_plsql_exp_list 644 #define P_opt_percent 645 #define P_plsql_expression_qualifier 646 #define P_cursor_or_subquery 647 #define P_percent 648 #define P_boolean_literal 649 #define P_numeric_loop_param 650 #define P_opt_reverse 651 #define P_index_name 652 #define P_integer_expr 653 #define P_cursor_name 654 #define P_cursor_loop_param 655 #define P_cursor_or_select 656 #define P_record_name 657 #define P_plsql_expression 658 #define P_num_expression 659 #define P_PLUS_or_MINUS 660 #define P_opt_term_list 661 #define P_num_term 662 #define P_MUL_or_DIV 663 #define P_opt_factor_list 664 #define P_num_factor 665 #define P_basic_factor 666 #define P_opt_bracketed_plsql_exp_list_list 667 #define P_opt_exp_int 668 #define P_numeric_literal 669 #define P_boolean_expression 670 #define P_plsql_exp_list 671 #define P_opt_plsql_exp_list 672 #define P_char_expression 673 #define P_opt_concat_char_term_list 674 #define P_char_term 675 #define P_char_literal 676 #define P_date_expression 677 #define P_date_literal 678 #define P_commit_statement 679 #define P_if_statement 680 #define P_opt_elsif_list 681 #define P_opt_else 682 #define P_sql_statement 683 #define P_sql_command 684 #define P_to_modify_data 685 #define P_to_control_data 686 #define P_delete_command 687 #define P_select_command 688 #define P_opt_union_list 689 #define P_select_statement 690 #define P_select_expression 691 #define P_opt_all_or_distinct 692 #define P_opt_into_col 693 #define P_opt_where_condition_whole 694 #define P_opt_connect_clause 695 #define P_opt_group_clause 696 #define P_opt_set_clause 697 #define P_opt_order_clause 698 #define P_opt_update_clause 699 #define P_select_list 700 #define P_opt_displayed_column_list 701 #define P_table_reference_list_from 702 #define P_opt_selected_table_list 703 #define P_table_reference_list 704 #define P_where_condition_whole 705 #define P_where_condition 706 #define P_displayed_column 707 #define P_opt_alias 708 #define P_opt_variable 709 #define P_schema_name 710 #define P_table_name 711 #define P_exp_simple 712 #define P_expression 713 #define P_opt_PM_term_list 714 #define P_alias 715 #define P_opt_as 716 #define P_term 717 #define P_mul_or_div 718 #define P_opt_muldiv_factor_list 719 #define P_multiply 720 #define P_factor 721 #define P_opt_concat_factor2_list 722 #define P_factor2 723 #define P_opt_AST_all_or_distinct 724 #define P_opt_expression_list 725 #define P_opt_expression 726 #define P_bracketed_expression_list 727 #define P_sql_literal 728 #define P_variable 729 #define P_opt_bracketed_plus 730 #define P_column_spec 731 #define P_opt_table_andor_schema_name_DOT 732 #define P_user_defined_function 733 #define P_opt_package_andor_schema_name_DOT 734 #define P_column_name 735 #define P_function 736 #define P_number_function 737 #define P_char_function 738 #define P_group_function 739 #define P_conversion_function 740 #define P_other_function 741 #define P_pseudo_column 742 #define P_selected_table 743 #define P_table_spec_or_subquery 744 #define P_table_spec 745 #define P_opt_AT_link_name 746 #define P_table_alias 747 #define P_link_name 748 #define P_condition 749 #define P_opt_or_logical_term_list 750 #define P_logical_term 751 #define P_opt_and_logical_factor_list 752 #define P_logical_factor 753 #define P_is_what 754 #define P_opt_prior 755 #define P_is_not_what 756 #define P_opt_escape_string 757 #define P_quantified_factor 758 #define P_opt_all_or_any 759 #define P_relational_op 760 #define P_exp_set 761 #define P_subquery 762 #define P_connect_clause 763 #define P_opt_start_with 764 #define P_clause1 765 #define P_clause2 766 #define P_opt_and_condition 767 #define P_group_clause 768 #define P_opt_having_condition 769 #define P_set_clause 770 #define P_set_qual 771 #define P_union_all 772 #define P_order_clause 773 #define P_opt_sorted_def_list 774 #define P_sorted_def 775 #define P_exp_or_num 776 #define P_opt_asc_or_desc 777 #define P_update_clause 778 #define P_opt_nowait 779 #define P_opt_of_col_name_list 780 #define P_opt_col_name_list 781 #define P_insert_command 782 #define P_opt_var_name_list 783 #define P_values_or_select 784 #define P_opt_col_spec 785 #define P_column_spec_list 786 #define P_update_command 787 #define P_simple_update 788 #define P_expr_or_subq 789 #define P_opt_colspec_eq_list 790 #define P_subquery_update 791 #define P_opt_col_spec_list 792 #define P_set_transaction_command 793 #define P_close_statement 794 #define P_fetch_statement 795 #define P_varlist_or_record 796 #define P_opt_var_list 797 #define P_lock_table_statement 798 #define P_lock_mode 799 #define P_open_statement 800 #define P_rollback_statement 801 #define P_opt_comment_list 802 #define P_opt_work 803 #define P_opt_to_savepoint 804 #define P_opt_savepoint 805 #define P_savepoint_statement 806 #define P_savepoint_name 807 #define P_identifier 808 #define P_quoted_string 809 #define P_match_string 810 #define P_keyword 811 #define P_SEMI 812 #define P_COMMA 813 #define P_ASTERISK 814 #define P_AT_SIGN 815 #define P_OPEN_PAREN 816 #define P_CLOSE_PAREN 817 #define P_PLUS 818 #define P_MINUS 819 #define P_DIVIDE 820 #define P_PERCENTAGE 821 #define P_DOUBLEDOT 822 #define P_DOT 823 #define P_START_LABEL 824 #define P_END_LABEL 825 #define P_ASSIGNMENT_EQ 826 #define P_COLON 827 #define P_VERTBAR 828 #define P_NOT_EQ 829 #define P_LE 830 #define P_LT 831 #define P_GE 832 #define P_GT 833 #define P_EQ 834 #define P_NUMBER 835 #define P_opt_exponent 836 #define P_decimal 837 #define P_opt_DOT_N 838 #define P_opt_plus_or_minus 839 #define P_N 840 #define P_opt_digit_list 841 #define P_digit 842