#include <string.h>
#include <ctype.h>
#include "common.h"
+#include "newalloc.h"
char *stringLiteral();
char *currFname;
"enum" { count(); return(ENUM); }
"extern" { count(); return(EXTERN); }
"far" { count(); TKEYWORD(XDATA); }
-"flash" { count(); TKEYWORD(FLASH); }
+"eeprom" { count(); TKEYWORD(EEPROM); }
"float" { count(); return(FLOAT); }
+"flash" { count(); TKEYWORD(CODE);}
"for" { count(); return(FOR); }
"goto" { count(); return(GOTO); }
"idata" { count(); TKEYWORD(IDATA);}
"if" { count(); return(IF); }
"int" { count(); return(INT); }
"interrupt" { count(); return(INTERRUPT);}
+"nonbanked" { count(); TKEYWORD(NONBANKED);}
+"banked" { count(); TKEYWORD(BANKED);}
"long" { count(); return(LONG); }
"near" { count(); TKEYWORD(DATA);}
-"pdata" { count(); return(PDATA); }
+"pdata" { count(); TKEYWORD(PDATA); }
"reentrant" { count(); TKEYWORD(REENTRANT);}
"register" { count(); return(REGISTER); }
"return" { count(); return(RETURN); }
"short" { count(); return(SHORT); }
"signed" { count(); return(SIGNED); }
"sizeof" { count(); return(SIZEOF); }
+"sram" { count(); TKEYWORD(XDATA);}
"static" { count(); return(STATIC); }
"struct" { count(); return(STRUCT); }
"switch" { count(); return(SWITCH); }
"xdata" { count(); TKEYWORD(XDATA); }
"_data" { count(); TKEYWORD(_NEAR); }
"_code" { count(); TKEYWORD(_CODE); }
-"_flash" { count(); TKEYWORD(_FLASH); }
+"_eeprom" { count(); TKEYWORD(_EEPROM); }
+"_flash" { count(); TKEYWORD(_CODE); }
"_generic" { count(); TKEYWORD(_GENERIC); }
"_near" { count(); TKEYWORD(_NEAR); }
+"_sram" { count(); TKEYWORD(_XDATA);}
"_xdata" { count(); TKEYWORD(_XDATA);}
"_pdata" { count(); TKEYWORD(_PDATA); }
"_idata" { count(); TKEYWORD(_IDATA); }
/* mark the end of the filename */
while (*s != '"') s++;
*s = '\0';
- ALLOC_ATOMIC(currFname,strlen(sb)+1);
+ currFname = Safe_calloc(1,strlen(sb)+1);
strcpy(currFname,sb);
yylineno = lNum - 2;
}
(*s != '\n'))
s++ ;
+ /* First give the port a chance */
+ if (port->process_pragma && !port->process_pragma(cp))
+ return 0;
+
/* now compare and do what needs to be done */
if (strncmp(cp,PRAGMA_SAVE,strlen(PRAGMA_SAVE)) == 0) {
doPragma(P_SAVE,cp+strlen(PRAGMA_SAVE));
return 0;
}
+
+extern int fatalError;
+
+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++;
+ return 0;
+}