main.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
  3. * See the copyright notice in the ACK home directory, in the file "Copyright".
  4. */
  5. #include <stdlib.h>
  6. #include <stdio.h>
  7. #include "param.h"
  8. #include "varinfo.h"
  9. #include "error.h"
  10. #include "emlookup.h"
  11. #include "cvtkeywords.h"
  12. #include "expr.h"
  13. #include "output.h"
  14. #include "hall.h"
  15. #include <missing_proto.h>
  16. /* From YACC lexer */
  17. void yyparse(void);
  18. char *filename;
  19. char *beg_sbrk;
  20. int main(int argc, char *argv[])
  21. {
  22. extern int nerrors;
  23. extern int code_in_c;
  24. extern int tabledebug;
  25. extern int verbose;
  26. beg_sbrk = sbrk(0);
  27. while (argc >1 && argv[1][0]=='-') {
  28. switch(argv[1][1]) {
  29. case 'c':
  30. code_in_c = 0;
  31. break;
  32. case 'd':
  33. tabledebug++;
  34. break;
  35. case 'v':
  36. verbose++;
  37. break;
  38. default:
  39. error("Unknown flag -%c",argv[1][1]);
  40. }
  41. argc--; argv++;
  42. }
  43. if (argc==2) {
  44. if (freopen(argv[1],"r",stdin)==NULL) {
  45. error("Can't open %s",argv[1]);
  46. exit(-1);
  47. }
  48. filename = argv[1];
  49. }
  50. else if (argc == 1) {
  51. filename = "";
  52. } else
  53. error("Usage: %s [-c] [-d] [-v] [table]",argv[0]);
  54. initemhash();
  55. enterkeyw();
  56. initnodes();
  57. initio();
  58. yyparse();
  59. if (nerrors==0) {
  60. finishio();
  61. statistics();
  62. if (verbose)
  63. hallverbose();
  64. } else {
  65. errorexit();
  66. }
  67. exit(nerrors==0 ? 0 : -1);
  68. }