#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