|
|
1.1 ! root 1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ ! 2: ! 3: /* ! 4: $Header: b3tra.c,v 1.4 85/08/22 16:59:43 timo Exp $ ! 5: */ ! 6: ! 7: /* Trace facility for interpreter */ ! 8: ! 9: #include "b.h" ! 10: #include "b0fea.h" ! 11: #include "b1obj.h" ! 12: #include "b2nod.h" ! 13: #include "b3err.h" /* For 'tracing' */ ! 14: #include "b3int.h" ! 15: ! 16: #ifdef EXT_COMMAND ! 17: ! 18: Visible Procedure tr_on() { ! 19: tracing= Yes; ! 20: } ! 21: ! 22: Visible Procedure tr_off() { ! 23: tracing= No; ! 24: } ! 25: ! 26: #endif EXT_COMMAND ! 27: ! 28: Visible string opcodes[] = { ! 29: "HOW_TO", ! 30: "YIELD", ! 31: "TEST", ! 32: "REFINEMENT", ! 33: ! 34: /* Commands */ ! 35: ! 36: "SUITE", ! 37: "PUT", ! 38: "INSERT", ! 39: "REMOVE", ! 40: "CHOOSE", ! 41: "DRAW", ! 42: "SET_RANDOM", ! 43: "DELETE", ! 44: "CHECK", ! 45: "SHARE", ! 46: ! 47: "WRITE", ! 48: "READ", ! 49: "READ_RAW", ! 50: ! 51: "IF", ! 52: "WHILE", ! 53: "FOR", ! 54: ! 55: "SELECT", ! 56: "TEST_SUITE", ! 57: "ELSE", ! 58: ! 59: "QUIT", ! 60: "RETURN", ! 61: "REPORT", ! 62: "SUCCEED", ! 63: "FAIL", ! 64: ! 65: "USER_COMMAND", ! 66: "EXTENDED_COMMAND", ! 67: ! 68: /* Expressions, targets, tests */ ! 69: ! 70: "TAG", ! 71: "COMPOUND", ! 72: ! 73: /* Expressions, targets */ ! 74: ! 75: "COLLATERAL", ! 76: "SELECTION", ! 77: "BEHEAD", ! 78: "CURTAIL", ! 79: ! 80: /* Expressions, tests */ ! 81: ! 82: "UNPARSED", ! 83: ! 84: /* Expressions */ ! 85: ! 86: "MONF", ! 87: "DYAF", ! 88: "NUMBER", ! 89: "TEXT_DIS", ! 90: "TEXT_LIT", ! 91: "TEXT_CONV", ! 92: "ELT_DIS", ! 93: "LIST_DIS", ! 94: "RANGE_DIS", ! 95: "TAB_DIS", ! 96: ! 97: /* Tests */ ! 98: ! 99: "AND", ! 100: "OR", ! 101: "NOT", ! 102: "SOME_IN", ! 103: "EACH_IN", ! 104: "NO_IN", ! 105: "SOME_PARSING", ! 106: "EACH_PARSING", ! 107: "NO_PARSING", ! 108: "MONPRD", ! 109: "DYAPRD", ! 110: "LESS_THAN", ! 111: "AT_MOST", ! 112: "GREATER_THAN", ! 113: "AT_LEAST", ! 114: "EQUAL", ! 115: "UNEQUAL", ! 116: "Nonode", ! 117: ! 118: "TAGformal", ! 119: "TAGlocal", ! 120: "TAGglobal", ! 121: "TAGmystery", ! 122: "TAGrefinement", ! 123: "TAGzerfun", ! 124: "TAGzerprd", ! 125: }; ! 126: ! 127: #define NOPCODES ((sizeof opcodes) / (sizeof opcodes[0])) ! 128: ! 129: Visible Procedure tr_node(p) parsetree p; { ! 130: int n; ! 131: fprintf(stderr, "*** %8x ", p); ! 132: if (p == Halt) ! 133: fprintf(stderr, "Halt\r\n"); ! 134: else if (p == Stop) ! 135: fprintf(stderr, "Stop\r\n"); ! 136: else if (!Is_parsetree(p)) { ! 137: if (IsSmallInt(p)) ! 138: fprintf(stderr, "Error %d\r\n", SmallIntVal(p)); ! 139: else ! 140: fprintf(stderr, "Trace bad node\r\n"); ! 141: } ! 142: else { ! 143: n= Nodetype(p); ! 144: if (n < 0 || n >= NOPCODES) ! 145: fprintf(stderr, "Opcode %d", n); ! 146: else ! 147: fprintf(stderr, "%s", opcodes[n]); ! 148: if (Thread2(p)) ! 149: fprintf(stderr, " [*]"); ! 150: fprintf(stderr, "\r\n"); ! 151: } ! 152: } ! 153: ! 154: Visible Procedure tr_jump() { ! 155: fprintf(stderr, "*** Jump\r\n"); ! 156: } ! 157: ! 158: Visible Procedure tr_call() { ! 159: fprintf(stderr, "*** Call\r\n"); ! 160: } ! 161: ! 162: Visible Procedure tr_ret() { ! 163: fprintf(stderr, "*** Return\r\n"); ! 164: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.