cvsuser     03/10/13 00:54:46

  Modified:    languages/imcc ChangeLog debug.c debug.h imcc.l imcc.y
                        main.c
  Log:
  proper error reporting in macros; allow macro def at file level
  
  Revision  Changes    Path
  1.37      +4 -0      parrot/languages/imcc/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/ChangeLog,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -w -r1.36 -r1.37
  --- ChangeLog 29 Sep 2003 15:01:09 -0000      1.36
  +++ ChangeLog 13 Oct 2003 07:54:46 -0000      1.37
  @@ -1,3 +1,7 @@
  +- 2003-10-13 leo
  +     * report error location inside macros too
  +     * allow macro defintions outsied of subs
  +
   - 2003-09-29 leo
   
        * new .nci_call directive
  
  
  
  1.26      +1 -2      parrot/languages/imcc/debug.c
  
  Index: debug.c
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/debug.c,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -w -r1.25 -r1.26
  --- debug.c   1 Oct 2003 10:49:39 -0000       1.25
  +++ debug.c   13 Oct 2003 07:54:46 -0000      1.26
  @@ -27,8 +27,7 @@
       fprintf(stderr, "error:imcc:");
       imcc_vfprintf(stderr, fmt, ap);
       va_end(ap);
  -    fprintf(stderr, "\nin file '%s' line %d\n", file, lin);
  -    print_inc();
  +    print_inc(file, lin);
       /* TODO through compiler exception */
       exit(code);
   }
  
  
  
  1.12      +1 -1      parrot/languages/imcc/debug.h
  
  Index: debug.h
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/debug.h,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -w -r1.11 -r1.12
  --- debug.h   4 Sep 2003 13:53:12 -0000       1.11
  +++ debug.h   13 Oct 2003 07:54:46 -0000      1.12
  @@ -15,7 +15,7 @@
   
   void fatal(int code, const char *func, const char *fmt, ...);
   void fataly(int code, const char *func, int line, const char *fmt, ...);
  -void print_inc(void);
  +void print_inc(const char *file, int lin);
   void warning(Parrot_Interp interpreter, const char *func, const char *fmt, ...);
   void debug(Parrot_Interp interpreter, int level, const char *fmt, ...);
   void info(Parrot_Interp interpreter, int level, const char *fmt, ...);
  
  
  
  1.65      +11 -1     parrot/languages/imcc/imcc.l
  
  Index: imcc.l
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/imcc.l,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -w -r1.64 -r1.65
  --- imcc.l    5 Oct 2003 10:26:42 -0000       1.64
  +++ imcc.l    13 Oct 2003 07:54:46 -0000      1.65
  @@ -45,6 +45,7 @@
       char *file;
       int line;
       int pasm_file;      /* pasm_file mode of previous frame */
  +    int is_macro;
   };
   
   struct macro_frame_t *frames = NULL;
  @@ -668,6 +669,11 @@
       m = find_macro(name);
       frame->params = &m->params;
       if (m) {
  +        /* remember macro name for error reporting
  +         * properly
  +         */
  +        sourcefile = name;
  +        frame->is_macro = 1;
        /* whitespace can be savely ignored */
        do {
            c = input();
  @@ -784,10 +790,14 @@
   }
   
   void
  -print_inc(void)
  +print_inc(const char *file, int lin)
   {
       struct macro_frame_t *f;
   
  +    if (frames->is_macro)
  +        fprintf(stderr, "\nin macro '.%s' line %d\n", file, lin);
  +    else
  +        fprintf(stderr, "\nin file '%s' line %d\n", file, lin);
       for (f = frames; f; f = f->next) {
           if (f->file && strcmp(f->file, sourcefile))
               f->next ?
  
  
  
  1.95      +1 -0      parrot/languages/imcc/imcc.y
  
  Index: imcc.y
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/imcc.y,v
  retrieving revision 1.94
  retrieving revision 1.95
  diff -u -w -r1.94 -r1.95
  --- imcc.y    30 Sep 2003 16:03:51 -0000      1.94
  +++ imcc.y    13 Oct 2003 07:54:46 -0000      1.95
  @@ -246,6 +246,7 @@
   compilation_unit:    sub
           | pcc_sub
           | emit
  +        | MACRO '\n'                  { $$ = 0; }
           | '\n'  { $$ = 0; }
       ;
   
  
  
  
  1.54      +2 -1      parrot/languages/imcc/main.c
  
  Index: main.c
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/main.c,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -w -r1.53 -r1.54
  --- main.c    12 Oct 2003 10:53:32 -0000      1.53
  +++ main.c    13 Oct 2003 07:54:46 -0000      1.54
  @@ -316,7 +316,8 @@
               case ENDNAMESPACE:  printf(".endnamespace"); break;
               case CONST:         printf(".const "); break;
               case PARAM:         printf(".param "); break;
  -            case MACRO:         break;
  +            case MACRO:         yylex(&val, interpreter);
  +                                break; /* swallow nl */
   
               case END:           printf("end");break;
               case GOTO:          printf("goto ");break;
  
  
  

Reply via email to