home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / draco / draco-1.ark / MKERR.DRC < prev    next >
Text File  |  1986-11-12  |  10KB  |  268 lines

  1. #util.g
  2.  
  3. file() Fyle;
  4. channel output binary Chout;
  5. int Count;
  6.  
  7. proc nonrec err(*char message)void:
  8.     ushort i;
  9.     char end;
  10.  
  11.     i := 0;
  12.     while message* ~= '\e' do
  13.     write(Chout; message*);
  14.     i := i + 1;
  15.     message := message + 1;
  16.     od;
  17.     if i > 64 then
  18.     writeln("Error message \#", Count, " is ", i - 64,
  19.         " characters too long.");
  20.     i := 64;
  21.     fi;
  22.     end := '\e';
  23.     while i ~= 64 do
  24.     write(Chout; end);
  25.     i := i + 1;
  26.     od;
  27.     Count := Count + 1;
  28. corp;
  29.  
  30. proc nonrec err0()void:
  31.     /* 0 */
  32.     err("cannot open source file\r\n$");
  33.     err("cannot create .REL file\r\n$");
  34.     err("cannot close .REL file\r\n$");
  35.     err("error on write to .REL file\r\n$");
  36.     err("unexpected end-of-file on source input\r\n$");
  37.     err("program buffer overflow (procedure too long)\r\n$");
  38.     err("constant buffer overflow (too much constant)\r\n$");
  39.     err("constant table overflow (too many constants)\r\n$");
  40.     err("case table overflow (too many alternatives)\r\n$");
  41.     err("descriptor table overflow (nesting too deep)\r\n$");
  42. corp;
  43.  
  44. proc nonrec err1()void:
  45.     /* 10 */
  46.     err("relocation table overflow (too many constant indexes)\r\n$");
  47.     err("symbol table overflow (too many identifiers)\r\n$");
  48.     err("type table overflow (too many types)\r\n$");
  49.     err("type information table overflow (types too complex)\r\n$");
  50.     err("compiler error - bad case in 'typSize' or 'checkDuplicate'\r\n$");
  51.     err("\" is already defined\r\n$");
  52.     err("\" is not defined\r\n$");
  53.     err("\" is not defined (subsequent use)\r\n$");
  54.     err("\" has been used but not defined\r\n$");
  55.     err("error \# 19\r\n$");
  56. corp;
  57.  
  58. proc nonrec err2()void:
  59.     /* 20 */
  60.     err("expecting global declaration in include file\r\n$");
  61.     err("expecting procedure header or file global declaration\r\n$");
  62.     err("expecting procedure header for new procedure\r\n$");
  63.     err("value must be 0 - 255\r\n$");
  64.     err("'signed' range must be <= 32767\r\n$");
  65.     err("missing ')' in escaped character\r\n$");
  66.     err("bad digit in numeric constant\r\n$");
  67.     err("overflow in numeric constant\r\n$");
  68.     err("missing closing \"'\" in character constant\r\n$");
  69.     err("missing closing '\"' in string constant\r\n$");
  70. corp;
  71.  
  72. proc nonrec err3()void:
  73.     /* 30 */
  74.     err("illegal character\r\n$");
  75.     err("cannot use 'sizeof' on arrays with '*' dimensions\r\n$");
  76.     err("expecting identifier in declaration\r\n$");
  77.     err("expecting ',' as separator in list\r\n$");
  78.     err("expecting '{'\r\n$");
  79.     err("missing ']'\r\n$");
  80.     err("identifier is not a defined type\r\n$");
  81.     err("numeric constant required\r\n$");
  82.     err("positive value required\r\n$");
  83.     err("missing '}' in enumeration type\r\n$");
  84. corp;
  85.  
  86. proc nonrec err4()void:
  87.     /* 40 */
  88.     err("only parameter arrays can have '*' dimensions\r\n$");
  89.     err("error \#41\r\n$");
  90.     err("syntax error - expecting type\r\n$");
  91.     err("missing '=' in type definition\r\n$");
  92.     err("constant value must be string or compile-time expression\r\n$");
  93.     err("parameters to 'code' must be constants or variables\r\n$");
  94.     err("missing 'corp' at end of procedure\r\n$");
  95.     err("'vector' procedures cannot return a result\r\n$");
  96.     err("missing ':' after procedure header\r\n$");
  97.     err("'vector' procedures cannot have parameters\r\n$");
  98. corp;
  99.  
  100. proc nonrec err5()void:
  101.     /* 50 */
  102.     err("result expression given for 'void' procedure\r\n$");
  103.     err("no result given for procedure when one was declared\r\n$");
  104.     err("statement cannot be used as 'bool' condition\r\n$");
  105.     err("only 'bool' values can be used as conditions\r\n$");
  106.     err("statement cannot be used as expression\r\n$");
  107.     err("constant is out of range for the destination type\r\n$");
  108.     err("statements cannot be used as expressions in assignments\r\n$");
  109.     err("value is not type compatible with destination\r\n$");
  110.     err("mixed statements/expressions as 'if' or 'case' alternatives\r\n$");
  111. corp;
  112.  
  113. proc nonrec err6()void:
  114.     err("alternatives in 'if' or 'case' are not type compatible\r\n$");
  115.     /* 60 */
  116.     err("missing 'then' in 'if'\r\n$");
  117.     err("missing 'else' or 'fi' in 'if'\r\n$");
  118.     err("'if' expressions must have an 'else' part\r\n$");
  119.     err("missing 'fi' in 'if'\r\n$");
  120.     err("missing 'do' in 'while' or 'for'\r\n$");
  121.     err("missing 'od' in 'while' or 'for'\r\n$");
  122.     err("body of 'while' must not be an expression\r\n$");
  123.     err("expressions cannot be used as statements\r\n$");
  124.     err("missing ';'\r\n$");
  125.     err("missing ','\r\n$");
  126. corp;
  127.  
  128. proc nonrec err7()void:
  129.     /* 70 */
  130.     err("missing ')'\r\n$");
  131.     err("value being called is not a procedure\r\n$");
  132.     err("too many parameters to procedure\r\n$");
  133.     err("actual parameter to procedure is of wrong type\r\n$");
  134.     err("actual array parameter does not match required type\r\n$");
  135.     err("array with '*' dimension cannot be passed as fixed array\r\n$");
  136.     err("not enough parameters to procedure\r\n$");
  137.     err("missing '('\r\n$");
  138.     err("too many values\r\n$");
  139.     err("too few values\r\n$");
  140. corp;
  141.  
  142. proc nonrec err8()void:
  143.     /* 80 */
  144.     err("cannot change the type of statements\r\n$");
  145.     err("'dim' can only be used with arrays\r\n$");
  146.     err("error \#82\r\n$");
  147.     err("dimension selector is 0 or too big\r\n$");
  148.     err("cannot nest structured constants\r\n$");
  149.     err("cannot bracket a statement\r\n$");
  150.     err("mismatched ')'\r\n$");
  151.     err("syntax error - undecipherable statement or expression\r\n$");
  152.     err("improper use of field name\r\n$");
  153.     err("cannot index anything except arrays\r\n$");
  154. corp;
  155.  
  156. proc nonrec err9()void:
  157.     /* 90 */
  158.     err("this value cannot be used as an array index\r\n$");
  159.     err("value is greater than declared array dimension\r\n$");
  160.     err("not enough indexes for this array\r\n$");
  161.     err("too many indexes for this array\r\n$");
  162.     err("this value is not a structure - can't select from it\r\n$");
  163.     err("this identifier is not a field name\r\n$");
  164.     err("this field is not an element of this structure/union\r\n$");
  165.     err("expecting field name\r\n$");
  166.     err("cannot take the address of this value\r\n$");
  167.     err("this value is not suitable for bit operations\r\n$");
  168. corp;
  169.  
  170. proc nonrec err10()void:
  171.     /* 100 */
  172.     err("this value is not suitable for numeric operations\r\n$");
  173.     err("this value is not suitable for the '+'/'-' operations\r\n$");
  174.     err("illegal combination of pointer or enumeration with number\r\n$");
  175.     err("expression value cannot be made into an array or structure\r\n$");
  176.     err("cannot compare signed v.s. unsigned except with '=' or '~='\r\n$");
  177.     err("attempted multiplication/division by zero\r\n$");
  178.     err("'not' can only be used with 'bool' values\r\n$");
  179.     err("'and' and 'or' can only be used with 'bool' values\r\n$");
  180.     err("cannot assign to this\r\n$");
  181.     err("'case' selectors must be numeric or an enumeration type\r\n$");
  182. corp;
  183.  
  184. proc nonrec err11()void:
  185.     /* 110 */
  186.     err("'case' cannot have more than one 'default'\r\n$");
  187.     err("'case' index must be compile-time expression\r\n$");
  188.     err("'case' indexes cannot occur more than once\r\n$");
  189.     err("missing ':' after 'case' index\r\n$");
  190.     err("'case' must have at least one alternative\r\n$");
  191.     err("missing 'esac' in 'case'\r\n$");
  192.     err("body of 'for' must not be an expression\r\n$");
  193.     err("'for' counter must be numeric, enum or pointer variable\r\n$");
  194.     err("missing 'from' in 'for'\r\n$");
  195.     err("missing 'upto' or 'downto' in 'for'\r\n$");
  196. corp;
  197.  
  198. proc nonrec err12()void:
  199.     /* 120 */
  200.     err("value is not a pointer\r\n$");
  201.     err("can only 'free' pointers\r\n$");
  202.     err("can only take 'range' of numerics and enumerations\r\n$");
  203.     err("'by' value is out of range for loop variable\r\n$");
  204.     err("expecting 'input' or 'output' in channel type\r\n$");
  205.     err("expecting 'text' or 'binary' in channel type\r\n$");
  206.     err("first operand of 'open' must be a channel\r\n$");
  207.     err("channel for standard input/output must be text channel\r\n$");
  208.     err("file name for 'open' must be a *char value\r\n$");
  209.     err("wrong proc type for this channel type\r\n$");
  210. corp;
  211.  
  212. proc nonrec err13()void:
  213.     /* 130 */
  214.     err("cannot open binary channel on a *char value\r\n$");
  215.     err("illegal second operand of 'open'\r\n$");
  216.     err("operand to 'close'/'ioerror' must be a channel\r\n$");
  217.     err("special first operand of 'read'/'write' must be a channel\r\n$");
  218.     err("invalid operation for a channel of this type\r\n$");
  219.     err("format codes can only be used with numeric values\r\n$");
  220.     err("invalid format code\r\n$");
  221.     err("field width must be numeric value\r\n$");
  222.     err("invalid type for text I/O\r\n$");
  223.     err("input/output constructs not supported by this version\r\n$");
  224.     /* 140 */
  225.     err("this type has no constants\r\n$");
  226.     err("type is not an array or structure\r\n$");
  227.     err("missing external name in operator type\r\n$");
  228.     err("operation not supported by this operator type\r\n$");
  229.     err("operator types cannot be mixed with other types\r\n$");
  230.     err("can only compare with '=' or '~=' for this type\r\n$");
  231.     err("'error' must have string argument\r\n$");
  232. corp;
  233.  
  234. proc nonrec main()void:
  235.     FILENAME fn;
  236.  
  237.     SetFileName(fn, "DRCERR.DAT");
  238.     pretend(FileDestroy(fn), void);
  239.     if not FileCreate(fn) then
  240.     writeln("Can't create error file.");
  241.     exit(1);
  242.     fi;
  243.     if not open(Chout, Fyle, "DRCERR.DAT") then
  244.     writeln("Can't open error file.");
  245.     exit(1);
  246.     fi;
  247.     Count := 0;
  248.     err0();
  249.     err1();
  250.     err2();
  251.     err3();
  252.     err4();
  253.     err5();
  254.     err6();
  255.     err7();
  256.     err8();
  257.     err9();
  258.     err10();
  259.     err11();
  260.     err12();
  261.     err13();
  262.     if not close(Chout) then
  263.     writeln("Error on close of error file.");
  264.     exit(1);
  265.     fi;
  266.     writeln(Count, " error messages written.");
  267. corp;
  268.