#define MAX_GRAMMAR 920 #define PHRASE_BASE 522 int gram[MAX_GRAMMAR] = { 31, 3, 565, 517, 551, 16, 256, 513, 526, 257, 523, 524, 525, 258, 523, 524, 525, 258, 523, 524, 525, 518, 2, 259, 518, 2, 514, 260, 6, 531, 540, 542, 261, 565, 518, 2, 262, 519, 4, 533, 513, 539, 518, 2, 263, 518, 5, 535, 546, 513, 537, 518, 4, 264, 513, 537, 518, 2, 265, 519, 16, 534, 266, 513, 539, 267, 523, 524, 525, 260, 523, 524, 525, 547, 268, 548, 518, 2, 269, 518, 2, 270, 518, 1, 271, 2, 272, 518, 5, 513, 267, 523, 521, 273, 12, 274, 513, 539, 267, 523, 521, 260, 523, 521, 268, 549, 518, 2, 275, 518, 2, 276, 518, 2, 277, 518, 2, 514, 278, 3, 279, 554, 518, 7, 280, 514, 552, 281, 514, 553, 518, 2, 282, 518, 2, 283, 518, 2, 284, 518, 2, 285, 518, 2, 286, 518, 1, 518, 1, 512, 3, 1, 287, 1, 288, 0, 4, 2, 513, 526, 1, 521, 5, 267, 523, 524, 525, 268, 5, 262, 523, 524, 525, 262, 2, 3, 528, 524, 525, 0, 2, 6, 267, 523, 524, 525, 527, 268, 0, 2, 5, 258, 523, 524, 525, 527, 0, 6, 1, 287, 1, 288, 1, 279, 1, 289, 1, 290, 0, 2, 1, 291, 0, 2, 1, 258, 0, 2, 1, 292, 1, 293, 2, 1, 294, 0, 2, 1, 295, 1, 294, 3, 1, 295, 1, 294, 0, 5, 1, 296, 1, 297, 1, 298, 1, 299, 1, 300, 8, 1, 535, 1, 301, 1, 302, 1, 295, 2, 532, 303, 1, 304, 1, 294, 1, 305, 2, 6, 267, 536, 513, 539, 538, 268, 0, 2, 5, 530, 536, 513, 539, 538, 0, 2, 3, 258, 513, 539, 0, 2, 8, 523, 524, 525, 550, 523, 524, 525, 541, 4, 267, 540, 542, 268, 2, 4, 550, 523, 524, 525, 0, 3, 3, 306, 540, 543, 3, 307, 540, 544, 0, 2, 3, 306, 540, 543, 0, 2, 3, 307, 540, 544, 0, 2, 5, 257, 523, 524, 525, 529, 0, 2, 1, 264, 0, 2, 9, 258, 523, 524, 525, 260, 523, 524, 525, 547, 0, 2, 14, 258, 513, 539, 267, 523, 524, 525, 260, 523, 524, 525, 547, 268, 548, 0, 2, 11, 258, 513, 539, 267, 523, 521, 260, 523, 521, 268, 549, 0, 6, 1, 257, 1, 308, 1, 309, 1, 310, 1, 311, 1, 312, 2, 1, 518, 4, 531, 540, 542, 518, 2, 3, 258, 514, 552, 0, 2, 6, 258, 514, 552, 281, 514, 553, 0, 103, 3, 313, 513, 526, 4, 279, 560, 513, 526, 4, 314, 514, 561, 555, 2, 315, 515, 3, 316, 514, 278, 3, 317, 514, 561, 2, 318, 514, 6, 560, 319, 514, 319, 514, 556, 2, 320, 557, 2, 257, 558, 4, 321, 514, 322, 514, 4, 323, 514, 322, 514, 4, 324, 514, 322, 514, 4, 319, 514, 322, 514, 4, 325, 514, 322, 514, 4, 326, 514, 322, 514, 4, 327, 514, 322, 514, 5, 324, 514, 257, 523, 514, 2, 321, 514, 2, 323, 514, 2, 324, 514, 2, 319, 514, 2, 328, 514, 2, 329, 514, 1, 330, 4, 319, 559, 324, 514, 3, 331, 523, 514, 2, 332, 514, 1, 333, 1, 334, 1, 335, 1, 336, 1, 337, 1, 338, 1, 339, 1, 340, 1, 341, 1, 342, 1, 343, 1, 344, 1, 345, 1, 346, 1, 347, 1, 348, 1, 349, 1, 350, 1, 351, 1, 352, 1, 353, 1, 354, 1, 355, 1, 356, 1, 357, 1, 358, 1, 359, 1, 360, 1, 361, 1, 362, 1, 289, 1, 363, 1, 364, 1, 365, 1, 287, 1, 366, 1, 367, 1, 368, 1, 288, 1, 369, 1, 370, 1, 371, 1, 372, 1, 331, 1, 373, 1, 374, 1, 375, 1, 376, 1, 377, 1, 378, 1, 379, 1, 380, 1, 381, 1, 382, 1, 383, 1, 384, 1, 385, 1, 318, 1, 386, 1, 387, 5, 388, 562, 563, 321, 514, 2, 389, 514, 2, 390, 514, 2, 391, 514, 2, 392, 514, 2, 393, 514, 2, 394, 514, 2, 395, 514, 3, 316, 523, 514, 2, 396, 514, 5, 515, 289, 515, 289, 515, 4, 560, 397, 514, 564, 2, 398, 514, 2, 399, 514, 0, 20, 3, 323, 514, 400, 3, 323, 514, 401, 3, 323, 514, 402, 1, 403, 1, 257, 1, 404, 1, 310, 1, 405, 1, 406, 1, 407, 1, 408, 1, 409, 1, 410, 1, 411, 1, 412, 1, 413, 1, 414, 1, 415, 1, 416, 0, 8, 1, 417, 1, 418, 1, 419, 1, 321, 1, 420, 1, 421, 1, 422, 0, 10, 3, 423, 523, 514, 3, 424, 523, 514, 3, 425, 523, 514, 3, 426, 523, 514, 3, 323, 523, 514, 2, 427, 514, 2, 428, 514, 2, 429, 514, 2, 430, 514, 2, 431, 514, 12, 1, 330, 2, 321, 514, 2, 323, 514, 2, 324, 514, 2, 319, 514, 2, 432, 514, 2, 433, 514, 2, 434, 514, 2, 435, 514, 2, 436, 514, 2, 437, 514, 2, 438, 514, 2, 1, 287, 1, 288, 2, 1, 257, 0, 2, 1, 388, 0, 3, 1, 324, 1, 439, 1, 319, 6, 1, 423, 1, 440, 1, 323, 1, 441, 1, 397, 1, 442, 3, 3, 319, 514, 321, 2, 319, 514, 0, 8, 4, 513, 526, 516, 545, 2, 281, 514, 2, 443, 520, 1, 444, 5, 445, 257, 523, 524, 525, 1, 446, 7, 281, 513, 267, 523, 524, 525, 268, 2, 447, 514, }; #define MAX_KEYWORD 192 char *keyword[MAX_KEYWORD] = { // Keywords are based at 256 "cycle", "=", ",", "repeat", ":", "then", "!", "end", "spec", "comment", "array", "(", ")", "***A", "begin", "endofprogram", "uppercasedelimiters", "):", "switch", "compilequeries", "ignorequeries", "mcode", "P:", "*", "fault", "->", "normaldelimiters", "strings", "endofperm", "endofmcode", "definecompiler", "+", "-", "/", "^", "?", "if", "unless", "real", "integer", "routine", "realfn", "integerfn", "realmap", "integermap", "integerarrayname", "integername", "arrayname", "realname", "addr", "and", "or", ">=", ">", "#", "<=", "<", "*@", "J", "SETB", "SET", "JS", "EXIT", "M", "SH", "Q", "TOQ", "C", "I", "IM", "CM", "CI", "NC", "DC", "LINK", "X+", "X+C", "ROUNDHF", "ROUNDF", "ROUNDH", "ROUND", "FLOATD", "FLOAT", "ERASE", "REVD", "REV", "ZERO", "DUPD", "DUP", "NEGDF", "NEGF", "NEGD", "NEG", "ABSF", "ABS", "MAXF", "MAX", "SIGNF", "SIGN", "CAB", "FRB", "STAND", "/DF", "/D", "/F", "/R", "/I", "+DF", "+D", "+F", "-DF", "-D", "-F", "XDF", "XD", "XF", "X+F", "=TR", "BITS", "DUMMY", "PERM", "TOP", "OR", "VR", "NEV", "NOT", "FIX", "STR", "CONT", "AND", "OUT", "X", "P", "TLOG", "INTQ", "PARQ", "BUSYQ", "MANUALQ", "CTQ", "CLOQ", "ADVCA", "E", "JSE", "JE", "NZS", "NZ", "Z", "=Z", "#Z", ">Z", ">=Z", "<Z", "<=Z", "V", "NV", "EN", "NEN", "EJ", "NEJ", "TR", "NTR", "QHN", "QH", "QN", "HN", "H", "N", "A", "AD", "L", "LD", "AC", "ADC", "LC", "LDC", "CC", "RC", "RI", "RM", "+Q", "+C", "+I", "+M", "O", "B", "D", "F", "caption", "return", "result", "stop", "monitor", }; #define MAX_BIP 10 int BIP[MAX_BIP] = { // BIPs precede PHRASEs at 512 upwards 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, }; #define MAX_PHRASE 54 #if defined(DEBUG_PARSER) || defined(EXTENDED_ERROR_REPORTING) // FOR DEBUGGING ONLY char *phrasename[MAX_PHRASE] = { // Based at 512 upwards "EOD", "NAME", "N", "OCTAL", "SETMARKER1", "SETMARKER2", "S", "TEXT", "CAPTIONTEXT", "CONST", "SS", "Opt_Plus", "OPERAND", "RESTOF_EXPR", "APP", "RESTOF_EXPR_LIST", "OP", "Opt_QUERY", "Opt_Comma", "Percent_IU", "Opt_Percent_REAL", "TYPE", "Opt_TYPE", "RT", "FP_DELIMITER", "FPP", "RESTOF_FP_LIST", "RESTOF_NAMELIST", "SC", "RESTOF_SC", "RESTOF_COND", "RESTOF_AND_C", "RESTOF_OR_C", "RESTOF_UI", "Opt_Percent_SPEC", "RESTOF_FPP_LIST", "RESTOF_ARRAYLIST", "RESTOF_SWITCHLIST", "COMP", "RESTOF_SS1", "RESTOF_FN_LIST", "RESTOF_FAULTLIST", "UCI", "J_INSTR", "MS_INSTR", "SH_INSTR", "QS_INSTR", "Plus", "Opt_Equals", "Opt_P", "IOM", "ATOF", "E_INSTR", "UI", }; #endif /* DEBUG_PARSER */ int phrase_start[MAX_PHRASE-MAX_BIP] = { 0, 150, 156, 174, 180, 189, 197, 209, 213, 217, 222, 226, 231, 237, 248, 266, 275, 283, 289, 304, 311, 321, 327, 333, 341, 345, 357, 374, 388, 401, 409, 415, 424, 711, 757, 773, 809, 845, 850, 854, 858, 865, 878, 887, }; #define P_EOD 512 #define B_EOD 0 #define P_NAME 513 #define B_NAME 1 #define P_N 514 #define B_N 2 #define P_OCTAL 515 #define B_OCTAL 3 #define P_SETMARKER1 516 #define B_SETMARKER1 4 #define P_SETMARKER2 517 #define B_SETMARKER2 5 #define P_S 518 #define B_S 6 #define P_TEXT 519 #define B_TEXT 7 #define P_CAPTIONTEXT 520 #define B_CAPTIONTEXT 8 #define P_CONST 521 #define B_CONST 9 #define P_SS 522 #define P_Opt_Plus 523 #define P_OPERAND 524 #define P_RESTOF_EXPR 525 #define P_APP 526 #define P_RESTOF_EXPR_LIST 527 #define P_OP 528 #define P_Opt_QUERY 529 #define P_Opt_Comma 530 #define P_Percent_IU 531 #define P_Opt_Percent_REAL 532 #define P_TYPE 533 #define P_Opt_TYPE 534 #define P_RT 535 #define P_FP_DELIMITER 536 #define P_FPP 537 #define P_RESTOF_FP_LIST 538 #define P_RESTOF_NAMELIST 539 #define P_SC 540 #define P_RESTOF_SC 541 #define P_RESTOF_COND 542 #define P_RESTOF_AND_C 543 #define P_RESTOF_OR_C 544 #define P_RESTOF_UI 545 #define P_Opt_Percent_SPEC 546 #define P_RESTOF_FPP_LIST 547 #define P_RESTOF_ARRAYLIST 548 #define P_RESTOF_SWITCHLIST 549 #define P_COMP 550 #define P_RESTOF_SS1 551 #define P_RESTOF_FN_LIST 552 #define P_RESTOF_FAULTLIST 553 #define P_UCI 554 #define P_J_INSTR 555 #define P_MS_INSTR 556 #define P_SH_INSTR 557 #define P_QS_INSTR 558 #define P_Plus 559 #define P_Opt_Equals 560 #define P_Opt_P 561 #define P_IOM 562 #define P_ATOF 563 #define P_E_INSTR 564 #define P_UI 565