switch(c) {
case '!':
return 4;
- case '*': case '/': case '\\': case '%':
+ case '*': case '/': case '\\': case '%':
+ case '|': case '&': case '^':
return 3;
case '+': case '-':
return 2;
switch(c) {
// left to right
case '*': case '/': case '%': case '+': case '-':
+ case '|': case '&': case '^':
return true;
// right to left
case '=': case '!':
{
switch(c) {
case '*': case '/': case '%': case '+': case '-': case '=':
+ case '|': case '&': case '^':
return 2;
case '!':
return 1;
return 0;
}
-#define is_operator(c) (c == '+' || c == '-' || c == '/' || c == '*' || c == '!' || c == '%' || c == '=')
+#define is_operator(c) (c == '+' || c == '-' || c == '/' || c == '*' || c == '!' || c == '%' || c == '=' || c == '|' || c == '&' || c == '^')
#define is_function(c) (c >= 'A' && c <= 'Z')
#define is_ident(c) ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z'))
return v1 / v2;
case '\\':
return (int)v1 % (int)v2;
-
+ case '|':
+ return (int)v1 | (int)v2;
+ case '&':
+ return (int)v1 & (int)v2;
+ case '^':
+ return (int)v1 ^ (int)v2;
}
return 0;
}
static bool isoperator(TCHAR **cp)
{
TCHAR c = **cp;
- return c == '+' || c == '-' || c == '/' || c == '*' || c == '(' || c == ')';
+ return c == '+' || c == '-' || c == '/' || c == '*' || c == '(' || c == ')' || c == '|' || c == '&' || c == '^';
}
static void ignore_ws (TCHAR **c)