Added support for operators &&, ||, &, | and ^

Tue, 14 Aug 2012 00:59:39 +0300

author
Teemu Piippo <crimsondusk64@gmail.com>
date
Tue, 14 Aug 2012 00:59:39 +0300
changeset 53
9ef7e549391f
parent 52
f2596a239ea1
child 54
8cc91ef94754

Added support for operators &&, ||, &, | and ^

parser.cxx file | annotate | diff | comparison | revisions
scriptreader.h file | annotate | diff | comparison | revisions
--- a/parser.cxx	Tue Aug 14 00:48:02 2012 +0300
+++ b/parser.cxx	Tue Aug 14 00:59:39 2012 +0300
@@ -680,6 +680,11 @@
 	case OPER_GREATERTHANEQUALS: return DH_GREATERTHANEQUALS;
 	case OPER_LEFTSHIFT: return DH_LSHIFT;
 	case OPER_RIGHTSHIFT: return DH_RSHIFT;
+	case OPER_OR: return DH_ORLOGICAL;
+	case OPER_AND: return DH_ANDLOGICAL;
+	case OPER_BITWISEOR: return DH_ORBITWISE;
+	case OPER_BITWISEEOR: return DH_EORBITWISE;
+	case OPER_BITWISEAND: return DH_ANDBITWISE;
 	}
 	
 	error ("DataHeaderByOperator: couldn't find dataheader for operator %d!\n", oper);
@@ -729,12 +734,13 @@
 	
 	// Check one-char operators
 	bool equalsnext = ISNEXT ("=");
-	bool morenext = ISNEXT (">");
-	bool lessnext = ISNEXT ("<");
 	
 	int o =	(!oper.compare ("=") && !equalsnext) ? OPER_ASSIGN :
-		(!oper.compare (">") && !equalsnext && !morenext) ? OPER_GREATERTHAN :
-		(!oper.compare ("<") && !equalsnext && !lessnext) ? OPER_LESSTHAN :
+		(!oper.compare (">") && !equalsnext && !ISNEXT (">")) ? OPER_GREATERTHAN :
+		(!oper.compare ("<") && !equalsnext && !ISNEXT ("<")) ? OPER_LESSTHAN :
+		(!oper.compare ("&") && !ISNEXT ("&")) ? OPER_BITWISEAND :
+		(!oper.compare ("|") && !ISNEXT ("|")) ? OPER_BITWISEOR :
+		!oper.compare ("^") ? OPER_BITWISEEOR :
 		!oper.compare ("+") ? OPER_ADD :
 		!oper.compare ("-") ? OPER_SUBTRACT :
 		!oper.compare ("*") ? OPER_MULTIPLY :
@@ -759,6 +765,8 @@
 		!oper.compare ("!=") ? OPER_NOTEQUALS :
 		!oper.compare (">=") ? OPER_GREATERTHANEQUALS :
 		!oper.compare ("<=") ? OPER_LESSTHANEQUALS :
+		!oper.compare ("&&") ? OPER_AND :
+		!oper.compare ("||") ? OPER_OR :
 		(!oper.compare ("<<") && !equalsnext) ? OPER_LEFTSHIFT :
 		(!oper.compare (">>") && !equalsnext) ? OPER_RIGHTSHIFT :
 		-1;
--- a/scriptreader.h	Tue Aug 14 00:48:02 2012 +0300
+++ b/scriptreader.h	Tue Aug 14 00:59:39 2012 +0300
@@ -176,7 +176,12 @@
 	OPER_LEFTSHIFT,
 	OPER_RIGHTSHIFT,
 	OPER_ASSIGNLEFTSHIFT,
-	OPER_ASSIGNRIGHTSHIFT,
+	OPER_ASSIGNRIGHTSHIFT, // -- 20
+	OPER_OR,
+	OPER_AND,
+	OPER_BITWISEOR,
+	OPER_BITWISEAND,
+	OPER_BITWISEEOR,
 };
 
 // Mark types

mercurial