\r
// MACROS ------------------------------------------------------------------\r
\r
-#define VERSION_TEXT "1.40"\r
+#define VERSION_TEXT "1.42"\r
#define COPYRIGHT_YEARS_TEXT "1995"\r
\r
// TYPES -------------------------------------------------------------------\r
fprintf(stderr, "ZDoom changes and language extensions by Randy Heit\n");\r
fprintf(stderr, "Further changes by Brad Carney\n");\r
fprintf(stderr, "Even more changes by James Bentler\n");\r
+ fprintf(stderr, "Some additions by Michael \"Necromage\" Weber\n");\r
fprintf(stderr, "Error reporting improvements and limit expansion by Ty Halderman\n");\r
}\r
\r
TK_MULASSIGN,\r
TK_DIVASSIGN,\r
TK_MODASSIGN,\r
+ TK_ANDASSIGN,\r
+ TK_EORASSIGN,\r
+ TK_ORASSIGN,\r
+ TK_LSASSIGN,\r
+ TK_RSASSIGN,\r
TK_NONE\r
};\r
\r
static tokenType_t tokenLookup[] =\r
{\r
TK_ASSIGN, TK_ADDASSIGN, TK_SUBASSIGN,\r
- TK_MULASSIGN, TK_DIVASSIGN, TK_MODASSIGN\r
+ TK_MULASSIGN, TK_DIVASSIGN, TK_MODASSIGN,\r
+ TK_ANDASSIGN, TK_EORASSIGN, TK_ORASSIGN,\r
+ TK_LSASSIGN, TK_RSASSIGN\r
};\r
static symbolType_t symbolLookup[] =\r
{\r
SY_SCRIPTVAR, SY_MAPVAR, SY_WORLDVAR, SY_GLOBALVAR, SY_MAPARRAY,\r
SY_WORLDARRAY, SY_GLOBALARRAY\r
};\r
- static pcd_t assignmentLookup[6][7] =\r
+ static pcd_t assignmentLookup[11][7] =\r
{\r
{ PCD_ASSIGNSCRIPTVAR, PCD_ASSIGNMAPVAR, PCD_ASSIGNWORLDVAR, PCD_ASSIGNGLOBALVAR, PCD_ASSIGNMAPARRAY, PCD_ASSIGNWORLDARRAY, PCD_ASSIGNGLOBALARRAY },\r
{ PCD_ADDSCRIPTVAR, PCD_ADDMAPVAR, PCD_ADDWORLDVAR, PCD_ADDGLOBALVAR, PCD_ADDMAPARRAY, PCD_ADDWORLDARRAY, PCD_ADDGLOBALARRAY },\r
{ PCD_SUBSCRIPTVAR, PCD_SUBMAPVAR, PCD_SUBWORLDVAR, PCD_SUBGLOBALVAR, PCD_SUBMAPARRAY, PCD_SUBWORLDARRAY, PCD_SUBGLOBALARRAY },\r
{ PCD_MULSCRIPTVAR, PCD_MULMAPVAR, PCD_MULWORLDVAR, PCD_MULGLOBALVAR, PCD_MULMAPARRAY, PCD_MULWORLDARRAY, PCD_MULGLOBALARRAY },\r
{ PCD_DIVSCRIPTVAR, PCD_DIVMAPVAR, PCD_DIVWORLDVAR, PCD_DIVGLOBALVAR, PCD_DIVMAPARRAY, PCD_DIVWORLDARRAY, PCD_DIVGLOBALARRAY },\r
- { PCD_MODSCRIPTVAR, PCD_MODMAPVAR, PCD_MODWORLDVAR, PCD_MODGLOBALVAR, PCD_MODMAPARRAY, PCD_MODWORLDARRAY, PCD_MODGLOBALARRAY }\r
+ { PCD_MODSCRIPTVAR, PCD_MODMAPVAR, PCD_MODWORLDVAR, PCD_MODGLOBALVAR, PCD_MODMAPARRAY, PCD_MODWORLDARRAY, PCD_MODGLOBALARRAY },\r
+ { PCD_ANDSCRIPTVAR, PCD_ANDMAPVAR, PCD_ANDWORLDVAR, PCD_ANDGLOBALVAR, PCD_ANDMAPARRAY, PCD_ANDWORLDARRAY, PCD_ANDGLOBALARRAY },\r
+ { PCD_EORSCRIPTVAR, PCD_EORMAPVAR, PCD_EORWORLDVAR, PCD_EORGLOBALVAR, PCD_EORMAPARRAY, PCD_EORWORLDARRAY, PCD_EORGLOBALARRAY },\r
+ { PCD_ORSCRIPTVAR, PCD_ORMAPVAR, PCD_ORWORLDVAR, PCD_ORGLOBALVAR, PCD_ORMAPARRAY, PCD_ORWORLDARRAY, PCD_ORGLOBALARRAY },\r
+ { PCD_LSSCRIPTVAR, PCD_LSMAPVAR, PCD_LSWORLDVAR, PCD_LSGLOBALVAR, PCD_LSMAPARRAY, PCD_LSWORLDARRAY, PCD_LSGLOBALARRAY },\r
+ { PCD_RSSCRIPTVAR, PCD_RSMAPVAR, PCD_RSWORLDVAR, PCD_RSGLOBALVAR, PCD_RSMAPARRAY, PCD_RSWORLDARRAY, PCD_RSGLOBALARRAY }\r
};\r
\r
for(i = 0; i < ARRAY_SIZE(tokenLookup); ++i)\r
}\r
else if(Chr == '<')\r
{\r
- tk_Token = TK_LSHIFT;\r
NextChr();\r
+ if(Chr == '=')\r
+ {\r
+ tk_Token = TK_LSASSIGN;\r
+ NextChr();\r
+ }\r
+ else\r
+ {\r
+ tk_Token = TK_LSHIFT;\r
+ }\r
+ \r
}\r
else\r
{\r
}\r
else if(Chr == '>')\r
{\r
- tk_Token = TK_RSHIFT;\r
NextChr();\r
+ if(Chr == '=')\r
+ {\r
+ tk_Token = TK_RSASSIGN;\r
+ NextChr();\r
+ }\r
+ else\r
+ {\r
+ tk_Token = TK_RSHIFT;\r
+ }\r
}\r
else\r
{\r
tk_Token = TK_ANDLOGICAL;\r
NextChr();\r
}\r
+ else if(Chr == '=')\r
+ {\r
+ tk_Token = TK_ANDASSIGN;\r
+ NextChr();\r
+ }\r
else\r
{\r
tk_Token = TK_ANDBITWISE;\r
tk_Token = TK_ORLOGICAL;\r
NextChr();\r
}\r
+ else if(Chr == '=')\r
+ {\r
+ tk_Token = TK_ORASSIGN;\r
+ NextChr();\r
+ }\r
else\r
{\r
tk_Token = TK_ORBITWISE;\r
tk_Token = TK_NUMBERSIGN;\r
break;\r
case '^':\r
- tk_Token = TK_EORBITWISE;\r
+ if(Chr == '=')\r
+ {\r
+ tk_Token = TK_EORASSIGN;\r
+ NextChr();\r
+ }\r
+ else\r
+ {\r
+ tk_Token = TK_EORBITWISE;\r
+ }\r
break;\r
case '~':\r
tk_Token = TK_TILDE;\r