error.c 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. /* routines for printing error messages */
  2. #include "defs.h"
  3. fatal(msg)
  4. char *msg;
  5. {
  6. fprintf(stderr, "%s: f - %s\n", myname, msg);
  7. done(2);
  8. }
  9. no_space()
  10. {
  11. fprintf(stderr, "%s: f - out of space\n", myname);
  12. done(2);
  13. }
  14. open_error(filename)
  15. char *filename;
  16. {
  17. fprintf(stderr, "%s: f - cannot open \"%s\"\n", myname, filename);
  18. done(2);
  19. }
  20. unexpected_EOF()
  21. {
  22. fprintf(stderr, "%s: e - line %d of \"%s\", unexpected end-of-file\n",
  23. myname, lineno, input_file_name);
  24. done(1);
  25. }
  26. print_pos(st_line, st_cptr)
  27. char *st_line;
  28. char *st_cptr;
  29. {
  30. register char *s;
  31. if (st_line == 0) return;
  32. for (s = st_line; *s != '\n'; ++s)
  33. {
  34. if (isprint(*s) || *s == '\t')
  35. putc(*s, stderr);
  36. else
  37. putc('?', stderr);
  38. }
  39. putc('\n', stderr);
  40. for (s = st_line; s < st_cptr; ++s)
  41. {
  42. if (*s == '\t')
  43. putc('\t', stderr);
  44. else
  45. putc(' ', stderr);
  46. }
  47. putc('^', stderr);
  48. putc('\n', stderr);
  49. }
  50. syntax_error(st_lineno, st_line, st_cptr)
  51. int st_lineno;
  52. char *st_line;
  53. char *st_cptr;
  54. {
  55. fprintf(stderr, "%s: e - line %d of \"%s\", syntax error\n",
  56. myname, st_lineno, input_file_name);
  57. print_pos(st_line, st_cptr);
  58. done(1);
  59. }
  60. unterminated_comment(c_lineno, c_line, c_cptr)
  61. int c_lineno;
  62. char *c_line;
  63. char *c_cptr;
  64. {
  65. fprintf(stderr, "%s: e - line %d of \"%s\", unmatched /*\n",
  66. myname, c_lineno, input_file_name);
  67. print_pos(c_line, c_cptr);
  68. done(1);
  69. }
  70. unterminated_string(s_lineno, s_line, s_cptr)
  71. int s_lineno;
  72. char *s_line;
  73. char *s_cptr;
  74. {
  75. fprintf(stderr, "%s: e - line %d of \"%s\", unterminated string\n",
  76. myname, s_lineno, input_file_name);
  77. print_pos(s_line, s_cptr);
  78. done(1);
  79. }
  80. unterminated_text(t_lineno, t_line, t_cptr)
  81. int t_lineno;
  82. char *t_line;
  83. char *t_cptr;
  84. {
  85. fprintf(stderr, "%s: e - line %d of \"%s\", unmatched %%{\n",
  86. myname, t_lineno, input_file_name);
  87. print_pos(t_line, t_cptr);
  88. done(1);
  89. }
  90. unterminated_union(u_lineno, u_line, u_cptr)
  91. int u_lineno;
  92. char *u_line;
  93. char *u_cptr;
  94. {
  95. fprintf(stderr, "%s: e - line %d of \"%s\", unterminated %%union \
  96. declaration\n", myname, u_lineno, input_file_name);
  97. print_pos(u_line, u_cptr);
  98. done(1);
  99. }
  100. over_unionized(u_cptr)
  101. char *u_cptr;
  102. {
  103. fprintf(stderr, "%s: e - line %d of \"%s\", too many %%union \
  104. declarations\n", myname, lineno, input_file_name);
  105. print_pos(line, u_cptr);
  106. done(1);
  107. }
  108. illegal_tag(t_lineno, t_line, t_cptr)
  109. int t_lineno;
  110. char *t_line;
  111. char *t_cptr;
  112. {
  113. fprintf(stderr, "%s: e - line %d of \"%s\", illegal tag\n",
  114. myname, t_lineno, input_file_name);
  115. print_pos(t_line, t_cptr);
  116. done(1);
  117. }
  118. illegal_character(c_cptr)
  119. char *c_cptr;
  120. {
  121. fprintf(stderr, "%s: e - line %d of \"%s\", illegal character\n",
  122. myname, lineno, input_file_name);
  123. print_pos(line, c_cptr);
  124. done(1);
  125. }
  126. used_reserved(s)
  127. char *s;
  128. {
  129. fprintf(stderr, "%s: e - line %d of \"%s\", illegal use of reserved symbol \
  130. %s\n", myname, lineno, input_file_name, s);
  131. done(1);
  132. }
  133. tokenized_start(s)
  134. char *s;
  135. {
  136. fprintf(stderr, "%s: e - line %d of \"%s\", the start symbol %s cannot be \
  137. declared to be a token\n", myname, lineno, input_file_name, s);
  138. done(1);
  139. }
  140. retyped_warning(s)
  141. char *s;
  142. {
  143. fprintf(stderr, "%s: w - line %d of \"%s\", the type of %s has been \
  144. redeclared\n", myname, lineno, input_file_name, s);
  145. }
  146. reprec_warning(s)
  147. char *s;
  148. {
  149. fprintf(stderr, "%s: w - line %d of \"%s\", the precedence of %s has been \
  150. redeclared\n", myname, lineno, input_file_name, s);
  151. }
  152. revalued_warning(s)
  153. char *s;
  154. {
  155. fprintf(stderr, "%s: w - line %d of \"%s\", the value of %s has been \
  156. redeclared\n", myname, lineno, input_file_name, s);
  157. }
  158. terminal_start(s)
  159. char *s;
  160. {
  161. fprintf(stderr, "%s: e - line %d of \"%s\", the start symbol %s is a \
  162. token\n", myname, lineno, input_file_name, s);
  163. done(1);
  164. }
  165. restarted_warning()
  166. {
  167. fprintf(stderr, "%s: w - line %d of \"%s\", the start symbol has been \
  168. redeclared\n", myname, lineno, input_file_name);
  169. }
  170. no_grammar()
  171. {
  172. fprintf(stderr, "%s: e - line %d of \"%s\", no grammar has been \
  173. specified\n", myname, lineno, input_file_name);
  174. done(1);
  175. }
  176. terminal_lhs(s_lineno)
  177. int s_lineno;
  178. {
  179. fprintf(stderr, "%s: e - line %d of \"%s\", a token appears on the lhs \
  180. of a production\n", myname, s_lineno, input_file_name);
  181. done(1);
  182. }
  183. prec_redeclared()
  184. {
  185. fprintf(stderr, "%s: w - line %d of \"%s\", conflicting %%prec \
  186. specifiers\n", myname, lineno, input_file_name);
  187. }
  188. unterminated_action(a_lineno, a_line, a_cptr)
  189. int a_lineno;
  190. char *a_line;
  191. char *a_cptr;
  192. {
  193. fprintf(stderr, "%s: e - line %d of \"%s\", unterminated action\n",
  194. myname, a_lineno, input_file_name);
  195. print_pos(a_line, a_cptr);
  196. done(1);
  197. }
  198. dollar_warning(a_lineno, i)
  199. int a_lineno;
  200. int i;
  201. {
  202. fprintf(stderr, "%s: w - line %d of \"%s\", $%d references beyond the \
  203. end of the current rule\n", myname, a_lineno, input_file_name, i);
  204. }
  205. dollar_error(a_lineno, a_line, a_cptr)
  206. int a_lineno;
  207. char *a_line;
  208. char *a_cptr;
  209. {
  210. fprintf(stderr, "%s: e - line %d of \"%s\", illegal $-name\n",
  211. myname, a_lineno, input_file_name);
  212. print_pos(a_line, a_cptr);
  213. done(1);
  214. }
  215. untyped_lhs()
  216. {
  217. fprintf(stderr, "%s: e - line %d of \"%s\", $$ is untyped\n",
  218. myname, lineno, input_file_name);
  219. done(1);
  220. }
  221. untyped_rhs(i, s)
  222. int i;
  223. char *s;
  224. {
  225. fprintf(stderr, "%s: e - line %d of \"%s\", $%d (%s) is untyped\n",
  226. myname, lineno, input_file_name, i, s);
  227. done(1);
  228. }
  229. unknown_rhs(i)
  230. int i;
  231. {
  232. fprintf(stderr, "%s: e - line %d of \"%s\", $%d is untyped\n",
  233. myname, lineno, input_file_name, i);
  234. done(1);
  235. }
  236. default_action_warning()
  237. {
  238. fprintf(stderr, "%s: w - line %d of \"%s\", the default action assigns an \
  239. undefined value to $$\n", myname, lineno, input_file_name);
  240. }
  241. undefined_goal(s)
  242. char *s;
  243. {
  244. fprintf(stderr, "%s: e - the start symbol %s is undefined\n", myname, s);
  245. done(1);
  246. }
  247. undefined_symbol_warning(s)
  248. char *s;
  249. {
  250. fprintf(stderr, "%s: w - the symbol %s is undefined\n", myname, s);
  251. }