Diff for /gforth/vmgen-ex/mini.y between versions 1.2 and 1.5

version 1.2, 2001/04/29 11:48:21 version 1.5, 2003/08/25 14:17:55
Line 1 Line 1
 /* front-end compiler for vmgen example  /* front-end compiler for vmgen example
   
   Copyright (C) 2001 Free Software Foundation, Inc.    Copyright (C) 2001,2002,2003 Free Software Foundation, Inc.
   
   This file is part of Gforth.    This file is part of Gforth.
   
Line 40  int vm_debug; Line 40  int vm_debug;
   
 void yyerror(char *s)  void yyerror(char *s)
 {  {
     fprintf (stderr, "%s: %d: %s\n", program_name, yylineno, s);  #if 1
     /* for pure flex call */
     fprintf(stderr, "%s: %s\n", program_name, s);
   #else
     /* lex or flex -l supports yylineno */
     fprintf (stderr, "%s: %d: %s\n", program_name, yylineno, s);
   #endif
 }  }
   
 #include "mini-gen.i"  #include "mini-gen.i"
Line 94  stats: stats stat ';' Line 100  stats: stats stat ';'
   
 stat: IF expr THEN { gen_zbranch(&vmcodep, 0); $<instp>$ = vmcodep; }  stat: IF expr THEN { gen_zbranch(&vmcodep, 0); $<instp>$ = vmcodep; }
       stats { $<instp>$ = $<instp>4; }         stats { $<instp>$ = $<instp>4; } 
       elsepart END IF { BB_BOUNDARY; $<instp>7[-1] = vmcodep; }        elsepart END IF { BB_BOUNDARY; $<instp>7[-1] = (Inst)vmcodep; }
     | WHILE   { BB_BOUNDARY; $<instp>$ = vmcodep; }       | WHILE   { BB_BOUNDARY; $<instp>$ = vmcodep; } 
       expr DO { gen_zbranch(&vmcodep, 0); $<instp>$ = vmcodep; }        expr DO { gen_zbranch(&vmcodep, 0); $<instp>$ = vmcodep; }
       stats END WHILE { gen_branch(&vmcodep, $<instp>2); $<instp>5[-1] = vmcodep; }        stats END WHILE { gen_branch(&vmcodep, $<instp>2); $<instp>5[-1] = (Inst)vmcodep; }
     | IDENT BECOMES expr        { gen_storelocal(&vmcodep,  var_offset($1)); }      | IDENT BECOMES expr        { gen_storelocal(&vmcodep,  var_offset($1)); }
     | PRINT expr                { gen_print(&vmcodep); }      | PRINT expr                { gen_print(&vmcodep); }
     | expr                      { gen_drop(&vmcodep); }      | expr                      { gen_drop(&vmcodep); }
     ;      ;
   
 elsepart: ELSE { gen_branch(&vmcodep, 0); $<instp>$ = vmcodep; $<instp>0[-1] = vmcodep; }  elsepart: ELSE { gen_branch(&vmcodep, 0); $<instp>$ = vmcodep; $<instp>0[-1] = (Inst)vmcodep; }
           stats { $$ = $<instp>2; }            stats { $$ = $<instp>2; }
         | { $$ = $<instp>0; }          | { $$ = $<instp>0; }
         ;          ;

Removed from v.1.2  
changed lines
  Added in v.1.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>