From 933c9cb5e321e412b9e121d9d3b7cb1a304e5551 Mon Sep 17 00:00:00 2001 From: Ne_Eo Date: Tue, 3 Sep 2024 05:05:21 +0200 Subject: [PATCH] final function parsing --- hscript/Expr.hx | 2 +- hscript/Parser.hx | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/hscript/Expr.hx b/hscript/Expr.hx index 897ab66..d195b60 100644 --- a/hscript/Expr.hx +++ b/hscript/Expr.hx @@ -68,7 +68,7 @@ enum Expr { EFor( v : String, it : Expr, e : Expr, ?ithv: String); EBreak; EContinue; - EFunction( args : Array, e : Expr, ?name : String, ?ret : CType, ?isPublic : Bool, ?isStatic : Bool, ?isOverride : Bool, ?isPrivate : Bool ); + EFunction( args : Array, e : Expr, ?name : String, ?ret : CType, ?isPublic : Bool, ?isStatic : Bool, ?isOverride : Bool, ?isPrivate : Bool, ?isFinal : Bool ); EReturn( ?e : Expr ); EArray( e : Expr, index : Expr ); EArrayDecl( e : Array, ?wantedType: CType ); diff --git a/hscript/Parser.hx b/hscript/Parser.hx index e6d3dba..354b846 100644 --- a/hscript/Parser.hx +++ b/hscript/Parser.hx @@ -769,6 +769,11 @@ class Parser { var str = parseStructure("class"); // var class nextIsFinal = false; return str; + case TId("function"): + nextIsFinal = true; + var str = parseStructure("function"); // var function + nextIsFinal = false; + return str; default: push(nextToken); } @@ -837,7 +842,7 @@ class Parser { var tk = token(); push(tk); - mk(EFunction(inf.args, inf.body, name, inf.ret, nextIsPublic, nextIsStatic, nextIsOverride, nextIsPrivate),p1,pmax(inf.body)); + mk(EFunction(inf.args, inf.body, name, inf.ret, nextIsPublic, nextIsStatic, nextIsOverride, nextIsPrivate, nextIsFinal),p1,pmax(inf.body)); case "import": var oldReadPos = readPos; var tk = token();