Merge branch 'master' into custom-classes
This commit is contained in:
+1
-1
@@ -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> );
|
||||
|
||||
@@ -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
@@ -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
@@ -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 + " ");
|
||||
|
||||
Reference in New Issue
Block a user