Borland C++ build doesn't depend on Cygwin configure
[fw/sdcc] / src / SDCC.lex
index b9aafd72112dabe0b186328ee83d92d0a9d5b1af..723352b42b82d5710f9148dccb381c6ee48a5a95 100644 (file)
@@ -76,7 +76,10 @@ struct options  save_options  ;
      P_NOGCSE    ,
      P_CALLEE_SAVES,
      P_EXCLUDE   ,
-     P_LOOPREV
+     P_NOIV      ,
+     P_LOOPREV   ,
+     P_OVERLAY_             /* I had a strange conflict with P_OVERLAY while */
+                    /* cross-compiling for MINGW32 with gcc 3.2 */
  };
 
 %}
@@ -172,6 +175,8 @@ struct options  save_options  ;
 "xdata"        { count(); TKEYWORD(XDATA); }
 "..."         { count(); return(VAR_ARGS);}
 "__typeof"     { count(); return TYPEOF;}
+"_JavaNative"  { count(); TKEYWORD(JAVANATIVE);}
+"_overlay"     { count(); TKEYWORD(OVERLAY);}
 {L}({L}|{D})*  { count(); return(check_type()); }
 0[xX]{H}+{IS}? { count(); yylval.val = constVal(yytext); return(CONSTANT); }
 0{D}+{IS}?     { count(); yylval.val = constVal(yytext); return(CONSTANT); }
@@ -454,9 +459,14 @@ void doPragma (int op, char *cp)
     case P_EXCLUDE:
        parseWithComma(options.excludeRegs, Safe_strdup(cp));
        break;
+    case P_NOIV:
+       options.noiv = 1;
+       break;
     case P_LOOPREV:
        optimize.noLoopReverse = 1;
        break;
+    case P_OVERLAY_:
+       break; /* notyet */
     }
 }
 
@@ -537,6 +547,11 @@ int process_pragma(char *s)
        return 0;
     }
 
+    if (strncmp(cp,PRAGMA_NOIV,strlen(PRAGMA_NOIV)) == 0) {
+       doPragma(P_NOIV,cp+strlen(PRAGMA_NOIV));
+       return 0;
+    }
+
     if (strncmp(cp,PRAGMA_NOLOOPREV,strlen(PRAGMA_NOLOOPREV)) == 0) {
        doPragma(P_LOOPREV,NULL);
        return 0;
@@ -568,10 +583,13 @@ int yyerror(char *s)
 {
    fflush(stdout);
 
-   if (yylineno && filename)
-       fprintf(stdout,"\n%s:%d: %s: token -> '%s' ; column %d\n",
-               filename,yylineno,
-               s,yytext,column);
-   fatalError++;
+   if (yylineno && filename) {
+     fprintf(stdout,"\n%s:%d: %s: token -> '%s' ; column %d\n",
+            filename,yylineno,
+            s,yytext,column);
+     fatalError++;
+   } else {
+     // this comes from an empy file, no problem
+   }
    return 0;
 }