Tue, 14 Aug 2012 00:59:39 +0300
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