This commit is contained in:
lunarcleint
2023-04-09 16:51:04 -07:00
parent b3b512d027
commit 812abae6e5
2 changed files with 16 additions and 7 deletions
+2 -1
View File
@@ -162,7 +162,7 @@ class Interp {
binops.set("&&", function(e1, e2) return me.expr(e1) == true && me.expr(e2) == true);
binops.set("=", assign);
binops.set("??", function(e1, e2) {
var expr1:Dynamic = me.expr(e1); // I dont think most people have the new haxe syntax so im being safe
var expr1:Dynamic = me.expr(e1);
return expr1 == null ? me.expr(e2) : expr1;
});
binops.set("...", function(e1, e2) return new
@@ -183,6 +183,7 @@ class Interp {
assignOp(">>=", function(v1, v2) return v1 >> v2);
assignOp(">>>=", function(v1, v2) return v1 >>> v2);
assignOp("is", function(v1, v2) return Std.isOfType(v1, v2));
assignOp("??=", function(v1, v2) return v1 == null ? v2 : v1);
}
function setVar(name:String, v:Dynamic) {
+14 -6
View File
@@ -124,8 +124,8 @@ class Parser {
["..."],
["&&"],
["||"],
["=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","|=","&=","^=","=>"],
["->"],
["=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","|=","&=","^=","=>","??="],
["->", "??"],
["is"]
];
#if haxe3
@@ -1749,10 +1749,18 @@ class Parser {
case "'".code, '"'.code: return TConst( CString(readString(char)) );
case "?".code:
char = readChar();
if( char == '?'.code )
return TOp("??");
else if ( char == '.'.code )
return TQuestionDot;
switch (char) {
case '?'.code:
var orp = readPos;
if (readChar() == '='.code)
return TOp("??=");
this.readPos = orp;
return TOp("??");
case '.'.code:
return TQuestionDot;
}
this.char = char;
return TQuestion;
case ":".code: return TDoubleDot;