Merge branch 'master' into custom-classes

This commit is contained in:
NeeEoo
2023-04-09 23:28:45 +02:00
4 changed files with 18 additions and 5 deletions
+1 -1
View File
@@ -48,7 +48,7 @@ enum Expr {
EVar( n : String, ?t : CType, ?e : Expr, ?isPublic : Bool, ?isStatic : Bool);
EParent( e : Expr );
EBlock( e : Array<Expr> );
EField( e : Expr, f : String );
EField( e : Expr, f : String , ?safe : Bool);
EBinop( op : String, e1 : Expr, e2 : Expr );
EUnop( op : String, prefix : Bool, e : Expr );
ECall( e : Expr, params : Array<Expr> );
+4
View File
@@ -161,6 +161,10 @@ class Interp {
binops.set("||", function(e1, e2) return me.expr(e1) == true || me.expr(e2) == true);
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
return expr1 == null ? me.expr(e2) : expr1;
});
binops.set("...", function(e1, e2) return new
#if (haxe_211 || haxe3)
IntIterator
+11 -2
View File
@@ -32,6 +32,7 @@ enum Token {
TBrOpen;
TBrClose;
TDot;
TQuestionDot;
TComma;
TSemicolon;
TBkOpen;
@@ -1015,7 +1016,7 @@ class Parser {
return parseExprNext(mk(EUnop(op,false,e1),pmin(e1)));
}
return makeBinop(op,e1,parseExpr());
case TDot:
case TDot | TQuestionDot:
var field = getIdent();
return parseExprNext(mk(EField(e1,field),pmin(e1)));
case TPOpen:
@@ -1746,7 +1747,14 @@ class Parser {
case "[".code: return TBkOpen;
case "]".code: return TBkClose;
case "'".code, '"'.code: return TConst( CString(readString(char)) );
case "?".code: return TQuestion;
case "?".code:
char = readChar();
if( char == '?'.code )
return TOp("??");
else if ( char == '.'.code )
return TQuestionDot;
this.char = char;
return TQuestion;
case ":".code: return TDoubleDot;
case '='.code:
char = readChar();
@@ -1974,6 +1982,7 @@ class Parser {
case TBrOpen: "{";
case TBrClose: "}";
case TDot: ".";
case TQuestionDot: "?.";
case TComma: ",";
case TSemicolon: ";";
case TBkOpen: "[";
+2 -2
View File
@@ -162,9 +162,9 @@ class Printer {
tabs = tabs.substr(1);
add("}");
}
case EField(e, f):
case EField(e, f, s):
expr(e);
add("." + f);
add((s == true ? "?." : ".") + f);
case EBinop(op, e1, e2):
expr(e1);
add(" " + op + " ");