Added an alternative (C-style) assignment operator

This commit is contained in:
NovaRain
2020-01-08 16:17:46 +08:00
parent bdb092d9fb
commit c9c1043a8c
+10 -1
View File
@@ -291,6 +291,11 @@ static int expect(int what, int hit, int miss) {
else { ungetChar(); return miss; }
}
/* added for alternative assignment operator '=' */
static int expectAssign(int what, int hit, int miss) {
return (getChar() == what) ? hit : miss;
}
static int validSymbolChar(int c) {
return (c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
@@ -674,9 +679,13 @@ top:
ret = T_CONSTANT;
break;
/* added for alternative assignment operator '=' */
#define EXPECT_ASSIGN(c, x, y, z) case x: ret = expectAssign(x, y, z); break;
EXPECT_ASSIGN('=', '=', T_EQUAL, T_ASSIGN);
#define EXPECT(x, y, z) case x: ret = expect(y, z, x); break;
EXPECT(':', '=', T_ASSIGN);
EXPECT('=', '=', T_EQUAL);
// EXPECT('=', '=', T_EQUAL);
EXPECT('>', '=', T_GREATER_EQUAL);
EXPECT('<', '=', T_LESS_EQUAL);
EXPECT('!', '=', T_NOT_EQUAL);