extern int lineno, column;
extern char *filename ;
-extern char *fullSrcFileName ;
int yylineno = 1 ;
void count() ;
int process_pragma(char *);
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 */
};
%}
"while" { count(); return(WHILE); }
"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); }
{D}+{IS}? { count(); yylval.val = constVal(yytext); return(CONSTANT); }
-'(\\.|[^\\'])+' { count();yylval.val = charVal (yytext); return(CONSTANT); }
+'(\\.|[^\\'])+' { count();yylval.val = charVal (yytext); return(CONSTANT); /* ' make syntax highliter happy */}
{D}+{E}{FS}? { count(); yylval.val = constFloatVal(yytext);return(CONSTANT); }
{D}*"."{D}+({E})?{FS}? { count(); yylval.val = constFloatVal(yytext);return(CONSTANT); }
{D}+"."{D}*({E})?{FS}? { count(); yylval.val = constFloatVal(yytext);return(CONSTANT); }
}
. { count() ; }
%%
-
+
int checkCurrFile ( char *s)
{
char lineNum[10] ;
/* get the currentfile name info */
s++ ;
- if ( strncmp(s,fullSrcFileName,strlen(fullSrcFileName)) == 0) {
+ /* in c1mode fullSrcFileName is NULL */
+ if ( fullSrcFileName &&
+ strncmp(s,fullSrcFileName,strlen(fullSrcFileName)) == 0) {
lineno = yylineno = lNum;
currFname = fullSrcFileName ;
} else {
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 */
}
}
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;
{
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;
}